mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-05 16:58:59 +00:00

* master: Using user's username on signup if no password. Using user's username on signup if no password. Fixing passwords if left blank. Patching Django 1.5 to handle underscores in subdomains. Allowed hosts Allowed hosts If not active subs, turn off real-time. If not active subs, turn off real-time. Skipping real-time fetch for non-premium active feeds. Upgrading django 1.5 manage.py. Upgrade to django 1.5 script. Also handling story lookups with objectids. Updated Django to always use the latest 1.5 version. Updated django-redis-session to latest version. Moving HAProxy's config to secrets so I can set a password. Allowing_hosts for django 1.5. Upgrading django from 1.3 to 1.5. Keep Raven from making settings puke. Added django-redis-sessions to requirements. Added a check for testing the email address provided during registration and throwing an error if the email address is already associated with an existing account. Adding revsys fab command. Froze requirements to make installation a bit easier. Conflicts: templates/reader/dashboard.xhtml templates/social/social_page.xhtml
161 lines
No EOL
6.8 KiB
Python
161 lines
No EOL
6.8 KiB
Python
import datetime
|
|
from django import forms
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from django.contrib.auth.models import User
|
|
from django.contrib.auth import authenticate
|
|
from django.db.models import Q
|
|
from apps.reader.models import Feature
|
|
from apps.profile.tasks import EmailNewUser
|
|
from apps.social.models import MActivity
|
|
from apps.profile.models import blank_authenticate
|
|
from utils import log as logging
|
|
|
|
class LoginForm(forms.Form):
|
|
username = forms.CharField(label=_("Username or Email"), max_length=30,
|
|
widget=forms.TextInput(attrs={'tabindex': 1, 'class': 'NB-input'}),
|
|
error_messages={'required': 'Please enter a username.'})
|
|
password = forms.CharField(label=_("Password"),
|
|
widget=forms.PasswordInput(attrs={'tabindex': 2, 'class': 'NB-input'}),
|
|
required=False)
|
|
# error_messages={'required': 'Please enter a password.'})
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
self.user_cache = None
|
|
super(LoginForm, self).__init__(*args, **kwargs)
|
|
|
|
def clean(self):
|
|
username = self.cleaned_data.get('username', '').lower()
|
|
password = self.cleaned_data.get('password', '')
|
|
|
|
user = User.objects.filter(Q(username__iexact=username) | Q(email=username))
|
|
if user:
|
|
user = user[0]
|
|
if username and user:
|
|
self.user_cache = authenticate(username=user.username, password=password)
|
|
if self.user_cache is None:
|
|
blank = blank_authenticate(user.username)
|
|
if blank:
|
|
user.set_password(user.username)
|
|
user.save()
|
|
self.user_cache = authenticate(username=user.username, password=user.username)
|
|
if self.user_cache is None:
|
|
email_user = User.objects.filter(email=username)
|
|
if email_user:
|
|
email_user = email_user[0]
|
|
self.user_cache = authenticate(username=email_user.username, password=password)
|
|
if self.user_cache is None:
|
|
blank = blank_authenticate(email_user.username)
|
|
if blank:
|
|
email_user.set_password(email_user.username)
|
|
email_user.save()
|
|
self.user_cache = authenticate(username=email_user.username, password=email_user.username)
|
|
if self.user_cache is None:
|
|
logging.info(" ***> [%s] Bad Login" % username)
|
|
raise forms.ValidationError(_("Whoopsy-daisy. Try again."))
|
|
if not self.user_cache.is_active:
|
|
raise forms.ValidationError(_("This account is inactive."))
|
|
elif username and not user:
|
|
raise forms.ValidationError(_("That username is not registered. Please try again."))
|
|
|
|
return self.cleaned_data
|
|
|
|
def get_user_id(self):
|
|
if self.user_cache:
|
|
return self.user_cache.id
|
|
return None
|
|
|
|
def get_user(self):
|
|
return self.user_cache
|
|
|
|
|
|
class SignupForm(forms.Form):
|
|
username = forms.RegexField(regex=r'^\w+$',
|
|
max_length=30,
|
|
widget=forms.TextInput(attrs={'class': 'NB-input'}),
|
|
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={'maxlength': 75, 'class': 'NB-input'}),
|
|
label=_(u'email address'),
|
|
required=False)
|
|
# error_messages={'required': 'Please enter your email.'})
|
|
password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'NB-input'}),
|
|
label=_(u'password'),
|
|
required=False)
|
|
# error_messages={'required': 'Please enter a password.'})
|
|
|
|
def clean_username(self):
|
|
username = self.cleaned_data['username']
|
|
return username
|
|
|
|
def clean_password(self):
|
|
if not self.cleaned_data['password']:
|
|
return ""
|
|
return self.cleaned_data['password']
|
|
|
|
def clean_email(self):
|
|
if not self.cleaned_data['email']:
|
|
return ""
|
|
return self.cleaned_data['email']
|
|
|
|
def clean(self):
|
|
username = self.cleaned_data.get('username', '')
|
|
password = self.cleaned_data.get('password', '')
|
|
email = self.cleaned_data.get('email', None)
|
|
if email:
|
|
email_exists = User.objects.filter(email__iexact=email).count()
|
|
if email_exists:
|
|
raise forms.ValidationError(_(u'Someone is already using that email address.'))
|
|
exists = User.objects.filter(username__iexact=username).count()
|
|
if exists:
|
|
user_auth = authenticate(username=username, password=password)
|
|
if not user_auth:
|
|
raise forms.ValidationError(_(u'Someone is already using that username.'))
|
|
return self.cleaned_data
|
|
|
|
def save(self, profile_callback=None):
|
|
username = self.cleaned_data['username']
|
|
password = self.cleaned_data['password']
|
|
|
|
email = self.cleaned_data.get('email', None)
|
|
if email:
|
|
email_exists = User.objects.filter(email__iexact=email).count()
|
|
if email_exists:
|
|
raise forms.ValidationError(_(u'Someone is already using that email address.'))
|
|
|
|
exists = User.objects.filter(username__iexact=username).count()
|
|
if exists:
|
|
user_auth = authenticate(username=username, password=password)
|
|
if not user_auth:
|
|
raise forms.ValidationError(_(u'Someone is already using that username.'))
|
|
else:
|
|
return user_auth
|
|
|
|
if not password:
|
|
password = username
|
|
|
|
new_user = User(username=username)
|
|
new_user.set_password(password)
|
|
new_user.is_active = True
|
|
new_user.email = email
|
|
new_user.save()
|
|
new_user = authenticate(username=username,
|
|
password=password)
|
|
|
|
MActivity.new_signup(user_id=new_user.pk)
|
|
|
|
if new_user.email:
|
|
EmailNewUser.delay(user_id=new_user.pk)
|
|
|
|
return new_user
|
|
|
|
class FeatureForm(forms.Form):
|
|
description = forms.CharField(required=True)
|
|
|
|
def save(self):
|
|
feature = Feature(description=self.cleaned_data['description'],
|
|
date=datetime.datetime.utcnow() + datetime.timedelta(minutes=1))
|
|
feature.save()
|
|
return feature |