def create_new_event():
    c = Client(mock=False)
    id_network = request.args.get('id')
    user_id = current_user.id
    network = c.get_network(id_network)
    network_info = gather_network_info(id_network, user_id, c)

    if not network_info['user_is_member']:
        return render_template('network_create_event_post_not_member.html',
                               curr_user_id=user_id,
                               id_network=id_network,
                               network_info=network_info,
                               form=NetworkJoinForm())

    network_title = network_info['network_title']
    error_msg = None

    if request.method == 'GET':
        pass
    else:
        data = request.form
        form_submitted = CreateEventForm(request.form)
        if form_submitted.validate():
            event_date = data['event_date']
            title = data['title']
            address_1 = data['address_1']
            address_2 = data.get('address_2', None)
            country = data['country']
            region = data.get('region', None)
            city = data.get('city', None)
            description = data['description']

            event = {
                "id_network": id_network,
                "id_host": user_id,
                "event_date": event_date,
                "title": title,
                "address_1": address_1,
                "address_2": address_2,
                "country": country,
                "region": region,
                "city": city,
                "description": description
            }

            c.create_event(current_user, event)
            return redirect(
                url_for('networks.network_events') +
                "?id=%s" % str(id_network))
        else:
            error_msg = "Oops. An error occurred.  Did you enter all \
            of the form fields correctly?"

    new_form = CreateEventForm()
    return render_template('network_create_event.html',
                           curr_user_id=user_id,
                           id_network=id_network,
                           network_title=network_title,
                           form=new_form,
                           error_msg=error_msg)
Beispiel #2
0
def leave_event():
    current_event_id = request.args.get('id')
    c = Client(mock=False)
    c.leave_event(current_user, current_event_id)
    return redirect(
      url_for('events.render_event', id=current_event_id)
    )
Beispiel #3
0
def test_autocomplete():
  """
  Test mock autocomplete.
  """
  c = Client(mock=True)
  autocomplete_ = c.location_autocomplete("some text")
  print(autocomplete_)
Beispiel #4
0
def go_to_network(tries=0):

    c = Client(mock=False)
    form = GoToNetworkForm(request.form)
    if not form.validate():
        raise CSRFError()

    curr_loc_query = request.form['curr_loc']

    try:
        if request.form.get('language', None):
            networks = c.get_networks(1,
                                      near_location=curr_loc_query,
                                      language=request.form['language'])
        elif request.form.get('from_loc', None):
            networks = c.get_networks(1,
                                      near_location=curr_loc_query,
                                      from_location=request.form['from_loc'])
        else:
            abort(HTTPStatus.BAD_REQUEST)
    except requests.exceptions.ConnectionError as e:

        # Let's keep trying, but less agressively.
        if tries >= GO_TO_NETWORK_MAX_RETRIES:
            raise e
        time.sleep(GO_TO_NETWORK_WAIT_SECS)
        go_to_network(tries + 1)

    if len(networks) != 1:
        abort(HTTPStatus.INTERNAL_SERVER_ERROR)

    return redirect(url_for('networks.network', id=str(networks[0]['id'])))
Beispiel #5
0
def update_profile_and_render_home():
    user_id = current_user.id
    c = Client(mock=False)

    data = request.form
    form = UserInfo(request.form)
    first_name = data['first_name']
    last_name = data['last_name']
    about_me = data['about_me']
    if not about_me:
        about_me = ""

    user = {
        'id': user_id,
        'first_name': first_name,
        'last_name': last_name,
        'about_me': about_me
    }

    if form.validate():
        c.update_user(current_user, user)

    user = c.get_user(user_id)
    if user is None:
        return page_not_found("")
    user['img_url'] = get_user_image_url(current_user)
    user_info_form = UserInfo()
    user_info_form.first_name.process_data(user['first_name'])
    user_info_form.last_name.process_data(user['last_name'])
    user_info_form.about_me.process_data(user['about_me'])
    return render_template('account.html',
                           user=user,
                           user_info_form=user_info_form)
Beispiel #6
0
def register():
    if current_user and current_user.is_authenticated:
        return redirect(url_for('home'))

    def make_register_page_tmpl(message, data_=None):
        return render_template('register.html',
                               msg=message,
                               privacy_msg=PRIVACY_MSG,
                               form=RegisterForm(data=data_))

    if request.method == 'POST':
        form = RegisterForm(request.form)

        firstname = request.form['firstname'].strip()
        lastname = request.form['lastname'].strip()
        username = request.form["username"].strip()
        email = request.form["email"].strip()
        password = request.form["password"].strip()
        confirm_password = request.form["confirm_password"].strip()

        data = {
            'firstname': firstname,
            'lastname': lastname,
            'username': username,
            'email': email,
            'password': '',
            'confirm_password': ''
        }

        if not form.validate():
            return make_register_page_tmpl(REGISTER_ERROR_MSG, data)

        c = Client(mock=False)

        if password != confirm_password:
            return make_register_page_tmpl(REGISTER_PASSWORDS_DONT_MATCH_MSG,
                                           data)

        user = {
            'username': username,
            'password': password,
            'first_name': firstname,
            'last_name': lastname,
            'email': email,
            'role': '0',
            'about_me': '',
            'gender': '',
            'act_code': 'NULL'  # TODO: what to do here?
        }

        try:
            c.create_user(user)
        except werkzeug.exceptions.BadRequest:
            return make_register_page_tmpl(REGISTER_UPSTREAM_ERROR_MSG, data)

        return attempt_login(c, username, password)

    else:
        return make_register_page_tmpl(REGISTER_MSG)
def test_get_network():
    """
    Tests we can retrieve a network. For illustrative purposes, client
    returns mock data.
    """
    c = Client(mock=True)
    network = c.get_network(1)
    assert_true(network is not None)
def test_autocomplete():
  """
  Basic mock autocomplete functionality.
  """

  c = Client(mock=True)
  autocomplete_ = c.language_autocomplete("some text")
  print(autocomplete_)
  assert_equal(autocomplete_, "some text + [language autocompleted text]")
def test_get_post():
  """
  Tests we can get a single post.
  """
  c = Client(mock=True)

  post = c.get_post(4)
  print(post)
  assert_equal(post['vid_link'], "https://www.lorempixel.com/1016/295")
Beispiel #10
0
def cancel_event():
    current_event_id = request.args.get('id')
    c = Client(mock=False)
    event = c.get_event(current_event_id)

    # The current user should only be able to cancel an event if they
    # are the host of that event.
    if str(current_user.id) == str(event['id_host']):
      c.delete_event(current_user, current_event_id)
    return redirect(url_for('user_home.render_user_home'))
def test_language():
  """
  Basic functionality of retrieving
  a mock language.
  """

  c = Client(mock=True)
  lang1 = c.get_language(2)
  print(lang1)
  assert_true(lang1)
  assert_equal(lang1['name'], "entish")
def test_get_user():
	"""
	Tests we can retrieve a user.  The client returns dummy data.
	"""

	c = Client(mock=True)

	# Here, we want to mock the client.

	user = c.get_user(3)
	print(user)
	assert_true(user is not None)
Beispiel #13
0
def create_new_post():
    c = Client(mock=False)
    id_network = request.args.get('id')
    user_id = current_user.id
    network = c.get_network(id_network)
    network_info = gather_network_info(id_network, user_id, c)

    if not network_info['user_is_member']:
      return render_template(
        'network_create_event_post_not_member.html',
        curr_user_id=user_id,
        id_network=id_network,
        network_info=network_info,
        form=NetworkJoinForm()
    )

    network_title = network_info['network_title']
    error_msg = None

    if request.method == 'GET':
      pass
    else:
      data = request.form
      form_submitted = CreatePostForm(request.form)
      if form_submitted.validate():
        post_text = data['post_content']

        post = {
          'id_user': user_id,
          'id_network': id_network,
          'post_text': post_text,
          'vid_link': "",
          'img_link': ""
        }

        c.create_post(current_user, post)
        return redirect(
          url_for('networks.network_posts') + "?id=%s" % str(id_network)
        )
      else:
        error_msg = "Oops. An error ocurred. Did you forget to add text to your \
          post before submitting?"

    new_form = CreatePostForm()

    return render_template(
      'network_create_post.html',
      curr_user_id=user_id,
      id_network=id_network,
      network_title=network_title,
      form=new_form,
      error_msg=error_msg
    )
Beispiel #14
0
def join_network():
  id_network = request.args.get('id')
  id_user = current_user.id
  form = NetworkJoinForm(request.form)
  c = Client(mock=False)
  if form.validate():
    c.join_network(current_user, id_network)

  network_info = gather_network_info(id_network, id_user, c, "join")
  return render_template(
    'network.html', network_info=network_info, form=NetworkJoinForm()
  )
Beispiel #15
0
def test_get_region():
  """
  Basic get region API routine.
  """
  c = Client(mock=True)
  region1 = c.get_region(2)
  region2 = c.get_region(5)

  assert_true(region1 is not None)
  assert_equal(region1['name'], "south")
  assert_equal(region1['country_name'], 'corneria')
  print(region1)

  assert_true(region2 is None)
Beispiel #16
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)
Beispiel #17
0
def test_get_event():
    """
  Tests we can get a single event.
  """
    c = Client(mock=True)

    event1 = c.get_event(2)
    event2 = c.get_event(0)

    print(event1)

    assert_true(event1 is not None)
    assert_equal(event1['title'],
                 "Reverse-engineered 6thgeneration neural-net")
    assert_true(event2 is None)
def test_get_events():
	"""
	Tests we can retrieve events related to a user.
	The client returns dummy data.
	"""
	c = Client(mock=True)
	events = c.get_user_events(user_id=5, role="hosting", count=3)
	print(events)
	assert_equal(len(events), 2)
	assert_true(events[0]['id'] > events[1]['id'])

	events1 = c.get_user_events(user_id=5, role="hosting", count=2, max_id=3)
	assert_equal(len(events1), 1)

	assert_equal(len(c.get_user_events(user_id=1, role="hosting", count=5)), 0)
Beispiel #19
0
def test_get_country():
  """
  Basic get country API routine.
  """
  c = Client(mock=True)
  country1 = c.get_country(2)
  country2 = c.get_country(5)

  assert_true(country1 is not None)
  assert_equal(country1['name'], "rohan")
  print(country1)

  assert_equal(country1['latitude'], 100.100)

  assert_true(country2 is None)
Beispiel #20
0
def test_get_networks():
    """
    Tests basic network retrieval pagination. For illustrative purposes,
    client returns mock data.
    """
    c = Client(mock=True)
    networks = c.get_networks(10)
    assert_equal(len(networks), 2)

    networks1 = c.get_networks(1)
    assert_equal(networks1[0]['id'], 2)
    assert_equal(len(networks1), 1)

    networks2 = c.get_networks(1, max_id=1)
    assert_equal(networks2[0]['id'], 1)
    assert_equal(len(networks2), 1)
Beispiel #21
0
def test_get_network_users():
    """
    Tests we can retrieve a network's users (network registrations).
    For illustrative purposes, client returns mock data.
    """
    c = Client(mock=True)
    registrations = c.get_network_users(2, 10)
    assert_true(len(registrations) == 3)

    registrations1 = c.get_network_users(2, 1)
    assert_equal(registrations1[0]['join_date'], "2017-02-27 11:53:30")
    assert_equal(len(registrations1), 1)

    registrations2 = c.get_network_users(2, 1, max_id="2017-02-28 11:53:30")
    assert_equal(registrations2[0]['join_date'], "2017-02-27 11:53:30")
    assert_equal(len(registrations2), 1)
Beispiel #22
0
def test_get_network_events():
    """
    Tests we can retrieve a network's events. For illustrative purposes,
    client returns mock data.
    """
    c = Client(mock=True)
    events = c.get_network_events(1, 10)
    assert_true(len(events) == 2)

    events1 = c.get_network_events(1, 1)
    assert_equal(events1[0]['id'], 3)
    assert_equal(len(events1), 1)

    events2 = c.get_network_events(1, 1, max_id=3)
    assert_equal(events2[0]['id'], 3)
    assert_equal(len(events2), 1)
Beispiel #23
0
def cancel_event_confirm():
    current_event_id = request.args.get('id')
    c = Client(mock=False)
    event = c.get_event(current_event_id)
    network = c.get_network(event['id_network'])
    network_info = gather_network_info(network['id'], current_user.id, c)

    # The current user should only be able to cancel an event if they
    # are the host of that event.
    if not str(current_user.id) == str(event['id_host']):
        return redirect(url_for('user_home'))

    return render_template('event_cancel.html',
                           network_info=network_info,
                           event=event,
                           form=EventCancelConfirmForm())
