Skip to content

Commit 2c4697c

Browse files
author
Kishore kumar J
committed
Registration is Open
1 parent 0f7300e commit 2c4697c

File tree

13 files changed

+281
-37
lines changed

13 files changed

+281
-37
lines changed

participantsprofile/__init__.py

Whitespace-only changes.

participantsprofile/admin.py

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from django.contrib import admin
2+
from participantsprofile.models import UserProfile, Participant, College, Team
3+
4+
class ParticipantAdmin(admin.ModelAdmin):
5+
list_display = (
6+
'name',
7+
'email_id',
8+
'college',
9+
)
10+
ordering = ('college',)
11+
12+
admin.site.register(UserProfile)
13+
admin.site.register(Participant, ParticipantAdmin)
14+
admin.site.register(College)
15+
admin.site.register(Team)

participantsprofile/forms.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from django import forms
2+
from registration.forms import RegistrationForm
3+
from models import UserProfile
4+
from registration.models import RegistrationProfile
5+
from models import College
6+
7+
def get_colleges_list():
8+
colleges_list = ()
9+
for c in College.objects.order_by('name'):
10+
colleges_list += ((c.id, c.name),)
11+
colleges_list += ((-1,'Add my College'),)
12+
return colleges_list
13+
14+
class UserRegistrationForm(RegistrationForm):
15+
fullname = forms.CharField()
16+
phone_no = forms.IntegerField()
17+
college = forms.ChoiceField(choices=())
18+
add_your_college = forms.CharField(required=False, help_text='Enter your college name if not chosen above')
19+
rollno = forms.CharField()
20+
21+
def __init__(self, *args, **kwargs):
22+
super(UserRegistrationForm, self).__init__(*args, **kwargs)
23+
self.fields['college'].choices = get_colleges_list()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
# encoding: utf-8
2+
import datetime
3+
from south.db import db
4+
from south.v2 import SchemaMigration
5+
from django.db import models
6+
7+
class Migration(SchemaMigration):
8+
9+
def forwards(self, orm):
10+
11+
# Adding model 'College'
12+
db.create_table('participantsprofile_college', (
13+
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
14+
('name', self.gf('django.db.models.fields.CharField')(max_length=150)),
15+
))
16+
db.send_create_signal('participantsprofile', ['College'])
17+
18+
# Adding model 'Participant'
19+
db.create_table('participantsprofile_participant', (
20+
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
21+
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['participantsprofile.UserProfile'], unique=True)),
22+
('name', self.gf('django.db.models.fields.CharField')(max_length=100)),
23+
('email_id', self.gf('django.db.models.fields.EmailField')(max_length=75)),
24+
('phone_no', self.gf('django.db.models.fields.CharField')(max_length=12)),
25+
('college', self.gf('django.db.models.fields.related.ForeignKey')(related_name='participants', to=orm['participantsprofile.College'])),
26+
('roll_no', self.gf('django.db.models.fields.CharField')(max_length=8)),
27+
))
28+
db.send_create_signal('participantsprofile', ['Participant'])
29+
30+
# Adding model 'UserProfile'
31+
db.create_table('participantsprofile_userprofile', (
32+
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
33+
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], unique=True)),
34+
('user_type', self.gf('django.db.models.fields.CharField')(max_length=1)),
35+
))
36+
db.send_create_signal('participantsprofile', ['UserProfile'])
37+
38+
# Adding model 'Team'
39+
db.create_table('participantsprofile_team', (
40+
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
41+
('no_of_persons', self.gf('django.db.models.fields.IntegerField')()),
42+
('for_event', self.gf('django.db.models.fields.related.ForeignKey')(related_name='teams_registered', to=orm['events.Event'])),
43+
))
44+
db.send_create_signal('participantsprofile', ['Team'])
45+
46+
# Adding M2M table for field participants on 'Team'
47+
db.create_table('participantsprofile_team_participants', (
48+
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
49+
('team', models.ForeignKey(orm['participantsprofile.team'], null=False)),
50+
('participant', models.ForeignKey(orm['participantsprofile.participant'], null=False))
51+
))
52+
db.create_unique('participantsprofile_team_participants', ['team_id', 'participant_id'])
53+
54+
55+
def backwards(self, orm):
56+
57+
# Deleting model 'College'
58+
db.delete_table('participantsprofile_college')
59+
60+
# Deleting model 'Participant'
61+
db.delete_table('participantsprofile_participant')
62+
63+
# Deleting model 'UserProfile'
64+
db.delete_table('participantsprofile_userprofile')
65+
66+
# Deleting model 'Team'
67+
db.delete_table('participantsprofile_team')
68+
69+
# Removing M2M table for field participants on 'Team'
70+
db.delete_table('participantsprofile_team_participants')
71+
72+
73+
models = {
74+
'auth.group': {
75+
'Meta': {'object_name': 'Group'},
76+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
77+
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
78+
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
79+
},
80+
'auth.permission': {
81+
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
82+
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
83+
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
84+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
85+
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
86+
},
87+
'auth.user': {
88+
'Meta': {'object_name': 'User'},
89+
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
90+
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
91+
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
92+
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
93+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
94+
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
95+
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
96+
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
97+
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
98+
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
99+
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
100+
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
101+
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
102+
},
103+
'contenttypes.contenttype': {
104+
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
105+
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
106+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
107+
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
108+
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
109+
},
110+
'events.event': {
111+
'Meta': {'object_name': 'Event'},
112+
'additional_info': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
113+
'caption': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
114+
'classic_name': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
115+
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
116+
'end_time': ('django.db.models.fields.TimeField', [], {'null': 'True', 'blank': 'True'}),
117+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118+
'rules': ('django.db.models.fields.TextField', [], {}),
119+
'start_time': ('django.db.models.fields.TimeField', [], {'null': 'True', 'blank': 'True'}),
120+
'venue': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'})
121+
},
122+
'participantsprofile.college': {
123+
'Meta': {'object_name': 'College'},
124+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
125+
'name': ('django.db.models.fields.CharField', [], {'max_length': '150'})
126+
},
127+
'participantsprofile.participant': {
128+
'Meta': {'object_name': 'Participant'},
129+
'college': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'participants'", 'to': "orm['participantsprofile.College']"}),
130+
'email_id': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
131+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
132+
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
133+
'phone_no': ('django.db.models.fields.CharField', [], {'max_length': '12'}),
134+
'roll_no': ('django.db.models.fields.CharField', [], {'max_length': '8'}),
135+
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['participantsprofile.UserProfile']", 'unique': 'True'})
136+
},
137+
'participantsprofile.team': {
138+
'Meta': {'object_name': 'Team'},
139+
'for_event': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'teams_registered'", 'to': "orm['events.Event']"}),
140+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
141+
'no_of_persons': ('django.db.models.fields.IntegerField', [], {}),
142+
'participants': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['participantsprofile.Participant']", 'symmetrical': 'False'})
143+
},
144+
'participantsprofile.userprofile': {
145+
'Meta': {'object_name': 'UserProfile'},
146+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
147+
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'}),
148+
'user_type': ('django.db.models.fields.CharField', [], {'max_length': '1'})
149+
}
150+
}
151+
152+
complete_apps = ['participantsprofile']

participantsprofile/migrations/__init__.py

Whitespace-only changes.

participantsprofile/models.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from django.db import models
2+
from django.contrib.auth.models import User
3+
from events.models import Event
4+
User_Types = (
5+
('P','Participant'),
6+
('A','Admin')
7+
)
8+
9+
class College(models.Model):
10+
name = models.CharField(max_length=150)
11+
12+
def __unicode__(self):
13+
return self.name
14+
15+
class Participant(models.Model):
16+
user = models.ForeignKey('participantsprofile.UserProfile', unique=True)
17+
18+
name = models.CharField(max_length=100)
19+
email_id = models.EmailField()
20+
phone_no = models.CharField(max_length=12)
21+
22+
college = models.ForeignKey(College, related_name='participants')
23+
roll_no = models.CharField(max_length=8)
24+
25+
def __unicode__(self):
26+
return 'Participant - ' + str(self.name)
27+
28+
class UserProfile(models.Model):
29+
user = models.ForeignKey(User, unique=True)
30+
user_type = models.CharField(max_length=1, choices=User_Types)
31+
def __unicode__(self):
32+
if self.user_type == 'P':
33+
participant = Participant.objects.filter(user=self.user)
34+
if participant:
35+
return (participant[0].name)
36+
return (str)(self.user)
37+
38+
class Team(models.Model):
39+
no_of_persons = models.IntegerField()
40+
for_event = models.ForeignKey(Event, related_name='teams_registered')
41+
participants = models.ManyToManyField(Participant)

