diff options
-rw-r--r-- | archaeological_files/models.py | 12 | ||||
-rw-r--r-- | archaeological_files/urls.py | 3 | ||||
-rw-r--r-- | archaeological_files/views.py | 34 | ||||
-rw-r--r-- | archaeological_files_pdl/forms.py | 4 | ||||
-rw-r--r-- | ishtar_common/models.py | 17 |
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 |