- 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 crispy_forms_tags %}
|
||||
{% block content %}
|
||||
|
||||
|
||||
|
||||
<div class="content-section col-6">
|
||||
<h3>Bereich aktualisieren</h3>
|
||||
<hr>
|
||||
|
|
@ -117,11 +114,7 @@
|
|||
$("#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(){
|
||||
var g = $('#searchusers').val();
|
||||
|
|
|
|||
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 .models import Tasks
|
||||
# Register your models here.
|
||||
admin.site.register(Tasks)
|
||||
|
|
@ -1,27 +1,22 @@
|
|||
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
|
||||
model =Tasks
|
||||
labels = {
|
||||
"name" : "Aufgabenname",
|
||||
"area" : "Übergeordneter Bereich",
|
||||
"desc" : "Beschreibung",
|
||||
"visible": "Im Organigramm sichtbar"
|
||||
}
|
||||
fields = ['name', 'area', 'desc', 'visible']
|
||||
|
||||
}
|
||||
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
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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")
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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,17 +25,16 @@ 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'})
|
||||
return context
|
||||
|
||||
|
||||
def form_valid(self, form):
|
||||
# Send message to the site
|
||||
messages.success(self.request, f'Aufgabe angelegt!')
|
||||
|
|
@ -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")
|
||||
|
|
|
|||
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