Exemplo n.º 1
0
Arquivo: views.py Projeto: llv8/syl
def add_group(request):
    params = get_cmd_params(request)
    err_msg = None

    if (len(params) != 1):
        err_msg = PARAM_NUM
    elif (len(params[0]) >= 50):
        err_msg = GROUPNAME_LEN_LONG

    if (err_msg):
        return resp(err_msg)

    if (len(models.Group.objects.filter(name=params[0])) > 0):
        return resp(GROUPNAME_USED)

    group = models.Group(name=params[0],
                         manager=models.User(id=get_s_uid(request)),
                         utime=time.time())
    group.save()
    groupuser = models.GroupUser(group=group,
                                 user=models.User(id=get_s_uid(request)),
                                 status=1,
                                 utime=time.time())
    groupuser.save()
    return resp(ADDGROUP_SUCC, 1)
Exemplo n.º 2
0
Arquivo: views.py Projeto: llv8/syl
def apply_group(request):
    params = get_cmd_params(request)
    try:
        group = models.Group.objects.get(id=params[0])
    except Exception as e:
        return resp(GROUP_NOT_EXISTS)
    uid = get_s_uid(request)
    uname = sylredis.get_redis().hget('u_' + str(uid), 'n')
    if (not models.GroupUser.objects.filter(group=group, user__id=uid)):
        group_user = models.GroupUser(group=models.Group(id=params[0]),
                                      user=models.User(id=get_s_uid(request)),
                                      utime=time.time())
        group_user.save()
    # 給组管理员发送notice
    # t: 1--实时类型,2--有过期时间的类型
    msg = {
        'cmd': 'APPLY_GROUP',
        'uid': uid,
        'to': group.manager_id,
        'un': uname,
        'gid': group.id,
        't': 2,
        'ex': time.time() + 7 * 24 * 60 * 60
    }
    sylredis.get_redis().lpush('notice', json.dumps(msg))
    return resp(GROUP_USER_SUCC, 1)
Exemplo n.º 3
0
def regws(request):
    uid = str(get_s_uid(request))
    token = request.POST['t']
    if(uid and token):
        if(sylredis.get_redis().hget('u_' + uid, 't') == token):
            return resp(None, 1)
    return resp(None, 2)
Exemplo n.º 4
0
Arquivo: views.py Projeto: llv8/syl
def regws(request):
    uid = str(get_s_uid(request))
    token = request.POST['t']
    if (uid and token):
        if (sylredis.get_redis().hget('u_' + uid, 't') == token):
            return resp(None, 1)
    return resp(None, 2)
Exemplo n.º 5
0
def refresh(request):
    s_id = get_s_uid(request)
    r_id = request.POST.get('i')
    if(s_id and r_id and int(s_id) == int(r_id)):
        __addfriends4redis(s_id)
        resp_obj = {}
        resp_obj['ul'] = __append_groupusers(s_id, request.POST.get('ts'))
        resp_obj['gl'] = __append_groups(request.POST.get('ts'))
        resp_obj['ts'] = time.time()
        return resp(None, 1, resp_obj)
    return resp()
Exemplo n.º 6
0
def register(request):
    logger = logging.getLogger(__name__)
    params = get_cmd_params(request)
    err_msg = None
    
    if (len(params) != 3) :
            return resp(PARAM_NUM)
    
    username = params[0]
    phone = params[1]
    mail = params[2]
    
    if(len(username) >= 50):
        err_msg = USERNAME_LEN_LONG
    elif(not re.match(RE_USERNAME, username)) :
        err_msg = USERNAME_FMT
    elif (not re.match(RE_PHONE, phone)):
            err_msg = PHONE_INV
    elif (len(mail) >= 50 or re.match(RE_MAIL, mail) == None):
            err_msg = MAIL_INV
    if(err_msg):
        return resp(err_msg)

    users = models.User.objects.filter(phone=phone, email=mail, name=username)
    if(len(users) > 0):
        # 如果数据库里有相同的手机号,邮箱和用户名,且redis里的该user的vcode存在,直接返回
        if(sylredis.get_vcode(users[0].id)):
            return resp(MAIL_SENT, 1, {'u':copy_user_dict(users[0])})
        else:
            # 如果数据库里有相同的手机号,邮箱和用户名,且redis里没有该user的vcode,重新发送
            vcode = get_vcode()
            if(not send_mail.send_vcode(mail, username, vcode)):
                return resp(SYS_ERR)
            else:
                return resp(MAIL_SENT, 1, {'u':copy_user_dict(users[0])})
        
    # 一个手机只能用一次,邮箱也一样
    if(len(models.User.objects.filter(phone=phone)) > 0):
        return  resp(PHONE_USED)
    if(len(models.User.objects.filter(email=mail)) > 0):
        return  resp(MAIL_USED)
    
    # 如果有重名的username,用User里的ids来不区分
    maxids = models.User.objects.filter(name=username).order_by('-ids')
    ids = 0
    if(len(maxids) > 0):
        ids = maxids[0].ids + 1
    user = models.User(name=username, phone=phone, email=mail, ids=ids)
    
    # send vcode
    vcode = get_vcode()
    
    if(not send_mail.send_vcode(user.email, user.name, vcode)):
        return resp(SYS_ERR)
    
    __save_u(user)
    sylredis.set_vcode(user.id, vcode)  
    
    return resp(REG_SUCC, 1, {'u':copy_user_dict(user)})
Exemplo n.º 7
0
Arquivo: views.py Projeto: llv8/syl
def register(request):
    logger = logging.getLogger(__name__)
    params = get_cmd_params(request)
    err_msg = None

    if (len(params) != 3):
        return resp(PARAM_NUM)

    username = params[0]
    phone = params[1]
    mail = params[2]

    if (len(username) >= 50):
        err_msg = USERNAME_LEN_LONG
    elif (not re.match(RE_USERNAME, username)):
        err_msg = USERNAME_FMT
    elif (not re.match(RE_PHONE, phone)):
        err_msg = PHONE_INV
    elif (len(mail) >= 50 or re.match(RE_MAIL, mail) == None):
        err_msg = MAIL_INV
    if (err_msg):
        return resp(err_msg)

    users = models.User.objects.filter(phone=phone, email=mail, name=username)
    if (len(users) > 0):
        # 如果数据库里有相同的手机号,邮箱和用户名,且redis里的该user的vcode存在,直接返回
        if (sylredis.get_vcode(users[0].id)):
            return resp(MAIL_SENT, 1, {'u': copy_user_dict(users[0])})
        else:
            # 如果数据库里有相同的手机号,邮箱和用户名,且redis里没有该user的vcode,重新发送
            vcode = get_vcode()
            if (not send_mail.send_vcode(mail, username, vcode)):
                return resp(SYS_ERR)
            else:
                return resp(MAIL_SENT, 1, {'u': copy_user_dict(users[0])})

    # 一个手机只能用一次,邮箱也一样
    if (len(models.User.objects.filter(phone=phone)) > 0):
        return resp(PHONE_USED)
    if (len(models.User.objects.filter(email=mail)) > 0):
        return resp(MAIL_USED)

    # 如果有重名的username,用User里的ids来不区分
    maxids = models.User.objects.filter(name=username).order_by('-ids')
    ids = 0
    if (len(maxids) > 0):
        ids = maxids[0].ids + 1
    user = models.User(name=username, phone=phone, email=mail, ids=ids)

    # send vcode
    vcode = get_vcode()

    if (not send_mail.send_vcode(user.email, user.name, vcode)):
        return resp(SYS_ERR)

    __save_u(user)
    sylredis.set_vcode(user.id, vcode)

    return resp(REG_SUCC, 1, {'u': copy_user_dict(user)})
Exemplo n.º 8
0
Arquivo: views.py Projeto: llv8/syl
def refresh(request):
    s_id = get_s_uid(request)
    r_id = request.POST.get('i')
    if (s_id and r_id and int(s_id) == int(r_id)):
        __addfriends4redis(s_id)
        resp_obj = {}
        resp_obj['ul'] = __append_groupusers(s_id, request.POST.get('ts'))
        resp_obj['gl'] = __append_groups(request.POST.get('ts'))
        resp_obj['ts'] = time.time()
        return resp(None, 1, resp_obj)
    return resp()
Exemplo n.º 9
0
def approve_user(request):
    params = get_cmd_params(request)
    try:
        groupuser = models.GroupUser.objects.get(group_id=int(params[0]), user_id=int(params[1]))
        groupuser.status = 1
        groupuser.utime = time.time()
        groupuser.save()
        msg = {'cmd':'APPROVE_USER', 'to':params[1], 'gid':params[0], 't':2, 'ex':time.time() + 7 * 24 * 60 * 60}
        sylredis.get_redis().lpush('notice', json.dumps(msg))
    except Exception as e:
        return resp(GROUPUSER_NOT_EXISTS)
    return resp(APPROVE_SUCC, 1, {'uid':params[1]})
Exemplo n.º 10
0
def apply_group(request):
    params = get_cmd_params(request)
    try:
        group = models.Group.objects.get(id=params[0])
    except Exception as e:
        return resp(GROUP_NOT_EXISTS)
    uid = get_s_uid(request)
    uname = sylredis.get_redis().hget('u_' + str(uid), 'n')
    if(not models.GroupUser.objects.filter(group=group, user__id=uid)):
        group_user = models.GroupUser(group=models.Group(id=params[0]), user=models.User(id=get_s_uid(request)), utime=time.time())
        group_user.save()
    # 給组管理员发送notice
    # t: 1--实时类型,2--有过期时间的类型
    msg = {'cmd':'APPLY_GROUP', 'uid':uid, 'to':group.manager_id, 'un':uname, 'gid':group.id, 't':2, 'ex':time.time() + 7 * 24 * 60 * 60}
    sylredis.get_redis().lpush('notice', json.dumps(msg))
    return resp(GROUP_USER_SUCC, 1)
Exemplo n.º 11
0
def get_group_users(request):
    gid = request.POST.get('gid')
    uid = get_s_uid(request)
    groupusers = models.GroupUser.objects.filter(group_id=gid, status=1).exclude(user_id=uid)
    user_dicts = {}
    for gu in groupusers:
        populate_user_dicts(gu, user_dicts)
    return resp(None, 1, {'ul':user_dicts})
Exemplo n.º 12
0
Arquivo: views.py Projeto: llv8/syl
def logout(request):
    uid = get_s_uid(request)
    if (uid):
        user = __get_u(uid)
        user.pwd = None
        user.status = 0
        __save_u(user)
        del request.session['uid']
    return resp(None, 1)
Exemplo n.º 13
0
def vcode(request):
    params = get_cmd_params(request)
    if(len(params) != 1):
        return resp(PARAM_NUM)
    id = request.POST.get('i')
    if(id):
        vcode = sylredis.get_vcode(id)
        if(vcode == params[0]):
            user = __get_u(id)
            user.pwd = hashlib.md5(str(id) + str(vcode)).hexdigest()
            user.status = 1
            __save_u(user)
            set_s_uid(request, user.id)
            return resp(VCODE_SUCC, 1, {'u':copy_user_dict(user)})
        else:
            return resp(VCODE_ERR)
    else:
        return resp(SYS_ERR)
Exemplo n.º 14
0
def logout(request):
    uid = get_s_uid(request)
    if(uid):
        user = __get_u(uid)
        user.pwd = None
        user.status = 0
        __save_u(user)
        del request.session['uid']
    return resp(None, 1)
Exemplo n.º 15
0
Arquivo: views.py Projeto: llv8/syl
def vcode(request):
    params = get_cmd_params(request)
    if (len(params) != 1):
        return resp(PARAM_NUM)
    id = request.POST.get('i')
    if (id):
        vcode = sylredis.get_vcode(id)
        if (vcode == params[0]):
            user = __get_u(id)
            user.pwd = hashlib.md5(str(id) + str(vcode)).hexdigest()
            user.status = 1
            __save_u(user)
            set_s_uid(request, user.id)
            return resp(VCODE_SUCC, 1, {'u': copy_user_dict(user)})
        else:
            return resp(VCODE_ERR)
    else:
        return resp(SYS_ERR)
Exemplo n.º 16
0
Arquivo: views.py Projeto: llv8/syl
def get_group_users(request):
    gid = request.POST.get('gid')
    uid = get_s_uid(request)
    groupusers = models.GroupUser.objects.filter(group_id=gid,
                                                 status=1).exclude(user_id=uid)
    user_dicts = {}
    for gu in groupusers:
        populate_user_dicts(gu, user_dicts)
    return resp(None, 1, {'ul': user_dicts})
Exemplo n.º 17
0
Arquivo: views.py Projeto: llv8/syl
def approve_user(request):
    params = get_cmd_params(request)
    try:
        groupuser = models.GroupUser.objects.get(group_id=int(params[0]),
                                                 user_id=int(params[1]))
        groupuser.status = 1
        groupuser.utime = time.time()
        groupuser.save()
        msg = {
            'cmd': 'APPROVE_USER',
            'to': params[1],
            'gid': params[0],
            't': 2,
            'ex': time.time() + 7 * 24 * 60 * 60
        }
        sylredis.get_redis().lpush('notice', json.dumps(msg))
    except Exception as e:
        return resp(GROUPUSER_NOT_EXISTS)
    return resp(APPROVE_SUCC, 1, {'uid': params[1]})
Exemplo n.º 18
0
def add_group(request):
    params = get_cmd_params(request)
    err_msg = None
    
    if (len(params) != 1) :
            err_msg = PARAM_NUM
    elif(len(params[0]) >= 50):
        err_msg = GROUPNAME_LEN_LONG

    if(err_msg):
        return resp(err_msg)
    
    if(len(models.Group.objects.filter(name=params[0])) > 0):
        return  resp(GROUPNAME_USED)
    
    group = models.Group(name=params[0], manager=models.User(id=get_s_uid(request)), utime=time.time())
    group.save()
    groupuser = models.GroupUser(group=group, user=models.User(id=get_s_uid(request)), status=1, utime=time.time())
    groupuser.save()
    return resp(ADDGROUP_SUCC, 1)
Exemplo n.º 19
0
 def process_request(self, request):
     try:
         request.META['HTTP_USER_AGENT'].index('Chrome')
     except Exception as e:
         return  HttpResponse('<h1>Please use Chrome browser</h1>')
     if(request.path == '/cust/register' or request.path == '/cust/login' or request.path == '/cust/vcode' or request.path == '/cust/userstatus' or request.path == '/'):
         pass
     else:
         uid = get_s_uid(request)
         if(not uid):
             return resp('请使用register或login命令注册或登录')
     return None
Exemplo n.º 20
0
def user_status(request):
    user = __user_stat(request)
    if(user):
        return resp(None, 1, {'u':copy_user_dict(user)})
    else:
        return resp()
Exemplo n.º 21
0
def login(request):
    params = get_cmd_params(request)
    if (len(params) != 1) :
        return resp(PARAM_NUM)
    isEmail = False
    isPhone = False
            
    if (re.match(RE_PHONE, params[0])):
            isPhone = True

    elif (re.match(RE_MAIL, params[0])):
            isEmail = True

    if(not isPhone and not isEmail):
        return resp(LOGIN_PARAM_INVALID)
    user = __user_stat(request)
    if(user):
        if(user.status == 1):
            if(user.phone == params[0] or user.email == params[0]):
                resp(user.name + u'用户已登录', 1, {'u':copy_user_dict(user)})
            else:
                resp(user.name + u'用户已登录,请先logout', 1, {'u':copy_user_dict(user)})
                
    users = None
    if(isPhone):
        users = models.User.objects.filter(phone=params[0])
    if(isEmail):
        users = models.User.objects.filter(email=params[0])
    
    if(users == None or len(users) == 0):
        return resp(LOGIN_PARAM_NOEXISTS)
    
    # send vcode
    vcode = get_vcode()
    user = users[0]
    user.status = 0
    user.pwd = None
    __save_u(user)
    
    if(sylredis.get_vcode(user.id)):
        return resp('验证码已经发送至邮箱或手机,请查收', 1, {'u':copy_user_dict(user)})
    
    # 校验当前用户当天的登录次数,如果超出,当天不允许再登录
    if(not valid_vcode_times(user.id)):
        return resp(VCODE_TIMES)
    
    if(isPhone):
        if(not send_sms.send_vcode(user.phone, user.name, vcode)):
            return resp(SYS_ERR)
    if(isEmail):
        if(not send_mail.send_vcode(user.email, user.name, vcode)):
            return resp(SYS_ERR)
        
    incr_vcode_times(user.id)
    sylredis.set_vcode(user.id, vcode)  
    msg = PHONE_SENT if isPhone else MAIL_SENT
    return resp(msg, 1, {'u':copy_user_dict(user)})
Exemplo n.º 22
0
Arquivo: views.py Projeto: llv8/syl
def user_status(request):
    user = __user_stat(request)
    if (user):
        return resp(None, 1, {'u': copy_user_dict(user)})
    else:
        return resp()
Exemplo n.º 23
0
Arquivo: views.py Projeto: llv8/syl
def login(request):
    params = get_cmd_params(request)
    if (len(params) != 1):
        return resp(PARAM_NUM)
    isEmail = False
    isPhone = False

    if (re.match(RE_PHONE, params[0])):
        isPhone = True

    elif (re.match(RE_MAIL, params[0])):
        isEmail = True

    if (not isPhone and not isEmail):
        return resp(LOGIN_PARAM_INVALID)
    user = __user_stat(request)
    if (user):
        if (user.status == 1):
            if (user.phone == params[0] or user.email == params[0]):
                resp(user.name + u'用户已登录', 1, {'u': copy_user_dict(user)})
            else:
                resp(user.name + u'用户已登录,请先logout', 1,
                     {'u': copy_user_dict(user)})

    users = None
    if (isPhone):
        users = models.User.objects.filter(phone=params[0])
    if (isEmail):
        users = models.User.objects.filter(email=params[0])

    if (users == None or len(users) == 0):
        return resp(LOGIN_PARAM_NOEXISTS)

    # send vcode
    vcode = get_vcode()
    user = users[0]
    user.status = 0
    user.pwd = None
    __save_u(user)

    if (sylredis.get_vcode(user.id)):
        return resp('验证码已经发送至邮箱或手机,请查收', 1, {'u': copy_user_dict(user)})

    # 校验当前用户当天的登录次数,如果超出,当天不允许再登录
    if (not valid_vcode_times(user.id)):
        return resp(VCODE_TIMES)

    if (isPhone):
        if (not send_sms.send_vcode(user.phone, user.name, vcode)):
            return resp(SYS_ERR)
    if (isEmail):
        if (not send_mail.send_vcode(user.email, user.name, vcode)):
            return resp(SYS_ERR)

    incr_vcode_times(user.id)
    sylredis.set_vcode(user.id, vcode)
    msg = PHONE_SENT if isPhone else MAIL_SENT
    return resp(msg, 1, {'u': copy_user_dict(user)})