Skip to content
Snippets Groups Projects
Commit e461d70b authored by ynerant's avatar ynerant
Browse files

Improve add permissions

parent 057f42fd
No related branches found
No related tags found
1 merge request!10Système de droits
Pipeline #7963 passed with warnings with stages
in 4 minutes and 15 seconds
......@@ -129,14 +129,13 @@ class Transaction(PolymorphicModel):
models.Index(fields=['destination']),
]
def save(self, *args, **kwargs):
def post_save(self, *args, **kwargs):
"""
When saving, also transfer money between two notes
"""
if self.source.pk == self.destination.pk:
# When source == destination, no money is transfered
super().save(*args, **kwargs)
return
created = self.pk is None
......@@ -152,10 +151,12 @@ class Transaction(PolymorphicModel):
self.source.balance -= to_transfer
self.destination.balance += to_transfer
# We save first the transaction, in case of the user has no right to transfer money
super().save(*args, **kwargs)
# Save notes
self.source.save()
self.destination.save()
super().save(*args, **kwargs)
@property
def total(self):
......
......@@ -25,13 +25,14 @@ class InstancedPermission:
Returns True if the permission applies to
the field `field_name` object `obj`
"""
if ContentType.objects.get_for_model(obj) != self.model:
# The permission does not apply to the model
return False
if self.type == 'add':
if permission_type == self.type:
return self.query(obj)
if ContentType.objects.get_for_model(obj) != self.model:
# The permission does not apply to the model
return False
if permission_type == self.type:
if self.field and field_name != self.field:
return False
......@@ -202,7 +203,18 @@ class Permission(models.Model):
def func(obj):
nonlocal q_kwargs
for arg in q_kwargs:
if getattr(obj, arg) != q_kwargs[arg]:
spl = arg.split('__')
value = obj
last = None
for s in spl:
if not hasattr(obj, s):
last = s
break
value = getattr(obj, s)
if last == "lte": # TODO Add more filters
if value > q_kwargs[arg]:
return False
elif value != q_kwargs[arg]:
return False
return True
return func
......
......@@ -14,6 +14,10 @@ EXCLUDED = [
'contenttypes.contenttype',
'logs.changelog',
'migrations.migration',
'note.note',
'note.noteuser',
'note.noteclub',
'note.notespecial',
'sessions.session',
]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment