diff options
-rw-r--r-- | archaeological_files/forms.py | 14 | ||||
-rw-r--r-- | archaeological_files/views.py | 1 | ||||
-rw-r--r-- | archaeological_operations/admin.py | 2 | ||||
-rw-r--r-- | archaeological_operations/forms.py | 14 | ||||
-rw-r--r-- | archaeological_operations/templates/ishtar/wizard/wizard_adminact_deletion.html | 8 | ||||
-rw-r--r-- | archaeological_operations/wizards.py | 5 | ||||
-rw-r--r-- | ishtar_common/static/media/style.css | 6 | ||||
-rw-r--r-- | ishtar_common/urls.py | 2 | ||||
-rw-r--r-- | ishtar_common/views.py | 6 | ||||
-rw-r--r-- | ishtar_common/wizards.py | 5 |
10 files changed, 56 insertions, 7 deletions
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 0879f428e..0aab8d370 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -80,6 +80,13 @@ class FileSelect(TableSelect): args=[PersonType.objects.get(txt_idx='sra_agent').pk]), associated_model=Person), validators=[valid_id(Person)]) + history_creator = forms.IntegerField( + label=_(u"Created by"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', + args=['0', 'user']), + associated_model=Person), + validators=[valid_id(Person)]) permit_reference = forms.CharField(max_length=200, label=_("Permit reference")) @@ -318,6 +325,13 @@ class AdministrativeActFileSelect(TableSelect): validators=[valid_id(Person)]) associated_file__permit_reference = forms.CharField(max_length=200, label=_("Permit reference")) + history_creator = forms.IntegerField( + label=_(u"Created by"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', + args=['0', 'user']), + associated_model=Person), + validators=[valid_id(Person)]) def __init__(self, *args, **kwargs): super(AdministrativeActFileSelect, self).__init__(*args, **kwargs) diff --git a/archaeological_files/views.py b/archaeological_files/views.py index 4f767b4c9..b57a4cf6b 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -109,6 +109,7 @@ file_search_wizard = SearchWizard.as_view( [('general-file_search', FileFormSelection)], label=_(u"File search"), url_name='file_search',) + file_creation_wizard = FileWizard.as_view([ ('general-file_creation', FileFormGeneral), ('towns-file_creation', TownFormset), diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py index ab9bdea98..03531d54c 100644 --- a/archaeological_operations/admin.py +++ b/archaeological_operations/admin.py @@ -63,7 +63,7 @@ admin.site.register(models.Operation, OperationAdmin) class OperationSourceAdmin(admin.ModelAdmin): list_display = ('operation', 'title', 'source_type',) list_filter = ('source_type',) - search_fields = ('title', 'operation__name') + search_fields = ('title', 'operation__common_name') model = models.OperationSource admin.site.register(models.OperationSource, OperationSourceAdmin) diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 11055ccfb..4473d7858 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -228,6 +228,13 @@ class OperationSelect(TableSelect): widget=widgets.JQueryDate) parcel = ParcelField(label=_("Parcel (section/number)")) end_date = forms.NullBooleanField(label=_(u"Is open?")) + history_creator = forms.IntegerField( + label=_(u"Created by"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', + args=['0', 'user']), + associated_model=Person), + validators=[valid_id(Person)]) def __init__(self, *args, **kwargs): super(OperationSelect, self).__init__(*args, **kwargs) @@ -648,6 +655,13 @@ class AdministrativeActOpeSelect(TableSelect): max_length=15) act_type = forms.ChoiceField(label=_("Act type"), choices=[]) operation__towns = get_town_field() + history_creator = forms.IntegerField( + label=_(u"Created by"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-person', + args=['0', 'user']), + associated_model=Person), + validators=[valid_id(Person)]) def __init__(self, *args, **kwargs): super(AdministrativeActOpeSelect, self).__init__(*args, **kwargs) diff --git a/archaeological_operations/templates/ishtar/wizard/wizard_adminact_deletion.html b/archaeological_operations/templates/ishtar/wizard/wizard_adminact_deletion.html new file mode 100644 index 000000000..0b44b4ad0 --- /dev/null +++ b/archaeological_operations/templates/ishtar/wizard/wizard_adminact_deletion.html @@ -0,0 +1,8 @@ +{% extends "ishtar/wizard/confirm_wizard.html" %} +{% load i18n %} + +{% block "extra_informations" %} +{% if current_object.index %} +<p class='alert'><label>{%trans "This act is indexed!"%}</label></p> +{% endif %} +{% endblock %} diff --git a/archaeological_operations/wizards.py b/archaeological_operations/wizards.py index 6d117ae43..70583068b 100644 --- a/archaeological_operations/wizards.py +++ b/archaeological_operations/wizards.py @@ -350,6 +350,11 @@ class OperationEditAdministrativeActWizard(OperationAdministrativeActWizard): return self.get_current_object().operation class AdministrativeActDeletionWizard(ClosingWizard): + wizard_templates = { + 'final-operation_administrativeactop_deletion':\ + 'ishtar/wizard/wizard_adminact_deletion.html', + 'final-file_administrativeactfile_deletion':\ + 'ishtar/wizard/wizard_adminact_deletion.html'} model = models.AdministrativeAct fields = ['act_type', 'in_charge', 'operator', 'scientist', 'signatory', 'operation', 'associated_file', 'signature_date', 'act_object',] diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css index 1d3aed63f..8b05603df 100644 --- a/ishtar_common/static/media/style.css +++ b/ishtar_common/static/media/style.css @@ -723,7 +723,7 @@ table.confirm tr.spacer td:last-child{ margin:0.3em; } -#window p.alert{ +p.alert{ color:#D14; display:block; font-style:italic; @@ -739,6 +739,10 @@ table.confirm tr.spacer td:last-child{ background-position:left center; } +#window p.alert{ + background-color:#EEE; +} + #window p.alert label{ width:650px; } diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 61e030ef9..94e50d161 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -67,7 +67,7 @@ urlpatterns += patterns('ishtar_common.views', name='update-current-item'), url(r'new-person/(?P<parent_name>.+)?/$', 'new_person', name='new-person'), - url(r'autocomplete-person/([0-9_]+)?$', 'autocomplete_person', + url(r'autocomplete-person(?:/([0-9_]+))?/(user)?$', 'autocomplete_person', name='autocomplete-person'), url(r'get-person/(?P<type>.+)?$', 'get_person', name='get-person'), diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 4fc56f862..8fbf41759 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -134,7 +134,7 @@ def check_permission(request, action_slug, obj_id=None): return menu.items[action_slug].is_available(request.user, obj_id) return menu.items[action_slug].can_be_available(request.user) -def autocomplete_person(request, person_types=None): +def autocomplete_person(request, person_types=None, is_ishtar_user=None): if not request.user.has_perm('ishtar_common.view_person', models.Person) and \ not request.user.has_perm('ishtar_common.view_own_person', models.Person) \ and not request.user.ishtaruser.has_right('person_search'): @@ -151,13 +151,15 @@ def autocomplete_person(request, person_types=None): for q in q.split(' '): query = query & (Q(name__icontains=q) | Q(surname__icontains=q) | \ Q(email__icontains=q) | Q(attached_to__name__icontains=q)) - if person_types: + if person_types and unicode(person_types) != '0': try: typs = [int(tp) for tp in person_types.split('_') if tp] typ = models.PersonType.objects.filter(pk__in=typs).all() query = query & Q(person_types__in=typ) except (ValueError, ObjectDoesNotExist): pass + if is_ishtar_user: + query = query & Q(ishtaruser__isnull=False) limit = 20 persons = models.Person.objects.filter(query)[:limit] data = json.dumps([{'id':person.pk, 'value':unicode(person)} diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 006c2554e..368c6e627 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -27,6 +27,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.core.files.images import ImageFile from django.db.models.fields.files import FileField from django.db.models.fields.related import ManyToManyField +from django.forms import ValidationError from django.shortcuts import render_to_response from django.template import RequestContext from django.utils.datastructures import MultiValueDict as BaseMultiValueDict @@ -376,7 +377,7 @@ class Wizard(NamedUrlWizardView): setattr(obj, k, dct[k]) try: obj.full_clean() - except forms.ValidationError, msg: + except ValidationError, msg: return self.render(form_list[-1]) for dependant_item in other_objs: c_item = getattr(obj, dependant_item) @@ -417,7 +418,7 @@ class Wizard(NamedUrlWizardView): obj = self.get_saved_model()(**dct) try: obj.full_clean() - except forms.ValidationError, msg: + except ValidationError, msg: return self.render(form_list[-1]) obj.save() for k in adds: |