Add scope as a parameter to all view functions for user app and adjusted the URLs to accommodate scope.
import os
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.contrib.auth.models import User
from PIL import Image
from project.scipycon.user.models import UserProfile
def scipycon_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 scipycon_createuser(request, data, scope):
"""Create user
"""
from django.contrib.auth import authenticate
from django.contrib.auth import login
from project.scipycon.base.models import Event
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
user = authenticate(username=username, password=password)
login(request, user)
scope_entity = Event.objects.get(scope=scope)
try:
profile = user.get_profile()
except:
profile, new = UserProfile.objects.get_or_create(
user=user, scope=scope_entity)
photo = request.FILES.get('photo', None)
filename= None
if photo:
filename = handle_uploaded_photo(user, request.FILES['photo'])
if filename:
profile.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