Skip to content
Snippets Groups Projects
Commit 9a6be2b7 authored by Lorenz Zahn's avatar Lorenz Zahn
Browse files

features

parent 714a1215
No related branches found
No related tags found
No related merge requests found
......@@ -11,7 +11,7 @@
<body>
{% for project in projects %}
<tr>
<td>{{ project.department__name }}</td>
<td><a href="{% url 'vkk:workhours:accounting:periods:projects_open' view.kwargs.pk project.department__pk %}">{{ project.department__name }}</a></td>
<td>{{ project.projects_not_closed }}</td>
</tr>
{% endfor %}
......
{% extends "vkk/generic/details.html" %}
{% load i18n %}
{% block main %}
{{ block.super }}
<table>
<caption>{{ department.name }}</caption>
<thead>
<th>{% translate "Projects not closed" %}</th>
<th></th>
</thead>
<body>
{% for project in projects %}
<tr>
<td>{{ project.name }}</td>
<td><a href="{% url 'vkk:workhours:accounting:projects:project:workhours_sheet' project.invoice_number object.pk %}">{% translate "Workhour Sheet" %}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock main %}
\ No newline at end of file
......@@ -2,7 +2,7 @@ from django.urls import path
from django.utils.translation import gettext_lazy as _
from django.forms import modelform_factory
from ..views import *
from .views import AccountingPeriodDetailView
from .views import AccountingPeriodDetailView, AccountingPeriodDetailDepartmentView
from vkk.workhours.models import Period
from vkk.generic.forms import CustomDateInput, CustomDateTimeInput
......@@ -31,6 +31,11 @@ urlpatterns = [
AccountingPeriodDetailView.as_view(),
name='details'
),
path(
_('<int:pk>/details/projects_open_by_department/<int:department_pk>'),
AccountingPeriodDetailDepartmentView.as_view(),
name='projects_open'
),
path(
_('create/'),
AccountingCreateView.as_view(**model, **form_class),
......
from django.db.models import Count
from django.db.models import Count, Q
from django.shortcuts import get_object_or_404
from vkk.workhours.accounting.views import AccountingDetailView
from vkk.workhours.models import Period, Project
from vkk.workhours.models import Period, Project, Department
class AccountingPeriodDetailView(AccountingDetailView):
......@@ -10,14 +11,40 @@ class AccountingPeriodDetailView(AccountingDetailView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# projects = Project.objects.exclude(
# projectassignment__periodclosure__period=kwargs["object"],
# projectassignment__periodclosure__is_closed_contributor=True,
# projectassignment__periodclosure__is_closed_manager=True,
# ).filter(
# projectassignment__isnull=False
# )
projects = Project.objects.exclude(
projectassignment__periodclosure__period=kwargs["object"],
projectassignment__periodclosure__is_closed_contributor=True,
projectassignment__periodclosure__is_closed_manager=True
Q(projectassignment__isnull=True) | Q(projectassignment__periodclosure__period=kwargs["object"]) & Q(
projectassignment__periodclosure__is_closed_contributor=True) & Q(projectassignment__periodclosure__is_closed_manager=True)
).values(
'department', 'department__name'
'department', 'department__name', 'department__pk'
).annotate(
projects_not_closed=Count('department')
).order_by('department__name')
).exclude(department=None).order_by('department__name')
context["projects"] = projects
return context
class AccountingPeriodDetailDepartmentView(AccountingDetailView):
model = Period
fields = ['start', 'end', 'dead_line', 'dead_line_final']
template_name = "vkk/workhours/accounting/period/projects.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
department = get_object_or_404(
Department, pk=self.kwargs["department_pk"])
projects = Project.objects.exclude(
Q(projectassignment__isnull=True) | Q(projectassignment__periodclosure__period=kwargs["object"]) & Q(
projectassignment__periodclosure__is_closed_contributor=True) & Q(projectassignment__periodclosure__is_closed_manager=True)
).filter(
department=department,
)
context["department"] = department
context["projects"] = projects
return context
......@@ -9,17 +9,18 @@ model = {'model': Project}
fields = {'fields': ['invoice_number', 'name', 'contractor', 'start', 'end']}
form_class = {'form_class': modelform_factory(
**model,
fields=['invoice_number', 'name', 'contractor', 'department', 'start', 'end'],
widgets={'start':CustomDateInput, 'end':CustomDateInput}
fields=['invoice_number', 'name', 'contractor',
'department', 'start', 'end'],
widgets={'start': CustomDateInput, 'end': CustomDateInput}
)}
action_options = {
'action_options' : {
'action_options': {
'project:default': _('Details'),
'project:export:overview' : _('Export'),
'delete' : _('Delete'),
'project:export:overview': _('Export'),
'delete': _('Delete'),
}
}
key = { 'slug_field': 'invoice_number', 'slug_url_kwarg' : 'invoice_number'}
key = {'slug_field': 'invoice_number', 'slug_url_kwarg': 'invoice_number'}
app_name = 'projects'
urlpatterns = [
......@@ -60,12 +61,13 @@ urlpatterns = [
'',
AccountingFilterView.as_view(
**model,
**fields,
**fields,
**action_options,
keys=key['slug_field'],
ordering=['invoice_number'],
),
name='default'
name='default'
),
path(_('<int:invoice_number>/project/'), include('vkk.workhours.accounting.projects.project.urls')),
]
\ No newline at end of file
path(_('<int:invoice_number>/project/'),
include('vkk.workhours.accounting.projects.project.urls')),
]
......@@ -85,7 +85,7 @@ DATABASES = {
"PASSWORD": os.environ.get("SQL_PASSWORD"),
"HOST": os.environ.get("SQL_HOST"),
"PORT": os.environ.get("SQL_PORT"),
"CONN_MAX_AGE" : 300,
"CONN_MAX_AGE": 300,
"OPTIONS": {
"sslmode": "require",
"sslrootcert": BASE_DIR / "cert/ca.crt",
......@@ -105,7 +105,6 @@ LOGIN_URL = reverse_lazy('vkk:users:login')
LOGIN_REDIRECT_URL = reverse_lazy('vkk:workhours:overview')
# Password validation
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators
......@@ -152,6 +151,12 @@ STATIC_ROOT = BASE_DIR / "staticfiles"
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
# Sessions
# https://docs.djangoproject.com/en/4.1/topics/http/sessions/
SESSION_COOKIE_AGE = 28800
SESSION_COOKIE_SAMESITE = 'Strict'
# Email
# https://docs.djangoproject.com/en/4.0/topics/email/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment