Adding errors to API/login and API/signup. Getting rid of namespacing on login and signup form fields for api use.

This commit is contained in:
Samuel Clay 2011-09-14 20:08:40 -07:00
parent 2db298cd50
commit 51a0fb2705
5 changed files with 41 additions and 30 deletions

View file

@ -15,27 +15,35 @@ from utils import log as logging
@json.json_view
def login(request):
code = -1
errors = None
if request.method == "POST":
form = LoginForm(data=request.POST)
if form.errors:
errors = form.errors
if form.is_valid():
login_user(request, form.get_user())
logging.user(form.get_user(), "~FG~BB~SKAPI Login~FW")
code = 1
return dict(code=code)
return dict(code=code, errors=errors)
@json.json_view
def signup(request):
code = -1
errors = None
if request.method == "POST":
form = SignupForm(data=request.POST)
if form.errors:
errors = form.errors
if form.is_valid():
new_user = form.save()
login_user(request, new_user)
logging.user(new_user, "~FG~SB~BBAPI NEW SIGNUP~FW")
code = 1
return dict(code=code)
return dict(code=code, errors=errors)
@json.json_view
def logout(request):

View file

@ -61,22 +61,25 @@ class LoginForm(forms.Form):
class SignupForm(forms.Form):
signup_username = forms.RegexField(regex=r'^\w+$',
max_length=30,
widget=forms.TextInput(),
label=_(u'username'),
error_messages={'required': 'Please enter a username.'})
username = forms.RegexField(regex=r'^\w+$',
max_length=30,
widget=forms.TextInput(),
label=_(u'username'),
error_messages={
'required': 'Please enter a username.',
'invalid': "Your username may only contain letters and numbers."
})
email = forms.EmailField(widget=forms.TextInput(attrs=dict(maxlength=75)),
label=_(u'email address'),
required=False)
# error_messages={'required': 'Please enter your email.'})
signup_password = forms.CharField(widget=forms.PasswordInput(),
label=_(u'password'),
required=False)
# error_messages={'required': 'Please enter a password.'})
password = forms.CharField(widget=forms.PasswordInput(),
label=_(u'password'),
required=False)
# error_messages={'required': 'Please enter a password.'})
def clean_signup_username(self):
username = self.cleaned_data['signup_username']
def clean_username(self):
username = self.cleaned_data['username']
try:
User.objects.get(username__iexact=username)
except User.DoesNotExist:
@ -84,10 +87,10 @@ class SignupForm(forms.Form):
raise forms.ValidationError(_(u'Someone is already using that username.'))
return username
def clean_signup_password(self):
if not self.cleaned_data['signup_password']:
def clean_password(self):
if not self.cleaned_data['password']:
return ""
return self.cleaned_data['signup_password']
return self.cleaned_data['password']
def clean_email(self):
if not self.cleaned_data['email']:
@ -95,13 +98,13 @@ class SignupForm(forms.Form):
return self.cleaned_data['email']
def save(self, profile_callback=None):
new_user = User(username=self.cleaned_data['signup_username'])
new_user.set_password(self.cleaned_data['signup_password'])
new_user = User(username=self.cleaned_data['username'])
new_user.set_password(self.cleaned_data['password'])
new_user.is_active = True
new_user.email = self.cleaned_data['email']
new_user.save()
new_user = authenticate(username=self.cleaned_data['signup_username'],
password=self.cleaned_data['signup_password'])
new_user = authenticate(username=self.cleaned_data['username'],
password=self.cleaned_data['password'])
return new_user

View file

@ -4930,7 +4930,7 @@
handle_login_and_signup_forms: function() {
var self = this;
var $hidden_inputs = $('.NB-signup-hidden');
var $signup_username = $('input[name=signup-signup_username]');
var $signup_username = $('input[name=signup-username]');
$signup_username.bind('focus', function() {
$hidden_inputs.slideDown(300);

View file

@ -135,13 +135,13 @@ $(document).ready(function() {
<div class="NB-signup">
<form method="post" action="{% url signup %}">
<div>
{{ signup_form.signup_username.label_tag }}
{{ signup_form.signup_username }}
{{ signup_form.username.label_tag }}
{{ signup_form.username }}
</div>
<div class="NB-signup-hidden">
<div class="NB-signup-optional">Optional</div>
{{ signup_form.signup_password.label_tag }}
{{ signup_form.signup_password }}
{{ signup_form.password.label_tag }}
{{ signup_form.password }}
</div>
<div class="NB-signup-hidden">
<div class="NB-signup-optional">Optional</div>

View file

@ -9,11 +9,11 @@
If a user has no password set, you cannot just send any old password.
This is not <a href="http://www.instapaper.com/api/full">Instapaper</a>.
params:
- key: login_username
- key: username
desc: "Username"
required: true
example: "samuelclay"
- key: login_password
- key: password
desc: "Password"
optional: true
example: "new$blur"
@ -28,15 +28,15 @@
long_desc:
- "Create a new user."
params:
- key: signup_username
- key: username
desc: "Username"
required: true
example: "samuelclay"
- key: signup_password
- key: password
desc: "Password"
optional: true
example: "new$blur"
- key: signup_email
- key: email
desc: "Email address"
optional: true
example: "samuel@ofbrooklyn.com"