Update CanCreateView and fix accounting views in consequence

This commit is contained in:
Skia 2016-06-24 21:07:59 +02:00
parent 1396f2ca84
commit e9544f2581
3 changed files with 11 additions and 40 deletions

View File

@ -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):
""" """
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):
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):

View File

@ -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):
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):
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):
# Operation views # Operation views
class OperationCreateView(CanEditMixin, CreateView): # TODO: move to CanCreateMixin class OperationCreateView(CanCreateMixin, CreateView):
""" """
Create an operation Create an operation
""" """

View File

@ -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):
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):