95 lines
3.7 KiB
Python
95 lines
3.7 KiB
Python
from django.shortcuts import render
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView, View
|
|
from .models import Areas
|
|
from django.contrib import messages
|
|
from .forms import AreaAddAreaForm
|
|
from django.contrib.auth.models import User
|
|
from django.http import HttpResponse, JsonResponse
|
|
import json
|
|
from django.contrib.auth.decorators import login_required
|
|
from users.priomodel import Prio
|
|
from tasks.models import Tasks
|
|
|
|
@login_required
|
|
def area_addareas_ajax(request):
|
|
if request.method == 'GET':
|
|
# ADD USER TO MANY-TO-MANY USERSFIELD
|
|
if request.GET['action'] == 'adduser':
|
|
area = Areas.objects.get(pk=request.GET['objectid'])
|
|
|
|
if(area.agency == request.user.profile.agency):
|
|
area.usersfield.add(User.objects.get(pk=request.GET['userid']))
|
|
area.save()
|
|
# REMOVE USER TO MANY-TO-MANY USERSFIELD
|
|
elif request.GET['action'] == 'remuser':
|
|
area = Areas.objects.get(pk=request.GET['objectid'])
|
|
if(area.agency == request.user.profile.agency):
|
|
area.usersfield.remove(User.objects.get(pk=request.GET['userid']))
|
|
area.save()
|
|
userid = request.GET['userid']
|
|
workinguser = User.objects.get(pk=userid)
|
|
username_clean = workinguser.first_name + " " + workinguser.last_name
|
|
|
|
# Getting Remaining-Users
|
|
area = Areas.objects.get(pk=request.GET['objectid'])
|
|
if(area.agency == request.user.profile.agency):
|
|
added_users = area.usersfield.all()
|
|
possible_users = User.objects.filter(profile__agency__pk=request.user.profile.agency.pk).exclude(pk__in=added_users)
|
|
possible_users_js = list(possible_users.values())
|
|
# Cleaned out, that only data is neede will send to the side (first/last-name and id)
|
|
final_possible_users = {}
|
|
for ele in possible_users_js:
|
|
final_possible_users.update({'first_name':ele['first_name'],'last_name':ele['last_name'],'id':ele['id']})
|
|
# Counter for remaining users to show/hide "Keine Mitarbeiter"-Div
|
|
remaining_users_counter = len(added_users)
|
|
return JsonResponse({'userid' : userid, 'username_clean' : username_clean, 'remaining_users':possible_users_js, 'remaining_users_counter' : final_possible_users})
|
|
else:
|
|
return HttpResponse("Request method is not a GET")
|
|
|
|
'''
|
|
|
|
Update the Area-Order by drag and drop. Save per ID and order in table, example:
|
|
ID ORDER
|
|
0 --> 0
|
|
4 --> 1
|
|
2 --> 2
|
|
5 --> 3
|
|
|
|
Triggered by ajax in areas_management.html
|
|
Save all areas after drag n drop elements in table
|
|
|
|
'''
|
|
@login_required
|
|
def area_neworder(request):
|
|
if request.method == 'GET':
|
|
if request.GET['action'] == 'newareaorder':
|
|
neworderdata = json.loads(request.GET['finalod'])
|
|
for ele in neworderdata:
|
|
area = Areas.objects.get(pk=ele['id'])
|
|
if(area.agency == request.user.profile.agency):
|
|
area.areaorder = ele['neworder']
|
|
area.save()
|
|
return HttpResponse("UPDATED")
|
|
elif request.GET['action'] == 'newtaskorder':
|
|
tempuser = User.objects.get(pk=request.GET['userid'])
|
|
neworderdata = json.loads(request.GET['finalod'])
|
|
for ele in neworderdata:
|
|
print(request.GET['userid'])
|
|
print(ele)
|
|
prio = Prio.objects.filter(user__pk=request.GET['userid'], task__pk=ele['id'])
|
|
# PRIO FOUND
|
|
if(len(prio) > 0):
|
|
task = Tasks.objects.get(pk=ele['id'])
|
|
if(task.agency == request.user.profile.agency):
|
|
prio[0].prio = ele['neworder']
|
|
prio[0].save()
|
|
# NO PRIO FOUND - CREATE, SET NEW ORDER AND SAVE
|
|
else:
|
|
task = Tasks.objects.get(pk=ele['id'])
|
|
if(task.agency == request.user.profile.agency):
|
|
newprio = Prio(user=tempuser, task=Tasks.objects.get(pk=ele['id']), prio=ele['neworder']).save()
|
|
|
|
return HttpResponse("UPDATED")
|
|
else:
|
|
return HttpResponse("Request method is not a GET") |