示例#1
0
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()
示例#2
0
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()
示例#3
0
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()
示例#4
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
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