def add(): form = request.json u = current_user() t = Topic.new(form, user_id=u.id) return json_succeed( topic=topic_returned(t), )
def new_chat(): sender = current_user() form = request.json receiver_id = form['receiver_id'] if receiver_id == sender.id: return json_fail() else: room_id = str(uuid.uuid4()) form['room_id'] = room_id form['sender_id'] = sender.id message = Message.one(sender_id=sender.id, receiver_id=receiver_id) if message is None: Message.new(form) return json_succeed(room=room_id) else: return json_succeed(room=message.room_id)
def register(): form = request.json u = User.register(form) if u is None: return json_fail() else: return json_succeed(user=u.json(), )
def check_token(): form = request.json log(form) token = form['token'] if token in auth_tokens: return json_succeed() else: return json_fail()
def messages(): room_id = request.json['room'] message_id = Message.one(room_id=room_id).id all_messages = MessageContent.all(message_id=message_id) messages_returned = [m.json() for m in all_messages] return json_succeed(messages=messages_returned, )
def reset_password_update(): token = request.json['token'] user_id = auth_tokens.get(token, None) if user_id is None: json_fail() else: password = request.json['password'] User.update_password(user_id, password) auth_tokens.pop(token) return json_succeed()
def setting_profile(): u = current_user() form = request.json username = form['name'] signature = form['signature'] email = form['email'] User.update(u.id, username=username, signature=signature, email=email) return json_succeed()
def avatar_add(): file: FileStorage = request.files['avatar'] filename = str(uuid.uuid4()) path = os.path.join('images', filename) file.save(path) u = current_user() User.update(u.id, image='/images/{}'.format(filename)) return json_succeed()
def login(): form = request.json u = User.validate_login(form) if u is None: return json_fail() else: token = UserToken.add(u.id) return json_succeed( user=u.json(), token=token, )
def user_detail(user): u = user if u is None: return json_fail() else: created = created_topic(u.id) replied = ordered_replied_topics(u.id) return json_succeed( user=u.json(), created=topics_returned(created), replied=topics_returned(replied), )
def add(): form = request.json u = current_user() r = Reply.new(form, u.id) reply = r.json() reply_user = User.one(id=r.user_id) reply['user'] = reply_user.json() content = form['content'] users = users_from_content(content) send_mails(u, users, form['topic_id'], r.floor, content) # send_mails(u, users, form['topic_id'], r.floor, content) return json_succeed(reply=reply, )
def setting_password(): u = current_user() form = request.json current_password = form['current-password'] new_password = User.salted_password(form['new-password']) try: User.change_password(u.id, current_password, new_password) except ValueError: return json_fail() return json_succeed()
def reset_password(): username = request.json['username'] log('username', username) u: User = User.one(username=username) log(u) if u is not None: token = auth_tokens.new(u.id) send_mail( subject='重置密码', author=config.admin_mail, to=u.email, content="{}/{}".format(config.server_name, 'reset?token={}'.format(token)), ) return json_succeed() else: return json_fail()
def index(): board_id = int(request.args.get('board_id', -1)) page_num = int(request.args.get('page_num', 1)) page_limit = int(request.args.get('page_limit', 3)) topics = topics_for_index(board_id, page_num, page_limit) log('board_id', board_id) if board_id != -1: count = Topic.all_count(board_id=board_id) log('count', count) else: count = Topic.count() log('count', count) return json_succeed( topics=topics, count=ceil(count / page_limit), )
def contacts(): u = current_user() all_contacts = Message.contacts(user_id=u.id) contacts_returned = [c.json() for c in all_contacts] contacts_returned.sort(key=lambda c: c['updated_time']) for c in contacts_returned: if c['receiver_id'] == u.id: c['other'] = User.one(id=c['sender_id']).json() elif c['sender_id'] == u.id: c['other'] = User.one(id=c['receiver_id']).json() # 都不满足,就会没有 other 字段 return json_succeed( user=u.json(), contacts=contacts_returned, )
def all_boards(): bs = Board.all() return json_succeed( boards=[b.json() for b in bs] )
def detail(id): m = Topic.get(id) return json_succeed( topic=topic_returned(m) )
def user(): u = current_user() if u is None: return json_fail(user=User.guest()) else: return json_succeed(user=u.json())