def test_get_posts():
	"""
	Tests user posts with paginated calls. The client returns dummy data.
	"""
	c = Client(mock=True)
	posts = c.get_user_posts(user_id=4, count=2)
	print(posts)
	assert_equal(len(posts), 2)

	posts2 = c.get_user_posts(user_id=4, count=2, max_id=2)
	print(posts2)
	assert_equal(len(posts2), 1)

	posts = c.get_user_posts(user_id=4, count=1)
	print(posts)
	assert_equal(len(posts), 1)
	assert_equal(posts[0]['id'], 5)
Beispiel #25
0
def user_profile(user_id):

    c = Client(mock=False)

    user = c.get_user(user_id)
    user['img_url'] = get_user_image_url(user)
    user_networks = c.get_user_networks(user_id, MAX_NETWORKS_TO_LOAD)

    networks = []
    for network in user_networks:
        network_ = {'id': network['id']}
        network_['title'] = get_network_title(network)
        network_['join_date'] = get_short_network_join_date(network)
        num_users = c.get_network_user_count(network['id'])['user_count']
        network_['user_count'] = num_users
        networks.append(network_)

    return render_template('profile.html', user=user, networks=networks)
def test_get_users():
	"""
	Tests basic user pagination.
	"""
	c = Client(mock=True)

	users1 = c.get_users(3)
	assert_equal(len(users1), 3)
	assert_equal(users1[0]['id'], 5)

	min_id_got = min(u['id'] for u in users1)

	users2 = c.get_users(3, max_id=min_id_got - 1)
	assert_equal(len(users2), 2)
	assert_equal(users2[0]['id'], 2)

	users3 = c.get_users(3, 1)
	assert_equal(len(users3), 1)
def test_get_post_replies():
  """
  Tests that we can get post replies as expected.
  """
  c = Client(mock=True)
  posts1 = c.get_post_replies(1, count=5)
  posts2 = c.get_post_replies(2, count=5)
  print(posts1)

  posts3 = c.get_post_replies(1, count=1)
  posts4 = c.get_post_replies(1, count=3, max_id=1)

  assert_equal(len(posts1), 2)
  assert_equal(len(posts2), 0)
  assert_equal(len(posts3), 1)
  assert_equal(posts3[0]['id'], 2)
  assert_equal(len(posts4), 1)
  assert_equal(posts4[0]['id'], 1)
Beispiel #28
0
def test_get_city():
  """
  Basic get city API routine.
  """
  c = Client(mock=True)
  city1 = c.get_city(2)
  city2 = c.get_city(4)
  city3 = c.get_city(0)

  assert_true(city1 is not None)
  assert_equal(city1['name'], "City B")
  assert_equal(city1['population'], 100000)

  assert_true(city2 is not None)
  assert_equal(city2['name'], "City D")
  assert_equal(city2['population'], 280)
  print(city2)

  assert_true(city3 is None)
Beispiel #29
0
def render_login_page():
    if request.method == 'POST':
        if not LoginForm(request.form).validate():
            return render_template('login.html',
                                   msg=LOGIN_ERROR,
                                   form=LoginForm())

        email_or_username = request.form['email_or_username']
        password = request.form['password']
        return attempt_login(Client(mock=False), email_or_username, password)
    else:
        return render_template('login.html', msg=LOGIN_MSG, form=LoginForm())
Beispiel #30
0
def test_event_attendance():
    """
  Tests the basic event
  attendance API call.
  """
    c = Client(mock=True)

    list1 = c.get_event_registration_list(1, 2)
    list2 = c.get_event_registration_list(2, 2)

    print(list1)
    print(list2)

    assert_true(list1 is not None)
    assert_equal(list1[0]['id_guest'], 1)
    assert_equal(len(list2), 2)

    list3 = c.get_event_registration_list(2, 3, "2017-12-10 08:53:43")
    print(list3)
    assert_equal(len(list3), 1)
    assert_equal(list3[0]['id_guest'], 3)