summaryrefslogtreecommitdiff
path: root/taskapp
diff options
context:
space:
mode:
authornishanth2010-03-05 15:13:37 +0530
committernishanth2010-03-05 15:13:37 +0530
commit582567182ce90f31ccf86e6eb432c8cabdffa32c (patch)
treee56cfd7cfc2889f1a84263a8c4eefedefd94b38f /taskapp
parent41ba7417291d681d76621ceecfc9e5191c46c009 (diff)
downloadpytask-582567182ce90f31ccf86e6eb432c8cabdffa32c.tar.gz
pytask-582567182ce90f31ccf86e6eb432c8cabdffa32c.tar.bz2
pytask-582567182ce90f31ccf86e6eb432c8cabdffa32c.zip
now user profile editing is done thro forms in a more elegant way.
Diffstat (limited to 'taskapp')
-rw-r--r--taskapp/forms/user.py27
-rw-r--r--taskapp/views/user.py42
2 files changed, 43 insertions, 26 deletions
diff --git a/taskapp/forms/user.py b/taskapp/forms/user.py
index fe2121e..fe81536 100644
--- a/taskapp/forms/user.py
+++ b/taskapp/forms/user.py
@@ -1,5 +1,10 @@
#!/usr/bin/python2.5
+import os
+import PIL
+
+from pytask.taskapp.utilities.helper import get_key
+
from django import forms
from pytask.taskapp.models import GENDER_CHOICES, Profile
from registration.forms import RegistrationFormUniqueEmail
@@ -12,6 +17,28 @@ class UserProfileEditForm(forms.ModelForm):
model = Profile
exclude = ('user','rights','dob','credits')
+ def clean_photo(self):
+ uploaded_photo = self.data.get('photo', None)
+ prev_photo = self.instance.photo
+ if uploaded_photo:
+ if uploaded_photo.size > 1048576:
+ raise forms.ValidationError('Images only smaller than 1MB allowed')
+ tmp_im_path = '/tmp/'+get_key()
+ tmp_file = open(tmp_im_path, 'w')
+ tmp_file.write(uploaded_photo.read())
+ tmp_file.close()
+ try:
+ PIL.Image.open(tmp_im_path)
+ except IOError:
+ raise forms.ValidationError('Image format unknown')
+ os.remove(tmp_im_path)
+
+ if prev_photo: os.remove(prev_photo.path)
+ return uploaded_photo
+ else:
+ return prev_photo
+
+
class RegistrationFormCustom(RegistrationFormUniqueEmail):
"""Used instead of RegistrationForm used by default django-registration backend, this adds date of birth and gender to the default django-registration RegistrationForm"""
diff --git a/taskapp/views/user.py b/taskapp/views/user.py
index 3277039..4c2022b 100644
--- a/taskapp/views/user.py
+++ b/taskapp/views/user.py
@@ -7,7 +7,7 @@ from django.contrib.auth.decorators import login_required
from pytask.taskapp.models import Task, Profile, Request
-from pytask.taskapp.events.user import createUser, updateProfile
+from pytask.taskapp.events.user import createUser
from pytask.taskapp.events.request import reply_to_request
from pytask.taskapp.forms.user import UserProfileEditForm, UserChoiceForm
@@ -101,33 +101,23 @@ def edit_my_profile(request):
""" enables the user to edit his/her user profile """
user = get_user(request.user)
+ user_profile = user.get_profile()
+
+ edit_profile_form = UserProfileEditForm(instance = user_profile)
if request.method == 'POST':
- form = UserProfileEditForm(request.POST)
-# if not form.is_valid():
-# edit_profile_form = UserProfileEditForm(instance = form)
-# return render_to_response('user/edit_profile.html',{'edit_profile_form' : edit_profile_form})
- if request.user.is_authenticated() == True:
- profile = Profile.objects.get(user = request.user)
- data = request.POST#form.cleaned_data
- properties = {'aboutme':data['aboutme'],
- 'foss_comm':data['foss_comm'],
- 'phonenum':data['phonenum'],
- 'homepage':data['homepage'],
- 'street':data['street'],
- 'city':data['city'],
- 'country':data['country'],
- 'nick':data['nick']}
- uploaded_photo = request.FILES.get('photo',None)
- prev_photo = profile.photo
- if uploaded_photo:
- if prev_photo:
- os.remove(prev_photo.path)
- properties['photo'] = uploaded_photo
- #fields = ['dob','gender','credits','aboutme','foss_comm','phonenum','homepage','street','city','country','nick']
- updateProfile(profile,properties)
- return redirect('/user/view/uid='+str(profile.user_id))
+
+ data = request.POST.copy()
+ uploaded_photo = request.FILES.get('photo', None)
+ data.__setitem__('photo', uploaded_photo)
+
+ edit_profile_form = UserProfileEditForm(data, instance=user_profile)
+ if edit_profile_form.is_valid():
+ edit_profile_form.save()
+ return redirect('/user/view/uid='+str(user.id))
+ else:
+ return render_to_response('user/edit_profile.html',{'user':user, 'edit_profile_form' : edit_profile_form})
else:
- profile = Profile.objects.get(user = request.user)
+ profile = user.get_profile()
edit_profile_form = UserProfileEditForm(instance = profile)
return render_to_response('user/edit_profile.html',{'edit_profile_form' : edit_profile_form, 'user':user})