Zuständigkeiten fertig

This commit is contained in:
Holger Trampe 2019-12-10 19:49:09 +01:00
parent b6f493c3a5
commit 566ce3d68c
52 changed files with 97 additions and 45 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -188,7 +188,7 @@
<!-- Topbar Search --> <!-- Topbar Search -->
<form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search"> <form class="d-none d-sm-inline-block form-inline mr-auto ml-md-3 my-2 my-md-0 mw-100 navbar-search">
<div class="input-group"> <div class="input-group">
<input list="searchres" placeholder="Suche..." id="search_string" onchange="javascript:checkValue()" onkeyup="javascript:startSearch(this.value)" class="form-control bg-light border-0 small" > <input list="searchres" placeholder="Suche..." id="search_string" onchange="javascript:checkValueSearchStringGlobal()" onkeyup="javascript:startSearch(this.value)" class="form-control bg-light border-0 small" >
<datalist id="searchres" > <datalist id="searchres" >
</datalist> </datalist>
@ -337,7 +337,7 @@
} }
//Check valid input and go to standard by click //Check valid input and go to standard by click
function checkValue(){ function checkValueSearchStringGlobal(){
for(i = 0; i < document.getElementById("searchres").options.length; i++){ for(i = 0; i < document.getElementById("searchres").options.length; i++){
var value = $("#search_string").val(); var value = $("#search_string").val();
var choosen = document.getElementById("searchres").options[i].value; var choosen = document.getElementById("searchres").options[i].value;

View File

@ -5,13 +5,14 @@
<h3>Bereiche und Aufgaben von {{ user_first_name }} {{ user_last_name }} bearbeiten</h3> <h3>Bereiche und Aufgaben von {{ user_first_name }} {{ user_last_name }} bearbeiten</h3>
<hr> <hr>
<div class="col-12"> <div class="col-12">
{% for key in finaldata %}
{{key}} <form method="POST">
{% endfor %} {% csrf_token %}
{{form|crispy}}
</div> </div>
<a href="{% url 'users-dashboard' %}" class="btn btn-success">Speichern</a> <button type="submit" href="{% url 'users-areataskupdate' user_id %}" class="btn btn-success">Speichern</button>
<a href="{% url 'users-dashboard' %}" class="btn">Abbrechen</a> <a href="{% url 'users-management' %}" class="btn">Abbrechen</a>
</div> </div>
</form>
</script> </script>
{% endblock content %} {% endblock content %}

View File

@ -4,6 +4,8 @@ from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.forms import UserCreationForm
from .models import Profile, Agency from .models import Profile, Agency
from django.contrib.auth.models import Permission from django.contrib.auth.models import Permission
from areas.models import Areas
from tasks.models import Tasks
# Standard-User-Formular - NUR Username und Password wird hier genutzt # Standard-User-Formular - NUR Username und Password wird hier genutzt
class UsersAddNewUser(UserCreationForm): class UsersAddNewUser(UserCreationForm):
@ -75,3 +77,23 @@ class UsersPermForm(forms.Form):
else: else:
self.fields[ele[0]] = forms.BooleanField(required=False, initial=False, help_text=(ele[1])) self.fields[ele[0]] = forms.BooleanField(required=False, initial=False, help_text=(ele[1]))
class UserAreaTaskForm(forms.Form):
def __init__(self, user, *args, **kwargs):
super().__init__(*args, **kwargs)
areas = Areas.objects.filter(agency__pk=user.profile.agency.pk)
tasks = Tasks.objects.filter(agency__pk=user.profile.agency.pk)
for area in areas:
if user in area.usersfield.all():
self.fields['area_'+str(area.pk)] = forms.BooleanField(required=False, initial=True, label="<h3>Bereich "+area.name+"</h3>")
else:
self.fields['area_'+str(area.pk)] = forms.BooleanField(required=False, initial=False, label="<h3>Bereich "+area.name+"</h3>")
for task in tasks:
if task.area == area:
if user in task.usersfield.all():
self.fields['task_'+str(task.pk)] = forms.BooleanField(required=False, initial=True, label="<h5>"+task.name+"</h5>")
else:
self.fields['task_'+str(task.pk)] = forms.BooleanField(required=False, initial=False, label="<h5>"+task.name+"</h5>")

View File

@ -2,7 +2,7 @@ from django.shortcuts import render, redirect, reverse
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.conf import settings from django.conf import settings
from .usersforms import UsersAddNewUser, UsersAddProfileForm, UsersChangeProfil, AgencyUpdateForm, UsersPermForm from .usersforms import UsersAddNewUser, UsersAddProfileForm, UsersChangeProfil, AgencyUpdateForm, UsersPermForm, UserAreaTaskForm
from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView, View from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView, View
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.models import User from django.contrib.auth.models import User
@ -328,41 +328,70 @@ def searchStandardRouter(request):
def UsersAreaTaskUpdate(request, pk): def UsersAreaTaskUpdate(request, pk):
user = User.objects.get(pk=pk) user = User.objects.get(pk=pk)
if request.user.profile.agency.pk != user.profile.agency.pk:
finaldata = {} return redirect('dashboard')
if(user.profile.agency.pk != request.user.profile.agency.pk):
return HttpResponseRedirect('users-dashboard')
else: else:
areas = list(Areas.objects.filter(agency__pk=request.user.profile.agency.pk)) finaldata = {}
tasks = list(Tasks.objects.filter(agency__pk=request.user.profile.agency.pk)) context = {
'active_link' : 'usersmanagement',
'user_id' : user.pk,
}
if request.method == 'POST':
form = request.POST
areatask_formdata = list(form)
# CRSF-Token löschen
del areatask_formdata[0]
area_ids = []
task_ids = []
for ar in areatask_formdata:
tempdata = ar.split("_")
if(tempdata[0] == 'area'):
area_ids.append(int(tempdata[1]))
elif(tempdata[0] == 'task'):
task_ids.append(int(tempdata[1]))
print(area_ids)
print(task_ids)
areas = Areas.objects.filter(agency__pk=user.profile.agency.pk)
tasks = Tasks.objects.filter(agency__pk=user.profile.agency.pk)
# Build final JSON-Form-Input
# User in area/task 1, User NOT in area/task 0
for area in areas: for area in areas:
finaldata.update({'areapk': area.pk, 'areaname' : area.name, 'areauserstat' : 0, 'tasks' : {}}) if area.pk in area_ids:
if(user in area.usersfield.all()): area.usersfield.add(user)
print(finaldata['areapk']) else:
# finaldata['areapk'][len(finaldata)]['areauserstat'] = 1 area.usersfield.remove(user)
#for task in tasks: area.save()
# if(task.area == area):
# finaldata['areapk'][len(finaldata)]['tasks'].update({task.pk : {}})
# finaldata['areapk'][len(finaldata)]['tasks'][task.pk].update({'taskname' : task.name, 'userstat' : 0})
# if(user in task.usersfield.all()):
# finaldata['areapk'][len(finaldata)]['tasks'][task.pk]['userstat'] = 1
print(finaldata) for task in tasks:
if task.pk in task_ids:
prio = Prio(user=User.objects.get(pk=pk), task=task)
prio.save()
task.usersfield.add(user)
else:
task.usersfield.remove(user)
Prio.objects.filter(user__pk=pk).filter(task__pk=task.pk).delete()
task.save()
username_message = user.first_name + " " + user.last_name
messages.success(request, f'Zuständigkeiten für {username_message} aktualisiert!')
return redirect('users-management')
else:
form = UserAreaTaskForm(user)
user_first_name = user.first_name user_first_name = user.first_name
user_last_name = user.last_name user_last_name = user.last_name
user_id = user.pk user_id = user.pk
context = { context = {
'active_link' : '', 'active_link' : '',
'finaldata' : finaldata,
'user_first_name' : user_first_name, 'user_first_name' : user_first_name,
'user_last_name' : user_last_name, 'user_last_name' : user_last_name,
'user_id' : user_id 'user_id' : user_id,
'form' : form
} }
return render(request, 'users/users_areatasks.html', context) return render(request, 'users/users_areatasks.html', context)