示例#1
0
文件: api.py 项目: Vivtek/flasknode
def check_or_make_subscription(s, m, make=False):
    session = model.get_session(s)  # Handle if session isn't found
    subscribed_message = model.get_message_subscription(s, m)
    if subscribed_message != None:
        return subscribed_message['id']
    if make == False:
        return None
    # So let's subscribe!
    # Ask remote server for the subscribed message
    remote_message = remote_api(s, 'g', '/subscription/start', {'id': m})
    our_user = find_or_make_remote_user(session, remote_message['user_id'],
                                        remote_message['user'])
    our_msg = model.new_message(remote_message['subject'],
                                remote_message['message'],
                                user=our_user,
                                sub_node=session['node'],
                                sub_msg=remote_message['id'])
    # Do the same for comments
    for comment in remote_message['comments']:
        our_user = find_or_make_remote_user(session, comment['user_id'],
                                            comment['user'])
        model.new_comment(our_msg,
                          comment['subject'],
                          comment['message'],
                          user=our_user,
                          sub_node=session['node'],
                          sub_msg=comment['id'])
    return our_msg
示例#2
0
文件: api.py 项目: Vivtek/flasknode
def remote_api(server, post_or_get, api, parms):
    session = model.get_session(server)
    url = "http://%s:%s%s" % (session['ip'], session['port'], api)
    parms['session'] = session['their']

    if post_or_get == 'p':
        r = requests.post(url, json=parms)
    else:
        r = requests.get(url, params=parms)

    return r.json()
示例#3
0
def ui_message_show():
    s = request.args.get('s', None)
    m = api.get_message(request.args.get('id', ''), server=s)
    heading = ''
    tracer1 = ''
    tracer2 = ''
    post_s = ''
    if s != None:
        server = model.get_session(s)
        subscribe = '[ <a href="/ui/messages/subscribe?id=%s&s=%s">subscribe</a> ]' % (
            m['id'], s)
        heading = "<tr><td>Message on:</td><td>'%s' (session %s) %s</td></tr>" % (
            server['nickname'], s, subscribe)
        tracer1 = '&s=%s' % s
        tracer2 = '?s=%s' % s
        post_s = '<input type="hidden" id="s" name="s" value="%s">' % s

    def enlist(comment):
        return '<li>%s (%s)<br/>%s</li>' % (comment['user'], comment['date'],
                                            comment['message'])

    form = """
      <form action="/ui/messages/comment" method="post">
      %s
      <input type="hidden" id="parent" name="parent" value="%s">
      <input type="hidden" id="subject" name="subject" value="">
      <textarea id="message" name="message" rows="3" cols="80"></textarea><br/>
      <input type="submit" value="Comment">
      </form>
   """ % (post_s, m['id'])

    return """
     [ <a href="/ui/messages%s">back</a> ]
     <table>
     %s
     <tr><td>Message ID:</td><td>%s</td></tr>
     <tr><td>Posted:</td><td>%s</td></tr>
     <tr><td>By:</td><td>%s</td></tr>
     <tr><td>Subject:</td><td>%s</td></tr>
     <tr><td colspan="2">%s</td></tr>
     </table>
     <br/>
     <ul>
     %s
     </ul>
     <br/>
     %s
   """ % (tracer2, heading, m['id'], m['date'], m['user'], m['subject'],
          m['message'], "<br/>".join(map(enlist, m['comments'])), form)
示例#4
0
文件: api.py 项目: Vivtek/flasknode
def get_session_user(content):
    user = 1
    new_user = False
    if 'user' in content:
        user = content['user']
    if 'session' in content:
        session = model.get_session(content['session'])  # Handle error
        our_user = model.find_remote_user(session['node'], user)
        if our_user == None:
            new_user = True
            if user == 1:  # a remote null user - we know their nickname
                our_user = model.add_remote_user(session['node'], user,
                                                 session['nickname'])
            else:
                our_user = model.add_remote_user(session['node'], user, 'anon')
                model.rename_user(our_user, 'anon-%s' % our_user)

        user = our_user

    return (user, new_user)
示例#5
0
def ui_messages():
    s = request.args.get('s', None)
    m = api.message_list(server=s)
    heading = ''
    tracer = ''
    post_s = ''
    if s != None:
        server = model.get_session(s)
        heading = "Messages on '%s' (session %s):<br>" % (server['nickname'],
                                                          s)
        tracer = '&s=%s' % s
        post_s = '<input type="hidden" id="s" name="s" value="%s">' % s

    def enlist(message):
        if message['comments'] > 0:
            count = " (%d)" % message['comments']
        else:
            count = ""
        return '<li>%s (%s) - <a href="/ui/messages/m?id=%s%s">%s</a>%s</li>' % (
            message['user'], message['date'], message['id'], tracer,
            message['subject'], count)

    form = """
      <form action="/ui/messages/post" method="post">
      %s
      <label for="subject">Subject:</label> <input type="text" id="subject" name="subject"><br/>
      <textarea id="message" name="message" rows="3" cols="80"></textarea><br/>
      <input type="submit" value="Post message">
      </form>
   """ % post_s
    if len(m):
        return """
         %s
         <ul>
         %s
         </ul>
         %s
      """ % (heading, "<br/>".join(map(enlist, m)), form)
    else:
        return "%s No messages on node<br/>%s" % (heading, form)
示例#6
0
文件: api.py 项目: Vivtek/flasknode
def api_subscribe():
    message = model.get_message(
        request.args['id'])  # Make sure this message exists
    remote = model.get_session(request.args['session'])
    model.make_subscription(remote['node'], message['id'])
    return jsonify(message)
示例#7
0
文件: api.py 项目: Vivtek/flasknode
def get_session(session_id):
    return model.get_session(session_id)