1from django.urls import include, path
2from django.utils.translation import gettext_lazy as _
3from django.forms import modelform_factory
4from vkk.workhours.models import ProjectManager, ProjectAssignment, Project, WorkHours
5from vkk.generic.forms import CustomDateInput
6from vkk.workhours.accounting.views import *
7from .views import *
8
9key = {'slug_field': 'invoice_number', 'slug_url_kwarg': 'invoice_number'}
10
11app_name = 'project'
12urlpatterns = [
13 path(
14 _('details/'),
15 AccountingProjectOverView.as_view(),
16 name='default'
17 ),
18 path(
19 _('update/'),
20 AccountingProjectUpdateView.as_view(),
21 name='update'
22 ),
23 path(
24 _('update/success/'),
25 AccountingSuccessView.as_view(
26 model=Project,
27 template_name='vkk/generic/update_success.html',
28 ),
29 name='update_success'
30 ),
31 # manager
32 path(
33 _('manager/<int:pk>/details/'),
34 AccountingDetailView.as_view(
35 model=ProjectManager,
36 template_name='vkk/workhours/accounting/projects/project/manager_details.html',
37 ),
38 name='manager_details'
39 ),
40 path(
41 _('manager/<int:pk>/update/'),
42 AccountingUpdateView.as_view(
43 model=ProjectManager,
44 form_class=modelform_factory(
45 model=ProjectManager,
46 fields=['start', 'end', 'is_proxy'],
47 widgets={'start': CustomDateInput, 'end': CustomDateInput}
48 ),
49 on_success='manager_update_success',
50 ),
51 name='manager_update'
52 ),
53 path(
54 _('manager/update/success/'),
55 AccountingSuccessView.as_view(
56 model=ProjectManager,
57 template_name='vkk/generic/update_success.html',
58 ),
59 name='manager_update_success'
60 ),
61 path(
62 _('manager_candidates/'),
63 AccountingProjectUserFilterView.as_view(
64 to_exclude='projectmanager__project__invoice_number',
65 action_options={'add_manager': _('Add')},
66 ordering=['last_name', 'first_name'],
67 ),
68 name='manager_candidates'
69 ),
70 path(
71 _('manager_candidates/<int:pk>/add_new/'),
72 AccountingManagerCreateView.as_view(),
73 name='add_manager'
74 ),
75 path(
76 _('manager_candidates/add_new/success/'),
77 AccountingSuccessView.as_view(
78 model=ProjectManager,
79 template_name='vkk/generic/create_success.html',
80 on_success='manager_candidates'
81 ),
82 name='add_manager_success'
83 ),
84 path(
85 _('manager/<int:pk>/delete'),
86 AccountingManagerDeleteView.as_view(),
87 name='delete_manager'
88 ),
89 path(
90 _('manager/delete/success/'),
91 AccountingSuccessView.as_view(
92 model=ProjectAssignment,
93 template_name='vkk/generic/delete_success.html',
94 on_success='default'
95 ),
96 name='delete_manager_success'
97 ),
98 # contributor
99 path(
100 _('contributor/<int:pk>/details/'),
101 AccountingDetailView.as_view(
102 model=ProjectAssignment,
103 template_name='vkk/workhours/accounting/projects/project/contributor_details.html',
104 ),
105 name='contributor_details'
106 ),
107 path(
108 _('contributor/<int:pk>/update/'),
109 AccountingUpdateView.as_view(
110 model=ProjectAssignment,
111 fields=['salary_level'],
112 on_success='contributor_update_success',
113 ),
114 name='contributor_update'
115 ),
116 path(
117 _('contributor/update/success/'),
118 AccountingSuccessView.as_view(
119 model=ProjectManager,
120 template_name='vkk/generic/update_success.html',
121 ),
122 name='contributor_update_success'
123 ),
124 path(
125 _('contributor_candidates/'),
126 AccountingProjectUserFilterView.as_view(
127 to_exclude='projectassignment__project__invoice_number',
128 action_options={'add_contributor': _('Add')},
129 ordering=['last_name', 'first_name'],
130 ),
131 name='contributor_candidates'
132 ),
133 path(
134 _('contributor_candidates/<int:pk>/add_new/'),
135 AccountingContributorCreateView.as_view(),
136 name='add_contributor'
137 ),
138 path(
139 _('contributor_candidates/add_new/success/'),
140 AccountingSuccessView.as_view(
141 model=ProjectAssignment,
142 template_name='vkk/generic/create_success.html',
143 on_success='contributor_candidates'
144 ),
145 name='add_contributor_success'
146 ),
147 path(
148 _('contributor/<int:pk>/delete'),
149 AccountingContributorDeleteView.as_view(),
150 name='delete_contributor'
151 ),
152 path(
153 _('contributor/delete/success/'),
154 AccountingSuccessView.as_view(
155 model=ProjectAssignment,
156 template_name='vkk/generic/delete_success.html',
157 on_success='default'
158 ),
159 name='delete_contributor_success'
160 ),
161 # workhour sheet
162 path(
163 _('workhours_sheet/'),
164 AccountingWorkhourSheetSelectionView.as_view(),
165 name='workhours_sheet_selection'
166 ),
167 path(
168 _('workhours_sheet/<int:period_pk>/'),
169 AccountingWorkhourSheetView.as_view(),
170 name='workhours_sheet'
171 ),
172 path(
173 _('workhours_sheet/<int:period_pk>/success/'),
174 AccountingSuccessView.as_view(
175 template_name='vkk/workhours/workhours_sheet_success.html',
176 model=WorkHours,
177 on_success='workhours_sheet',
178 ),
179 name='workhours_sheet_success'
180 ),
181 path(
182 _('workhours_sheet/<int:period_pk>/closure/'),
183 AccountingPeriodClosureView.as_view(),
184 name='period_closure'
185 ),
186 path(
187 _('workhours_sheet/<int:period_pk>/closure/success/'),
188 AccountingPeriodClosureSuccessView.as_view(),
189 name='period_closure_success'
190 ),
191 # export
192 path(_('export/'), include('vkk.workhours.accounting.projects.project.export.urls')),
193]