Files
kasu/src/mahjong_ranking/forms.py

61 lines
2.0 KiB
Python

# -*- encoding: utf-8 -*-
"""
Created on 04.10.2011
@author: christian
"""
from django.contrib.auth import get_user_model
from django import forms
from django.utils.translation import ugettext as _
from . import models
USER_MODEL = get_user_model()
class HanchanForm(forms.ModelForm):
""" Form to add/edit mahjong hanchans, grouped with formsets. """
error_css_class = 'error'
required_css_class = 'required'
start = forms.SplitDateTimeField(label=_('start'), required=True)
class Meta(object):
""" Medadata for better usability of the HanchanForm """
model = models.Hanchan
fields = ('start',
'player1', 'player1_input_score',
'player2', 'player2_input_score',
'player3', 'player3_input_score',
'player4', 'player4_input_score',
'comment')
widgets = {
'event': forms.HiddenInput(),
'comment': forms.widgets.Textarea(attrs={'rows': 4, 'cols': 40})
}
def __init__(self, *args, **kwargs):
""" Overwrites some standard widgets for better usability. """
super(HanchanForm, self).__init__(*args, **kwargs)
player_queryset = USER_MODEL.objects.filter(
is_active=True,
membership=True)
for i in range(1, 4):
player = 'player%d' % i
player_input_score = 'player%d_input_score' % i
self.fields[player_input_score].widget.attrs['size'] = 6
self.fields[player_input_score].widget.attrs['type'] = 'number'
self.fields[player].queryset = player_queryset
class HanchanAdminForm(HanchanForm):
""" Extends the HanchanForm for users with admin privileges.
They are allowed to confirm/unconfirm Hanchans, this could be userful if
one games smells fishy and needs the opinion of an referee."""
class Meta(object):
""" Extend the formfields to add the confirmed checkbox. """
model = models.Hanchan
fields = HanchanForm.Meta.fields + ('confirmed',)