92 lines
2.6 KiB
Python
92 lines
2.6 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import re
|
|
|
|
from django.conf.urls import url
|
|
|
|
from .views import (
|
|
AtrealOpenadsView,
|
|
ForwardFileView,
|
|
ForwardFileListView,
|
|
ForwardFileUpdateView,
|
|
ForwardFileDeleteView,
|
|
CollectiviteView,
|
|
CollectiviteListView,
|
|
CollectiviteCreateView,
|
|
CollectiviteUpdateView,
|
|
CollectiviteDeleteView,
|
|
GuichetView,
|
|
GuichetCreateView,
|
|
GuichetUpdateView,
|
|
GuichetDeleteView
|
|
)
|
|
|
|
|
|
urlpatterns = [
|
|
url(r'^(?P<slug>[\w,-]+)/$', AtrealOpenadsView.as_view(), name='view-connector')
|
|
]
|
|
|
|
management_urlpatterns = []
|
|
|
|
for view in [
|
|
ForwardFileView,
|
|
ForwardFileListView,
|
|
ForwardFileUpdateView,
|
|
ForwardFileDeleteView,
|
|
CollectiviteView,
|
|
CollectiviteListView,
|
|
CollectiviteCreateView,
|
|
CollectiviteUpdateView,
|
|
CollectiviteDeleteView,
|
|
GuichetView,
|
|
GuichetCreateView,
|
|
GuichetUpdateView,
|
|
GuichetDeleteView
|
|
]:
|
|
view_class_name = str(view.__name__)
|
|
m = re.search(r'^.*(Create|Update|Delete|List)View$', view_class_name)
|
|
if m:
|
|
view_action = m.group(1).lower()
|
|
else:
|
|
view_action = 'view'
|
|
|
|
# no prefix for action 'view'
|
|
url_prefix = view_action.replace('update', 'edit') + '-'
|
|
|
|
regex_base = r'^(?P<connecteur>[\w,-]+)/'
|
|
regex_pkey = '/(?P<pk>[\w,-]+)'
|
|
|
|
url_name = url_prefix + view.model.get_class_name_dash_case()
|
|
regex_url = '%s%s' % (url_prefix if view_action != 'view' else '',
|
|
view.model.get_class_name_dash_case())
|
|
|
|
# no primary key for action 'create' and 'list'
|
|
if view_action in ['create', 'list']:
|
|
regex_pkey = ''
|
|
|
|
# plural form of the url for action 'list' and no prefix
|
|
if view_action == 'list':
|
|
url_name = url_prefix + view.model.get_class_name_plural_dash_case()
|
|
regex_url = view.model.get_class_name_plural_dash_case()
|
|
|
|
# for 'guichet' prefix the regex by the collectivite
|
|
if view.model.get_class_name() == 'Guichet':
|
|
regex_base += 'collectivite/(?P<collectivite>[\w,-]+)/'
|
|
|
|
# build the regex
|
|
regex = regex_base + regex_url + regex_pkey + '$'
|
|
|
|
# add the url pattern to the management list
|
|
management_urlpatterns += [url(regex, view.as_view(), name=url_name)]
|
|
|
|
# add the ForwardFile 'list' url patterns for Collectivite
|
|
ff_list_regex_url = ForwardFileListView.model.get_class_name_plural_dash_case()
|
|
management_urlpatterns += [
|
|
url(
|
|
r'^(?P<connecteur>[\w,-]+)/collectivite/(?P<collectivite>[\w,-]+)/' + ff_list_regex_url + '$',
|
|
ForwardFileListView.as_view(),
|
|
name='col-list-' + ff_list_regex_url
|
|
)
|
|
]
|