Vues gestion caisses et amélioration Account

- General :
    - Ajout de la gestion des messages dans le template base
    - jQuery et bootstrap ajoutés au template base
    - Ajout de DateTimeWidget utilisant bootstrap-datetimepicker pour
      les champs DateTime
- Account :
    - Ajout de propriétés aux modèles pour accéder directement à
      certains éléments sans avoir à passer par les relations
    - Suppression d'une méthode inutile dans le modèle
    - Correction de permission dans la vue update
    - Utilisation des messages pour la création et l'édition d'un compte
- Checkout :
    - gestion initiale CRU
This commit is contained in:
Aurélien Delobelle 2016-08-04 05:21:04 +02:00
parent 9677fd9ef6
commit 2786f834a5
16 changed files with 4647 additions and 59 deletions

View file

@ -1,4 +1,5 @@
from django.db import models
from django.core.urlresolvers import reverse
from django.core.exceptions import PermissionDenied
from django.contrib.auth.models import User, AnonymousUser
from django.core.validators import RegexValidator
@ -40,7 +41,46 @@ class Account(models.Model):
blank = True, null = True, default = None)
def __str__(self):
return self.trigramme
return '%s (%s)' % (self.trigramme, self.name)
# Propriétés pour accéder aux attributs de user et cofprofile et user
@property
def user(self):
return self.cofprofile.user
@property
def username(self):
return self.cofprofile.user.username
@property
def first_name(self):
return self.cofprofile.user.first_name
@property
def last_name(self):
return self.cofprofile.user.last_name
@property
def email(self):
return self.cofprofile.user.email
@property
def departement(self):
return self.cofprofile.departement
@property
def is_cof(self):
return self.cofprofile.is_cof
# Propriétés supplémentaires
@property
def real_balance(self):
if (hasattr(self, 'negative')):
return self.balance + self.negative.balance_offset
return self.balance
@property
def name(self):
if self.first_name and self.last_name:
return '%s %s' % (self.first_name, self.last_name)
elif self.first_name:
return '%s %s' % self.first_name
else:
return self.last_name
@staticmethod
def is_validandfree(trigramme):
@ -53,14 +93,6 @@ class Account(models.Model):
data['is_free'] = True
return data
def real_balance(self):
if (hasattr(self, 'negative')):
return self.balance + self.negative.balance_offset
return self.balance
def read(self, auth_user = AnonymousUser()):
user = self.cofprofile.user
# Surcharge Méthode save() avec gestions de User et CofProfile
# Args:
# - data : datas pour User et CofProfile
@ -72,7 +104,7 @@ class Account(models.Model):
# Account update
# Updating User with data
user = self.cofprofile.user
user = self.user
user.first_name = data.get("first_name", user.first_name)
user.last_name = data.get("last_name", user.last_name)
user.email = data.get("email", user.email)
@ -81,12 +113,6 @@ class Account(models.Model):
cof = self.cofprofile
cof.departement = data.get("departement", cof.departement)
cof.save()
# Nickname is not editable by the user
"""
if not auth_user.has_perm('kfet.change_account'):
account_old = Account.objects.get(pk=self.pk)
self.nickname = account_old.nickname
"""
else:
# New account
@ -149,9 +175,20 @@ class Checkout(models.Model):
name = models.CharField(max_length = 45)
valid_from = models.DateTimeField()
valid_to = models.DateTimeField()
balance = models.DecimalField(max_digits = 6, decimal_places = 2)
balance = models.DecimalField(
max_digits = 6, decimal_places = 2,
default = 0)
is_protected = models.BooleanField(default = False)
def get_absolute_url(self):
return reverse('kfet.checkout.read', kwargs={'pk': self.pk})
class Meta:
ordering = ['-valid_to']
def __str__(self):
return self.name
class CheckoutTransfer(models.Model):
from_checkout = models.ForeignKey(
Checkout, on_delete = models.PROTECT,