Exemplo n.º 1
0
def message(request):
    try:
        username = request.session['user']
    except KeyError:
        request.agent.queue.put(SMAPResponse('error', reason='not_logged_in'))
        return

    try:
        channel_name = request['channel']
        content = request['content']
    except KeyError:
        request.agent.queue.put(SMAPResponse('error', reason='params_invalid'))
        return

    with request.db.transaction():
        user = User.get(User.username == username)

        try:
            channel = Channel.get(Channel.name == channel_name)
        except Channel.DoesNotExist:
            request.agent.queue.put(SMAPResponse('error', reason='invalid_channel'))
            return

        if channel.contains_user(user):
            Message.create(user=user, channel=channel, content=content)
            for u in channel.users:
                request.agent.dispatch(u.username, SMAPResponse('message', channel=channel.name, username=username, content=content))
        else:
            request.agent.queue.put(SMAPResponse('error', reason='not_joined_yet'))