~pidgeon690/mypidge-base/feature+publicity

« back to all changes in this revision

Viewing changes to MyPidge/Users/forms.py

  • Committer: Fergus Ross Ferrier
  • Date: 2008-12-01 20:32:29 UTC
  • Revision ID: me@fergusrossferrier.co.uk-20081201203229-tz2yh5ylrdihckkw
User now exists in Person multi-table hierarchy.

We can add people without needing them to register. We can use existing data for a person when they try and register. It's a real bitch to use though.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
from django.forms import ModelForm, ValidationError
2
 
from MyPidge.Users.models import User, Membership
 
2
from MyPidge.Users.models import User, Membership, CambridgeMember, Person
3
3
from django import forms
4
4
from MyPidge.Groups.models import Group
5
5
 
50
50
    def save(self):
51
51
        self.instance.UpdatePassword(self.cleaned_data['new_password'])
52
52
 
 
53
class CambridgeRegisterForm(ModelForm):
 
54
    ''' Form for CambridgeMember registration '''
 
55
    college = forms.ModelChoiceField(queryset = Group.objects.filter(category__small_name = 'COL'), required=False)
 
56
 
 
57
    def __init__(self, data=None, crsid=None, pk=None, *args, **kwargs):
 
58
        self.crsid = crsid
 
59
        self.pk = pk
 
60
        super(CambridgeRegisterForm, self).__init__(data, *args, **kwargs)
 
61
    
 
62
    def save(self, *args, **kwargs):
 
63
        
 
64
        # Get existing person to add Cambridge record to
 
65
        person = Person.objects.get(pk = self.pk)
 
66
 
 
67
        # Create CambridgeMember and append person data
 
68
        myCM = CambridgeMember(
 
69
            crsid = self.crsid,
 
70
            subject = self.cleaned_data['subject'],
 
71
            type = self.cleaned_data['type'],
 
72
            **person.as_dict())
 
73
        myCM.save()
 
74
        
 
75
        if self.cleaned_data.get('college'):
 
76
            Membership.objects.create(person = person, group = self.cleaned_data['college'], assoctype = "MEM")
 
77
 
 
78
    class Meta:
 
79
        model = CambridgeMember
 
80
        fields = ('type', 'subject')
 
81
 
53
82
class RegisterForm(ModelForm):
54
83
    ''' Form for User registration '''
55
 
    college = forms.ModelChoiceField(queryset = Group.objects.filter(category__small_name = 'COL'), required=False)
56
84
    # Update label
57
85
    start_showflagstatus = forms.BooleanField(label="Are You A Boatie?", help_text="Tick the box and you'll see rowing events and the Cam river flag status on your home page.", required=False)
58
86
    password_one = forms.CharField(max_length=32, widget=forms.PasswordInput, help_text="(required) Choose a password for MyPidge. You can use this if you cannot get in using Raven. Recommended that you don't use the same password as for Raven.")
59
87
    password_again = forms.CharField(max_length=32, widget=forms.PasswordInput, label='Password Again', help_text="(required) The same password again")
60
88
 
 
89
    class Meta:
 
90
        model = User
 
91
        fields = ('firstname', 'lastname', 'email', 'interests')
 
92
 
61
93
    def __init__(self, data=None, crsid=None, *args, **kwargs):
62
94
        self.crsid = crsid
63
95
        super(RegisterForm, self).__init__(data, *args, **kwargs)
64
96
 
65
 
    class Meta:
66
 
        model = User
67
 
        fields = ('firstname', 'lastname', 'email', 'subject', 'interests', 'type')
68
97
    
69
98
    def clean_password_again(self):
70
99
        if self.cleaned_data.get('password_one') and self.cleaned_data.get('password_again') and self.cleaned_data['password_one'] != self.cleaned_data['password_again']:
85
114
        user.membershipstatus = 'EP'
86
115
        
87
116
        if self.crsid:
88
 
            user.crsid = self.crsid
89
 
        
90
 
        if user.crsid:
91
 
            if user.email == (user.crsid + "@cam.ac.uk"):
 
117
            if user.email == (self.crsid + "@cam.ac.uk"):
92
118
                user.membershipstatus = 'OK'
93
119
        
94
120
        if user.membershipstatus == 'EP':
101
127
        
102
128
        user.save()
103
129
        
104
 
        if self.cleaned_data.get('college'):
105
 
            Membership.objects.create(user = user, group = self.cleaned_data['college'], assoctype = "MEM")
106
 
        
107
 
        # Do this after college, so that link is added to user's homepage
108
 
        user.GiveDefaults()
109
 
        
110
130
        return user, activate
 
 
b'\\ No newline at end of file'