#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2010-2016 Étienne Loks # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # See the file COPYING for details. from django.conf import settings from django.conf.urls import include, url from django.conf.urls.static import static from django.views.generic import TemplateView from .menus import Menu from ishtar_common import views, models from ishtar_common.utils import check_rights, get_urls_for_model # be careful: each check_rights must be relevant with ishtar_menu # forms urlpatterns = [ url(r'^status/$', views.status, name='status'), url(r'^raise-error/$', views.raise_error, name='raise-error'), url(r'^raise-task-error/$', views.raise_task_error, name='raise-task-error'), url(r'^ty/(?P[a-zA-Z0-9]+)$', views.tiny_redirect, name='tiny-redirect'), url(r'^robots\.txt$', TemplateView.as_view(template_name='robots.txt', content_type='text/plain')), # internationalization url(r'^i18n/', include('django.conf.urls.i18n')), # General url(r'shortcut_menu/', views.shortcut_menu, name='shortcut-menu'), url(r'display/(?P\w+)/(?P\d+)/', views.DisplayItemView.as_view(), name='display-item'), url(r'qrcode/search/', views.QRCodeForSearchView.as_view(), name='search-qrcode'), url(r'qrcode/(?P[-a-z]+)/(?P[-a-z]+)/(?P\d+)/', views.QRCodeView.as_view(), name='qrcode-item'), url(r'^generate-labels/(?P[-a-z0-9]+)/', views.GenerateLabelView.as_view(), name='generate-labels'), url(r'^generate-document/(?P[-a-z0-9]+)/(' r'?P\d+)/', views.GenerateView.as_view(), name='generate-document'), url(r'person_search/(?P.+)?$', check_rights(['add_person'])( views.person_search_wizard), name='person_search'), url(r'person_creation/(?P.+)?$', check_rights(['add_person'])( views.person_creation_wizard), name='person_creation'), url(r'person_modification/(?P.+)?$', check_rights(['change_person', 'change_own_person'])( views.person_modification_wizard), name='person_modification'), url(r'person_modify/(?P.+)/$', views.person_modify, name='person_modify'), url(r'person_deletion/(?P.+)?$', check_rights(['change_person', 'change_own_person'])( views.person_deletion_wizard), name='person_deletion'), url(r'person_delete/(?P.+)/$', views.person_delete, name='person_delete'), url(r'^person-edit/$', check_rights(['add_person'])( views.PersonCreate.as_view()), name='person_create'), url(r'^person-edit/(?P\d+)$', check_rights(['change_person', 'change_own_person'])( views.PersonEdit.as_view()), name='person_edit'), url(r'^person-qa-bulk-update/(?P[0-9-]+)?/$', check_rights(['change_person', 'change_own_person'])( views.QAPersonForm.as_view()), name='person-qa-bulk-update'), url(r'^person-qa-bulk-update/(?P[0-9-]+)?/confirm/$', check_rights(['change_person', 'change_own_person'])( views.QAPersonForm.as_view()), name='person-qa-bulk-update-confirm', kwargs={"confirm": True}), url(r'organization_search/(?P.+)?$', check_rights(['add_organization'])( views.organization_search_wizard), name='organization_search'), url(r'organization_creation/(?P.+)?$', check_rights(['add_organization'])( views.organization_creation_wizard), name='organization_creation'), url(r'organization_modification/(?P.+)?$', check_rights(['change_organization', 'change_own_organization'])( views.organization_modification_wizard), name='organization_modification'), url(r'organization_modify/(?P.+)/$', views.organization_modify, name='organization_modify'), url(r'organization_deletion/(?P.+)?$', check_rights(['change_organization', 'change_own_organization'])( views.organization_deletion_wizard), name='organization_deletion'), url(r'organization_delete/(?P.+)/$', views.organization_delete, name='delete-organization'), url(r'organization-edit/$', check_rights(['add_organization'])( views.OrganizationCreate.as_view()), name='organization_create'), url(r'organization-edit/(?P\d+)$', check_rights(['change_organization', 'change_own_organization'])( views.OrganizationEdit.as_view()), name='organization_edit'), url(r'organization-person-edit/$', check_rights(['add_organization'])( views.OrganizationPersonCreate.as_view()), name='organization_person_create'), url(r'organization-person-edit/(?P\d+)$', check_rights(['change_organization', 'change_own_organization'])( views.OrganizationPersonEdit.as_view()), name='organization_person_edit'), url(r'^organization-qa-bulk-update/(?P[0-9-]+)?/$', check_rights(['change_organization', 'change_own_organization'])( views.QAOrganizationForm.as_view()), name='organization-qa-bulk-update'), url(r'^organization-qa-bulk-update/(?P[0-9-]+)?/confirm/$', check_rights(['change_organization', 'change_own_organization'])( views.QAOrganizationForm.as_view()), name='organization-qa-bulk-update-confirm', kwargs={"confirm": True}), url(r'get-ishtaruser/(?P.+)?$', views.get_ishtaruser, name='get-ishtaruser'), url(r'account_management/(?P.+)?$', check_rights(['add_ishtaruser'])( views.account_management_wizard), name='account_management'), url(r'account_deletion/(?P.+)?$', check_rights(['add_ishtaruser'])( views.account_deletion_wizard), name='account_deletion'), url(r'^import-new/$', check_rights(['change_import'])( views.NewImportView.as_view()), name='new_import'), url(r'^import-list/$', check_rights(['change_import'])( views.ImportListView.as_view()), name='current_imports'), url(r'^import-list-table/$', check_rights(['change_import'])( views.ImportListTableView.as_view()), name='current_imports_table'), url(r'^import-list-old/$', check_rights(['change_import'])( views.ImportOldListView.as_view()), name='old_imports'), url(r'^import-delete/(?P[0-9]+)/$', views.ImportDeleteView.as_view(), name='import_delete'), url(r'^import-link-unmatched/(?P[0-9]+)/$', views.ImportLinkView.as_view(), name='import_link_unmatched'), url(r'^import-step-by-step/all/(?P[0-9]+)/(?P[0-9]+)/$', views.ImportStepByStepView.as_view(), name='import_step_by_step_all', kwargs={'all_pages': True}), url(r'^import-step-by-step/(?P[0-9]+)/(?P[0-9]+)/$', views.ImportStepByStepView.as_view(), name='import_step_by_step'), url(r'^profile(?:/(?P[0-9]+))?/$', views.ProfileEdit.as_view(), name='profile'), url(r'^save-search/(?P[a-z-]+)/(?P[a-z-]+)/$', views.SearchQueryEdit.as_view(), name='save-search-query'), url(r'^bookmarks/(?P[a-z-]+)/(?P[a-z-]+)/$', views.BookmarkList.as_view(), name='bookmark-list'), url(r'^bookmark/(?P[0-9]+)/$', views.get_bookmark, name='bookmark'), url(r'^bookmark/delete/(?P[0-9]+)/$', views.SearchQueryDelete.as_view(), name='bookmark-delete'), url(r'^alerts/$', views.AlertList.as_view(), name='alert-list'), url(r'^success(?:/(?P[a-z-]+))?/$', TemplateView.as_view(template_name="ishtar/forms/success.html"), name='success'), ] menu = Menu(None) menu.init() actions = [] for section in menu.ref_childs: for menu_item in section.childs: if hasattr(menu_item, 'childs'): for menu_subitem in menu_item.childs: actions.append(menu_subitem.idx) else: actions.append(menu_item.idx) actions = r"|".join(actions) # other views urlpatterns += [ # General url(r'dashboard-main/$', views.dashboard_main, name='dashboard-main'), url(r'dashboard-main/(?P[a-z-]+)/$', views.dashboard_main_detail, name='dashboard-main-detail'), url(r'update-current-item/$', views.update_current_item, name='update-current-item'), url(r'pin/(?P[a-z-]+)/(?P\d+)/$', views.update_current_item, name='pin'), url(r'pin-search/(?P[a-z-]+)/$', views.pin_search, name='pin-search'), url(r'unpin/(?P[a-z-]+)/$', views.unpin, name='unpin'), url(r'get-by-importer/(?P[\w-]+)/(?P[a-z-]+)?$', views.get_by_importer, name='get-by-importer'), url(r'new-person/(?:(?P[^/]+)/)?(?:(?P[^/]+)/)?$', views.new_person, name='new-person'), url(r'modify-person/(?:(?P[^/]+)/)?(?P[\d+]+)/$', views.modify_person, name='modify-person'), url(r'detail-person/(?P[\d+]+)/$', views.detail_person, name='detail-person'), url(r'modify-organization/(?:(?P[^/]+)/)?(?P[\d+]+)/$', views.modify_organization, name='modify-organization'), url(r'detail-organization/(?P[\d+]+)/$', views.detail_organization, name='detail-organization'), url(r'new-person-noorga/' r'(?:(?P[^/]+)/)?(?:(?P[^/]+)/)?$', views.new_person_noorga, name='new-person-noorga'), url(r'autocomplete-user/$', views.autocomplete_user, name='autocomplete-user'), url(r'autocomplete-ishtaruser/$', views.autocomplete_ishtaruser, name='autocomplete-ishtaruser'), url(r'autocomplete-person(?:/([0-9_]+))?(?:/([0-9_]*))?/(user)?$', views.autocomplete_person, name='autocomplete-person'), url(r'autocomplete-person-permissive(?:/([0-9_]+))?(?:/([0-9_]*))?' r'/(user)?$', views.autocomplete_person_permissive, name='autocomplete-person-permissive'), url(r'get-person/(?P.+)?$', views.get_person, name='get-person'), url(r'get-person-full/(?P.+)?$', views.get_person, name='get-person-full', kwargs={'full': True}), url(r'get-person-for-account/(?P.+)?$', views.get_person_for_account, name='get-person-for-account'), url(r'show-person(?:/(?P.+))?/(?P.+)?$', views.show_person, name='show-person'), url(r'department-by-state/(?P.+)?$', views.department_by_state, name='department-by-state'), url(r'autocomplete-town/?$', views.autocomplete_town, name='autocomplete-town'), url(r'autocomplete-advanced-town/(?P[0-9]+[ABab]?)?$', views.autocomplete_advanced_town, name='autocomplete-advanced-town'), url(r'autocomplete-department/?$', views.autocomplete_department, name='autocomplete-department'), url(r'new-author/(?:(?P[^/]+)/)?(?:(?P[^/]+)/)?$', views.new_author, name='new-author'), url(r'autocomplete-author/$', views.autocomplete_author, name='autocomplete-author'), url(r'new-organization/(?:(?P[^/]+)/)?' r'(?:(?P[^/]+)/)?$', views.new_organization, name='new-organization'), url(r'get-organization/(?P.+)?$', views.get_organization, name='get-organization'), url(r'get-organization-full/(?P.+)?$', views.get_organization, name='get-organization-full', kwargs={'full': True}), url(r'show-organization(?:/(?P.+))?/(?P.+)?$', views.show_organization, name='show-organization'), url(r'autocomplete-organization/([0-9_]+)?$', views.autocomplete_organization, name='autocomplete-organization'), url(r'admin-globalvar/', views.GlobalVarEdit.as_view(), name='admin-globalvar'), url(r'person-merge/(?:(?P\d+)/)?$', views.person_merge, name='person_merge'), url(r'person-manual-merge/$', views.PersonManualMerge.as_view(), name='person_manual_merge'), url(r'person-manual-merge-items/(?P[0-9_]+?)/$', views.PersonManualMergeItems.as_view(), name='person_manual_merge_items'), url(r'organization-merge/(?:(?P\d+)/)?$', views.organization_merge, name='organization_merge'), url(r'orga-manual-merge/$', views.OrgaManualMerge.as_view(), name='orga_manual_merge'), url(r'orga-manual-merge-items/(?P[0-9_]+?)/$', views.OrgaManualMergeItems.as_view(), name='orga_manual_merge_items'), url(r'reset/$', views.reset_wizards, name='reset_wizards'), url(r'activate-all-search/$', views.activate_all_search, name='activate-all-search'), url(r'activate-own-search/$', views.activate_own_search, name='activate-own-search'), url(r'activate-advanced-menu/$', views.activate_advanced_shortcut_menu, name='activate-advanced-menu'), url(r'activate-simple-menu/$', views.activate_simple_shortcut_menu, name='activate-simple-menu'), url(r'hide-shortcut-menu/$', views.hide_shortcut_menu, name='hide-shortcut-menu'), url(r'show-shortcut-menu/$', views.show_shortcut_menu, name='show-shortcut-menu'), url(r'regenerate-external-id/$', views.regenerate_external_id, name='regenerate-external-id'), url(r'document/search/(?P.+)?$', check_rights(['view_document', 'view_own_document'])( views.document_search_wizard), name='search-document'), url(r'document/search/(?P.+)?$', check_rights(['view_document', 'view_own_document'])( views.document_search_wizard), name='document_search'), url(r'document/create/$', check_rights(['add_document', 'add_own_document'])( views.DocumentCreateView.as_view()), name='create-document'), url(r'document/edit/$', check_rights(['change_document', 'change_own_document'])( views.DocumentSelectView.as_view()), name='edit-document'), url(r'document/edit/(?P.+)/$', check_rights(['change_document', 'change_own_document'])( views.DocumentEditView.as_view()), name='edit-document'), url(r'document/delete/(?P.+)?$', check_rights(['change_document', 'change_own_document'])( views.document_deletion_wizard), name='document_deletion'), url(r'autocomplete-document/$', views.autocomplete_document, name='autocomplete-document'), url(r'document/shortcut/delete/(?P.+)/$', views.document_delete, name='delete-document'), url(r'^document-qa-bulk-update/(?P[0-9-]+)?/$', check_rights(['change_document', 'change_own_document'])( views.QADocumentForm.as_view()), name='document-qa-bulk-update'), url(r'^document-qa-bulk-update/(?P[0-9-]+)?/confirm/$', check_rights(['change_document', 'change_own_document'])( views.QADocumentForm.as_view()), name='document-qa-bulk-update-confirm', kwargs={"confirm": True}), url(r'^document-qa-duplicate/(?P[0-9-]+)?/$', check_rights(['change_document', 'change_own_document'])( views.QADocumentDuplicateFormView.as_view()), name='document-qa-duplicate'), url(r'^document-qa-packaging/(?P[0-9-]+)?/$', check_rights(['change_document', 'change_own_document'])( views.QADocumentPackagingFormView.as_view()), name='document-qa-packaging'), url(r'autocomplete-documenttag/$', views.autocomplete_documenttag, name='autocomplete-documenttag'), url(r'new-documenttag/(?:(?P[^/]+)/)?' r'(?:(?P[^/]+)/)?$', views.new_document_tag, name='new-documenttag'), url(r'^qa-not-available(?:/(?P[0-9a-z-]+))?/$', views.QANotAvailable.as_view(), name='qa-not-available'), ] urlpatterns += get_urls_for_model(models.Document, views, own=True) urlpatterns += [ url(r'(?P' + actions + r')/$', views.action, name='action'), ] if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)