participantsprofile/regbackend.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from forms import UserRegistrationForm
2+
from models import UserProfile, Participant, College
3+
4+
def user_created(sender, user, request, **kwargs):
5+
form = UserRegistrationForm(request.POST)
6+
user_profile = UserProfile(user=user, user_type='P')
7+
user_profile.save()
8+
participant = Participant(user=user_profile)
9+
participant.name = form.data["fullname"]
10+
user.firstname = participant.name
11+
participant.email_id = user.email
12+
participant.phone_no = form.data["phone_no"]
13+
if int(form.data["college"]) == -1:
14+
if form.data["add_your_college"] is not None:
15+
new_college = College(name=form.data["add_your_college"])
16+
new_college.save()
17+
participant.college = new_college
18+
else:
19+
raise Exception("No College name specified")
20+
else:
21+
participant.college = College.objects.get(pk=form.data["college"])
22+
participant.roll_no = form.data['rollno']
23+
participant.save()
24+
25+
from registration.signals import user_registered
26+
user_registered.connect(user_created)

settings.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@
100100
LOGIN_URL = '/account/signin'
101101
LOGOUT_URL = '/account/signout'
102102
LOGIN_REDIRECT_URL = '/'
103-
REGISTRATION_OPEN = False
103+
REGISTRATION_OPEN = True
104+
AUTH_PROFILE_MODULE = 'participantsprofile.profile'
104105

105106
DEFAULT_FROM_EMAIL = '[email protected]'
106107

@@ -111,11 +112,12 @@
111112
'django.contrib.sites',
112113
'django.contrib.messages',
113114
'django.contrib.admin',
114-
'registration',
115115
'south',
116116
'django_authopenid',
117117

118118
'cseismic2kx.home',
119119
'cseismic2kx.events',
120120
'cseismic2kx.host',
121+
'cseismic2kx.registration',
122+
'cseismic2kx.participantsprofile',
121123
)

static/css/base.css

