Esempio n. 1
0
def render_post():

    current_post_id = safe_get_query_arg(request, 'id')

    user_id = current_user.id
    c = Client(mock=False)
    post = c.get_post(current_post_id)

    post['network_title'] = get_network_title(c.get_network(
        post['id_network']))
    post['username'] = c.get_user(post["id_user"])["username"]
    post['time_ago'] = get_time_ago(post['post_date'])

    # NOTE: this will not show more than the latest 100 replies
    replies = c.get_post_replies(post["id"], NUM_REPLIES_TO_SHOW)
    replies = sorted(replies, key=lambda x: int(x['id']))

    error_msg = None

    for reply in replies:
        reply['username'] = c.get_user(reply["id_user"])["username"]
        reply['time_ago'] = get_time_ago(reply['reply_date'])

    if request.method == 'GET':
        pass
    else:
        data = request.form
        form_submitted = CreatePostReplyForm(request.form)
        if form_submitted.validate():
            post_reply_content = data['post_reply_content']

            reply = {
                'id_parent': current_post_id,
                'id_user': user_id,
                'id_network': post['id_network'],
                'reply_text': post_reply_content
            }

            c.create_post_reply(current_user, current_post_id, reply)
            return redirect(
                url_for('posts.render_post') + "?id=%s" % str(current_post_id))
        else:
            error_msg = "Oops. An error occurred. Did you forget to type a reply \
        before submitting?"

    new_form = CreatePostReplyForm()

    return render_template('post.html',
                           post=post,
                           replies=replies,
                           num_replies=len(replies),
                           curr_user_id=user_id,
                           form=new_form,
                           error_msg=error_msg)
Esempio n. 2
0
def gather_network_info(id_network, id_user, client, scenario="normal"):

    network = client.get_network(id_network)
    recent_posts = client.get_network_posts(id_network, 3)
    recent_events = client.get_network_events(id_network, 3)
    for event in recent_events:
        utils.enhance_event_date_info(event)

    for post in recent_posts:
        post['username'] = client.get_user(post['id_user'])['username']
        post['reply_count'] = client.get_post_reply_count(
            post['id'])['reply_count']
        post['time_ago'] = get_time_ago(post['post_date'])

    user_is_member = False
    if not id_user == None:
        user_networks = client.get_user_networks(id_user, count=100)
        for network_ in user_networks:
            if int(id_network) == int(network_['id']):
                user_is_member = True
                break

    network_info = {}
    network_info['id'] = id_network
    network_info['posts'] = recent_posts
    network_info['events'] = recent_events
    network_info['network_title'] = get_network_title(network)
    network_info['user_is_member'] = user_is_member

    if user_is_member and scenario == 'normal':
        network_info[
            'greeting'] = 'You are a member of this network.  Welcome!'
    elif not user_is_member and scenario == 'normal':
        network_info[
            'greeting'] = 'You are not a member of this network. Join now to create posts and events.'
    elif user_is_member and scenario == 'join':
        network_info['greeting'] = 'You just joined this network. Welcome!'
    elif not user_is_member and scenario == 'join':
        network_info[
            'greeting'] = 'Looks like something went wrong. Try joining later.'
    elif user_is_member and scenario == 'leave':
        network_info[
            'greeting'] = 'Looks like something went wrong. Try leaving later.'
    elif not user_is_member and scenario == 'leave':
        network_info['greeting'] = 'You just left this network. Bye bye!'

    num_users = client.get_network_user_count(id_network)['user_count']
    num_posts = client.get_network_post_count(id_network)['post_count']

    network_info['num_users'] = num_users
    network_info['num_posts'] = num_posts
    return network_info
Esempio n. 3
0
def render_user_home():
    user = copy.deepcopy(current_user)

    c = Client(mock=False)
    user.img_url = get_user_image_url(user)

    # Events user is hosting
    events_hosting = get_upcoming_events_by_user_hosting(
        c, user.id, NUM_EVENT_HOSTING_TO_DISPLAY)
    # Events user is attending
    events_attending = get_upcoming_events_by_user_attending(
        c, user.id, NUM_EVENT_ATTENDING_TO_DISPLAY)

    # Upcoming events in user's networks.
    upcoming_events = get_upcoming_events_by_user(
        c, user.id, NUM_UPCOMING_EVENTS_TO_DISPLAY)

    # Some latest posts in the user's networks.
    latest_posts = c.get_user_posts(user.id, NUM_LATEST_POSTS_TO_DISPLAY)
    for post in latest_posts:
        post['username'] = c.get_user(post['id_user'])['username']
        post['reply_count'] = c.get_post_reply_count(post['id'])['reply_count']
        post['time_ago'] = get_time_ago(post['post_date'])

        try:
            post['network'] = c.get_network(post['id_network'])
            post['network_title'] = get_network_title(post['network'])
        except HTTPException as e:
            post['network'] = None
            post['network_title'] = "Unknown"

    return render_template('dashboard.html',
                           user=user.as_dict,
                           events_hosting=events_hosting,
                           events_attending=events_attending,
                           latest_posts=latest_posts,
                           upcoming_events_in_networks=upcoming_events)
Esempio n. 4
0
def network_posts() :
  # TODO: A lot of this code is repeated from network(), with just minor variations.
  # This should be factored out.
  id_network = request.args.get('id')
  if not id_network :
    return render_template('404.html')
  c = Client(mock=False)
  try:
    id_network = int(id_network)
  except ValueError:
    return render_template('404.html')

  network = c.get_network(id_network)
  if not network:
    return render_template('404.html')

  # TODO: Get user ID and work out if user is in network.
  # Add join us button to page if they're not.

  posts = None

  old_index = request.args.get('index')
  if not old_index:
    posts = c.get_network_posts(id_network, 10)
  else:
    try:
      old_index = int(old_index)
    except ValueError:
      return render_template('404.html')
    posts = c.get_network_posts(id_network, 10, old_index - 1)

  for post in posts:
    post['username'] = c.get_user(post['id_user'])['username']
    post['reply_count'] = c.get_post_reply_count(post['id'])['reply_count']
    post['time_ago'] = get_time_ago(post['post_date'])

  # TODO: Add better handling for when there's no events left.

  if not posts :
    post_index = old_index
  else :
    post_index = posts[-1]['id']

  id_user = current_user.id
  user_networks = c.get_user_networks(id_user, count=100)
  user_is_member = False
  for network_ in user_networks:
    if int(id_network) == int(network_['id']):
      user_is_member = True
      break

  network_info = {}
  network_info['id'] = id_network
  network_info['posts'] = posts
  network_info['user_is_member'] = user_is_member

  num_users = c.get_network_user_count(id_network)['user_count']
  num_posts = c.get_network_post_count(id_network)['post_count']

  network_info['num_users'] = num_users
  network_info['num_posts'] = num_posts

  network_info['network_title'] = get_network_title(network)
  return render_template('network_posts.html', network_info=network_info, post_index=post_index)