Files
sandboxMP/apps/system/views_structure.py
2018-11-16 23:03:09 +08:00

90 lines
3.3 KiB
Python

# @Time : 2018/10/18 23:04
# @Author : RobbieHan
# @File : views_structure.py
import json
from django.views.generic.base import TemplateView
from django.views.generic.base import View
from django.shortcuts import render
from django.shortcuts import HttpResponse
from django.shortcuts import get_object_or_404
from django.contrib.auth import get_user_model
from .mixin import LoginRequiredMixin
from .models import Structure
from .forms import StructureForm
from apps.custom import BreadcrumbMixin
User = get_user_model()
class StructureView(LoginRequiredMixin, BreadcrumbMixin, TemplateView):
template_name = 'system/structure/structure.html'
class StructureCreateView(LoginRequiredMixin, View):
def get(self, request):
ret = dict(structure_all=Structure.objects.all())
if 'id' in request.GET and request.GET['id']:
structure = get_object_or_404(Structure, pk=request.GET['id'])
ret['structure'] = structure
return render(request, 'system/structure/structure_create.html', ret)
def post(self, request):
res = dict(result=False)
if 'id' in request.POST and request.POST['id']:
structure = get_object_or_404(Structure, pk=request.POST['id'])
else:
structure = Structure()
structure_form = StructureForm(request.POST, instance=structure)
if structure_form.is_valid():
structure_form.save()
res['result'] = True
return HttpResponse(json.dumps(res), content_type='application/json')
class StructureListView(LoginRequiredMixin, View):
def get(self, request):
fields = ['id', 'name', 'type', 'parent__name']
ret = dict(data=list(Structure.objects.values(*fields)))
return HttpResponse(json.dumps(ret), content_type='application/json')
class StructureDeleteView(LoginRequiredMixin, View):
def post(self, request):
ret = dict(result=False)
if 'id' in request.POST and request.POST['id']:
id_list = map(int, request.POST['id'].split(','))
Structure.objects.filter(id__in=id_list).delete()
ret['result'] = True
return HttpResponse(json.dumps(ret), content_type='application/json')
class Structure2UserView(LoginRequiredMixin, View):
def get(self, request):
if 'id' in request.GET and request.GET['id']:
structure = get_object_or_404(Structure, pk=int(request.GET['id']))
added_users = structure.userprofile_set.all()
all_users = User.objects.all()
un_add_users = set(all_users).difference(added_users)
ret = dict(structure=structure, added_users=added_users, un_add_users=list(un_add_users))
return render(request, 'system/structure/structure_user.html', ret)
def post(self, request):
res = dict(result=False)
id_list = None
structure = get_object_or_404(Structure, pk=int(request.POST['id']))
if 'to' in request.POST and request.POST.getlist('to', []):
id_list = map(int, request.POST.getlist('to', []))
structure.userprofile_set.clear()
if id_list:
for user in User.objects.filter(id__in=id_list):
structure.userprofile_set.add(user)
res['result'] = True
return HttpResponse(json.dumps(res), content_type='application/json')