def modify_enable_visited_list(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'sex': '', 'phone': '', 'status': '', 'birth': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') enable_visited_list = 0 list_dict = { 'sex': _param['sex'], 'birth': _param['birth'], 'phone': _param['phone'], 'status': _param['status'], } for k, v in list_dict: enable_visited_list = enable_visited_list << 1 | v obj = models.User.objects.get(pk=user_id) obj.enable_visited_list = enable_visited_list if obj.save(): return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '修改失败')
def dis_follow(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'user_id': '', }) a_id = UtilsController.get_id_by_token(_param['access_token']) if a_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') p = 0 b_id = _param['user_id'] if int(a_id) > int(b_id): a_id, b_id = b_id, a_id p = -1 print(a_id) print(b_id) queryset = models.FollowMapping.objects.filter(user_left_id=a_id, user_right_id=b_id) obj = None for k in queryset: obj = k break print(obj.to_list_dict()) if obj: if p == 0: obj.left_to_right = False else: obj.right_to_left = False print(obj.to_list_dict()) obj.save() return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '关系不存在')
def dis_follow(request: HttpRequest): _param = validate_and_return(request,{ 'access_token':'', 'user_id':'', }) a_id = UtilsController.get_id_by_token(_param['access_token']) if a_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR,'此账号已在别处登陆') p = 0 b_id = _param['user_id'] if a_id < b_id: a_id,b_id = b_id,a_id p = -1 obj = models.FollowMapping.objects.get(user_left_id=a_id,user_right_id=b_id) if obj: if p == 0: obj.left_to_right = False else: obj.right_to_left = False if obj.save(): return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR,'取消关注失败') else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR,'没有关注此人')
def create(request: HttpRequest): """ 创建(发布)活动 :param request: :return: """ _param = validate_and_return( request, { 'group_id': '', 'title': '', 'content': '', 'place': '', 'start_time': '', 'end_time': '', }) group_id = _param['group_id'] _param.pop('group_id') _activity = models.Activity.objects.create(**_param) if _activity: group = models.Group.objects.get(pk=group_id) if group: mapping = models.ActivityBelongGroupMapping.objects.create( activity=_activity, group=group) if mapping: return rS.success({'id': _activity.id}) else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '创建活动mapping失败') else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '群组不存在') else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '创建活动失败')
def is_follow(request: HttpRequest): """ 是否关注 :param request: :return: """ _param = validate_and_return(request, { 'group_id': '', 'require_user_id': '' }) user = models.User.objects.get(pk=_param['require_user_id']) group = models.Group.objects.get(pk=_param['group_id']) if user is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '没有找到用户') if group is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '没有该群组') mapping = models.UserFollowGroupMapping.objects.filter(user=user, group=group) data = dict() data['is_follow'] = False if mapping.count() != 0: data['is_follow'] = True return rS.success(data)
def leave_comment(request: HttpRequest): """ 活动下的评论 :param request: :return: """ _param = validate_and_return(request, { 'activity_id': '', 'require_user_id': '', 'content': '' }) user_id = _param['require_user_id'] _comment_param = dict() _comment_param['user_id'] = user_id _comment_param['content'] = _param['content'] _comment_param['time'] = datetime.now() _comment = models.Comment.objects.create(**_comment_param) if _comment is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '评论失败') _activity = models.Activity.objects.get(pk=_param['activity_id']) if _activity is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '没有该活动') mapping = models.ActivityBelongComment.objects.create(activity=_activity, comment=_comment) if mapping: return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '评论失败')
def is_follow(request: HttpRequest): """ 是否关注 :param request: :return: """ _param = validate_and_return(request, { 'activity_id': '', 'require_user_id': '' }) user = models.User.objects.get(pk=_param['require_user_id']) activity = models.Activity.objects.get(pk=_param['group_id']) if user is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '没有找到用户') if activity is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '没有该活动') mapping = models.UserAttendActivityMapping.objects.get(user=user, activity=activity) data = dict() data['is_follow'] = False if mapping.count() != 0: data['is_follow'] = True return rS.success(data)
def returned_wrapper(request: HttpRequest, *args, **kwargs): try: # 判断是否需要登录 # if _login_required(request): # return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, "用户未登录") # # 是否需要权限认证 # if pl != '': # _pl = pl.split(',') # for _p in _pl: # auth(request, _p, *_args, **_kwargs) # return func(request, *args, **kwargs) except ParamMissingException as e: Log.error('param missing', e.msg) return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, e.msg) except models.ObjectDoesNotExist as e: Log.critical('obj not exists', str(e)) return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '无法找到相关对象') except Exception as e: Log.critical('deco login check', str(e)) return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '请稍后刷新后重试~')
def get_session_by_id(request: HttpRequest): _param = validate_and_return(request,{ 'access_token': '', 'session_id': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, "该用户已在别处登录") queryset = models.Session.objects.filter(pk=_param['session_id']) obj = None for k in queryset: obj = k break if obj is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR,"该会话不存在") if models.Session.objects.get(pk=obj.id).type == 0: session_name = models.Group.objects.get(pk=models.Session.objects.get(pk=obj.id).left_id).name else: if obj.left_id == user_id: session_name = models.User.objects.get(pk=obj.right_id).nickname else: session_name = models.User.objects.get(pk=obj.left_id).nickname return rS.success({ "id": obj.id, 'type': obj.type, 'title': session_name, })
def modify_enable_visited_list(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'birth': '', 'phone': '', 'status': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') enable_visited_list = 0 list_dict = { 'birth': _param['birth'], 'phone': _param['phone'], 'status': _param['status'], } for v in list_dict: print(v) enable_visited_list = enable_visited_list << 1 | int(list_dict[v]) queryset = models.User.objects.filter(pk=user_id) obj = None for k in queryset: obj = k break if obj is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此用户不存在') obj.enable_visited_list = enable_visited_list obj.save() return rS.success()
def modify_password(request: HttpRequest): _param = validate_and_return( request, { 'access_token': '', 'ex_password': '', 'new_password': '', 'confirm_password': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') queryset = models.User.objects.filter(pk=user_id) obj = None for k in queryset: obj = k break if obj is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, "该用户不存在") pwd = obj.password if _param['ex_password'] != pwd: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '密码错误') if _param['new_password'] != _param['confirm_password']: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '两次输出的密码不一致') obj.password = _param['new_password'] obj.save() return rS.success()
def dis_follow(request: HttpRequest): """ 取消关注 :param request: :return: """ _param = validate_and_return(request, { 'group_id': '', 'require_user_id': '' }) user = models.User.objects.get(pk=_param['require_user_id']) group = models.Group.objects.get(pk=_param['group_id']) if user is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '没有找到用户') if group is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '没有该群组') mapping = models.UserFollowGroupMapping.objects.get(user=user, group=group) if mapping: mapping.delete() return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '取消关注失败')
def follow(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'user_id': '', }) a_id = UtilsController.get_id_by_token(_param['access_token']) if a_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') p = 0 b_id = _param['user_id'] if int(a_id) > int(b_id): a_id, b_id = b_id, a_id p = -1 queryset = models.FollowMapping.objects.filter(user_left_id=a_id).filter( user_right_id=b_id) obj = None for k in queryset: obj = k break print(obj) if obj is not None: print(obj.to_list_dict()) if p == 0: obj.left_to_right = True NotificationController.create_notification( 1, b_id, models.User.objects.get(pk=a_id).nickname + '关注了你') else: obj.right_to_left = True NotificationController.create_notification( 1, a_id, models.User.objects.get(pk=b_id).nickname + '关注了你') obj.save() return rS.success() else: if p == 0: rs = models.FollowMapping.objects.create(user_left_id=a_id, user_right_id=b_id, left_to_right=True, right_to_left=False) NotificationController.create_notification( 1, b_id, models.User.objects.get(pk=a_id).nickname + '关注了你') if rs: return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '关注失败') else: rs = models.FollowMapping.objects.create(user_left_id=a_id, user_right_id=b_id, left_to_right=False, right_to_left=True) NotificationController.create_notification( 1, a_id, models.User.objects.get(pk=b_id).nickname + '关注了你') if rs: return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '关注失败')
def is_follow(request: HttpRequest): _param = validate_and_return(request,{ 'access_token':'', 'user_id':'', }) a_id = UtilsController.get_id_by_token(_param['access_token']) if a_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') b_id = _param['user_id'] p = 0 if a_id > b_id: a_id,b_id = b_id,a_id p = -1 obj = models.FollowMapping.objects.get(user_left_id=a_id,user_right_id=b_id) if obj is None: return rS.success({ 'is_follow':False, }) if p == 0: return rS.success({ 'is_follow':obj.left_to_right, }) else: return rS.success({ 'is_follow': obj.right_to_left, })
def register(request: HttpRequest): _param = validate_and_return(request, { 'account_name': '', 'password': '', 'nickname': '', }) # 验证 后续补 exist = models.User.objects.get(account_name=_param['account_name']) if exist is not None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '用户名已存在') _user = models.User.objects.create(**_param) if _user: return rS.success({'id': _user.id}) else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '注册失败')
def modify_enable_searched(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'enable_searched': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') obj = models.User.objects.get(pk=user_id) obj.enable_searched = _param['enable_searched'] if obj.save(): return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '修改失败')
def is_owner(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'group_id': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') queryset = models.UserFollowGroupMapping.objects.filter( user=user_id, group=_param['group_id']) obj = None for k in queryset: obj = k break if obj is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '该用户不在此群组') ans = (obj.role == 1) return rS.success({'is_admin': ans})
def check_token(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail() else: return rS.success()
def get_information(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') queryset = models.User.objects.filter(pk=user_id) obj = None for k in queryset: obj = k break if obj is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '用户不存在') rs = obj.to_list_dict() print(rs['birth']) print(rs) return rS.success(rs)
def modify_enable_searched(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'enable_searched': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') queryset = models.User.objects.filter(pk=user_id) obj = None for k in queryset: obj = k break if obj is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '用户不存在') obj.enable_searched = _param['enable_searched'] obj.save() return rS.success()
def get_information_by_id(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'user_id': '', }) a_id = UtilsController.get_id_by_token(_param['access_token']) if a_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登陆') obj = models.User.objects.get(pk=_param['user_id']) _ = obj.to_list_dict() return rS.success(_)
def get_session(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'type': '', 'left_id': '', # type = 0 left_id = group_id else = cur_user_id 'right_id': '', # type = 0 right = 0 else = to_id }) if UtilsController.get_id_by_token(_param['access_token']) == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, "该用户已在别处登录") l_id, r_id = _param['left_id'], _param['right_id'] int(l_id) int(r_id) session_type = int(_param['type']) if session_type == 1: if l_id > r_id: l_id, r_id = r_id, l_id session_id = is_session_exist(l_id, r_id) if session_id == -1: session_id = create_session(session_type, l_id, r_id) if session_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, "此会话不存在,请重新尝试") else: if session_type == 0: session_name = models.Group.objects.get(pk=_param['left_id']).name else: session_name = models.User.objects.get(id=_param['right_id']).nickname return rS.success({ "id": session_id, "type": models.Session.objects.get(pk=session_id).type, "title": session_name, }) else: if session_type == 0: session_name = models.Group.objects.get(pk=_param['left_id']).name else: session_name = models.User.objects.get(id=_param['right_id']).nickname return rS.success({ "id": session_id, 'type': _param['type'], 'title': session_name, })
def follow(request: HttpRequest): """ 关注活动 :param request: :return: """ _param = validate_and_return(request, { 'activity_id': '', 'require_user_id': '' }) _activity = models.Activity.objects.get(pk=_param['activity_id']) if _activity: mapping = models.UserAttendActivityMapping.objects.create( activity=_activity, user_id=_param['require_user_id']) if mapping: return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '关注失败') else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '关注失败')
def like(request: HttpRequest): """ 点赞功能 :param request: :return: """ _param = validate_and_return(request, { 'activity_id': '', 'require_user_id': '' }) _activity = models.Activity.objects.get(pk=_param['activity_id']) if _activity: mapping = models.ActivityLikeMapping.objects.create( activity=_activity, user_id=_param['require_user_id']) if mapping: _activity.like_number += 1 _activity.save() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '点赞失败') else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '点赞失败')
def login(request: HttpRequest): _param = validate_and_return(request,{ 'account_name':'', 'password': '', }) obj = models.User.objects.get(account_name=_param['account_name']) if obj is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR,'该用户不存在') if _param['password'] != obj.password: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR,'密码不正确') token = hashlib.sha1(os.urandom(24)).hexdigest() obj.token = token obj.save() return rS.success({ 'token': token, })
def get_notification_list(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'page': 'int', 'size': 'int', }) user_id = UtilsController.get_id_by_token(_param['access_token']) if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '此账号已在别处登录') queryset = models.Notification.objects.all().order_by("-create_time") list_data = [] count = 0 for k in queryset: if k.notification_type == 0: list_data.append(k.to_list_dict()) count += 1 if k.notification_type == 1: if k.to_id == user_id: list_data.append(k.to_list_dict()) count += 1 if k.notification_type == 2: if models.UserFollowGroupMapping.objects.filter(group=k.to_id, user=user_id): list_data.append(k.to_list_dict()) count += 1 if k.notification_type == 3: if models.UserFollowGroupMapping.objects.filter(group=k.to_id, user=user_id): if models.UserFollowGroupMapping.objects.get(group=k.to_id, user=user_id).role == 1 | \ models.UserFollowGroupMapping.objects.get(group=k.to_id, user=user_id).role == 2: list_data.append(k.to_list_dict()) count += 1 if k.notification_type == 4: if models.UserAttendActivityMapping.objects.filter( user=user_id, activity=k.to_id): list_data.append(k.to_list_dict()) count += 1 page = _param['page'] size = _param['size'] return rS.success({ 'count': count, 'list': list_data[(page - 1) * size:page * size], })
def create_message(request: HttpRequest): _param = validate_and_return(request, { 'access_token': '', 'session_id': '', 'content': '', }) user_id = UtilsController.get_id_by_token(_param['access_token']) _param.pop('access_token') if user_id == -1: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '该用户已在别处登录') if len(_param['content']) == 0: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '内容为空,请输入信息再重新发送') _param.setdefault("from_id") _param["from_id"] = user_id if models.Session.objects.get(pk=_param['session_id']).type == 0: perminssion_check = models.UserFollowGroupMapping.objects.all() for k in perminssion_check: print(k.user_id) print(k.group_id) if k.user_id == user_id | k.group_id == models.Session.objects.get( pk=_param['session_id']).left_id: if k.role != 1 | k.role != 2: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, "没有权限发信息") rs = models.Message.objects.create(**_param) rs.save() SessionController.update_session_time(_param['session_id'], rs) if rs: if models.Session.objects.get(pk=_param['session_id']).type == 0: create_notification(2, models.Session.objects.get(pk=_param['session_id']).left_id, \ "来自" + \ models.Group.objects.get(\ pk=models.Session.objects.get(\ pk=_param['session_id']).left_id).name\ + "的消息"+models.User.objects.get(pk=user_id).nickname \ + " @全体成员 "+ _param['content']) return rS.success() else: return rS.fail((rS.ReturnResult.UNKNOWN_ERROR, "发送失败"))
def get_information_by_id(request: HttpRequest): _param = validate_and_return(request, { 'user_id': '', }) queryset = models.User.objects.filter(pk=_param['user_id']) obj = None for k in queryset: obj = k break if obj is None: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '用户不存在') _ = obj.to_list_dict() return rS.success(_)
def remove_member(request: HttpRequest): """ 删除人员 :param request: :return: """ _param = validate_and_return(request, { 'group_id': '', 'require_user_id': '' }) pr = True if pr: mapping = models.UserFollowGroupMapping.objects.get( group_id=_param['group_id'], user_id=_param['require_user_id']) if mapping is not None: mapping.delete() return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '被操作用户不存在') else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '缺少权限操作')
def modify(request: HttpRequest): """ 修改群组 包含功能 编辑公告 编辑简介 :param request: :return: """ _param = validate_and_return( request, { 'group_id': '', 'name': 'nullable', 'notice': 'nullable', 'introduction': 'nullable' }) group_id = _param['group_id'] # 编辑公告 if _param.get('notice', None) is not None: # notification create_notification( 2, group_id, models.Group.objects.get(pk=group_id).notice + ' 更改为 ' + _param['notice']) Log.debug('GroupController', 'notification send') if _param.get('name', None) is not None: # notification create_notification( 2, group_id, models.Group.objects.get(pk=group_id).name + ' 更改为 ' + _param['name']) Log.debug('GroupController', 'notification send') if _param.get('introduction', None) is not None: # notification create_notification(2, group_id, models.Group.objects.get(pk=group_id).introduction + ' 更改为 ' + \ _param['introduction']) Log.debug('GroupController', 'notification send') # permission check result todo pr = True if pr: _param.pop('group_id') models.Group.objects.filter(pk=group_id).update(**_param) return rS.success() else: return rS.fail(rS.ReturnResult.UNKNOWN_ERROR, '修改群组失败')