Beispiel #1
0
def register_user(request, template_name='login.html'):
    args = {}
    args.update(csrf(request))
    link = request.REQUEST.get('link', False)
    if link:
        args['link'] = link
    if request.method == 'POST':
        userForm = RegistrationForm(request.POST)
        if userForm.is_valid():
            #             #判断有没邀请码
            #             if request.REQUEST.get('inviteCode','')!='pinlove_fate':
            #                  args['user_form']=userForm
            #                  args['inviteCodeError']='输入正确的邀请码'
            #                  return render(request, 'login.html', args)
            userForm.save()
            username = userForm.cleaned_data['username']
            user = User.objects.get(username=username)
            sex = userForm.cleaned_data['gender']
            from pinloveweb.method import create_register_extra_user
            create_register_extra_user(request,user.id,user.username,userForm.cleaned_data['password1'],sex,link,year_of_birth=userForm.cleaned_data['year_of_birth'],\
                                       month_of_birth=userForm.cleaned_data['month_of_birth'],day_of_birth=userForm.cleaned_data['day_of_birth'])
            authenticate = auth.authenticate(
                username=username, password=userForm.cleaned_data['password1'])
            auth.login(request, authenticate)
            #登录奖励
            from apps.user_score_app.method import get_score_by_invite_friend_login, get_score_by_user_login
            get_score_by_user_login(request.user.id)
            url = request.path
            url = '%s%s' % (url[0:(url.find('/', 1))],
                            '/loggedin/?previous_page=register')
            #手机端做引导页面
            if url.find('/mobile/') != -1:
                url = '/mobile/update_avtar/?guide=1'
            else:
                #检测推荐信息填写情况
                from apps.recommend_app.recommend_util import recommend_info_status
                recommendStatus = recommend_info_status(
                    request.user.id,
                    channel='mobile'
                    if request.path.find('/mobile/') != -1 else 'web')
                if recommendStatus['result']:
                    request.session['recommendStatus'] = simplejson.dumps(
                        recommendStatus['data'])
            return HttpResponseRedirect(url)
        else:
            args['user_form'] = userForm
            args['error'] = True
            if userForm.errors:
                for item in userForm.errors.items():
                    key = '%s%s' % (item[0], '_error')
                    args[key] = item[1][0]
    else:
        args['user_form'] = RegistrationForm()
    return render(request, template_name, args)
Beispiel #2
0
def radar(request, userId, template_name='mobile_radar.html'):
    '''
    雷达图
    '''
    args = {}
    try:
        radarList = []
        userIdList = []
        radarCompare = request.session.get('radar_compare', False)
        from apps.recommend_app.views import get_socre_for_other
        if radarCompare:
            compareId = request.session.get('radar_compare_id')
            userIdList.append(compareId)
        userIdList.append(userId)
        for userId in userIdList:
            socreForOther = get_socre_for_other(request.user.id, userId)
            userProfile = UserProfile.objects.get(user_id=userId)
            radarList.append({
                'head':
                '%s%s%s' %
                ('/media/', userProfile.avatar_name if
                 userProfile.avatar_name_status == '3' else DEFAULT_IMAGE_NAME,
                 '-100.jpeg'),
                'userId':
                userProfile.user_id,
                'score':
                int(socreForOther['matchResult']['scoreOther']),
                'scoreMy':
                int(socreForOther['matchResult'].get('scoreMyself', -3)),
                'data': [
                    socreForOther['matchResult']['edcationScore'],
                    socreForOther['matchResult']['incomeScore'],
                    socreForOther['matchResult']['characterScore'],
                    socreForOther['matchResult']['heighScore'],
                    socreForOther['matchResult']['appearanceScore'],
                ]
            })
        recommend_info_finish_status = recommend_info_status(
            request.user.id,
            channel='mobile',
            fields=['tag', 'weight', 'userExpect'])
        if recommend_info_finish_status['result']:
            args.update({
                'recommend_info_finish_status':
                simplejson.dumps(recommend_info_finish_status['data'])
            })

        args['radarList'] = simplejson.dumps(radarList)
        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)
Beispiel #3
0
def nearby(request, template_name="mobile_neardy.html"):
    '''
    附近的人
    '''
    args = {}
    try:
        userProfile = UserProfile.objects.get_user_info(request.user.id)
        from apps.the_people_nearby.views import GetLocation
        userProfileList = UserProfile.objects.filter(
            lastLoginAddress=GetLocation(request)).exclude(
                user=request.user).filter(avatar_name_status='3').exclude(
                    gender=userProfile.gender)
        #分页
        args = page(request, userProfileList)
        userList = args['pages']
        if len(userList.object_list) > 0:
            from apps.pojo.card import userProfileList_to_CardMobileList
            userList.object_list = userProfileList_to_CardMobileList(
                request.user.id, userList.object_list)
        else:
            userList.object_list = []
        #判断推荐完成情况
        recommend_status = recommend_info_status(request.user.id,
                                                 channel='mobile')
        if not recommend_status['result']:
            args['has_recommend'] = True
        else:
            args['recommend_finish'] = simplejson.dumps(
                simplejson.dumps(recommend_status['data']))
        if request.is_ajax():
            from pinloveweb.method import load_cards_by_ajax
            return load_cards_by_ajax(request, userList, chanel='mobile')
        userList.object_list = simplejson.dumps(userList.object_list,
                                                cls=CardMobileEncoder)
        args['pages'] = userList
        from pinloveweb.method import init_person_info_for_card_page
        args.update(init_person_info_for_card_page(userProfile))
        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)
Beispiel #4
0
def auth_view(request, template_name='login.html'):
    args = {}
    username = request.POST.get('username', '').rstrip()
    password = request.POST.get('password', '').rstrip()
    if request.REQUEST.getlist('remember_status') == [u'on']:
        request.session.set_expiry(100000)
    user = auth.authenticate(username=username, password=password)
    if request.POST.get('check_save', '') != '':
        check_save = True
    else:
        check_save = False
    if user is not None and user.is_active:
        # Correct password, and the user is marked "active"
        auth.login(request, user)
        #登录奖励
        from apps.user_score_app.method import get_score_by_invite_friend_login, get_score_by_user_login
        get_score_by_user_login(request.user.id)
        #邀请
        link = request.REQUEST.get('link', False)
        if link:
            get_score_by_invite_friend_login(link, request.user.id)
        # Redirect to a success page
        if check_save:
            response = render(request, 'loggedin.html', {
                'full_name': request.user.username,
                'set': settings.STATIC_ROOT
            })
            response.set_cookie("userId",
                                user.id,
                                max_age=60 * 60 * 24 * 7 * 2,
                                expires=60 * 60 * 24 * 7 * 2)
            return response
        elif "userId" in request.COOKIES:
            response = render(request, 'loggedin.html', {
                'full_name': request.user.username,
                'set': settings.STATIC_ROOT
            })
            response.delete_cookie("userId")
            return response
        #获取ip 地址
        UserProfile.objects.filter(user=request.user).update(
            lastLoginAddress=GetLocation(request))
        #         logger.error('%s%s'%('0000000000000',GetLocation(request)))
        from apps.the_people_nearby.views import GetIp
        #         logger.error('%s%s'%('0000003333000',GetIp(request)))
        #将个人相关信息插入缓存
        from util.cache import init_info_in_login
        init_info_in_login(user.id)
        #检测推荐信息完善情况
        from apps.recommend_app.recommend_util import recommend_info_status
        recommendStatus = recommend_info_status(
            request.user.id,
            channel='mobile' if request.path.find('/mobile/') != -1 else 'web')
        if recommendStatus['result']:
            request.session['recommendStatus'] = simplejson.dumps(
                recommendStatus['data'])
        #获取登录成=成功跳转地址
        from util.urls import next_url
        redirectURL = next_url(request)
        if redirectURL is None:
            url = request.path
            url = '%s%s' % (url[0:(url.find('/', 1))], '/loggedin/')
            return HttpResponseRedirect(url)
        else:
            return HttpResponseRedirect(redirectURL)
    else:
        args['user_form'] = RegistrationForm()
        # Show an error page
        args['link'] = request.REQUEST.get('link', '')
        args['next'] = request.REQUEST.get('next', '')
        args['error'] = True
        if len(username) == 0:
            args['error_message'] = u'用户名不能为空!'
        elif len(username) == 0:
            args['error_message'] = u'用户名不能为空!'
        else:
            args['error_message'] = u'用户名或者密码错误!'
        return render(request, template_name, args)
Beispiel #5
0
def get_detail_info(myId, userId, socreForOther):
    userProfile = UserProfile.objects.select_related('user').get(
        user_id=userId)
    #获取标签信息
    tagList = UserTag.objects.select_related('tag').filter(user_id=userId,
                                                           type=0)
    tags = []
    for tag in tagList:
        if tag.tag.id < 24:
            tags.append(tag.tag.content)
    isVote = False
    voteScore = -1
    from apps.upload_avatar.app_settings import DEFAULT_IMAGE_NAME
    data = {
        'head':
        '%s%s%s' %
        ('/media/', userProfile.avatar_name if userProfile.avatar_name_status
         == '3' else DEFAULT_IMAGE_NAME, '-100.jpeg'),
        'tag':
        tags,
        'name':
        userProfile.user.username,
        'userId':
        userProfile.user_id,
        'age': ('%s%s' % (userProfile.age, '岁'))
        if userProfile.age != None else userProfile.age,
        'city':
        userProfile.limit_city_length(),
        'height': ('%s%s' % (userProfile.height, 'cm'))
        if userProfile.height != -1 else userProfile.height,
        'education':
        userProfile.get_education_display(),
        'income':
        userProfile.get_income_display(),
        'trade':
        userProfile.get_jobIndustry_display(),
        'constellation':
        userProfile.get_sunSign_display(),
        'isVote':
        False,
    }
    if socreForOther['result'] == 'success':
        if userProfile.avatar_name_status == '3':
            isVote = True
            if AppearanceVoteRecord.objects.filter(user_id=myId,
                                                   other_id=userId).exists():
                voteScore = int(
                    AppearanceVoteRecord.objects.get(user_id=myId,
                                                     other_id=userId).score)
            else:
                voteScore = 0
        data.update({
            'score':
            int(socreForOther['matchResult']['scoreOther']),
            'isVote':
            isVote,
            'voteScore':
            voteScore,
            'scoreMy':
            int(socreForOther['matchResult'].get('scoreMyself', -3)),
            'data': [
                socreForOther['matchResult']['edcationScore'],
                socreForOther['matchResult']['incomeScore'],
                socreForOther['matchResult']['characterScore'],
                socreForOther['matchResult']['heighScore'],
                socreForOther['matchResult']['appearanceScore']
            ]
        })
        #     elif socreForOther['result']=='less':
        from apps.recommend_app.recommend_util import recommend_info_status
        recommend_info_finish_status = recommend_info_status(
            myId, channel='web', fields=['tag', 'weight', 'userExpect'])
        if recommend_info_finish_status['result']:
            data.update(
                {'error_message': recommend_info_finish_status['data']})

    for key in data.keys():
        if data[key] in missing_value:
            data[key] = '未填'
    return data
Beispiel #6
0
def search(request, template_name='mobile_search.html'):
    '''
    搜索页面
    '''
    args = {}
    try:
        userProfile = UserProfile.objects.get_user_info(request.user.id)
        if request.method == 'POST':
            searchForm = SearchMobileForm(request.POST)
            if searchForm.is_valid():
                userProfileList = searchForm.select_data(
                    request.REQUEST.get('sunSign', '').rstrip(),
                    userProfile.gender, request.user.id)
                args = page(request, userProfileList)
                searchList = args['pages']
                from apps.pojo.card import userProfileList_to_CardMobileList
                searchList.object_list = userProfileList_to_CardMobileList(
                    request.user.id, searchList.object_list)
                searchList.object_list = simplejson.dumps(
                    searchList.object_list, cls=CardMobileEncoder)
                args['pages'] = searchList
                from pinloveweb.method import init_person_info_for_card_page
                args.update(init_person_info_for_card_page(userProfile))
                args['result'] = 'success'
                POSTcopy = request.POST.copy()
                POSTcopy.pop('csrfmiddlewaretoken')
                args['url'] = (request.path + '?' + urllib.urlencode(POSTcopy))
                #推荐信息完善情况
                recommend_status = recommend_info_status(request.user.id,
                                                         channel='mobile')
                if not recommend_status['result']:
                    args['has_recommend'] = True
                else:
                    args['recommend_finish'] = simplejson.dumps(
                        simplejson.dumps(recommend_status['data']))
                return render(request, 'mobile_search_result.html', args)
        elif request.is_ajax():
            searchForm = SearchMobileForm(request.GET)
            if searchForm.is_valid():
                userProfileList = searchForm.select_data(
                    request.REQUEST.get('sunSign', '').rstrip(),
                    userProfile.gender, request.user.id)
                args = page(request, userProfileList)
                searchList = args['pages']
                from apps.pojo.card import userProfileList_to_CardMobileList
                searchList.object_list = userProfileList_to_CardMobileList(
                    request.user.id, searchList.object_list)
                searchList.object_list = simplejson.dumps(
                    searchList.object_list, cls=CardMobileEncoder)
                args['pages'] = searchList
                args['result'] = 'success'

        else:
            searchForm = SearchMobileForm()
            searchForm.init_search_condition(request.user.id)
            from apps.search_app.views import get_disable_condition
            args.update(get_disable_condition(userProfile))
            args['searchForm'] = searchForm
            from apps.search_app.forms import SUN_SIGN_CHOOSICE
            args['sunSign'] = SUN_SIGN_CHOOSICE
            from pinloveweb.method import get_no_read_web_count
            args.update(
                get_no_read_web_count(request.user.id, fromPage=u'card'))
            args['result'] = 'success'
        if args.get('result', False) != 'success':
            args['result'] = 'error'
            args['error_message'] = []
            errorList = searchForm.errors.items()
            for error in errorList:
                args['error_message'].append([
                    SearchMobileForm.base_fields[error[0]].label, error[1][0]
                ])
            json = simplejson.dumps(args)
            return HttpResponse(json)
    except Exception as e:
        error_message = '搜索也卖弄出错:出错原因:' + e.message
        logger.exception(error_message)
        args['result'] = 'success'
        args['error_message'] = error_message
        template_name = 'error.html'
    if request.is_ajax():
        from pinloveweb.method import load_cards_by_ajax
        return load_cards_by_ajax(request, searchList, chanel='mobile')
    else:
        return render(request, template_name, args)
Beispiel #7
0
def follow(request, type, ajax='false', template_name="mobile_follow.html"):
    args = {}
    try:
        try:
            type = int(type)
        except ValueError:
            raise Http404()
        if type == 1:
            #获得我的关注列表
            fllowList = Follow.objects.filter(my=request.user)
            theme = '关注'
        elif type == 2:
            #获得我的粉丝列表
            fllowList = Follow.objects.filter(follow=request.user)
            theme = '粉丝'
        elif type == 3:
            #获得相互关注列表
            fllowList = Follow.objects.follow_each(request.user.id)
            theme = '相互关注'

        userProfile = UserProfile.objects.get(user_id=request.user.id)
        #分页
        args = page(request, fllowList)
        cardList = args.get('pages')
        #将关注列表转换成Card列表
        if len(cardList.object_list) > 0:
            from apps.pojo.card import fllowList_to_CardMobileList
            cardList.object_list = fllowList_to_CardMobileList(
                request.user.id, cardList.object_list, type)
        else:
            cardList.object_list = []
        if cardList.has_next():
            args['next_page_number'] = cardList.next_page_number()
        else:
            args['next_page_number'] = -1
        #判断推荐完成情况
        recommend_status = recommend_info_status(request.user.id,
                                                 channel='mobile')
        if not recommend_status['result']:
            args['has_recommend'] = True
        else:
            args['recommend_finish'] = simplejson.dumps(
                simplejson.dumps(recommend_status['data']))
        if request.is_ajax():
            data = {}
            if cardList.has_next():
                data['next_page_number'] = args['next_page_number']
            else:
                data['next_page_number'] = -1
            data['result'] = 'success'
            data['cards'] = cardList.object_list
            json = simplejson.dumps(data, cls=CardMobileEncoder)
            return HttpResponse(json)
        cardList.object_list = simplejson.dumps(cardList.object_list,
                                                cls=CardMobileEncoder)
        args['pages'] = cardList
        from pinloveweb.method import init_person_info_for_card_page
        args.update(init_person_info_for_card_page(userProfile))
        args['title'] = theme
        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)