- 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:
parent
166288c702
commit
9eb1a4c9b7
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -2,9 +2,6 @@
|
||||||
{% load static %}
|
{% load static %}
|
||||||
{% load crispy_forms_tags %}
|
{% load crispy_forms_tags %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="content-section col-6">
|
<div class="content-section col-6">
|
||||||
<h3>Bereich aktualisieren</h3>
|
<h3>Bereich aktualisieren</h3>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
@ -117,10 +114,6 @@
|
||||||
$("#addusertoareabtn").prop('disabled', true);
|
$("#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
|
//Check for valid input on inputfield
|
||||||
function checkValue(){
|
function checkValue(){
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,3 +1,4 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from .models import Tasks
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
|
admin.site.register(Tasks)
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.forms import ModelForm
|
from django.forms import ModelForm
|
||||||
from .models import Tasks
|
from .models import Tasks
|
||||||
|
from areas.models import Areas
|
||||||
|
|
||||||
class TasksAddTaskForm(forms.ModelForm):
|
class TasksAddTaskForm(forms.ModelForm):
|
||||||
visible = forms.CheckboxInput()
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model =Tasks
|
model =Tasks
|
||||||
|
|
@ -12,16 +12,11 @@ class TasksAddTaskForm(forms.ModelForm):
|
||||||
"area" : "Übergeordneter Bereich",
|
"area" : "Übergeordneter Bereich",
|
||||||
"desc" : "Beschreibung",
|
"desc" : "Beschreibung",
|
||||||
"visible": "Im Organigramm sichtbar"
|
"visible": "Im Organigramm sichtbar"
|
||||||
|
|
||||||
}
|
}
|
||||||
fields['visible'] = forms.HiddenInput()
|
|
||||||
fields = ['name', 'area', 'desc', 'visible']
|
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
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,7 +1,7 @@
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
from django.contrib.auth import views as auth_views
|
from django.contrib.auth import views as auth_views
|
||||||
from django.contrib.auth.decorators import login_required, permission_required
|
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
|
from . import views
|
||||||
'''
|
'''
|
||||||
Permissions definiert in models.py bei USERS und dann hier vor die View geschrieben!
|
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 = [
|
urlpatterns = [
|
||||||
path('', permission_required('users.tasks_management')(TasksManagement.as_view(template_name="tasks/tasks_management.html")), name='tasks-management'),
|
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('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")
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,11 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
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 django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView, View
|
||||||
from .models import Tasks
|
from .models import Tasks
|
||||||
from .forms import TasksAddTaskForm
|
from .forms import TasksAddTaskForm
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
|
from django.http import HttpResponse, JsonResponse
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
class TasksManagement(LoginRequiredMixin, ListView):
|
class TasksManagement(LoginRequiredMixin, ListView):
|
||||||
|
|
@ -23,12 +25,11 @@ class TasksAddTask(LoginRequiredMixin, CreateView):
|
||||||
success_url = '/tasks'
|
success_url = '/tasks'
|
||||||
form_class = TasksAddTaskForm
|
form_class = TasksAddTaskForm
|
||||||
|
|
||||||
#def get(self,request,*args, **kwargs):
|
def get_form_kwargs(self):
|
||||||
# # User ist der hier Aufgerufene, bzw. das Profil!
|
kwargs = super(TasksAddTask, self).get_form_kwargs()
|
||||||
# return render (request, self.template_name, {'form':self.form_class(self.request.user), 'active_link': 'areasmanagement'})
|
kwargs['user'] = self.request.user
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
# Adding active_link
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
context.update({'active_link' : 'tasksmanagement'})
|
context.update({'active_link' : 'tasksmanagement'})
|
||||||
|
|
@ -41,3 +42,76 @@ class TasksAddTask(LoginRequiredMixin, CreateView):
|
||||||
form.instance.agency = self.request.user.profile.agency
|
form.instance.agency = self.request.user.profile.agency
|
||||||
form.instance.created_area_by = self.request.user
|
form.instance.created_area_by = self.request.user
|
||||||
return super().form_valid(form)
|
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")
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue