project/scipycon/user/utils.py
changeset 94 87e77aa18610
child 96 178b89a3ca4f
--- /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
+