mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-10-18 11:16:40 +02:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
af36d1427a | ||
|
75a59e0a7a | ||
|
af39bf7068 |
@@ -39,15 +39,7 @@ class PermissionBackend(ModelBackend):
|
|||||||
|
|
||||||
def permission_filter(membership_obj):
|
def permission_filter(membership_obj):
|
||||||
query = Q(pk=-1)
|
query = Q(pk=-1)
|
||||||
if 'mask' in request.GET:
|
|
||||||
try:
|
|
||||||
rank = int(request.GET['mask'])
|
|
||||||
except:
|
|
||||||
rank = 42
|
|
||||||
query &= Q(mask__rank__lte=rank)
|
|
||||||
for scope in request.auth.scope.split(' '):
|
for scope in request.auth.scope.split(' '):
|
||||||
if scope == "openid":
|
|
||||||
continue
|
|
||||||
permission_id, club_id = scope.split('_')
|
permission_id, club_id = scope.split('_')
|
||||||
if int(club_id) == membership_obj.club_id:
|
if int(club_id) == membership_obj.club_id:
|
||||||
query |= Q(pk=permission_id)
|
query |= Q(pk=permission_id)
|
||||||
|
@@ -10,7 +10,6 @@ from note_kfet.middlewares import get_current_request
|
|||||||
from .backends import PermissionBackend
|
from .backends import PermissionBackend
|
||||||
from .models import Permission
|
from .models import Permission
|
||||||
|
|
||||||
from django.utils.translation import gettext_lazy as _
|
|
||||||
|
|
||||||
class PermissionScopes(BaseScopes):
|
class PermissionScopes(BaseScopes):
|
||||||
"""
|
"""
|
||||||
@@ -33,7 +32,7 @@ class PermissionScopes(BaseScopes):
|
|||||||
|
|
||||||
scopes = {f"{p.id}_{club.id}": f"{p.description} (club {club.name})"
|
scopes = {f"{p.id}_{club.id}": f"{p.description} (club {club.name})"
|
||||||
for p in Permission.objects.all() for club in Club.objects.all()}
|
for p in Permission.objects.all() for club in Club.objects.all()}
|
||||||
scopes['openid'] = _("OpenID Connect (username and email)")
|
scopes['openid'] = "OpenID Connect"
|
||||||
return scopes
|
return scopes
|
||||||
|
|
||||||
def get_available_scopes(self, application=None, request=None, *args, **kwargs):
|
def get_available_scopes(self, application=None, request=None, *args, **kwargs):
|
||||||
|
@@ -338,13 +338,13 @@ class SogeCredit(models.Model):
|
|||||||
last_name=self.user.last_name,
|
last_name=self.user.last_name,
|
||||||
first_name=self.user.first_name,
|
first_name=self.user.first_name,
|
||||||
bank="Société générale",
|
bank="Société générale",
|
||||||
valid=False,
|
valid=True,
|
||||||
)
|
)
|
||||||
credit_transaction._force_save = True
|
credit_transaction._force_save = True
|
||||||
credit_transaction.save()
|
credit_transaction.save()
|
||||||
credit_transaction.refresh_from_db()
|
credit_transaction.refresh_from_db()
|
||||||
self.credit_transaction = credit_transaction
|
self.credit_transaction = credit_transaction
|
||||||
elif not self.valid_legacy:
|
elif not self.valid:
|
||||||
self.credit_transaction.amount = self.amount
|
self.credit_transaction.amount = self.amount
|
||||||
self.credit_transaction._force_save = True
|
self.credit_transaction._force_save = True
|
||||||
self.credit_transaction.save()
|
self.credit_transaction.save()
|
||||||
@@ -371,7 +371,7 @@ class SogeCredit(models.Model):
|
|||||||
The Sogé credit may be created after the user already paid its memberships.
|
The Sogé credit may be created after the user already paid its memberships.
|
||||||
We query transactions and update the credit, if it is unvalid.
|
We query transactions and update the credit, if it is unvalid.
|
||||||
"""
|
"""
|
||||||
if self.valid_legacy or not self.pk:
|
if self.valid or not self.pk:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Soge do not pay BDE and kfet memberships since 2022
|
# Soge do not pay BDE and kfet memberships since 2022
|
||||||
@@ -403,7 +403,7 @@ class SogeCredit(models.Model):
|
|||||||
self.transactions.add(m.transaction)
|
self.transactions.add(m.transaction)
|
||||||
|
|
||||||
for tr in self.transactions.all():
|
for tr in self.transactions.all():
|
||||||
tr.valid = False
|
tr.valid = True
|
||||||
tr.save()
|
tr.save()
|
||||||
|
|
||||||
def invalidate(self):
|
def invalidate(self):
|
||||||
@@ -411,7 +411,7 @@ class SogeCredit(models.Model):
|
|||||||
Invalidating a Société générale delete the transaction of the bank if it was already created.
|
Invalidating a Société générale delete the transaction of the bank if it was already created.
|
||||||
Treasurers must know what they do, With Great Power Comes Great Responsibility...
|
Treasurers must know what they do, With Great Power Comes Great Responsibility...
|
||||||
"""
|
"""
|
||||||
if self.valid_legacy:
|
if self.valid:
|
||||||
self.credit_transaction.valid = False
|
self.credit_transaction.valid = False
|
||||||
self.credit_transaction.save()
|
self.credit_transaction.save()
|
||||||
for tr in self.transactions.all():
|
for tr in self.transactions.all():
|
||||||
@@ -420,7 +420,7 @@ class SogeCredit(models.Model):
|
|||||||
tr.save()
|
tr.save()
|
||||||
|
|
||||||
def validate(self, force=False):
|
def validate(self, force=False):
|
||||||
if self.valid_legacy and not force:
|
if self.valid and not force:
|
||||||
# The credit is already done
|
# The credit is already done
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -428,6 +428,7 @@ class SogeCredit(models.Model):
|
|||||||
self.invalidate()
|
self.invalidate()
|
||||||
# Refresh credit amount
|
# Refresh credit amount
|
||||||
self.save()
|
self.save()
|
||||||
|
self.valid = True
|
||||||
self.credit_transaction.valid = True
|
self.credit_transaction.valid = True
|
||||||
self.credit_transaction._force_save = True
|
self.credit_transaction._force_save = True
|
||||||
self.credit_transaction.save()
|
self.credit_transaction.save()
|
||||||
|
@@ -56,6 +56,7 @@ class InvoiceTable(tables.Table):
|
|||||||
model = Invoice
|
model = Invoice
|
||||||
template_name = 'django_tables2/bootstrap4.html'
|
template_name = 'django_tables2/bootstrap4.html'
|
||||||
fields = ('id', 'name', 'object', 'acquitted', 'invoice',)
|
fields = ('id', 'name', 'object', 'acquitted', 'invoice',)
|
||||||
|
order_by = ('-id',)
|
||||||
|
|
||||||
|
|
||||||
class RemittanceTable(tables.Table):
|
class RemittanceTable(tables.Table):
|
||||||
|
@@ -359,7 +359,7 @@ class TestSogeCredits(TestCase):
|
|||||||
))
|
))
|
||||||
self.assertRedirects(response, reverse("treasury:manage_soge_credit", args=(soge_credit.pk,)), 302, 200)
|
self.assertRedirects(response, reverse("treasury:manage_soge_credit", args=(soge_credit.pk,)), 302, 200)
|
||||||
soge_credit.refresh_from_db()
|
soge_credit.refresh_from_db()
|
||||||
self.assertTrue(soge_credit.valid_legacy)
|
self.assertTrue(soge_credit.valid)
|
||||||
self.user.note.refresh_from_db()
|
self.user.note.refresh_from_db()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
Transaction.objects.filter(Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
|
Transaction.objects.filter(Q(source=self.user.note) | Q(destination=self.user.note)).count(), 3)
|
||||||
|
@@ -417,7 +417,7 @@ class SogeCreditListView(LoginRequiredMixin, ProtectQuerysetMixin, SingleTableVi
|
|||||||
)
|
)
|
||||||
|
|
||||||
if "valid" not in self.request.GET or not self.request.GET["valid"]:
|
if "valid" not in self.request.GET or not self.request.GET["valid"]:
|
||||||
qs = qs.filter(credit_transaction__valid=False)
|
qs = qs.filter(valid=False)
|
||||||
|
|
||||||
return qs
|
return qs
|
||||||
|
|
||||||
|
@@ -680,7 +680,7 @@ class TestWEIRegistration(TestCase):
|
|||||||
self.assertTrue(soge_credit.exists())
|
self.assertTrue(soge_credit.exists())
|
||||||
soge_credit = soge_credit.get()
|
soge_credit = soge_credit.get()
|
||||||
self.assertTrue(membership.transaction in soge_credit.transactions.all())
|
self.assertTrue(membership.transaction in soge_credit.transactions.all())
|
||||||
self.assertFalse(membership.transaction.valid)
|
self.assertTrue(membership.transaction.valid)
|
||||||
|
|
||||||
# Check that if the WEI is started, we can't update a wei
|
# Check that if the WEI is started, we can't update a wei
|
||||||
self.wei.date_start = date(2000, 1, 1)
|
self.wei.date_start = date(2000, 1, 1)
|
||||||
|
Reference in New Issue
Block a user