+13
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,16 @@ p {
8989
.additional_info {
9090
font-size: medium;
9191
}
92+
.errors {
93+
color: red;
94+
font-weight: bolder;
95+
}
96+
.errorlist {
97+
color: red;
98+
font-weight: bold;
99+
font-size: small;
100+
}
101+
.sign_up_table tr td,th {
102+
padding-top: 30px;
103+
vertical-align: center;
104+
}

static/images/cseismic2k10.old3.png

108 KB
Loading

templates/authopenid/complete.html

+2-29
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,11 @@
88
<div id="completetxt">
99
<h1>{% trans "Your OpenID is verified! " %}</h1>
1010
{% blocktrans %}
11-
<p>Your OpenID can now be associated with a new or existing membership. You can change the association later in your preferences</p>
11+
<p>Your OpenID can now be associated with an existing participant account. Later on, you can login just with your OpenID.</p>
1212
{% endblocktrans %}
1313
<br /><br />
1414
<h2>{% trans "Associate your OpenID" %}</h2>
15-
{% blocktrans %}
16-
<p>If you're a new member, associate your OpenID with a new account. If you're already a member, associate with your existing account.</p>
17-
{% endblocktrans %}
1815
</div>
19-
{% if form1.errors %}
20-
<p class="errors">{% trans "Please correct errors below:" %}<br />
21-
{% if form1.username.errors %}
22-
<span class="error">{{ form1.username.errors|join:", " }}</span>
23-
{% endif %}
24-
{% if form1.email.errors %}
25-
<span class="error">{{ form1.email.errors|join:", " }}</span>
26-
{% endif %}
27-
</p>
28-
{% endif %}
2916
{% if form2.errors %}
3017
<p class="errors">{% trans "Please correct errors below:" %}<br />
3118
{% if form2.username.errors %}
@@ -36,28 +23,14 @@ <h2>{% trans "Associate your OpenID" %}</h2>
3623
{% endif %}
3724
</p>
3825
{% endif %}
39-
40-
<div class="login">
41-
<form name="fregister" action="{% url user_register %}" method="POST">
42-
{% csrf_token %}
43-
{{ form.next }}
44-
<fieldset>
45-
<legend>{% trans "A new account" %}</legend>
46-
<div class="form-row"><label for "id_username">{% trans "Screen name" %}</label><br />{{ form1.username }}</div>
47-
<div class="form-row"><label for "id_email">{% trans "Email" %}</label><br />{{ form1.email }}</div>
48-
<div class="submit-row"><input type="submit" name="bnewaccount" value="CREATE MY ACCOUNT"></div>
49-
<hr class="clear" />
50-
</fieldset>
51-
</form>
52-
</div>
5326
<div class="login">
5427
<h3></h3>
5528
<form name="fverify" action="{% url user_register %}" method="POST">
5629
{% csrf_token %}
5730
{{ form.next }}
5831
<fieldset>
5932
<legend>{% trans "An exisiting account" %}</legend>
60-
<div class="form-row"><label for "id_username">{% trans "Screen name" %}</label><br />{{ form2.username }}</div>
33+
<div class="form-row"><label for "id_username">{% trans "Username" %}</label><br />{{ form2.username }}</div>
6134
<div class="form-row"><label for "id_passwordl">{% trans "Password" %}</label><br />{{ form2.password }}</div>
6235
<div class="submit-row"><input type="submit" name="bverify" value="VERIFY"></div>
6336
</fieldset>

templates/registration/registration_form.html

+2-5
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,16 @@
66
{% if form.errors %}
77
<div class="errors">
88
<p>Error while submitting form</p>
9-
109
</div>
1110
<br>
1211
{% endif %}
1312
<h1>Join</h1>
14-
<a href="{% url user_signin %}">Click Here</a> to sign up with OpenID.
15-
<br/>
16-
<p>Or, Fill in the details below... </p>
13+
<p>Fill in the details below... </p>
1714
<form action="" method="post">
1815
{% csrf_token %}
1916
<fieldset>
2017
<legend>{% trans "Create a new account" %}</legend>
21-
<table>
18+
<table class="sign_up_table">
2219
{{ form.as_table }}
2320
</table>
2421
<p><input type="submit" name="bsignup'" value="{% trans "Sign up" %}"> </p>

urls.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
from django.contrib import admin
55
from django.views.generic.simple import redirect_to
66

7+
import participantsprofile.regbackend
78
from home.feeds import LatestNewsFeed
9+
from participantsprofile.forms import UserRegistrationForm
810

911
admin.autodiscover()
1012

@@ -21,7 +23,7 @@
2123
(r'^$', 'home.views.index'),
2224
url(r'^account/activate/(?P<activation_key>\w+)/$', 'registration.views.activate', { 'backend': 'registration.backends.default.DefaultBackend' }, name='registration_activate'),
2325
url(r'^account/activate/complete/$', direct_to_template, { 'template': 'registration/activation_complete.html' }, name='registration_activation_complete'),
24-
url(r'^account/signup/$', 'registration.views.register', {'backend':'registration.backends.default.DefaultBackend' }, name='registration_register'),
26+
url(r'^account/signup/$', 'registration.views.register', {'backend':'registration.backends.default.DefaultBackend', 'form_class':UserRegistrationForm }, name='registration_register'),
2527
url(r'^register/closed/$', direct_to_template, { 'template': 'registration/registration_closed.html' }, name='registration_disallowed'),
2628

2729
(r'^account/', include('django_authopenid.urls')),

0 commit comments

Comments
 (0)