def connect(request): ''' If use is at *register* status, render to connect template. ''' if not assert_register(request): return redirect('main.views.index.index') template_name = 'main/account/sign_up2.html' if request.session['status'] == 'complete_profile': template_name = 'main/account/registration_connect.html' return render_to_response(template_name, context_instance=RequestContext(request))
def success(request): ''' Validate user's name and biograph. User's name can't contain sensitive words and some reversed words and characters. If pass through validation, make the user active and login this user. ''' if not assert_register(request): return redirect('main.views.index.index') template_name = 'main/account/sign_up4.html' if request.session['status'] == 'complete_profile': template_name = 'main/account/registration_success.html' request.session['bio'] = (request.POST['bio']).strip() if len(request.POST['bio']) > 50: messages.error(request, '个人简介的长度不能超过50个汉字') return redirect('registration_follow') new_user = User.objects.get(pk=request.session['uid']) new_user.backend = 'django.contrib.auth.backends.ModelBackend' profile = Profile.objects.get(pk=new_user.pk) profile.bio = request.POST['bio'] profile.save() invitation = InvitationCode.objects.get(user=profile) if invitation.inviter_id: follow_user(invitation.inviter_id, new_user.pk) follow_user(new_user.pk, invitation.inviter_id) # channel channels = request.POST.getlist('channel') for channel_id in channels: channel_id = int(channel_id) msg_or_id = add_user_channel(new_user.pk, channel_id) try: del request.session['status'] del request.session['bio'] except KeyError: pass login(request, new_user) if "finished" in request.POST: return redirect("main.views.index.index") return render_to_response(template_name, context_instance=RequestContext(request))
def suggest_follow(request): """ Suggest both user and topic to follow """ if not assert_register(request): return redirect('main.views.index.index') template_name = 'main/account/sign_up3.html' if request.session['status'] == 'complete_profile': template_name = 'main/account/registration_follow.html' profile = Profile.objects.get(pk=request.session['uid']) # if not (profile.reader_access_token or profile.renren_account or profile.sina_account): # messages.error(request, '请至少连接一个账号') # return redirect(APP_URL + "register/connect/") if request.session.has_key('name'): name = request.session['name'] else: name = profile.name if request.session.has_key('bio'): bio = request.session['bio'] elif profile.bio: bio = profile.bio else: bio = '' #If user has connected with RenRen, then set his RenRen image by default #Reference: http://stackoverflow.com/questions/1393202/django-add-image-in-an-imagefield-from-image-url try: if profile.image and profile.image != 'profile/profile100x100.jpg': raise Exception from PIL import Image #@UnresolvedImport #For handling weired bug of PIL Linux package that only identifies BMP image; # See http://www.chipx86.com/blog/2008/07/25/django-tips-pil-imagefield-and-unit-tests/ Image.init() import urllib2 from main.utils import generate_random_file_name import os dot_index = profile.renren_head_url.rfind('.') image_extension = profile.renren_head_url[dot_index:] image_name = generate_random_file_name(32)+image_extension temp_name = generate_random_file_name(32)+image_extension temp_file_addr = MEDIA_ROOT + 'profile/' + temp_name temp_file = open(temp_file_addr, 'wb') temp_file.write(urllib2.urlopen(profile.renren_head_url).read()) temp_file.close() temp_file = open(temp_file_addr, 'rb') #open for read and assign to image field in model #Deletes old image if exists if profile.image and profile.image != 'profile/profile100x100.jpg': image_addr = MEDIA_ROOT + profile.image.name os.remove(image_addr) #If path is a directory, OSError is raised;So no worry about removing directory if profile.image_small and profile.image_small != 'profile/profile25x25.jpg': image_small_addr = MEDIA_ROOT + profile.image_small.name os.remove(image_small_addr) profile.image.save(image_name, temp_file) image_small_name = generate_random_file_name(32)+image_extension profile.image_small.save(image_small_name, temp_file) profile.save() temp_file.close() os.remove(temp_file_addr) except Exception, e: error = repr(e) pass