def post(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.tid = 1, 2, 3 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'tid'}: return E.key if not request.session['is_login']: return E.auth try: team = Team.objects.get(id=int(decode(kwargs['tid']))) except: return E.tid try: user = User.objects.get(id=int(decode(request.session['uid']))) owner = Member.objects.get(member=user, team=team) members = Member.objects.filter(team=team) except: return E.auth if owner.auth != 'owner': return E.auth try: for m in members: if not send_team_dismiss_message(team=team, mu=m.member): return E.uk team.root.move(user.root) # 篡位嗷 record_create(user, team.root) team.root.bfs_apply( func=lambda f: upd_record_user('create', f, old_user=None, new_user=user) ) team.delete() except: return E.uk return 0
def post(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.typo, E.exist = 1, 2, 3, 4 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'tid', 'acc'}: return E.key if not request.session['is_login']: return E.auth try: user1 = User.objects.get(id=int(decode(request.session['uid']))) print(1) user2 = User.objects.get(acc=kwargs['acc']) print(2) team = Team.objects.get(id=int(decode(kwargs['tid']))) print(3) auth = Member.objects.get(member=user1, team=team).auth print(4) except: return E.uk if auth == 'member': return E.auth if Member.objects.filter(member=user2, team=team).exists(): return E.exist try: # Member.objects.create(member=user2, team=team, author='member') print(111) if not send_team_invite_message(team, user1, user2): return E.uk except: return E.uk return 0
def post(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.tid, E.uid = 1, 2, 3, 4 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'tid', 'list'}: return E.key if not request.session['is_login']: return E.auth try: team = Team.objects.get(id=int(decode(kwargs['tid']))) except: return E.tid try: u = User.objects.get(id=int(decode(request.session['uid']))) owner = Member.objects.get(member=u, team=team) except: return E.auth if owner.auth != 'owner': return E.auth for uid in kwargs['list']: try: u = User.objects.get(id=uid) member = Member.objects.get(member=u, team=team) member.auth = 'admin' if member.auth == 'member' else 'member' except: return E.uid return 0
def get(self, request): u = User.objects.filter(id=int(decode(request.session['uid']))) if not u.exists(): return False, -1 u = u.get() if dict(request.GET).keys() != {'id', 'type'}: return False, 1 try: did = int(decode(request.GET.get('id'))) except: return False, -1 is_starred = False if not Collection.objects.filter(Q(user_id=u.id) | Q(ent_id=did)).exists(): is_starred = True return is_starred, 0
def post(self, request): E = ED() E.u, E.k = -1, 1 E.au, E.not_found = 2, 3 if not request.session.get('is_login', False): return E.au u = User.get_via_encoded_id(request.session['uid']) if u is None: return E.au # todo: 更多权限判断 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'id', 'type'}: return E.k e = Entity.objects.filter(id=int(decode(kwargs['id']))) if not e.exists(): return E.not_found e = e.get() if not e.is_deleted: return E.not_found if e.father.backtrace_deleted: return E.not_found e.is_deleted = False e.save() return 0
def post(self, request): errc = EasyDict() errc.unknown = -1 errc.toobig = 3 file = request.FILES.get("file", None) if not file: return '', errc.unknown u = User.objects.filter(id=int(decode(request.session['uid']))) if not u.exists(): return '', errc.unknown u = u.get() if file.size > MAX_UPLOADED_FSIZE: return '', errc.toobig file_name = ''.join( [random.choice(string.ascii_letters + string.digits) for _ in range(FNAME_DEFAULT_LEN)]) + '.' + \ str(file.name).split(".")[-1] file_path = os.path.join(DEFAULT_PROFILE_ROOT, file_name) with open(file_path, 'wb') as dest: [dest.write(chunk) for chunk in file.chunks()] u.portrait = os.path.join(BASE_DIR, file_path) try: u.save() except: return '', errc.unknown return u.portrait, 0
def post(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.root = 1, 2, 3 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'fid'}: return None, E.key if not request.session['is_login']: return None, E.auth try: user = User.objects.get(id=int(decode(request.session['uid']))) entity = Entity.get_via_encoded_id(kwargs['fid']) except: return None, E.uk if not entity.can_convert_to_team(): return None, E.root try: team = Team.objects.create(root=entity) Member.objects.create(member=user, team=team, auth='owner') entity.father = None entity.name = team.name + ROOT_SUFFIX entity.save() record_create(user, entity, delete=True) except: return None, E.uk return team.id, 0
def post(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.tid, E.name, E.intro = 1, 2, 3, 4, 5 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'tid', 'name', 'intro', 'img'}: return E.key if not request.session['is_login']: return E.auth try: team = Team.objects.get(id=int(decode(kwargs['tid']))) except: return E.tid if not (0 < len(kwargs['name']) <= TEAM_NAME_MAX_LENGTH and str(kwargs['name']).isprintable()): return E.name if not 0 < len(kwargs['intro']) <= TEAM_INTRO_MAX_LENGTH: return E.intro team.name = kwargs['name'] team.intro = kwargs['intro'] team.portrait = kwargs['img'] try: team.save() except: return E.uk return 0
def get(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.tid = 1, 2, 3 if dict(request.GET).keys() != set(): return E.key, [], [] if not request.session['is_login']: return E.auth uid = int(decode(request.session['uid'])) try: members = Member.objects.filter(member=uid) except: return E.uk my_team = [] join_team = [] for m in members: if m.auth == 'owner': my_team.append({ 'tid': encode(str(m.team.id)), 'name': m.team.name, 'intro': m.team.intro, 'portrait': m.team.portrait if m.team.portrait else '', 'member_count': len(Member.objects.filter(team=m.team)) }) else: join_team.append({ 'tid': encode(str(m.team.id)), 'name': m.team.name, 'intro': m.team.intro, 'portrait': m.team.portrait if m.team.portrait else '', 'member_count': len(Member.objects.filter(team=m.team)) }) return 0, my_team, join_team
def post(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.exist, E.jid = 1, 2, 3, 4 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'jid', 'result'}: return E.key if not request.session['is_login']: return E.auth try: msg = Message.objects.get(id=int(decode(kwargs['jid']))) except: return E.jid try: team = Team.objects.get(id=msg.related_id) # 消息里的id未加密 except: return E.uk if kwargs['result']: if Member.objects.filter(team=team, member=msg.owner).exists(): return E.exist try: Member.objects.create(team=team, member=msg.owner, auth='member') if not send_team_accept_message(team=team, su=msg.owner, mu=msg.sender, if_accept=True): return E.uk except: return E.uk else: if not send_team_accept_message(team=team, su=msg.owner, mu=msg.sender, if_accept=False): return E.uk return 0
def get(self, request): u = User.objects.filter(id=int(decode(request.session['uid']))) if not u.exists(): return 0, -1 u = u.get() count = Message.objects.filter(Q(owner_id=u.id) | Q(is_read=False)).count() return count, 0
def get(self, request): print(request.GET) E = EasyDict() E.uk = -1 E.key, E.auth, E.tid = 1, 2, 3 if dict(request.GET).keys() != {'tid'}: return E.key, '', '', '', '', 0, '', '', [], [] uid = int(decode(request.session['uid'])) tid = int(decode(request.GET.get('tid'))) try: user = User.objects.get(id=uid) except: return E.auth, '', '', '', '', 0, '', '', [], [] try: team = Team.objects.get(id=tid) except: return E.tid, '', '', '', '', 0, '', '', [], [] members = Member.objects.filter(team=team) if not members.exists(): return E.tid, '', '', '', '', 0, '', '', [], [] name = team.name intro = team.intro portrait = team.portrait if team.portrait else '' create_dt = team.create_dt_str doc_num = len(team.root.subtree) cuid = '' cname = '' norm = [] admin = [] for m in members: if m.auth == 'owner': cuid = encode(str(m.member.id)) cname = m.member.name elif m.auth == 'admin': admin.append({ 'uid': encode(str(m.member.id)), 'name': m.member.name }) else: norm.append({ 'uid': encode(str(m.member.id)), 'name': m.member.name }) return 0, name, intro, portrait, create_dt, doc_num, cuid, cname, norm, admin
def get(self, request): if dict(request.GET).keys() != {'mid'}: return 1, [] * 13 try: mid = int(decode(request.GET.get('mid'))) except ValueError: return -1, [] * 13 u = User.objects.filter(id=int(decode(request.session['uid']))) if not u.exists(): return -1, [] * 13 u = u.get() msg = Message.objects.filter(id=mid) if not msg.exists(): return -1, [] * 13 msg = msg.get() return 0, msg.is_read, msg.is_process, u.is_dnd, msg.title, msg.portrait, msg.type, encode(msg.related_id) if msg.related_id else '', msg.content, cur_time(), msg.dt_str
def post(self, request): if request.session.get('is_login', None): # 已登录 try: u = User.objects.get(id=int(decode(request.session['uid']))) except: return 0, -1 print(1) if u.login_date != date.today(): u.login_date = date.today() u.wrong_count = 0 try: u.save() except: return 0, -1 return 0, 0 print(2) E = EasyDict() E.uk = -1 E.key, E.exist, E.pwd, E.many = 1, 2, 3, 4 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'acc', 'pwd'}: return 0, E.key print(3) u = User.objects.filter(acc=kwargs['acc']) if not u.exists(): return 0, E.exist u = u.get() print(4) if u.login_date != date.today(): u.login_date = date.today() u.wrong_count = 0 try: u.save() except: return u.wrong_count, E.uk if u.wrong_count == MAX_WRONG_PWD: return u.wrong_count, E.many print(4.5) if u.pwd != str(hash_password(kwargs['pwd'])): print(5) u.wrong_count += 1 try: u.save() except: return 0, -1 return u.wrong_count, E.pwd print(6) request.session['is_login'] = True request.session['uid'] = encode(u.id) request.session['name'] = u.name request.session.save() try: u.save() except: return u.wrong_count, E.uk return u.wrong_count, 0
def post(self, request): kwargs: dict = json.loads(request.body) if kwargs.keys() != {'mid'}: return 1, msg = Message.objects.filter(id=int(decode(kwargs['mid']))) if not msg.exists(): return -1, msg = msg.get() msg.is_read = True msg.save() return 0,
def post(self, request): kwargs: dict = json.loads(request.body) if kwargs.keys() != {'is_dnd'}: return 1, u = User.objects.filter(id=int(decode(request.session['uid']))) if not u.exists(): return -1, u = u.get() u.is_dnd = kwargs['is_dnd'] u.save() return 0,
def get(self, request): if not request.session.get('is_login', None): return '', '', '', '', 2 try: uid = int(decode(request.session.get('uid', None))) except: return '', '', '', '', -1 u = User.objects.filter(id=uid) if not u.exists(): return '', '', '', '', -1 u = u.get() return u.name, u.portrait, u.acc, encode(u.id), 0
def post(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.tid, E.exist, E.uid = 1, 2, 3, 4, 5 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'tid', 'uid'}: return E.key if not request.session['is_login']: return E.auth try: user1 = User.objects.get(id=int(decode(request.session['uid']))) user2 = User.objects.get(id=int(decode(kwargs['uid']))) team = Team.objects.get(id=int(decode(kwargs['tid']))) auth = Member.objects.get(member=user1, team=team).auth except: return E.uk if auth == 'member': return E.auth try: u = Member.objects.filter(member=user2, team=team) except: return E.uk if not u.exists(): return E.exist try: if not send_team_out_message(team, user2): return E.uk old_user = u.get().member team.root.bfs_apply( func=lambda ent: upd_record_user( auth='create', ent=ent, old_user=old_user, new_user=team.owner ) ) u.delete() except: return E.uk return 0
def post(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.tid, E.exist = 1, 2, 3, 4 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'tid'}: return E.key if not request.session['is_login']: return E.auth try: team = Team.objects.get(id=int(decode(kwargs['tid']))) user = User.objects.get(id=int(decode(request.session['uid']))) except: return E.tid try: m = Member.objects.get(team=team, member=user) except: return E.exist try: m.delete() except: return E.uk return 0
def get(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.tid = 1, 2, 3 if dict(request.GET).keys() != {'tid'}: return '', E.key if not request.session['is_login']: return 'none', E.auth uid = int(decode(request.session['uid'])) tid = int(decode(request.GET.get('tid'))) try: user = User.objects.get(id=uid) except: return '', E.uk try: team = Team.objects.get(id=tid) except: return '', E.tid try: identity = Member.objects.get(team=team, member=user).auth except: return 'none', 0 return identity, 0
def post(self, request): u = User.objects.filter(id=int(decode(request.session['uid']))) if not u.exists(): return -1 u = u.get() kwargs: dict = json.loads(request.body) if kwargs.keys() != {'id', 'type', 'is_starred'}: return 1, ent = Entity.get_via_encoded_id(kwargs['id']) if ent is None: return 3 if kwargs['is_starred']: try: Collection.objects.create(user=u, ent=ent) except: return -1 return 0 else: Collection.objects.filter( ent=ent, user_id=int(decode(request.session['uid']))).delete() return 0
def get(self, request): if dict(request.GET).keys() != {'page', 'each'}: return 1, [], 0, '' try: page = int(request.GET.get('page')) each = int(request.GET.get('each')) except ValueError: return -1, [], 0, '' u = User.objects.filter(id=int(decode(request.session['uid']))) if not u.exists(): return -1, [], 0, '' u = u.get() messages = Message.objects.filter(owner_id=u.id).order_by('dt')[(page - 1) * each: page * each] msg = [] for message in messages: msg.append({ 'mid': encode(message.id), 'dt': message.dt_str, }) return 0, cur_time(), len(msg), msg
def post(self, request): E = EasyDict() E.uk = -1 E.key, E.auth, E.name = 1, 2, 3 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'name'}: return E.key if not request.session['is_login']: return E.auth try: owner = User.objects.get(id=int(decode(request.session['uid']))) except: return E.auth if not (0 <= len(str(kwargs['name'])) <= TEAM_NAME_MAX_LENGTH and str(kwargs['name']).isprintable()): return E.name try: # 创建新根文件夹 root = Entity.locate_root(kwargs['name']) team = Team.objects.create(name=kwargs['name'], root=root) Member.objects.create(team=team, member=owner, auth='owner') except: return E.uk return 0
def post(self, request): if not request.session['is_login']: return 2, kwargs: dict = json.loads(request.body) if kwargs.keys() != {'name', 'img'}: return 1, if not CHECK_NAME(kwargs['name']): return 3, try: uid = int(decode(request.session.get('uid', None))) except: return -1 u = User.objects.filter(id=uid) if not u.exists(): return -1 u = u.get() u.name = kwargs['name'] u.portrait = kwargs['img'].replace('\\\\', '\\') try: u.save() except: return -1 return 0
def post(self, request): E = ED() E.u, E.k = -1, 1 E.au, E.not_found = 2, 3 if not request.session.get('is_login', False): return E.au u = User.get_via_encoded_id(request.session['uid']) if u is None: return E.au # todo: 更多权限判断 kwargs: dict = json.loads(request.body) if kwargs.keys() != {'id', 'type'}: return E.k e = Entity.objects.filter(id=int(decode(kwargs['id']))) if not e.exists(): return E.not_found ent: Entity = e.get() if not ent.is_deleted: return E.not_found [so.delete() for so in ent.subtree] return 0
def get_via_encoded_id(encoded_id): q = Message.objects.filter(id=int(decode(encoded_id))) return q.get() if q.exists() else None
def post(self, request): u = User.objects.filter(id=int(decode(request.session['uid']))) if not u.exists(): return -1, False u = u.get() return 0, u.is_dnd
def get_via_encoded_id(encoded_id): t: QuerySet = Team.objects.filter(id=int(decode(encoded_id))) return t.get() if t.exists() else None
def get_via_encoded_id(encoded_id): m: QuerySet = Member.objects.filter(id=int(decode(encoded_id))) return m.get() if m.exists() else None
def get_via_encoded_id(encoded_id): u = User.objects.filter(id=int(decode(encoded_id))) return u.get() if u.exists() else None