from django import forms from django.contrib.auth.models import User from kfet.models import Account, Checkout, Article from gestioncof.models import CofProfile # ----- # Widgets # ----- class DateTimeWidget(forms.DateTimeInput): def __init__(self, attrs = None): super(DateTimeWidget, self).__init__(attrs) self.attrs['format'] = '%Y-%m-%d %H:%M' class Media: css = { 'all': ('bootstrap-datetimepicker.min.css',) } js = ( 'moment.js', 'moment-fr.js', 'bootstrap-datetimepicker.min.js', ) # ----- # Account forms # ----- class AccountForm(forms.ModelForm): # Surcharge pour passer data à Account.save() def save(self, data = {}, *args, **kwargs): obj = super(AccountForm, self).save(commit = False, *args, **kwargs) obj.save(data = data) return obj class Meta: model = Account fields = ['trigramme', 'promo', 'nickname'] widgets = { 'trigramme': forms.TextInput(attrs={'autocomplete': 'off'}), } class AccountTriForm(AccountForm): class Meta(AccountForm.Meta): fields = ['trigramme'] class AccountNoTriForm(AccountForm): class Meta(AccountForm.Meta): exclude = ['trigramme'] class AccountRestrictForm(AccountForm): class Meta(AccountForm.Meta): fields = ['promo'] class CofForm(forms.ModelForm): def clean_is_cof(self): instance = getattr(self, 'instance', None) if instance and instance.pk: return instance.is_cof else: return False class Meta: model = CofProfile fields = ['login_clipper', 'is_cof', 'departement'] class CofRestrictForm(CofForm): class Meta(CofForm.Meta): fields = ['departement'] class UserForm(forms.ModelForm): class Meta: model = User fields = ['username', 'first_name', 'last_name', 'email'] help_texts = { 'username': '' } class UserRestrictForm(UserForm): class Meta(UserForm.Meta): fields = ['first_name', 'last_name', 'email'] # ----- # Checkout forms # ----- class CheckoutForm(forms.ModelForm): class Meta: model = Checkout fields = ['name', 'valid_from', 'valid_to', 'balance', 'is_protected'] widgets = { 'valid_from': DateTimeWidget(), 'valid_to' : DateTimeWidget(), } class CheckoutRestrictForm(CheckoutForm): class Meta(CheckoutForm.Meta): fields = ['name', 'valid_from', 'valid_to'] # ----- # Article forms # ----- class ArticleForm(forms.ModelForm): class Meta: model = Article fields = ['name', 'is_sold', 'price', 'stock', 'category'] class ArticleRestrictForm(ArticleForm): class Meta(ArticleForm.Meta): fields = ['name', 'is_sold', 'price', 'category']