Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion elvis/forms/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from elvis.forms.user import UserForm, InviteUserForm, UserChangeForm
from elvis.forms.user import ElvisUserCreationForm, ElvisUserChangeForm
from elvis.forms.create import PieceForm
35 changes: 27 additions & 8 deletions elvis/forms/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@

from elvis.models.user_profile import UserProfile


# A simple extension of the built-in UserCreationForm
class UserForm(UserCreationForm):
class ElvisUserCreationForm(UserCreationForm):

# Gather data
first_name = forms.CharField(max_length=255, required=False)
Expand All @@ -18,9 +19,15 @@ class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']

def clean_email(self):
email = self.cleaned_data.get('email')
if email and User.objects.filter(email=email).count() > 0:
raise forms.ValidationError('Account with that email already exists')
return email

# Clean data, create the user using UserCreationForm, return the new user obj for login
def save(self, commit=True):
user = super(UserForm, self).save(commit = False)
user = self.instance
user.username = self.cleaned_data['username']
user.email = self.cleaned_data['email']
user.first_name = self.cleaned_data['first_name']
Expand All @@ -39,16 +46,28 @@ def save(self, commit=True):
return user


class UserChangeForm(forms.ModelForm):
class ElvisUserChangeForm(UserChangeForm):
class Meta:
model = User
fields = ['email', 'first_name', 'last_name']

def __init__(self, *args, **kwargs):
super(UserChangeForm, self).__init__(*args, **kwargs)
f = self.fields.get('user_permissions', None)
if f is not None:
f.queryset = f.queryset.select_related('content_type')
def clean_email(self):
email = self.cleaned_data.get('email')

if email and any(x != self.instance for x in User.objects.filter(email=email)):
raise forms.ValidationError('Account with that email already exists')
return email

def clean_password(self):
pass

def save(self, commit=True):
user = self.instance
user.email = self.cleaned_data['email']
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
if commit:
user.save()


class InviteUserForm(forms.Form):
Expand Down
1 change: 0 additions & 1 deletion elvis/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
url(r'^register/$', UserAccount.as_view(), name='register-form'),


#Password resettting won't work until server emails are up.
url(r'^password/reset/$', auth_views.password_reset, {'template_name': 'user/password_reset.html'}, name='password_reset'),
url(r'^password/reset/done/$', auth_views.password_reset_done, {'template_name': 'user/password_reset_done.html'}, name='password_reset_done'),
url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', auth_views.password_reset_confirm, {'template_name': 'user/password_reset_confirm.html'}, name='password_reset_confirm'),
Expand Down
17 changes: 4 additions & 13 deletions elvis/views/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from rest_framework import generics
from rest_framework.renderers import JSONRenderer, BrowsableAPIRenderer

from elvis.forms import UserForm, UserChangeForm
from elvis.forms import ElvisUserCreationForm, ElvisUserChangeForm
from elvis.models.collection import Collection
from elvis.models.composer import Composer
from elvis.models.movement import Movement
Expand All @@ -25,7 +25,6 @@
from elvis.serializers.serializers import UserListSerializer



class UserAccountHTMLRenderer(CustomHTMLRenderer):
template_name = "user/user_account.html"

Expand All @@ -51,7 +50,7 @@ def get(self, request, *args, **kwargs):
def post(self, request, *args, **kwargs):
user = request.user
if user.is_anonymous():
form = UserForm(data=request.POST)
form = ElvisUserCreationForm(data=request.POST)
if not form.is_valid():
return render(request, "register.html", {'form': form})

Expand All @@ -68,19 +67,11 @@ def post(self, request, *args, **kwargs):
login(request, user)
return HttpResponseRedirect("/")
else:
form = UserChangeForm(data=request.POST, instance=request.user)
form = ElvisUserChangeForm(data=request.POST, instance=request.user)
if not form.is_valid():
return render(request, "user/user_update.html", {'form': form})

clean_form = form.cleaned_data
if clean_form['email']:
user.email = clean_form['email']
if clean_form['first_name']:
user.first_name = clean_form['first_name']
if clean_form['last_name']:
user.last_name = clean_form['last_name']
user.save()

form.save()
return HttpResponseRedirect("/account")


Expand Down