diff -r e86755df35da -r 87e77aa18610 project/scipycon/user/utils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project/scipycon/user/utils.py Tue Jul 13 17:59:47 2010 +0530 @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import + +#python imports +import os + +#django +from django.conf import settings +from django.core.exceptions import ObjectDoesNotExist + +#django.contrib +from django.contrib.auth.models import User + +#PIL +from PIL import Image + + +def kiwipycon_createregistrant(request, data): + """Create user""" + email = data.get("email") + name = data.get("name") + username = data.get("username") + + n = name.split(" ") + if len(n) > 1: + first_name = ' '.join(n[:-1]) + last_name = n[-1] + else: + first_name = '' + last_name = n[0] + + + # Create user + user = User.objects.create_user(username=username, email=email) + user.first_name = first_name + user.last_name = last_name + user.save() + + return user + +def kiwipycon_createuser(request, data): + """Create user""" + email = data.get("email") + username = data.get("username") + password = data.get("password_1") + password = data.get("password_1") + + # Create user + user = User.objects.create_user( + username=username, email=email, password=password) + user.first_name = data.get("first_name") + user.last_name = data.get("last_name") + user.save() + + # Log in user + from django.contrib.auth import authenticate + user = authenticate(username=username, password=password) + + from django.contrib.auth import login + login(request, user) + + profile = user.get_profile() + photo = request.FILES.get('photo', None) + filename= None + if photo: + filename = handle_uploaded_photo(user, request.FILES['photo']) + if filename: + profile.photo = filename + #print photo, filename + + profile.url = data.get("url") + profile.about = data.get("about") + profile.save() + + return user + +def handle_uploaded_photo(user, ufile): + usermedia = settings.USER_MEDIA_ROOT + filename = ufile.name + ext = filename.split('.')[-1] + filesize = ufile.size + filecontent = ufile.read() + userfilename = 'user-%d.%s' % (user.id, ext) + if not filecontent: + return None + + #save + foutname = os.path.join(usermedia, userfilename) + + fout = file(foutname, 'wb') + fout.write(filecontent) + fout.close() + + # crop and resize + image = Image.open(foutname) + pw = image.size[0] + ph = image.size[1] + nw = nh = 80 + if (pw, ph) != (nw, nh): + pr = float(pw) / float(ph) + nr = float(nw) / float(nh) + + if pr > nr: + # photo aspect is wider than destination ratio + tw = int(round(nh * pr)) + image = image.resize((tw, nh), Image.ANTIALIAS) + l = int(round(( tw - nw ) / 2.0)) + image = image.crop((l, 0, l + nw, nh)) + elif pr < nr: + # photo aspect is taller than destination ratio + th = int(round(nw / pr)) + image = image.resize((nw, th), Image.ANTIALIAS) + t = int(round(( th - nh ) / 2.0)) + #print((0, t, nw, t + nh)) + image = image.crop((0, t, nw, t + nh)) + else: + # photo aspect matches the destination ratio + image = image.resize((nw, nh), Image.ANTIALIAS) + + image.save(str(foutname)) + return userfilename +