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: prio = list(Prio.objects.filter(user__pk=request.GET['userid'], task__pk=ele['id']))[0] task = Tasks.objects.get(pk=ele['id']) if(task.agency == request.user.profile.agency): prio.prio = ele['neworder'] prio.save() return HttpResponse("UPDATED") else: return HttpResponse("Request method is not a GET")