From afd7fb9c2be01a44a45f582eebdf02632a10be99 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 29 Nov 2018 19:34:31 +0100 Subject: Basket: manage basket share (ro and edit) - manage alt query own --- ishtar_common/views.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'ishtar_common/views.py') diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 3d64535d4..bc9c9432a 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -527,6 +527,29 @@ def autocomplete_user(request): return HttpResponse(data, content_type='text/plain') +def autocomplete_ishtaruser(request): + if not request.user.has_perm('ishtar_common.view_person', models.Person): + return HttpResponse('[]', content_type='text/plain') + q = request.GET.get('term') + limit = request.GET.get('limit', 20) + try: + limit = int(limit) + except ValueError: + return HttpResponseBadRequest() + query = Q() + for q in q.split(' '): + qu = (Q(person__name__icontains=q) | + Q(person__surname__icontains=q) | + Q(person__raw_name__icontains=q)) + query = query & qu + users = models.IshtarUser.objects.filter(query)[:limit] + data = json.dumps([ + {'id': user.pk, + 'value': unicode(user)} + for user in users]) + return HttpResponse(data, content_type='text/plain') + + def autocomplete_person(request, person_types=None, attached_to=None, is_ishtar_user=None, permissive=False): all_items = request.user.has_perm('ishtar_common.view_person', -- cgit v1.2.3 From 329d91cd38d57d686d24f999c6a57f72662f9844 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 5 Dec 2018 14:21:37 +0100 Subject: Document generation: no more specific action -> available on the sheet --- archaeological_files/ishtar_menu.py | 4 --- archaeological_finds/ishtar_menu.py | 8 ------ .../templates/ishtar/blocks/window_find_nav.html | 6 ++-- archaeological_operations/ishtar_menu.py | 5 ---- archaeological_operations/models.py | 10 +++++++ archaeological_operations/views.py | 6 ++-- docs/fr/source/interface-administrateur.rst | 24 ++++++++-------- .../templates/ishtar/blocks/window_nav.html | 32 +++++++++++++++++----- ishtar_common/templatetags/window_header.py | 7 ++++- ishtar_common/views.py | 2 ++ 10 files changed, 61 insertions(+), 43 deletions(-) (limited to 'ishtar_common/views.py') diff --git a/archaeological_files/ishtar_menu.py b/archaeological_files/ishtar_menu.py index 21e59a6af..bd41f3782 100644 --- a/archaeological_files/ishtar_menu.py +++ b/archaeological_files/ishtar_menu.py @@ -73,10 +73,6 @@ MENU_SECTIONS = [ _(u"Deletion"), model=AdministrativeAct, access_controls=['change_administrativeact']), - MenuItem('file_administrativeact_document', - _(u"Documents"), - model=AdministrativeAct, - access_controls=['change_administrativeact']), ],)]),), (100, SectionItem( diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index 48e12c79d..21a582a18 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -134,10 +134,6 @@ MENU_SECTIONS = [ _(u"Deletion"), model=AdministrativeAct, access_controls=['change_administrativeact']), - MenuItem('treatmentfle_administrativeact_document', - _(u"Documents"), - model=AdministrativeAct, - access_controls=['change_administrativeact']), ] ), ] @@ -197,10 +193,6 @@ MENU_SECTIONS = [ _(u"Deletion"), model=AdministrativeAct, access_controls=['change_administrativeact']), - MenuItem('treatment_administrativeact_document', - _(u"Documents"), - model=AdministrativeAct, - access_controls=['change_administrativeact']), ]), ] )), diff --git a/archaeological_finds/templates/ishtar/blocks/window_find_nav.html b/archaeological_finds/templates/ishtar/blocks/window_find_nav.html index 5ecaa35f0..74c6858a1 100644 --- a/archaeological_finds/templates/ishtar/blocks/window_find_nav.html +++ b/archaeological_finds/templates/ishtar/blocks/window_find_nav.html @@ -3,10 +3,12 @@ {% block post_pin %}{% if baskets %} diff --git a/ishtar_common/templatetags/window_header.py b/ishtar_common/templatetags/window_header.py index e6325d3fb..bbd923d41 100644 --- a/ishtar_common/templatetags/window_header.py +++ b/ishtar_common/templatetags/window_header.py @@ -10,6 +10,9 @@ def window_nav(context, item, window_id, show_url, modify_url='', histo_url='', extra_actions = [] if hasattr(item, 'get_extra_actions'): extra_actions = item.get_extra_actions(context['request']) + extra_templates = [] + if hasattr(item, 'get_extra_templates'): + extra_templates = item.get_extra_templates(context['request']) slug = None if hasattr(item, "LONG_SLUG"): @@ -29,7 +32,9 @@ def window_nav(context, item, window_id, show_url, modify_url='', histo_url='', 'previous': previous, 'next': nxt, 'extra_actions': extra_actions, - 'pin_action': pin_action} + 'pin_action': pin_action, + 'extra_templates': extra_templates, + } @register.inclusion_tag('ishtar/blocks/window_find_nav.html', diff --git a/ishtar_common/views.py b/ishtar_common/views.py index bc9c9432a..f23116d21 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -2001,3 +2001,5 @@ class QAItemEditForm(QAItemForm): def form_save(self, form): form.save(self.items, self.request.user) return HttpResponseRedirect(reverse("success")) + + -- cgit v1.2.3 From 960d580bcbe19293941926639ac1750c391e8a07 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 6 Dec 2018 22:46:30 +0100 Subject: Gen doc: refactoring --- archaeological_operations/models.py | 1 + archaeological_operations/views.py | 24 ++---------------------- ishtar_common/views.py | 27 +++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 22 deletions(-) (limited to 'ishtar_common/views.py') diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index d1a8b5875..22d724bda 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -1501,6 +1501,7 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter): 'act_object', 'signature_date', 'associated_file__cached_label', 'operation__cached_label', 'towns_label'] + SLUG = "administrativeact" TABLE_COLS_FILE = [ 'full_ref', 'year', 'index', 'act_type', 'act_object', 'associated_file', 'towns_label', diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 5ece22073..06b8b6ce9 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -52,6 +52,7 @@ from ishtar_common.forms import ClosingDateFormSelection, FinalForm, \ from ishtar_common.models import get_current_profile, IshtarSiteProfile, \ DocumentTemplate from ishtar_common.utils import put_session_message, check_rights_condition +from ishtar_common.views import gen_generate_doc from ishtar_common.views_item import get_item, show_item, revert_item, new_item from ishtar_common.wizards import SearchWizard @@ -466,28 +467,7 @@ administrativact_register_wizard = SearchWizard.as_view([ url_name='administrativact_register',) -def generatedoc_administrativeactop(request, pk, template_pk=None): - if not request.user.has_perm('view_administrativeact', - models.AdministrativeAct): - return HttpResponse(content_type='text/plain') - try: - act_file = models.AdministrativeAct.objects.get(pk=pk) - doc = act_file.publish(template_pk) - except models.AdministrativeAct.DoesNotExist: - doc = None - if doc: - MIMES = {'odt': 'application/vnd.oasis.opendocument.text', - 'ods': 'application/vnd.oasis.opendocument.spreadsheet'} - ext = doc.split('.')[-1] - doc_name = act_file.get_filename() + "." + ext - mimetype = 'text/csv' - if ext in MIMES: - mimetype = MIMES[ext] - response = HttpResponse(open(doc), content_type=mimetype) - response['Content-Disposition'] = 'attachment; filename=%s' % \ - doc_name - return response - return HttpResponse(content_type='text/plain') +generatedoc_administrativeactop = gen_generate_doc(models.AdministrativeAct) def administrativeactfile_document( diff --git a/ishtar_common/views.py b/ishtar_common/views.py index f23116d21..a4b979bd9 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1777,6 +1777,33 @@ def get_bookmark(request, pk): ) +def gen_generate_doc(model): + + def func(request, pk, template_pk=None): + if not request.user.has_perm('view_' + model.SLUG, model): + return HttpResponse(content_type='text/plain') + try: + item = model.objects.get(pk=pk) + doc = item.publish(template_pk) + except model.DoesNotExist: + doc = None + if doc: + MIMES = {'odt': 'application/vnd.oasis.opendocument.text', + 'ods': 'application/vnd.oasis.opendocument.spreadsheet'} + ext = doc.split('.')[-1] + doc_name = item.get_filename() + "." + ext + mimetype = 'text/csv' + if ext in MIMES: + mimetype = MIMES[ext] + response = HttpResponse(open(doc), content_type=mimetype) + response['Content-Disposition'] = 'attachment; filename=%s' % \ + doc_name + return response + return HttpResponse(content_type='text/plain') + return func + + + class SearchQueryMixin(object): """ Manage content type and profile init -- cgit v1.2.3 From c108937967d18c1b22aa5b2d87e093fe0ec83117 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 10 Dec 2018 11:29:02 +0100 Subject: Document generation: WIP on basket --- archaeological_finds/models_finds.py | 16 ++++++++++++++++ archaeological_finds/models_treatments.py | 9 +++++++++ ishtar_common/views.py | 1 - 3 files changed, 25 insertions(+), 1 deletion(-) (limited to 'ishtar_common/views.py') diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 3404749c7..cd827a0d0 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -1246,6 +1246,22 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms, return return self.base_finds.order_by('-pk').all()[0] + def get_values(self, prefix=''): + values = super(Find, self).get_values(prefix=prefix) + return values + # TODO + bf = self.get_first_base_find() + if not bf: + return values + operation = bf.context_record.operation + values[prefix + "operation"] = [ + { + "common_name": operation.common_name, + "code_patriarche": operation.code_patriarche, + "address": operation.address + } + ] + @property def reference(self): bf = self.get_first_base_find() diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 080d2cc50..3d3827596 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -853,6 +853,15 @@ class TreatmentFile(DashboardFormItem, ClosedItem, BaseHistorizedItem, for attr in ('year', 'index', 'internal_reference', 'name') if getattr(self, attr)]) + def get_values(self, prefix=''): + values = super(TreatmentFile, self).get_values(prefix=prefix) + if not self.associated_basket: + return + values[prefix + "basket"] = [ + find.get_values() for find in self.associated_basket.items.all() + ] + return values + def get_extra_actions(self, request): # url, base_text, icon, extra_text, extra css class, is a quick action actions = [] diff --git a/ishtar_common/views.py b/ishtar_common/views.py index a4b979bd9..e1e5b3d17 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1803,7 +1803,6 @@ def gen_generate_doc(model): return func - class SearchQueryMixin(object): """ Manage content type and profile init -- cgit v1.2.3 From cdbb28c80c5879bfad7179c959ec31062e801d11 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Sun, 16 Dec 2018 01:37:42 +0100 Subject: Fix treament creation from treament file with no default treament for the the treament file --- archaeological_finds/views.py | 3 ++- ishtar_common/views.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'ishtar_common/views.py') diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 98ac7ee7b..20aa571e9 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -546,7 +546,8 @@ def treatment_add(request, pks, treatment_file=None): in_charge = request.user.ishtaruser.person dct = { "treatment_type": treatment_file.type.treatment_type.pk - if treatment_file.type else "", + if treatment_file.type and treatment_file.type.treatment_type + else "", "year": treatment_file.year, "person": in_charge.pk, } diff --git a/ishtar_common/views.py b/ishtar_common/views.py index e1e5b3d17..72418e4fa 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -530,7 +530,7 @@ def autocomplete_user(request): def autocomplete_ishtaruser(request): if not request.user.has_perm('ishtar_common.view_person', models.Person): return HttpResponse('[]', content_type='text/plain') - q = request.GET.get('term') + q = request.GET.get('term', '') limit = request.GET.get('limit', 20) try: limit = int(limit) -- cgit v1.2.3