- Standards und Aufgaben fertig

- Bei den Standards ist was mit den Bildern, das geht nur beim Admin
- Wichtig: Wenn was gelöscht wird protected noch die Datenbank, hier entsprechende Änderungen des zu löschenenden Models übernehmen!
This commit is contained in:
Holger Trampe 2019-12-05 00:12:11 +01:00
parent 166288c702
commit 9eb1a4c9b7
45 changed files with 95 additions and 32 deletions

View File

@ -2,9 +2,6 @@
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section col-6">
<h3>Bereich aktualisieren</h3>
<hr>
@ -117,10 +114,6 @@
$("#addusertoareabtn").prop('disabled', true);
}
//Ajax-Call to add a User to Area
function addUser(numb){
console.log("USER HINZU: " + numb);
}
//Check for valid input on inputfield
function checkValue(){

View File

@ -1,3 +1,4 @@
from django.contrib import admin
from .models import Tasks
# Register your models here.
admin.site.register(Tasks)

View File

@ -1,9 +1,9 @@
from django import forms
from django.forms import ModelForm
from .models import Tasks
from areas.models import Areas
class TasksAddTaskForm(forms.ModelForm):
visible = forms.CheckboxInput()
class Meta:
model =Tasks
@ -12,16 +12,11 @@ class TasksAddTaskForm(forms.ModelForm):
"area" : "Übergeordneter Bereich",
"desc" : "Beschreibung",
"visible": "Im Organigramm sichtbar"
}
fields['visible'] = forms.HiddenInput()
fields = ['name', 'area', 'desc', 'visible']
def __init__(self, *args, **kwargs):
user = kwargs.pop('user')
super(TasksAddTaskForm, self).__init__(*args, **kwargs)
self.fields['area'].queryset = Areas.objects.filter(agency__pk=user.profile.agency.pk)
#def __init__(self, user=None, *args, **kwargs):
# super().__init__(*args, **kwargs)
# if(user != None):
# users_of_agency = User.objects.filter(profile__agency__pk=user.profile.agency.pk)
# self.fields['usersfield'].queryset = users_of_agency

View File

@ -1,7 +1,7 @@
from django.urls import path
from django.contrib.auth import views as auth_views
from django.contrib.auth.decorators import login_required, permission_required
from .views import TasksManagement, TasksAddTask
from .views import TasksManagement, TasksAddTask, TasksDeleteView, TasksUpdateView
from . import views
'''
Permissions definiert in models.py bei USERS und dann hier vor die View geschrieben!
@ -10,7 +10,7 @@ Permissions definiert in models.py bei USERS und dann hier vor die View geschrie
urlpatterns = [
path('', permission_required('users.tasks_management')(TasksManagement.as_view(template_name="tasks/tasks_management.html")), name='tasks-management'),
path('addtask/', permission_required('users.tasks_management')(TasksAddTask.as_view(template_name="tasks/tasks_add.html")), name='tasks-addtask'),
path('tasks/<int:pk>/delete', permission_required('users.tasks_management')(TasksDeleteView.as_view()), name='tasks-delete'),
path('tasks/<int:pk>/', permission_required('users.tasks_management')(TasksUpdateView.as_view()), name='tasks-manage'),
path('areaajax/', views.task_addtasks_ajax, name="task-ajaxview")
]

View File

@ -1,9 +1,11 @@
from django.shortcuts import render
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User
from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView, View
from .models import Tasks
from .forms import TasksAddTaskForm
from django.contrib import messages
from django.http import HttpResponse, JsonResponse
# Create your views here.
class TasksManagement(LoginRequiredMixin, ListView):
@ -23,12 +25,11 @@ class TasksAddTask(LoginRequiredMixin, CreateView):
success_url = '/tasks'
form_class = TasksAddTaskForm
#def get(self,request,*args, **kwargs):
# # User ist der hier Aufgerufene, bzw. das Profil!
# return render (request, self.template_name, {'form':self.form_class(self.request.user), 'active_link': 'areasmanagement'})
def get_form_kwargs(self):
kwargs = super(TasksAddTask, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
# Adding active_link
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'tasksmanagement'})
@ -41,3 +42,76 @@ class TasksAddTask(LoginRequiredMixin, CreateView):
form.instance.agency = self.request.user.profile.agency
form.instance.created_area_by = self.request.user
return super().form_valid(form)
class TasksDeleteView(LoginRequiredMixin, DeleteView):
model = Tasks
success_url = '/tasks'
template_name = 'tasks/tasks_confirm_delete.html'
def get_context_data(self, **kwargs):
context = super(TasksDeleteView, self).get_context_data(**kwargs)
context['active_link'] = 'tasksmanagement'
return context
# Hier andere Nutzer ändern, wenn man Usersmanagement darf!
class TasksUpdateView(LoginRequiredMixin, UpdateView):
model = Tasks
template_name = 'tasks/tasks_update.html'
success_url = '/tasks'
form_class = TasksAddTaskForm
def get_form_kwargs(self):
kwargs = super(TasksUpdateView, self).get_form_kwargs()
kwargs['user'] = self.request.user
return kwargs
def form_valid(self, form):
# Send message to the site
messages.success(self.request, f'Aufgabe aktualisiert!')
return super().form_valid(form)
def get_context_data(self, **kwargs):
context = super(TasksUpdateView, self).get_context_data(**kwargs)
tasks = Tasks.objects.get(pk=context['object'].pk)
# User still in Area
context['added_users'] = tasks.usersfield.all()
# Get all Users from same Agency which are NOT in context_added_users
possible_users = User.objects.filter(profile__agency__pk=self.request.user.profile.agency.pk).exclude(pk__in=context['added_users'])
context['possible_users'] = possible_users
# Active-Link for Base-Design
context['active_link'] = 'tasksmanagement'
# Area ID
context['objectid'] = context['object'].pk
return context
def task_addtasks_ajax(request):
if request.method == 'GET':
# ADD USER TO MANY-TO-MANY USERSFIELD
if request.GET['action'] == 'adduser':
task = Tasks.objects.get(pk=request.GET['objectid'])
task.usersfield.add(User.objects.get(pk=request.GET['userid']))
task.save()
# REMOVE USER TO MANY-TO-MANY USERSFIELD
elif request.GET['action'] == 'remuser':
task = Tasks.objects.get(pk=request.GET['objectid'])
task.usersfield.remove(User.objects.get(pk=request.GET['userid']))
task.save()
userid = request.GET['userid']
workinguser = User.objects.get(pk=userid)
username_clean = workinguser.first_name + " " + workinguser.last_name
# Getting Remaining-Users
task = Tasks.objects.get(pk=request.GET['objectid'])
added_users = task.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")