mirror of
https://github.com/RobbieHan/sandboxMP.git
synced 2026-02-03 10:53:15 +08:00
90 lines
3.3 KiB
Python
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') |