示例#1
0
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)
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)
    )