summaryrefslogtreecommitdiff
path: root/ishtar_common/widgets.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/widgets.py')
-rw-r--r--ishtar_common/widgets.py41
1 files changed, 30 insertions, 11 deletions
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index b9166f361..992ae533d 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -709,6 +709,7 @@ class JQueryAutoComplete(forms.TextInput):
self.source = source
self.associated_model = associated_model
self.tips = tips
+ self.user = None
self.options = None
if options and len(options) > 0:
@@ -849,16 +850,34 @@ class JQueryAutoComplete(forms.TextInput):
""".format(
attrs_hidden["id"], tips
)
- if self.modify:
- new += """
- <span class="input-group-append">
- <a href="#" id="{}-modify" class="modify-button input-group-text"
- onclick="{}_modify();">
- <i class="fa fa-pencil"></i></a>
- </span>""".format(
- attrs_hidden["id"], name.replace("-", "_")
- )
- if self.new:
+ meta = ""
+ if self.associated_model:
+ meta = self.associated_model._meta
+ base_permission = f"{meta.app_label}.{{}}_{meta.model_name}"
+ permission = base_permission.format("change")
+ own_permission = base_permission.format("change_own")
+ if self.modify and self.associated_model and self.user:
+ modify_ok = False
+ if self.user.has_permission(permission):
+ modify_ok = True
+ else:
+ try:
+ obj = self.associated_model.objects.get(pk=attrs_hidden["id"])
+ modify_ok = self.user.has_permission(own_permission, obj)
+ except self.associated_model.DoesNotExist:
+ pass
+ if modify_ok:
+ new += """
+ <span class="input-group-append">
+ <a href="#" id="{}-modify" class="modify-button input-group-text"
+ onclick="{}_modify();">
+ <i class="fa fa-pencil"></i></a>
+ </span>""".format(
+ attrs_hidden["id"], name.replace("-", "_")
+ )
+ permission = base_permission.format("add")
+ if self.new and self.associated_model and self.user and \
+ self.user.has_permission(permission):
limits = []
for k in self.limit:
limits.append(k + "__" + "-".join([str(v) for v in self.limit[k]]))
@@ -875,7 +894,7 @@ class JQueryAutoComplete(forms.TextInput):
onclick="dt_qa_open('{}', 'modal-dynamic-form-{}');">+</a>
</span>
""".format(
- url_new, model_name, model_name
+ url_new, model_name
)
new += "</div>"
detail = ""