diff options
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 8d41d1cc6..345bd0025 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -55,6 +55,7 @@ from weasyprint.fonts import FontConfiguration from bootstrap_datepicker.widgets import DateField +from ishtar_common.urls_converters import DateTimeConverter from ishtar_common.utils import ( API_MAIN_MODELS, check_model_access_control, @@ -368,9 +369,9 @@ def show_source_item(request, source_id, model, name, base_dct, extra_dct): permissions = ["permission_view_document"] for p in permissions: dct[p] = True - dct["permission_change_own_document"] = False - dct["permission_change_document"] = False - + for perm in ["document", "findbasket"]: + dct[f"permission_change_own_{perm}"] = False + dct[f"permission_change_{perm}"] = False tpl = loader.get_template(f"ishtar/sheet_{name}_window.html") content = tpl.render(dct, request) return HttpResponse(content, content_type="application/xhtml") @@ -477,8 +478,9 @@ def show_item(model, name, extra_dct=None, model_for_perms=None, callback=None): for perm in Permission.objects.filter( codename__startswith='view_').values_list("codename", flat=True).all(): dct["permission_" + perm] = False - dct["permission_change_own_document"] = False - dct["permission_change_document"] = False + for perm in ["document", "findbasket"]: + dct[f"permission_change_own_{perm}"] = False + dct[f"permission_change_{perm}"] = False if hasattr(request.user, "ishtaruser") and request.user.ishtaruser: cache_key = "{}-{}-{}".format( settings.PROJECT_SLUG, @@ -503,9 +505,12 @@ def show_item(model, name, extra_dct=None, model_for_perms=None, callback=None): dct["get_import_updated"] = item.get_imports_updated(request.user, limit=5) if hasattr(item, "history") and request.user.is_superuser: + if date: try: - date = datetime.datetime.strptime(date, "%Y-%m-%dT%H:%M:%S.%f") + if not isinstance(date, datetime.datetime): + date = datetime.datetime.strptime( + date, DateTimeConverter.date_format) dct["IS_HISTORY"] = True if item.get_last_history_date() != date: item = item.get_previous(date=date) @@ -630,7 +635,8 @@ def revert_item(model): def func(request, pk, date, **dct): try: item = model.objects.get(pk=pk) - date = datetime.datetime.strptime(date, "%Y-%m-%dT%H:%M:%S.%f") + if not isinstance(date, datetime.datetime): + date = datetime.datetime.strptime(date, "%Y-%m-%dT%H:%M:%S.%f") item.rollback(date) except (ObjectDoesNotExist, ValueError, HistoryError): return HttpResponse(None, content_type="text/plain") @@ -2897,6 +2903,19 @@ def get_item( if not no_link: try: curl = reverse("show-" + default_name, args=[data[0], ""]) + except NoReverseMatch: + try: + curl = reverse("show-" + default_name, args=[data[0]]) + except NoReverseMatch: + logger.warning( + '**WARN "show-' + + default_name + + '" args (' + + str(data[0]) + + ") url not available" + ) + curl, lnk = "", "" + if curl: if not curl.endswith("/"): curl += "/" lnk_template = link_template @@ -2908,15 +2927,6 @@ def get_item( lnk = lnk.replace("<lock>", lock) else: lnk = lnk.replace("<lock>", "") - except NoReverseMatch: - logger.warning( - '**WARN "show-' - + default_name - + '" args (' - + str(data[0]) - + ") url not available" - ) - lnk = "" res["link"] = lnk for idx, value in enumerate(data[1:]): if not value or idx >= len(table_cols): |