summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--archaeological_files/models.py12
-rw-r--r--archaeological_files/urls.py3
-rw-r--r--archaeological_files/views.py34
-rw-r--r--archaeological_files_pdl/forms.py4
-rw-r--r--ishtar_common/models.py17
5 files changed, 46 insertions, 24 deletions
diff --git a/archaeological_files/models.py b/archaeological_files/models.py
index ddee0f6cc..1e8876e66 100644
--- a/archaeological_files/models.py
+++ b/archaeological_files/models.py
@@ -26,6 +26,7 @@ from django.contrib.postgres.indexes import GinIndex
from django.core.cache import cache
from django.db.models import Q, Count, Sum
from django.db.models.signals import post_save, m2m_changed, post_delete
+from django.core.urlresolvers import reverse
from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy
from ishtar_common.utils import cached_label_changed, get_cache, \
@@ -706,6 +707,17 @@ class File(ClosedItem, DocumentItem, BaseHistorizedItem, CompleteIdentifierItem,
self.general_contractor.save()
return True
+ def get_extra_actions(self, request):
+ # url, base_text, icon, extra_text, extra css class, is a quick action
+ actions = super(File, self).get_extra_actions(request)
+ if self.can_do(request, 'add_administrativeact'):
+ actions += [
+ (reverse('file-add-adminact', args=[self.pk]),
+ _("Add associated administrative act"), "fa fa-plus",
+ _("admin. act"), "", False),
+ ]
+ return actions
+
def save(self, *args, **kwargs):
returned = super(File, self).save(*args, **kwargs)
if not getattr(self, '_no_new_add', None) and self.main_town and \
diff --git a/archaeological_files/urls.py b/archaeological_files/urls.py
index 2b1e70b8c..cb8a63369 100644
--- a/archaeological_files/urls.py
+++ b/archaeological_files/urls.py
@@ -86,6 +86,9 @@ urlpatterns = [
views.show_file, name='show-historized-file'),
url(r'revert-file/(?P<pk>.+)/(?P<date>.+)$',
views.revert_file, name='revert-file'),
+ url(r'^file-add-adminact/(?P<pk>[0-9-]+)/$',
+ check_rights(['add_administrativeact'])(views.file_adminact_add),
+ name='file-add-adminact'),
url(r'dashboard_file/$', views.dashboard_file, name='dashboard-file'),
url(r'file_administrativeact_document/$',
administrativeactfile_document,
diff --git a/archaeological_files/views.py b/archaeological_files/views.py
index 7917af6b8..a29ae8b15 100644
--- a/archaeological_files/views.py
+++ b/archaeological_files/views.py
@@ -33,7 +33,8 @@ from archaeological_operations.wizards import AdministrativeActDeletionWizard, \
is_preventive, is_not_preventive
from ishtar_common.wizards import SearchWizard
-from archaeological_files.wizards import FileSearch, FileWizard, \
+from archaeological_files import wizards
+from archaeological_files.wizards import FileWizard, \
FileModificationWizard, FileClosingWizard, FileDeletionWizard, \
FileAdministrativeActWizard, FileEditAdministrativeActWizard
@@ -105,11 +106,11 @@ def dashboard_file(request, *args, **kwargs):
dct = {'dashboard': models.FileDashboard()}
return render(request, 'ishtar/dashboards/dashboard_file.html', dct)
-file_search_wizard = FileSearch.as_view(
+file_search_wizard = wizards.FileSearch.as_view(
[('general-file_search', forms.FileFormSelection)],
label=_(u"File search"), url_name='file_search',)
-file_creation_wizard = FileWizard.as_view(
+file_creation_wizard = wizards.FileWizard.as_view(
[('general-file_creation', forms.FileFormGeneral),
('towns-file_creation', TownFormset),
('parcels-file_creation', forms.ParcelFormset),
@@ -127,7 +128,7 @@ file_creation_wizard = FileWizard.as_view(
},
url_name='file_creation',)
-file_modification_wizard = FileModificationWizard.as_view(
+file_modification_wizard = wizards.FileModificationWizard.as_view(
[('selec-file_modification', forms.FileFormSelection),
('general-file_modification', forms.FileFormGeneralRO),
('towns-file_modification', TownFormset),
@@ -157,13 +158,13 @@ def file_modify(request, pk):
return redirect(reverse('file_modification',
kwargs={'step': 'general-file_modification'}))
-file_closing_wizard = FileClosingWizard.as_view(
+file_closing_wizard = wizards.FileClosingWizard.as_view(
[('selec-file_closing', forms.FileFormSelection),
('date-file_closing', ClosingDateFormSelection),
('final-file_closing', forms.FinalFileClosingForm)],
label=_(u"File closing"), url_name='file_closing',)
-file_deletion_wizard = FileDeletionWizard.as_view(
+file_deletion_wizard = wizards.FileDeletionWizard.as_view(
[('selec-file_deletion', forms.FileFormMultiSelection),
('final-file_deletion', forms.FinalFileDeleteForm)],
label=_(u"File deletion"),
@@ -174,7 +175,7 @@ def file_delete(request, pk):
if not wizard_is_available(file_deletion_wizard, request, models.File, pk):
return HttpResponseRedirect("/")
- FileDeletionWizard.session_set_value(
+ wizards.FileDeletionWizard.session_set_value(
request, 'selec-file_deletion', 'pks', pk, reset=True)
return redirect(reverse('file_deletion',
kwargs={'step': 'final-file_deletion'}))
@@ -187,7 +188,7 @@ file_administrativeactfile_search_wizard = \
url_name='file_administrativeactfile_search',)
file_administrativeactfile_wizard = \
- FileAdministrativeActWizard.as_view([
+ wizards.FileAdministrativeActWizard.as_view([
('selec-file_administrativeactfile', forms.FileFormSelection),
('administrativeact-file_administrativeactfile',
forms.AdministrativeActFileForm),
@@ -196,7 +197,7 @@ file_administrativeactfile_wizard = \
url_name='file_administrativeactfile',)
file_administrativeactfile_modification_wizard = \
- FileEditAdministrativeActWizard.as_view([
+ wizards.FileEditAdministrativeActWizard.as_view([
('selec-file_administrativeactfile_modification',
forms.AdministrativeActFileModifyFormSelection),
('administrativeact-file_administrativeactfile_modification',
@@ -210,7 +211,7 @@ def file_administrativeactfile_modify(request, pk):
if not wizard_is_available(file_administrativeactfile_modification_wizard,
request, AdministrativeAct, pk):
return HttpResponseRedirect("/")
- FileEditAdministrativeActWizard.session_set_value(
+ wizards.FileEditAdministrativeActWizard.session_set_value(
request, 'selec-file_administrativeactfile_modification',
'pk', pk, reset=True)
return redirect(
@@ -245,6 +246,19 @@ def file_administrativeact_delete(request, pk):
kwargs={'step': 'final-file_administrativeactfile_deletion'}))
+def file_adminact_add(request, pk, current_right=None):
+ try:
+ models.File.objects.get(pk=pk)
+ except models.File.DoesNotExist:
+ raise Http404()
+ file_administrativeactfile_wizard(request)
+ wizards.FileAdministrativeActWizard.session_set_value(
+ request, 'selec-file_administrativeactfile', 'pk', pk, reset=True)
+ return redirect(reverse(
+ 'file_administrativeactfile',
+ kwargs={'step': 'administrativeact-file_administrativeactfile'}))
+
+
def reset_wizards(request):
for wizard_class, url_name in (
(FileWizard, 'file_creation'),
diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py
index d8cfd8fb8..c69886de4 100644
--- a/archaeological_files_pdl/forms.py
+++ b/archaeological_files_pdl/forms.py
@@ -339,7 +339,7 @@ class FileFormPlanningService(CustomForm, IshtarForm):
validators=[valid_id(models.Organization)]
)
responsible_town_planning_service = forms.IntegerField(
- label=_(u"In charge"),
+ label=_("In charge"),
required=False,
widget=widgets.JQueryAutoComplete(
reverse_lazy('autocomplete-person',
@@ -357,7 +357,7 @@ class FileFormPlanningService(CustomForm, IshtarForm):
new=True),
validators=[valid_id(Person)]
)
- permit_reference = forms.CharField(label=_(u"File reference"),
+ permit_reference = forms.CharField(label=_("File reference"),
required=False, max_length=200)
def clean(self):
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index c7406acfa..ac3755e13 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -156,11 +156,7 @@ class ValueGetter(object):
def _get_values_update_sub_filter(self, filtr, prefix):
if not filtr:
return
- new_filtr = []
- for k in filtr:
- if k.startswith(prefix):
- new_filtr.append(k[len(prefix):])
- return new_filtr
+ return [k[len(prefix):] for k in filtr if k.startswith(prefix)]
def get_values(self, prefix='', no_values=False, filtr=None, **kwargs):
if not prefix:
@@ -190,16 +186,13 @@ class ValueGetter(object):
values.update(self._get_values_documents(prefix=prefix, filtr=filtr))
for extra_field in self.GET_VALUES_EXTRA:
values[prefix + extra_field] = getattr(self, extra_field) or ''
- for key in values.keys():
- val = values[key]
+ for key, val in values.items():
if val is None:
val = ''
elif (key in self.GET_VALUES_EXTRA_TYPES or "type" in key) and (
val.__class__.__name__.split('.')[0] == 'ManyRelatedManager'):
val = " ; ".join([str(v) for v in val.all()])
- elif isinstance(val, (tuple, list, dict)):
- pass
- else:
+ elif not isinstance(val, (tuple, list, dict)):
val = str(val)
if val.endswith('.None'):
val = ''
@@ -208,10 +201,10 @@ class ValueGetter(object):
# do not provide KEYS and VALUES for sub-items
return values
value_list = []
- for key in values.keys():
+ for key, value_ in values.items():
if key in ('KEYS', 'VALUES'):
continue
- value_list.append((key, str(values[key])))
+ value_list.append((key, str(value_)))
for global_var in GlobalVar.objects.all():
values[global_var.slug] = global_var.value or ""
return values