Commit e9544f25 authored by Skia's avatar Skia
Browse files

Update CanCreateView and fix accounting views in consequence

parent 1396f2ca
...@@ -88,34 +88,12 @@ class GeneralJournal(models.Model): ...@@ -88,34 +88,12 @@ class GeneralJournal(models.Model):
amount = CurrencyField(_('amount'), default=0) amount = CurrencyField(_('amount'), default=0)
effective_amount = CurrencyField(_('effective_amount'), default=0) effective_amount = CurrencyField(_('effective_amount'), default=0)
def __init__(self, *args, **kwargs):
super(GeneralJournal, self).__init__(*args, **kwargs)
def save(self, *args, **kwargs):
if self.id == None:
amount = 0
super(GeneralJournal, self).save(*args, **kwargs)
def can_be_created_by(user):
"""
Method to see if an object can be created by the given user
"""
if user.is_in_group(settings.SITH_GROUPS['accounting-admin']['name']): # TODO: add the treasurer of the club
return True
return False
def is_owned_by(self, user): def is_owned_by(self, user):
""" """
Method to see if that object can be edited by the given user Method to see if that object can be edited by the given user
""" """
if user.is_in_group(settings.SITH_GROUPS['accounting-admin']['name']): if user.is_in_group(settings.SITH_GROUPS['accounting-admin']['name']):
return True return True
return False
def can_be_edited_by(self, user):
"""
Method to see if that object can be edited by the given user
"""
if self.club_account.can_be_edited_by(user): if self.club_account.can_be_edited_by(user):
return True return True
return False return False
...@@ -165,7 +143,7 @@ class Operation(models.Model): ...@@ -165,7 +143,7 @@ class Operation(models.Model):
""" """
if user.is_in_group(settings.SITH_GROUPS['accounting-admin']['name']): if user.is_in_group(settings.SITH_GROUPS['accounting-admin']['name']):
return True return True
m = self.journal.club_account.get_membership_for(user) m = self.journal.club_account.club.get_membership_for(user)
if m is not None and m.role >= 7: if m is not None and m.role >= 7:
return True return True
return False return False
...@@ -182,8 +160,8 @@ class Operation(models.Model): ...@@ -182,8 +160,8 @@ class Operation(models.Model):
return reverse('accounting:journal_details', kwargs={'j_id': self.journal.id}) return reverse('accounting:journal_details', kwargs={'j_id': self.journal.id})
def __str__(self): def __str__(self):
return "%d | %d € | %s | %s | %s" % ( return "%d € | %s | %s | %s" % (
self.id, self.amount, self.date, self.accounting_type, self.done, self.amount, self.date, self.accounting_type, self.done,
) )
class AccountingType(models.Model): class AccountingType(models.Model):
......
...@@ -26,7 +26,7 @@ class AccountingTypeEditView(CanViewMixin, UpdateView): ...@@ -26,7 +26,7 @@ class AccountingTypeEditView(CanViewMixin, UpdateView):
fields = ['code', 'label', 'movement_type'] fields = ['code', 'label', 'movement_type']
template_name = 'core/edit.jinja' template_name = 'core/edit.jinja'
class AccountingTypeCreateView(CanEditPropMixin, CreateView): # TODO: move to CanCreateMixin class AccountingTypeCreateView(CanCreateMixin, CreateView):
""" """
Create an accounting type (for the admins) Create an accounting type (for the admins)
""" """
...@@ -60,7 +60,7 @@ class BankAccountDetailView(CanViewMixin, DetailView): ...@@ -60,7 +60,7 @@ class BankAccountDetailView(CanViewMixin, DetailView):
pk_url_kwarg = "b_account_id" pk_url_kwarg = "b_account_id"
template_name = 'accounting/bank_account_details.jinja' template_name = 'accounting/bank_account_details.jinja'
class BankAccountCreateView(CanEditPropMixin, CreateView): # TODO: move to CanCreateMixin class BankAccountCreateView(CanCreateMixin, CreateView):
""" """
Create a bank account (for the admins) Create a bank account (for the admins)
""" """
...@@ -96,7 +96,7 @@ class ClubAccountDetailView(CanViewMixin, DetailView): ...@@ -96,7 +96,7 @@ class ClubAccountDetailView(CanViewMixin, DetailView):
pk_url_kwarg = "c_account_id" pk_url_kwarg = "c_account_id"
template_name = 'accounting/club_account_details.jinja' template_name = 'accounting/club_account_details.jinja'
class ClubAccountCreateView(CanEditPropMixin, CreateView): # TODO: move to CanCreateMixin class ClubAccountCreateView(CanCreateMixin, CreateView):
""" """
Create a club account (for the admins) Create a club account (for the admins)
""" """
...@@ -158,7 +158,7 @@ class JournalEditView(CanEditMixin, UpdateView): ...@@ -158,7 +158,7 @@ class JournalEditView(CanEditMixin, UpdateView):
# Operation views # Operation views
class OperationCreateView(CanEditMixin, CreateView): # TODO: move to CanCreateMixin class OperationCreateView(CanCreateMixin, CreateView):
""" """
Create an operation Create an operation
""" """
......
...@@ -12,11 +12,6 @@ def forbidden(request): ...@@ -12,11 +12,6 @@ def forbidden(request):
def not_found(request): def not_found(request):
return HttpResponseNotFound(render(request, "core/404.jinja")) return HttpResponseNotFound(render(request, "core/404.jinja"))
def can_create(mod, user):
if mod.can_be_created_by(user):
return True
return False
def can_edit_prop(obj, user): def can_edit_prop(obj, user):
if obj is None or user.is_owner(obj): if obj is None or user.is_owner(obj):
return True return True
...@@ -37,12 +32,10 @@ class CanCreateMixin(View): ...@@ -37,12 +32,10 @@ class CanCreateMixin(View):
This view is made to protect any child view that would create an object, and thus, that can not be protected by any This view is made to protect any child view that would create an object, and thus, that can not be protected by any
of the following mixin of the following mixin
""" """
def dispatch(self, request, *arg, **kwargs): def form_valid(self, form):
res = super(CanCreateMixin, self).dispatch(request, *arg, **kwargs) obj = form.instance
if hasattr(self, 'model'): if can_edit_prop(obj, self.request.user):
mod = self.model return super(CanCreateMixin, self).form_valid(form)
if can_create(mod, self.request.user):
return res
raise PermissionDenied raise PermissionDenied
class CanEditPropMixin(View): class CanEditPropMixin(View):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment