def post_dms(): """ Creates Direct messages """ user_ids = request.get_json()['user_ids'] user_ids.append(current_user.id) users = [User.query.get(id) for id in user_ids] user_ids = [str(id) for id in user_ids] # create the channel first dm = Channel( name = "-".join(user_ids), # name = 1-2-3-4 channel_type = "dm" ) db.session.add(dm) db.session.commit() # query for the channel dm = Channel.query.filter(Channel.name == "-".join(user_ids)).first() for user in users: user.channels.append(dm) db.session.commit() return dm.to_dict()
def addChannel(server_id, channel_name): name = channel_name created_at = datetime.now() new_channel = Channel(name=name, server_id=server_id, created_at=created_at) db.session.add(new_channel) db.session.commit() return new_channel.to_dict()
def add_channel(): channel = request.json new_channel = Channel(name=channel['name'], server_id=channel['serverId'], created_at=datetime.utcnow()) db.session.add(new_channel) db.session.commit() return new_channel.to_dict()
def channel_list(): if request.method == 'POST': """ POST /channels {"name": "科技", "sort": 1} 注意 postman/前端 在向服务器提交 json 数据时,需要声明提交的类型 在 请求的 headers 增加 content-type: application/json flask 在确认请求数据是通过 json 提交之后,会将 json 字符串转换成 字典,保存在 request.json 中 """ # print(request.data) # print(request.json) if 'name' not in request.json or 'sort' not in request.json: return abort(400) channel = Channel() channel.name = request.json['name'] channel.sort = request.json['sort'] db.session.add(channel) db.session.commit() return jsonify({'channel': channel.to_dict()}), 201 # 数据库查询返回的是 list 类型的数据 _channels = Channel.query.all() channels = [channel.to_dict() for channel in _channels] # flask 视图函数只能返回 str 或 response 对象 # 我们可以将数据库查询出来的数据 转换成 json,以满足 flask 视图函数的返回要求 ret = {'channels': channels} # import json # json_str = json.dumps(ret) # return json_str return jsonify(ret), 200
def create_channel(): data = request.get_json() or {} if 'device_id' not in data or 'name' not in data or 'channel_num' not in data: return bad_post("Missing required fields.") channel = Channel() channel.from_dict(data) db.session.add(channel) db.session.commit() response = jsonify(channel.to_dict()) response.status_code = 200 return response
def post_channels(): """ Creates a new channel (public or private or dm) """ form = ChannelForm() print("FORM ERRORS", form.errors) form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): # if form is validated, store to DB channel = Channel( name = form.data['name'], channel_type = form.data['channel_type'] ) current_user.channels.append(channel) db.session.add(channel) db.session.commit() return channel.to_dict() return {'errors': channel_errors_to_error_messages(form.errors)}, 400
def find_channel(): channelId = request.json channelSearch = Channel.query.get(channelId) channel = Channel( id=channelSearch.id, name=channelSearch.name, server_id=channelSearch.server_id, ) existingChannel = channel.to_dict() formattedMessages = [ message.to_dict() for message in channelSearch.messages ] for formattedMessage in formattedMessages: messageUsername = User.query.get(formattedMessage['user_id']) formattedMessage['profile_URL'] = messageUsername.profile_URL formattedMessage['username'] = messageUsername.username formattedMessages.sort(key=lambda x: x['created_at']) existingChannel['messages'] = formattedMessages return existingChannel