- TasksListView implementiert und HiddenField vorbereitet

This commit is contained in:
holger.trampe 2019-12-04 14:54:43 +01:00
parent eb37423c5d
commit ed13bf155b
14 changed files with 87 additions and 27 deletions

View File

@ -3,7 +3,6 @@ from django.forms import ModelForm
from django.forms.widgets import TextInput from django.forms.widgets import TextInput
from .models import Areas from .models import Areas
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django import forms
class AreaAddAreaForm(forms.ModelForm): class AreaAddAreaForm(forms.ModelForm):
@ -17,15 +16,4 @@ class AreaAddAreaForm(forms.ModelForm):
} }
fields = ['name', 'color', 'desc'] fields = ['name', 'color', 'desc']
#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
class AjaxForm(forms.ModelForm):
field = forms.CharField(max_length=200)
class Meta:
model = Areas
fields = ['name', 'color', 'desc']

View File

@ -3,7 +3,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
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 Areas from .models import Areas
from django.contrib import messages from django.contrib import messages
from .forms import AreaAddAreaForm, AjaxForm from .forms import AreaAddAreaForm
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.http import HttpResponse, JsonResponse from django.http import HttpResponse, JsonResponse

View File

@ -80,15 +80,16 @@ WSGI_APPLICATION = 'digitaleagentur.wsgi.application'
# Database # Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases # https://docs.djangoproject.com/en/2.2/ref/settings/#databases
#DATABASES = { DATABASES = {
# 'default': { 'default': {
# 'ENGINE': 'django.db.backends.mysql', 'ENGINE': 'django.db.backends.mysql',
# 'NAME' : 'digitaleagentur', 'NAME' : 'digitaleagentur',
# 'USER' : 'digitaleagentur', 'USER' : 'digitaleagentur',
# 'PASSWORD' : 'H9hzbzyBqtUCnZlIwL1qSrzh', 'PASSWORD' : 'H9hzbzyBqtUCnZlIwL1qSrzh',
# 'PORT' : 3306 'PORT' : 3306
# } }
#} }
'''
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.mysql', 'ENGINE': 'django.db.backends.mysql',
@ -98,7 +99,7 @@ DATABASES = {
'PORT' : 3306 'PORT' : 3306
} }
} }
'''
# Password validation # Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

View File

@ -17,6 +17,7 @@ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('dashboard/', include('users.urls'), name="dashboard"), path('dashboard/', include('users.urls'), name="dashboard"),
path('areas/', include('areas.urls'), name="areas-management"), path('areas/', include('areas.urls'), name="areas-management"),
path('tasks/', include('tasks.urls'), name="tasks-management"),
path('password-reset/', auth_views.PasswordResetView.as_view(template_name='users/password_reset.html'), name='password-reset'), path('password-reset/', auth_views.PasswordResetView.as_view(template_name='users/password_reset.html'), name='password-reset'),
path('password-reset/done/', auth_views.PasswordResetDoneView.as_view(template_name='users/password_reset_done.html'), name='password_reset_done'), path('password-reset/done/', auth_views.PasswordResetDoneView.as_view(template_name='users/password_reset_done.html'), name='password_reset_done'),
path('password-reset-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html'), name='password_reset_confirm'), path('password-reset-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html'), name='password_reset_confirm'),

View File

@ -1,3 +1,32 @@
from django.db import models from django.db import models
from django.contrib.auth.models import User
from users.models import Agency
from django.urls import reverse
from areas.models import Areas
import datetime
'''
Model Tasks
'''
class Tasks(models.Model):
agency = models.ForeignKey(Agency, on_delete=models.PROTECT)
area = models.ForeignKey(Areas, on_delete=models.PROTECT)
name = models.CharField(max_length=200, blank=False, default="")
desc = models.TextField(max_length=3000, blank=True)
usersfield = models.ManyToManyField(User, blank=True, related_name='users_in_task')
created_area_by = models.ForeignKey(User, on_delete=models.PROTECT)
created_area_date = models.DateField(default=datetime.date.today, blank=True)
visible = models.BooleanField(default=True)
def __str__(self):
return f'{self.name}'
# Hier Path für Templates des Models mit Parametern
def get_absolute_url(self):
return reverse('tasks-update', kwargs={'pk':self.pk})
# Create your models here.

View File

@ -1,3 +1,43 @@
from django.shortcuts import render 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 Tasks
from .forms import TasksAddTaskForm
from django.contrib import messages
# Create your views here. # Create your views here.
class TasksManagement(LoginRequiredMixin, ListView):
model = Tasks
# Adding active_link
# Loading only user same agency
# Change context and return for template-data
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# # Get all Users of the Same Agency as logged user
tasks_of_agency = Tasks.objects.filter(agency__pk=self.request.user.profile.agency.pk)
context.update({'active_link' : 'tasksmanagement', 'tasks_of_agency':tasks_of_agency})
return context
class TasksAddTask(LoginRequiredMixin, CreateView):
model = Tasks
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'})
# 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!')
# SAVE OBJECTS TO SIGNALE!
form.instance.agency = self.request.user.profile.agency
form.instance.created_area_by = self.request.user
return super().form_valid(form)

View File

@ -102,6 +102,7 @@ class Profile(models.Model):
permissions = [ permissions = [
('agency_change', 'Agenturinformationen verändern'), ('agency_change', 'Agenturinformationen verändern'),
('users_usermanagement', 'Benutzer bearbeiten'), ('users_usermanagement', 'Benutzer bearbeiten'),
('areas_management', 'Bereiche bearbeiten'),
('tasks_management', 'Aufgabenbereiche bearbeiten'), ('tasks_management', 'Aufgabenbereiche bearbeiten'),
('areas_management', 'Bereiche bearbeiten') ('standard_management', 'Standards bearbeiten und freischalten')
] ]

View File

@ -126,7 +126,7 @@
{% else%} {% else%}
<li class="nav-item"> <li class="nav-item">
{%endif%} {%endif%}
<a class="nav-link " href="#" aria-expanded="true"> <a class="nav-link " href="{% url 'tasks-management' %}" aria-expanded="true">
<i class="fas fa-fw fa-tasks"></i> <i class="fas fa-fw fa-tasks"></i>
<span>Aufgaben</span> <span>Aufgaben</span>
</a> </a>