def update_weight(request): args = {} try: from apps.recommend_app.form import WeightForm weightForm = WeightForm(request.POST) if weightForm.is_valid(): grade = weightForm.cal_weight(request.user.id) grade.save() #判断推荐条件是否完善 from apps.recommend_app.recommend_util import cal_recommend cal_recommend(request.user.id, ['weight']) args.update({'result': 'success'}) else: errors = weightForm.errors.items() args = { 'result': 'error', 'error_message': errors[0][1][0] if errors[0][0] == u'__all__' else '%s %s' % (weightForm.base_fields[errors[0][0]].label, errors[0][1][0]) } except Exception as e: args['result'] = 'error' args['error_message'] = e.message logger.exception('更新权重错误!') json = simplejson.dumps(args) return HttpResponse(json)
def profile(request, template_name='mobile_profile.html'): ''' 个人信息页面 ''' args = {} try: userProfile = UserProfile.objects.get(user_id=request.user.id) args['gender'] = userProfile.get_gender_display() if request.method == "POST": import copy oldUserProfile = copy.deepcopy(userProfile) POSTdata = request.POST.copy() userProfileForm = UserProfileMbolieForm(POSTdata, instance=userProfile) if userProfileForm.is_valid(): #保存 user_profle信息 userProfile = userProfileForm.save(commit=False) #计算资料完成度 from apps.user_app.method import get_profile_finish_percent_and_score userProfile = get_profile_finish_percent_and_score( userProfile, oldUserProfile) userProfile.save(oldUserProfile=oldUserProfile) #判断推荐条件是否完善 from apps.recommend_app.recommend_util import cal_recommend cal_recommend(request.user.id, ['info']) args['result'] = 'success' else: errors = userProfileForm.errors.items() args = {'errors': errors, 'result': 'error'} json = simplejson.dumps(args) return HttpResponse(json, mimetype='application/json') else: args['user_profile_form'] = UserProfileMbolieForm( instance=userProfile) from apps.common_app.method import get_school_list_by_country args['school_list'] = get_school_list_by_country() fields = ['country', 'city', 'stateProvince'] for field in fields: args[field] = getattr(userProfile, field) if request.GET.get('guide') == u'1': args.update({ 'guide': True, 'title': '第二步:完善个人信息', 'guide_next_url': '/mobile/' }) return render(request, template_name, args) except Exception as e: logger.exception(e.message) args = {'result': 'error', 'error_message': e.message} return render(request, ERROR_TEMLATE_NAMR, args)
def character_tags(request): args = {} try: if request.method == "POST": tagMyList = request.REQUEST.get('tagMyList', '').split(',') tagOhterList = request.REQUEST.get('tagOhterList', '').split(',') if not UserTag.objects.filter(user_id=request.user.id).exists(): from apps.user_score_app.method import get_score_by_character_tag get_score_by_character_tag(request.user.id) #保存tag type = 0 try: UserTag.objects.bulk_insert_user_tag(request.user.id, type, tagMyList) type = 1 UserTag.objects.bulk_insert_user_tag(request.user.id, type, tagOhterList) except Exception as e: error_messsage = e.message content = "TA的性格标签" if type == 1 else "我的性格标签" if e.message == 'less': error_messsage = '%s要全部选择!' % (content) elif e.message == 'more': error_messsage = '%s选择的个数超标了!' % (content) raise Exception(error_messsage) UserTag.objects.bulk_insert_user_tag(request.user.id, 0, tagMyList) UserTag.objects.bulk_insert_user_tag(request.user.id, 1, tagOhterList) #判断推荐条件是否完善 from apps.recommend_app.recommend_util import cal_recommend cal_recommend(request.user.id, ['userExpect', 'tag']) args['result'] = 'success' json = simplejson.dumps(args) return HttpResponse(json) except Exception as e: logger.error('%s%s' % ('性格标签,出错原因:', e)) args = {'result': 'error', 'error_messge': e.message} json = simplejson.dumps(args) return HttpResponse(json)
def grade_for_other(request): args = {} if request.method == "POST": flag = True try: result = request.POST.get('result', False) except Exception as e: flag = False args['result'] = 'error' args['msg'] = '传输参类型错误!' logger.error('传输参类型错误!', e) if not result: flag = False args['result'] = 'error' args['msg'] = '传输参数错误!' s = result.split(',') for temp in s: if float(temp) > 100.00: flag = False args['result'] = 'error' args['msg'] = '数据不得大于100!' break if flag: UserExpect.objects.create_update_by_uid(user_id=request.user.id, heighty1=float(s[0]), heighty2=float(s[1]), heighty3=float(s[2]), heighty4=float(s[3]), heighty5=float(s[4]), heighty6=float(s[5]), heighty7=float(s[6]), heighty8=float(s[7])) #判断推荐条件是否完善 from apps.recommend_app.recommend_util import cal_recommend cal_recommend(request.user.id, ['userExpect']) args['result'] = 'success' json = simplejson.dumps(args) return HttpResponse(json)
def crop_avatar(request): try: upim = UploadedImage.objects.get(uid=get_uid(request)) except UploadedImage.DoesNotExist: raise UploadAvatarError(UPLOAD_AVATAR_TEXT['NO_IMAGE']) image_orig = upim.get_image_path() if not image_orig: raise UploadAvatarError(UPLOAD_AVATAR_TEXT['NO_IMAGE']) try: x1 = int(float(request.POST['x1'])) y1 = int(float(request.POST['y1'])) x2 = int(float(request.POST['x2'])) y2 = int(float(request.POST['y2'])) except: raise UploadAvatarError(UPLOAD_AVATAR_TEXT['ERROR']) try: orig = Image.open(image_orig) except IOError: raise UploadAvatarError(UPLOAD_AVATAR_TEXT['NO_IMAGE']) orig_w, orig_h = orig.size global border_size if request.POST.get('border_size',False): border_size=int(request.POST.get('border_size',False)) if orig_w <= border_size and orig_h <= border_size: ratio = 1 else: if orig_w > orig_h: ratio = float(orig_w) / border_size else: ratio = float(orig_h) / border_size #logger.exception('------------------------'+simplejson.dumps(request.POST)) box = [int(x * ratio) for x in [x1, y1, x2, y2]] rotate=int(float(request.POST.get('rotate',0))) if rotate!=0: orig=orig.rotate(rotate) avatar = orig.crop(box) avatar_name, _ = os.path.splitext(upim.image) count = UserProfile.objects.filter(user_id=get_uid(request)).count() def _resize(size): res = avatar.resize((size[0], size[1]), Image.ANTIALIAS) res_name = '%s-%d.%s' % (avatar_name, size[0], UPLOAD_AVATAR_SAVE_FORMAT) res_path = os.path.join(UPLOAD_AVATAR_AVATAR_ROOT, res_name) res.save(res_path, UPLOAD_AVATAR_SAVE_FORMAT, quality=UPLOAD_AVATAR_SAVE_QUALITY) for size in UPLOAD_AVATAR_RESIZE_SIZE: _resize(size) if count >0: user=UserProfile.objects.get(user_id=get_uid(request)) _delete_crop_avatar_on_disk(None, user,None,None) #save 图片到user_profile from apps.upload_avatar.app_settings import UPLOAD_AVATAR_DEFAULT_SIZE avatar_name=u'%s%s' %('user_img/',avatar_name) avatar_crop_done.send(sender=None, uid=get_uid(request), avatar_name=avatar_name) if UPLOAD_AVATAR_DELETE_ORIGINAL_AFTER_CROP: upim.delete() #判断推荐条件是否完善 from apps.recommend_app.recommend_util import cal_recommend cal_recommend(request.user.id,['avatar']) return HttpResponse( u"<script>window.parent.crop_avatar_success('%s','%s%s')</script>" % (UPLOAD_AVATAR_TEXT['SUCCESS'],MEDIA_URL,avatar_name) )