Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
SRCT
go
Commits
e48285d7
Commit
e48285d7
authored
Aug 29, 2014
by
Michel Rouly
Browse files
Merge pull request
#2
from creffett/registration-refactor
Registration refactor
parents
cec860bd
9758d57c
Changes
6
Hide whitespace changes
Inline
Side-by-side
go/go/forms.py
View file @
e48285d7
from
django
import
forms
from
go.models
import
URL
from
go.models
import
URL
,
RegisteredUser
from
django.core.validators
import
MinLengthValidator
,
MinValueValidator
,
RegexValidator
from
django.core.exceptions
import
ValidationError
from
captcha.fields
import
CaptchaField
...
...
@@ -64,11 +64,20 @@ class URLForm( forms.ModelForm ):
}
class
SignupForm
(
forms
.
Form
):
class
SignupForm
(
forms
.
ModelForm
):
def
validate_username
(
username
):
try
:
registered
=
RegisteredUser
.
objects
.
get
(
username
=
username
)
raise
ValidationError
(
'Username "%s" is already in use.'
%
username
)
except
RegisteredUser
.
DoesNotExist
:
return
username
=
forms
.
CharField
(
required
=
True
,
label
=
'
Username
'
,
label
=
'
Mason NetID
'
,
max_length
=
30
,
validators
=
[
validate_username
],
widget
=
forms
.
TextInput
(
attrs
=
{
}),
)
...
...
@@ -87,3 +96,6 @@ class SignupForm( forms.Form ):
}),
)
captcha
=
CaptchaField
()
class
Meta
:
model
=
RegisteredUser
go/go/migrations/0007_auto__add_field_registereduser_approved.py
0 → 100644
View file @
e48285d7
# -*- coding: utf-8 -*-
from
south.utils
import
datetime_utils
as
datetime
from
south.db
import
db
from
south.v2
import
SchemaMigration
from
django.db
import
models
class
Migration
(
SchemaMigration
):
def
forwards
(
self
,
orm
):
# Adding field 'RegisteredUser.approved'
db
.
add_column
(
u
'go_registereduser'
,
'approved'
,
self
.
gf
(
'django.db.models.fields.BooleanField'
)(
default
=
True
),
keep_default
=
False
)
def
backwards
(
self
,
orm
):
# Deleting field 'RegisteredUser.approved'
db
.
delete_column
(
u
'go_registereduser'
,
'approved'
)
models
=
{
u
'auth.group'
:
{
'Meta'
:
{
'object_name'
:
'Group'
},
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'80'
}),
'permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
u
"orm['auth.Permission']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
})
},
u
'auth.permission'
:
{
'Meta'
:
{
'ordering'
:
"(u'content_type__app_label', u'content_type__model', u'codename')"
,
'unique_together'
:
"((u'content_type', u'codename'),)"
,
'object_name'
:
'Permission'
},
'codename'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'content_type'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['contenttypes.ContentType']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'50'
})
},
u
'auth.user'
:
{
'Meta'
:
{
'object_name'
:
'User'
},
'date_joined'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'email'
:
(
'django.db.models.fields.EmailField'
,
[],
{
'max_length'
:
'75'
,
'blank'
:
'True'
}),
'first_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'groups'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Group']"
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'is_active'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'True'
}),
'is_staff'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'is_superuser'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'last_login'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'last_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'password'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'128'
}),
'user_permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"u'user_set'"
,
'blank'
:
'True'
,
'to'
:
u
"orm['auth.Permission']"
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'30'
})
},
u
'contenttypes.contenttype'
:
{
'Meta'
:
{
'ordering'
:
"('name',)"
,
'unique_together'
:
"(('app_label', 'model'),)"
,
'object_name'
:
'ContentType'
,
'db_table'
:
"'django_content_type'"
},
'app_label'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
u
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'model'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
})
},
u
'go.registereduser'
:
{
'Meta'
:
{
'object_name'
:
'RegisteredUser'
},
'approved'
:
(
'django.db.models.fields.BooleanField'
,
[],
{}),
'description'
:
(
'django.db.models.fields.TextField'
,
[],
{
'blank'
:
'True'
}),
'full_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'primary_key'
:
'True'
})
},
u
'go.url'
:
{
'Meta'
:
{
'ordering'
:
"['short']"
,
'object_name'
:
'URL'
},
'clicks'
:
(
'django.db.models.fields.IntegerField'
,
[],
{
'default'
:
'0'
}),
'date_created'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime(2014, 8, 28, 0, 0)'
}),
'expires'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
,
'blank'
:
'True'
}),
'owner'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
u
"orm['auth.User']"
}),
'short'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'20'
,
'primary_key'
:
'True'
}),
'target'
:
(
'django.db.models.fields.URLField'
,
[],
{
'max_length'
:
'1000'
})
}
}
complete_apps
=
[
'go'
]
\ No newline at end of file
go/go/models.py
View file @
e48285d7
...
...
@@ -66,6 +66,8 @@ class RegisteredUser( models.Model ):
description
=
models
.
TextField
(
blank
=
True
)
approved
=
models
.
BooleanField
()
def
__unicode__
(
self
):
return
'<Registered User: %s>'
%
self
.
username
return
'<Registered User:
%s - Approval Status:
%s>'
%
(
self
.
username
,
self
.
approved
)
go/go/templates/about.html
View file @
e48285d7
...
...
@@ -17,8 +17,17 @@ ULife groups, and student organizations. Access is moderated by SRCT
administrators.
</p>
{% if user.is_authenticated %}
<p>
You can
<a
href=
"{% url 'signup' %}"
>
sign up
</a>
for use.
<br/><br/>
</p>
{% else %}
<p>
Please
<a
href=
"{% url 'go_login' %}"
>
log in
</a>
in order to submit an access
request.
<br/><br/>
</p>
{% endif %}
{% endblock %}
go/go/templates/login.html
View file @
e48285d7
...
...
@@ -17,14 +17,14 @@ Go - Login
action=
"{% url 'django.contrib.auth.views.login' %}"
>
{% csrf_token %}
<label
for=
"username"
>
Username
</label>
<label
for=
"username"
>
Mason NetID
</label>
<br/>
{% for error in form.username.errors %}
<p
class=
"error"
>
{{ error }}
</p>
{% empty %}
<br/>
{% endfor %}
<input
type=
"text"
id=
"username"
name=
"username"
placeholder=
"
Username
"
<input
type=
"text"
id=
"username"
name=
"username"
placeholder=
"
Mason NetID
"
{%
if
form.username.errors
%}
class=
"error"
{%
endif
%}
/>
<br/><br/>
...
...
@@ -43,7 +43,7 @@ action="{% url 'django.contrib.auth.views.login' %}">
</form>
<p>
You must be
<a
href=
"{% url 'signup' %}"
>
registered
</a>
to use this
s
ervice
.
</p>
<p>
You must be registered to use this
service. Please log in in order to
s
ubmit a registration request
.
</p>
{% endblock %}
go/go/views.py
View file @
e48285d7
...
...
@@ -5,7 +5,7 @@ from django.conf import settings
from
django.http
import
Http404
,
HttpResponseServerError
from
django.utils
import
timezone
from
django.contrib.auth.models
import
User
from
django.core.exceptions
import
PermissionDenied
from
django.core.exceptions
import
PermissionDenied
,
ValidationError
from
django.core.mail
import
send_mail
from
django.contrib.auth.decorators
import
login_required
from
django.shortcuts
import
render
,
get_object_or_404
,
redirect
...
...
@@ -26,7 +26,7 @@ def is_registered( user ):
try
:
registered
=
RegisteredUser
.
objects
.
get
(
username
=
user
.
username
)
return
True
return
registered
.
approved
except
RegisteredUser
.
DoesNotExist
:
return
False
...
...
@@ -179,6 +179,7 @@ def delete(request, short):
raise
PermissionDenied
()
@
login_required
def
signup
(
request
):
"""
This view presents the user with a registration form. You can register
...
...
@@ -186,14 +187,14 @@ def signup(request):
"""
form
=
SignupForm
()
signup_
form
=
SignupForm
()
if
request
.
method
==
'POST'
:
form
=
SignupForm
(
request
.
POST
)
if
form
.
is_valid
():
username
=
form
.
cleaned_data
.
get
(
'username'
)
full_name
=
form
.
cleaned_data
.
get
(
'full_name'
)
description
=
form
.
cleaned_data
.
get
(
'description'
)
signup_
form
=
SignupForm
(
request
.
POST
,
initial
=
{
'approved'
:
False
}
)
if
signup_
form
.
is_valid
():
username
=
signup_
form
.
cleaned_data
.
get
(
'username'
)
full_name
=
signup_
form
.
cleaned_data
.
get
(
'full_name'
)
description
=
signup_
form
.
cleaned_data
.
get
(
'description'
)
send_mail
(
'Signup from %s'
%
(
username
),
'%s signed up at %s
\n
'
'Username: %s
\n
Message: %s
\n
Please attend to this request at '
...
...
@@ -201,10 +202,12 @@ def signup(request):
str
(
timezone
.
now
()).
strip
(),
str
(
username
),
str
(
description
)),
settings
.
EMAIL_FROM
,
[
settings
.
EMAIL_TO
])
signup_form
.
save
()
return
redirect
(
'registered'
)
return
render
(
request
,
'signup.html'
,
{
'form'
:
form
,
'form'
:
signup_
form
,
},
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment