Exemplo n.º 1
0
def get_user_by_id(request):
    user_id = request.REQUEST.get('user_id')
    data = ''

    user = UserBase().get_user_by_id(user_id)
    if user:
        user = UserBase().format_user_full_info(user.id)

        data = {
            'user_id': user.id,
            'user_avatar': user.get_avatar_25(),
            'user_avatar_300': user.get_avatar_300(),
            'user_nick': user.nick,
            'user_des': user.des,
            'user_email': user.email,
            'user_gender': user.gender,
            'birthday': str(user.birthday),
            'is_admin': user.is_admin,
            'last_active': str(user.last_active),
            'state': user.state,
            'source': user.source_display,
            'ip': user.ip,
            'register_date': str(user.create_time)
        }

    return HttpResponse(json.dumps(data), mimetype='application/json')
Exemplo n.º 2
0
def get_user_by_id(request):
    user_id = request.REQUEST.get('user_id')
    data = ''

    user = UserBase().get_user_by_id(user_id)
    if user:
        user = UserBase().format_user_full_info(user.id)

        data = {
            'user_id': user.id,
            'user_avatar': user.get_avatar_25(),
            'user_avatar_300': user.get_avatar_300(),
            'user_nick': user.nick,
            'user_des': user.des,
            'user_email': user.email,
            'user_gender': user.gender,
            'birthday': str(user.birthday),
            'question_count': user.user_count['user_question_count'],
            'answer_count': user.user_count['user_answer_count'],
            'liked_count': user.user_count['user_liked_count'],
            'follower_count': user.user_count['follower_count'],
            'following_count': user.user_count['following_count'],
            'is_recommend': user.is_recommend,
            'is_admin': user.is_admin,
            'is_customer_manager': user.is_customer_manager,
            'last_active': str(user.last_active),
            'state': user.state,
            'ip': user.ip,
            'register_date': str(user.create_time)
        }

    return HttpResponse(json.dumps(data), mimetype='application/json')
Exemplo n.º 3
0
def format_code(objs, num):
    data = []

    for x in objs:
        num += 1

        user = UserBase().get_user_by_id(x.user_id) if x.user_id else None
        operater = UserBase().get_user_by_id(x.operate_user_id) if x.operate_user_id else None 

        data.append({
            'num': num,
            'code_id': x.id,
            'user_id': x.user_id if user else '',
            'user_nick': user.nick if user else '',
            'car_wash_id': x.car_wash.id if x.car_wash else '',
            'car_wash_name': x.car_wash.name if x.car_wash else '',
            'trade_id': x.order.trade_id,
            'code': x.code,
            'code_type': x.code_type,
            'state': x.state,
            'use_time': str(x.use_time) if x.use_time else '',
            'operater_id': x.operate_user_id if operater else '',
            'operater_nick': operater.nick if operater else '',
        })

    return data
Exemplo n.º 4
0
Arquivo: tests.py Projeto: cash2one/zx
def main():
    from www.question import interface
    from www.account.interface import UserBase

    user = UserBase().get_user_by_id(user_id)

    lb = interface.LikeBase()
    ab = interface.AnswerBase()
    qb = interface.QuestionBase()
    tb = interface.TopicBase()

    # lb.like_it(7, from_user_id=user_id, ip='127.0.0.1')
    # ab.remove_answer(41, user)
    # print ab.get_answer_summary_by_id(1)

    # print qb.set_important(8, user, title="2014年新规新股申购:9问9答!(号称市场最全面2014.6.1", summary="fasdfadsfadsfads", author_user_id='',
    #                        img='http://img0.zhixuan.com/important_28.jpg', img_alt='这是一个神奇的精选', sort_num=4)
    # print qb.cancel_important(8, user)

    des = """12121"""
    # print tb.create_topic(name=u"测试话题", domain="dpzs1", parent_topic_id=1, des=des, img="", state=1)
    # print tb.modify_topic(topic_id=26, name=u"测试话题", domain="csht", parent_topic_id=2, des=u'测试话题', img="", state=1)

    print UserBase().search_users(u"简单")
    print qb.search_questions("a")
Exemplo n.º 5
0
    def format_followobjs(self, objs, following_or_follower):
        for obj in objs:
            if following_or_follower == 'following':
                obj.user = UserBase().get_user_by_id(obj.to_user_id)

            if following_or_follower == 'follower':
                obj.user = UserBase().get_user_by_id(obj.from_user_id)

            UserBase().format_user_with_count_info(obj.user)
        return objs
Exemplo n.º 6
0
def oauth_weixin(request):
    import logging
    from www.misc.oauth2.weixin import Consumer
    from www.weixin.interface import dict_weixin_app, WexinBase
    from www.tasks import async_change_profile_from_weixin

    app_key = WexinBase().init_app_key()
    client = Consumer(app_key)

    code = request.REQUEST.get('code')
    if not code:
        return HttpResponseRedirect(client.authorize())
    else:
        weixin_state = request.GET.get("state")

        # 获取access_token
        dict_result = client.token(code)
        access_token = dict_result.get('access_token')
        # logging.error(dict_result)

        # dict_result={u'errcode': 40029, u'errmsg': u'invalid code'}
        if dict_result.get("errcode") == 40029:  # 重新授权
            return HttpResponseRedirect(client.authorize())

        # 自动检测用户登陆
        openid = dict_result.get("openid")
        user_info = dict(nick=u"weixin_%s" % int(time.time() * 1000), url="", gender=0)

        flag, result = UserBase().get_user_by_external_info(source='weixin', access_token=access_token, external_user_id=openid,
                                                            refresh_token=None, nick=user_info['nick'],
                                                            ip=utils.get_clientip(request), expire_time=dict_result['expires_in'],
                                                            user_url=user_info['url'], gender=user_info['gender'], app_id=dict_weixin_app[app_key]["app_id"])
        if flag:
            user = result
            user.backend = 'www.middleware.user_backend.AuthBackend'
            auth.login(request, user)
            UserBase().update_user_last_login_time(user.id, ip=utils.get_clientip(request), last_active_source=2)

            # 更新用户资料
            if settings.LOCAL_FLAG:
                async_change_profile_from_weixin(user, app_key, openid)
            else:
                async_change_profile_from_weixin.delay(user, app_key, openid)

            dict_next = {"home": "/car_wash/", "order_code": "/car_wash/order_code",  "recharge": "/cash/recharge",
                         "coupon": "/car_wash/coupon", "about": "/s/about", "help": "/s/help", "shop": "/shop/"}
            next_url = dict_next.get(weixin_state, "/car_wash/")

            return HttpResponseRedirect(next_url)
        else:
            error_msg = result or u'微信登陆失败,请重试'
            return HttpResponse(error_msg)

        return HttpResponse(u'code is %s' % (code, ))
Exemplo n.º 7
0
def modify_user(request):

    user_id = request.REQUEST.get('user_id')
    nick = request.REQUEST.get('nick')
    gender = request.REQUEST.get('gender')
    birthday = request.REQUEST.get('birthday')
    des = request.REQUEST.get('des')
    state = int(request.REQUEST.get('state'))

    user = UserBase().get_user_by_id(user_id)

    return UserBase().change_profile(user, nick, gender, birthday, des, state)
Exemplo n.º 8
0
    def format_invite_user(self, show_invite_users, invited_users):
        from www.custom_tags.templatetags.custom_filters import str_display

        show_invite_users_json = []
        invited_users_json = []
        invited_user_ids = [iu.to_user_id for iu in invited_users]

        for siu in show_invite_users:
            user = UserBase().get_user_by_id(siu.user_id)
            show_invite_users_json.append(dict(user_id=user.id, user_nick=user.nick, user_avatar=user.get_avatar_65(), gender=user.gender,
                                               user_des=str_display((user.des or '').strip(), 17), is_invited=siu.user_id in invited_user_ids))
        for iu in invited_users:
            invited_users_json.append(dict(user_id=iu.to_user_id, user_nick=UserBase().get_user_by_id(iu.to_user_id).nick))
        return show_invite_users_json, invited_users_json
Exemplo n.º 9
0
    def handle(self, *args, **options):
        print u'==================初始化权限数据开始...'

        cache = {}

        for p in consts.PERMISSIONS:

            obj, created = Permission.objects.get_or_create(name=p['name'],
                                                            code=p['code'])

            cache[obj.code] = obj.id

            # 设置父节点
            if p['parent']:
                obj.parent_id = cache[p['parent']]
                obj.save()

        print u'==================初始化权限数据完成'
        print

        email = options.get('user')
        if email:
            print u'==================设置[%s]为管理员...' % email
            user = UserBase().get_user_by_email(email)
            if not user:
                print u'==================没有该用户,设置管理员失败...'
            else:
                permissions = [x.id for x in Permission.objects.all()]
                code, msg = PermissionBase().save_user_permission(
                    user.id, permissions, user.id)
                if code == 0:
                    print u'==================添加管理员成功'
                else:
                    print u'==================%s, 设置管理员失败...' % msg
Exemplo n.º 10
0
    def set_important(self,
                      journey,
                      user,
                      title,
                      summary,
                      author_user_id=None,
                      img='',
                      img_alt=None,
                      sort_num=0):
        try:
            if author_user_id and not UserBase().get_user_by_id(
                    author_user_id):
                transaction.rollback(using=JOURNEY_DB)
                return 99600, dict_err.get(99600)

            try:
                assert journey and user and title and summary
            except:
                transaction.rollback(using=JOURNEY_DB)
                return 99800, dict_err.get(99800)

            journey.is_important = True
            journey.save()

            transaction.commit(using=JOURNEY_DB)
            return 0, dict_err.get(0)
        except Exception, e:
            debug.get_debug_detail(e)
            transaction.rollback(using=JOURNEY_DB)
            return 99900, dict_err.get(99900)
Exemplo n.º 11
0
def main():
    from www.tasks import async_send_email_worker
    from common import utils
    from www.kaihu.models import CustomerManager
    from www.account.interface import UserBase

    count = 0
    for cm in CustomerManager.objects.filter(state=True):
        user = UserBase().get_user_by_id(cm.user_id)
        if "@a.com" in user.email:
            continue
        print user.email

        print count
        count += 1
        if count < 43:
            continue

        context = dict(user=user)
        try:
            async_send_email_worker(
                user.email, u'智选双十一活动,一场属于证券客户经理的狂欢',
                utils.render_email_template('email/ad/11_email.html', context),
                'html')
        except Exception, e:
            print e
Exemplo n.º 12
0
def modify_important(request):
    '''
    修改精选
    '''
    qb = QuestionBase()
    img_alt = request.REQUEST.get('imgAlt', '')
    sort_num = request.REQUEST.get('sort', 0)
    question_id = request.REQUEST.get('questionId')
    question = qb.get_question_by_id(question_id)

    img = request.FILES.get('importantImg')

    iq = qb.get_important_question_by_question_id(question_id)
    img_name = iq.img
    # 如果有上传图片
    if img:
        flag, img_name = qiniu_client.upload_img(img, img_type='important')
        img_name = '%s/%s' % (settings.IMG0_DOMAIN, img_name)

    title = request.REQUEST.get('title')
    summary = request.REQUEST.get('summary')
    author = request.REQUEST.get('author')
    author_id = None

    # 作者
    if author:
        author = UserBase().get_user_by_nick(author)
        if author:
            author_id = author.id

    code, msg = qb.set_important(question, request.user, title, summary, author_id, img_name, img_alt, sort_num)

    url = '/admin/question/important_question#modify/%s' % iq.question.id

    return HttpResponseRedirect(url)
Exemplo n.º 13
0
def add_important(request):
    '''
    添加精选
    '''
    img = request.FILES.get('importantImg')
    flag, img_name = qiniu_client.upload_img(img, img_type='important')

    qb = QuestionBase()
    question_id = request.REQUEST.get('questionId')
    question = qb.get_question_by_id(question_id)

    img_alt = request.REQUEST.get('imgAlt', '')
    sort_num = request.REQUEST.get('sort', 0)
    title = request.REQUEST.get('title')
    summary = request.REQUEST.get('summary')
    author = request.REQUEST.get('author')
    author_id = None

    # 作者
    if author:
        author = UserBase().get_user_by_nick(author)
        if author:
            author_id = author.id

    code, msg = qb.set_important(question, request.user, title, summary, author_id, '%s/%s' % (settings.IMG0_DOMAIN, img_name), img_alt, sort_num)

    url = ''
    if code == 0:
        iq = qb.get_important_question_by_question_id(question_id)
        url = '/admin/question/important_question#modify/%s' % iq.question.id
    else:
        url = request.META['HTTP_REFERER']
    return HttpResponseRedirect(url)
Exemplo n.º 14
0
def get_important_question_by_question_id(request):
    question_id = request.REQUEST.get('question_id')

    data = ''
    important_question = QuestionBase().get_important_question_by_question_id(question_id)
    if important_question:

        author = None

        if important_question.author_user_id:
            author = UserBase().get_user_by_id(important_question.author_user_id)

        data = {
            'question_id': important_question.question.id,
            'user_id': important_question.question.user.id,
            'user_nick': important_question.question.user.nick,
            'title': important_question.title,
            'summary': important_question.summary,
            'author': author.nick if author else '',
            'img': important_question.img,
            'img_alt': important_question.img_alt,
            'sort_num': important_question.sort_num,
            'create_time': str(important_question.question.create_time),
            'set_important_time': str(important_question.create_time)
        }

    return HttpResponse(json.dumps(data), mimetype='application/json')
Exemplo n.º 15
0
    def format_customer_managers_for_ajax(self, objs):
        data = []
        for obj in objs:
            if not obj:
                continue

            user = UserBase().get_user_by_id(obj.user_id)
            if user == "":
                continue

            user_count_info = UserCountBase().get_user_count_info(obj.user_id)
            data.append(
                dict(
                    user_id=user.id,
                    user_nick=self.get_cm_nick_show(obj.real_name, user.nick),
                    user_avatar=user.get_avatar_100(),
                    department_name=obj.department.get_short_name(),
                    company_short_name=obj.department.company.get_short_name(),
                    department_id=obj.department.id,
                    city_id=obj.city_id,
                    sort_num=obj.sort_num,
                    vip_info=obj.vip_info,
                    qq=obj.qq,
                    mobile=obj.mobile,
                    pay_type=obj.pay_type,
                    user_question_count=user_count_info['user_question_count'],
                    user_answer_count=user_count_info['user_answer_count'],
                    user_liked_count=user_count_info['user_liked_count'],
                ))
        return data
Exemplo n.º 16
0
def oauth_sina(request):
    from www.misc.oauth2.sina import Consumer
    client = Consumer()

    code = request.REQUEST.get('code')
    if not code:
        return HttpResponseRedirect(client.authorize())
    else:
        # 获取access_token
        dict_result = client.token(code)
        access_token = dict_result.get('access_token')

        # 获取用户信息
        openid = dict_result['uid']
        user_info = client.request_api(access_token, '/2/users/show.json', data=dict(access_token=access_token, uid=openid))
        # pprint(user_info)
        user_info = format_external_user_info(user_info, 'sina')

        flag, result = UserBase().get_user_by_external_info(source='sina', access_token=access_token, external_user_id=openid,
                                                            refresh_token=dict_result['refresh_token'], nick=user_info['nick'],
                                                            ip=utils.get_clientip(request), expire_time=dict_result['expires_in'],
                                                            user_url=user_info['url'], gender=user_info['gender'])
        if flag:
            user = result
            user.backend = 'www.middleware.user_backend.AuthBackend'
            auth.login(request, user)
            next_url = request.session.get('next_url') or '/'
            request.session.update(dict(next_url=''))
            return HttpResponseRedirect(next_url)
        else:
            error_msg = result or u'新浪微博账号登陆失败,请重试'
            return render_to_response('account/login.html', locals(), context_instance=RequestContext(request))

        return HttpResponse(u'code is %s' % code)
def get_sensitive_operation_log(request):

    nick = request.REQUEST.get('nick')
    page_index = int(request.REQUEST.get('page_index', 1))

    objs = SensitiveOperationLogBase().search_logs_for_admin(nick)

    page_objs = page.Cpt(objs, count=10, page=page_index).info

    data = []
    num = 10 * (page_index - 1) + 0

    for log in page_objs[0]:

        num += 1

        user = UserBase().get_user_by_id(log.user_id)

        data.append({
            'num': num,
            'user_id': user.id,
            'user_nick': user.nick,
            'url': log.url,
            'create_date': str(log.create_time),
            'data': log.data
        })

    return HttpResponse(json.dumps({
        'data': data,
        'page_count': page_objs[4],
        'total_count': page_objs[5]
    }),
                        mimetype='application/json')
Exemplo n.º 18
0
Arquivo: views.py Projeto: cash2one/zx
def qiniu_img_return(request):
    '''
    @note: 七牛设置图片回调url
    '''
    from www.account.interface import UserBase

    upload_ret = base64.b64decode(request.GET.get('upload_ret', ''))
    try:
        ur = json.loads(upload_ret)
    except:
        ur = {}
    img_key = ur.get('key', '')
    img_type = ur.get('img_type', '')
    if img_key and img_type.startswith('avatar'):
        user = request.user
        user.avatar = '%s/%s' % (settings.IMG0_DOMAIN, img_key)
        user.save()

        # 更新缓存
        UserBase().get_user_by_id(user.id, must_update_cache=True)

        # 上传完头像之后 跳转到设置页面时带上 需要裁剪参数
        return HttpResponseRedirect('/account/user_settings?crop_avatar=true')
    return HttpResponse(
        '上传图片出错,请重新上传 <a href="javascript:history.go(-1);">立即返回</a>')
Exemplo n.º 19
0
Arquivo: views.py Projeto: cash2one/zx
def search_auto_complete(request):
    '''
    @note: 搜索自动补全
    '''
    from www.custom_tags.templatetags.custom_filters import str_display
    from www.account.interface import UserBase

    key = request.REQUEST.get('key', '').strip()
    data = []
    if key:
        users = UserBase().search_users(key)[:5]
        questions = qb.search_questions(key)[:5]
        i = 1
        for user in users:
            data.append(
                dict(type="user",
                     value=str(i),
                     data=user.nick,
                     des=str_display((user.des or '').strip(), 30),
                     avatar=user.get_avatar_65(),
                     url=user.get_url()))
            i += 1

        for question in questions:
            data.append(
                dict(type="question",
                     value=str(i),
                     data=str_display(question.title, 25),
                     answer_count=question.answer_count,
                     url=question.get_url()))
            i += 1
    return HttpResponse(json.dumps(data), mimetype='application/json')
Exemplo n.º 20
0
    def create_invite(self, from_user_id, to_user_id, question_id):
        try:
            from www.question.interface import QuestionBase

            ub = UserBase()
            try:
                from_user = ub.get_user_by_id(from_user_id)
                to_user = ub.get_user_by_id(to_user_id)
                question = QuestionBase().get_question_by_id(question_id)

                assert from_user and to_user and question
            except:
                transaction.rollback(using=DEFAULT_DB)
                return 99800, dict_err.get(99800)

            if from_user_id == to_user_id:
                transaction.rollback(using=DEFAULT_DB)
                return 40100, dict_err.get(40100)

            # 同一个问题最多邀请6个人
            if InviteAnswerIndex.objects.filter(from_user_id=from_user_id, question_id=question_id).count() >= 6:
                transaction.rollback(using=DEFAULT_DB)
                return 40101, dict_err.get(40101)

            # 重复邀请给出提示
            if InviteAnswerIndex.objects.filter(from_user_id=from_user_id, to_user_id=to_user_id, question_id=question_id):
                transaction.rollback(using=DEFAULT_DB)
                return 40102, dict_err.get(40102)

            try:
                ia = InviteAnswer.objects.create(from_user_ids=json.dumps([from_user_id, ]), to_user_id=to_user_id, question_id=question_id)
                need_update_unread_count = True
            except:
                ia = InviteAnswer.objects.get(to_user_id=to_user_id, question_id=question_id)
                from_user_ids = json.loads(ia.from_user_ids)
                if from_user_id not in from_user_ids:
                    from_user_ids.append(from_user_id)
                ia.from_user_ids = json.dumps(from_user_ids)
                ia.save()

                need_update_unread_count = True if ia.is_read else False

            # 建立索引
            InviteAnswerIndex.objects.create(from_user_id=from_user_id, to_user_id=to_user_id, question_id=question_id)

            # 更新未读消息,新邀请或者邀请已读才更新未读数
            if need_update_unread_count:
                UnreadCountBase().update_unread_count(to_user_id, code='invite_answer')

            # 发送提醒邮件
            context = dict(user=from_user, question=question)
            async_send_email(to_user.email, u'%s 在智选邀请你回答问题' % (from_user.nick, ), utils.render_email_template('email/invite.html', context), 'html')

            transaction.commit(using=DEFAULT_DB)
            return 0, dict_err.get(0)
        except Exception, e:
            debug.get_debug_detail(e)
            transaction.rollback(using=DEFAULT_DB)
            return 99900, dict_err.get(99900)
Exemplo n.º 21
0
 def format_customer_managers(self, objs):
     for obj in objs:
         obj.user = UserBase().get_user_by_id(obj.user_id)
         obj.user.user_count_info = UserCountBase().get_user_count_info(
             obj.user_id)
         obj.department = DepartmentBase().get_department_by_id(
             obj.department.id)  # 得到city信息
     return objs
Exemplo n.º 22
0
def get_user_permissions(request):
    '''
    获取用户对应权限
    '''
    user_id = request.REQUEST.get('user_id')
    data = PermissionBase().get_user_permissions(user_id)
    user = UserBase().get_user_by_id(user_id)
    return HttpResponse(json.dumps({'permissions': data, 'user': {'user_id': user.id, 'user_nick': user.nick}}), mimetype='application/json')
Exemplo n.º 23
0
    def format_user_received_invites(self, user_received_invites):
        from www.question.interface import QuestionBase

        ub = UserBase()
        for uri in user_received_invites:
            uri.question = QuestionBase().get_question_summary_by_id(uri.question_id)
            uri.from_users = [ub.get_user_by_id(user_id) for user_id in json.loads(uri.from_user_ids)]
            uri.from_users.reverse()
        return user_received_invites
Exemplo n.º 24
0
def add_user(request):
    email = request.POST.get('email', '').strip()
    nick = request.POST.get('nick', '').strip()
    password = request.POST.get('password', '').strip()
    re_password = request.POST.get('re_password', '').strip()
    ip = utils.get_clientip(request)

    flag, msg = UserBase().regist_user(email, nick, password, re_password, ip)
    return flag, msg.id if flag == 0 else msg
Exemplo n.º 25
0
Arquivo: views.py Projeto: cash2one/zx
def search(request):
    from www.account.interface import UserBase

    search_type = request.REQUEST.get('type', 'question').strip()
    if search_type not in ("question", "answer", "user"):
        raise Http404

    key_words = request.REQUEST.get('key_words', '').strip()
    if not key_words:
        info_msg = u"请输入搜索关键词"

    page_num = int(request.REQUEST.get('page', 1))
    page_num = 20 if page_num > 20 else page_num
    page_objs = None

    if search_type == "question":
        questions = qb.search_questions(key_words)
        page_objs = page.Cpt(questions, count=10, page=page_num).info
        questions = page_objs[0]
        questions = qb.format_quesitons(questions)

    if search_type == "answer":
        if len(key_words) < 4:
            info_msg = u"搜索回答最少输入4个字"
        else:
            answers = ab.search_answers(key_words)
            page_objs = page.Cpt(answers, count=10, page=page_num).info
            answers = page_objs[0]
            answers = ab.format_answers(answers)

    if search_type == "user":
        users = UserBase().search_users(key_words)
        page_objs = page.Cpt(users, count=10, page=page_num).info
        users = page_objs[0]
        users = [
            UserBase().format_user_with_count_info(user) for user in users
        ]

    page_params = (page_objs[1], page_objs[4]) if page_objs else (1, 1)

    return render_to_response('question/search_%s.html' % search_type,
                              locals(),
                              context_instance=RequestContext(request))
Exemplo n.º 26
0
Arquivo: views.py Projeto: cash2one/zx
def crop_img(request):
    '''
    裁剪图片
    这里使用的是七牛的裁剪接口,具体参见 http://docs.qiniutek.com/v3/api/foimg/#imageMogr
    将剪裁坐标传递给七牛,七牛会返回按此参数剪裁后的图片回来,然后再将此图片作为用户头像上传给七牛
    '''
    from www.account.interface import UserBase

    def _verfiy_int(target, r):
        '''
        验证参数合法性
        target: 要验证的值
        r: 范围
        '''
        if target and target.isdigit():
            if (r[0] <= int(target)) and (int(target) <= r[1]):
                return True
        return False

    x = request.REQUEST.get('x', None)
    y = request.REQUEST.get('y', None)
    w = request.REQUEST.get('w', None)
    h = request.REQUEST.get('h', None)
    result = dict(flag='-1', result=u'参数错误')
    if all((_verfiy_int(x, [0, 300]), _verfiy_int(y, [0, 300]),
            _verfiy_int(w, [25, 300]), _verfiy_int(h, [25, 300]))):
        img_name_original = request.user.avatar.rsplit('/', 1)[1]
        # 剪切不支持缩略图,修改成重新获取一次图片
        flag, img_name_450 = qiniu_client.upload_img(
            urllib.urlopen(request.user.get_avatar_450()))
        if flag:
            # 拼接给七牛的参数
            post_url = '%s/%s?imageMogr2/crop/!%sx%sa%sa%s' % (
                settings.IMG0_DOMAIN, img_name_450, w, h, x, y)

            # 上传图片
            flag, img_name = qiniu_client.upload_img(urllib.urlopen(post_url),
                                                     img_type='newest_avatar')
            if flag:
                url = '%s/%s' % (settings.IMG0_DOMAIN, img_name)
                # 将新的图片地址指向当前用户
                user = request.user
                user.avatar = url
                user.save()

                # 更新缓存
                UserBase().get_user_by_id(user.id, must_update_cache=True)
                result = dict(flag='0', result=u'ok')

                # 删除多余的两张图片节省空间
                qiniu_client.batch_delete([img_name_original, img_name_450])
            else:
                result = dict(flag='-1', result=u'剪裁失败, 请稍后重试')

    return HttpResponse(json.dumps(result), mimetype='application/json')
Exemplo n.º 27
0
def select_city(request, city_id):
    from www.account.interface import UserBase

    city = cb.get_city_by_id(city_id)
    if not city:
        raise Http404

    if request.user.is_authenticated():
        UserBase().change_user_city(request.user.id, city_id)
    request.session["city_id"] = city_id
    return HttpResponseRedirect("/car_wash/")
Exemplo n.º 28
0
    def get_all_administrators(self):
        '''
        获取所有管理员
        '''
        user_ids = [
            x['user_id']
            for x in UserPermission.objects.values('user_id').annotate(
                dcount=Count('user_id'))
        ]

        return [UserBase().get_user_by_id(x) for x in user_ids]
Exemplo n.º 29
0
def search(request):
    user_nick = request.REQUEST.get('user_nick')
    page_index = int(request.REQUEST.get('page_index', 1))
    order = request.REQUEST.get('order', 'register_date')
    email = request.REQUEST.get('email')

    users = []
    ub = UserBase()

    users = ub.get_user_for_admin(user_nick,
                                  order if order != "register_date" else "id",
                                  email)
    page_objs = page.Cpt(users, count=10, page=page_index).info

    # 格式化
    format_users = [
        ub.format_user_full_info(
            x.id if not isinstance(x.id, long) else x.user_id)
        for x in page_objs[0]
    ]

    data = []
    num = 10 * (page_index - 1) + 0

    for user in format_users:

        num += 1
        data.append({
            'num': num,
            'user_id': user.id,
            'user_avatar': user.get_avatar_25(),
            'user_nick': user.nick,
            'user_des': user.des,
            'user_email': user.email,
            'question_count': user.user_count['user_question_count'],
            'answer_count': user.user_count['user_answer_count'],
            'liked_count': user.user_count['user_liked_count'],
            'follower_count': user.user_count['follower_count'],
            'following_count': user.user_count['following_count'],
            'is_recommend': user.is_recommend,
            'is_admin': user.is_admin,
            'is_customer_manager': user.is_customer_manager,
            'last_active': str(user.last_active),
            'state': user.state,
            'ip': user.ip
        })

    return HttpResponse(json.dumps({
        'data': data,
        'page_count': page_objs[4],
        'total_count': page_objs[5]
    }),
                        mimetype='application/json')
Exemplo n.º 30
0
    def get_response(self, xml):
        from www.account.interface import UserBase

        xml = self.format_input_xml(xml)
        jq = pq(xml)
        to_user = jq('tousername')[0].text
        from_user = jq('fromusername')[0].text
        events = jq('event')
        app_key = self.get_app_key_by_app_type(to_user)
        logging.error(u'收到一个来自app:%s 的请求' % app_key)

        if "test" in app_key:  # 剔除测试公众号发送信息
            return

        # 事件
        if events:
            event = events[0].text.lower()
            if event in ('scan', 'subscribe'):  # 扫码登陆事件
                tickets = jq('ticket')
                if tickets:
                    ticket = tickets[0].text
                    errcode, errmsg = UserBase().login_by_weixin_qr_code(
                        ticket, from_user, app_key)
                    return self.get_base_content_response(
                        to_user, from_user, errmsg)
            if event in ('subscribe', ):

                # 发送客服消息通知用户
                content = u"欢迎使用车咖,第一次总会很紧张...\n不怕,看看指南便知一二"
                url = u'http://mp.weixin.qq.com/s?__biz=MjM5OTc2NzM0OQ==&mid=203091966&idx=1&sn=9cb0a17772932e0d4564aeaa62286dd1#rd'
                img_info = u'[{"title": "洗车之前,看看咋用", "description": "%s", "url": "%s", "picurl": "%s"}]' \
                    % (content, url, 'http://static.cekaa.com/img/using_guide.jpg')
                self.send_msg_to_weixin(content,
                                        from_user,
                                        app_key,
                                        msg_type='news',
                                        img_info=img_info)

                return self.get_subscribe_event_response(to_user, from_user)
            elif event in ('click', ):
                event_key = jq('eventkey')[0].text.lower()
                if event_key == 'hotest':
                    pass

        # 文字识别
        msg_types = jq('msgtype')
        if msg_types:
            msg_type = msg_types[0].text
            if msg_type == 'text':
                content = jq('content')[0].text.strip()
                logging.error(u'收到用户发送的文本数据,内容如下:%s' % content)
                return self.get_customer_service_response(to_user,
                                                          from_user)  # 多客服接管