예제 #1
0
def create_vote(phone_id, db):
    """Creates vote."""
    user = controller.get_user(db, phone_id)
    if not user:
        abort(400, "Invalid or unregistered phone id")

    title = request.query.title
    text = request.query.text
    is_private = request.query.is_private or False
    is_multiple_choice = request.query.is_multiple_choice or False
    start_date = get_date(request.query.start_date)
    end_date = get_date(request.query.end_date)

    #    if not fullname or not email:
    #        abort(400, 'User name or email are not specified in request')
    #
    # TODO: params
    vote = controller.create_vote(
        db=db,
        author=user,
        title=title,
        text=text,
        is_private=is_private,
        is_multiple_choice=is_multiple_choice,
        start_date=start_date,
        end_date=end_date,
    )
    response.content_type = "application/json"
    return json_encode(vote)
예제 #2
0
def login():
    user = ctr.get_user(request.form['login'], request.form['password'])
    if not user:
        return redirect('/login')

    session['username'] = request.form['login']
    redis_store.setex(request.form['login'], 60, request.form['password'])
    return redirect('/admin')
예제 #3
0
def top_votes(phone_id, db):
    """Returns list of top opened votes for a user."""
    user = controller.get_user(db, phone_id)
    if not user:
        abort(400, "Invalid or unregistered phone id")

    response.content_type = "application/json"
    return json_encode_query(controller.get_top_votes(db, user))
예제 #4
0
def get_choices(phone_id, id, db):
    """Returns results for vote."""
    user = controller.get_user(db, phone_id)
    try:
        id = int(id)
    except ValueError:
        abort(400, "Invalid vote id")

    if not user:
        abort(400, "Invalid or unregistered phone id")

    response.content_type = "application/json"
    return json_encode(controller.get_vote_results(db, id))
예제 #5
0
def perform_vote(phone_id, id, db):
    """Perform vote."""
    user = controller.get_user(db, phone_id)
    options_ids = request.query.options
    try:
        id = int(id)
        options_ids = [int(option_id) for option_id in options_ids.split(",") if option_id]
    except ValueError:
        abort(400, "Invalid vote id or users' ids")

    if not user:
        abort(400, "Invalid or unregistered phone id")

    controller.perform_vote(db, id, user, options_ids)
예제 #6
0
def set_options(phone_id, id, db):
    """Set vote options."""
    user = controller.get_user(db, phone_id)
    options = request.query.options
    options = [op for op in options.split(",") if op]
    try:
        id = int(id)
    except ValueError:
        abort(400, "Invalid vote id or users' ids")

    if not user:
        abort(400, "Invalid or unregistered phone id")

    controller.set_options(db, id, user, options)
예제 #7
0
def set_invitations(phone_id, id, db):
    """Invites users."""
    user = controller.get_user(db, phone_id)
    users = request.query.users
    try:
        id = int(id)
        users = [int(user_id) for user_id in users.split(",") if user_id]
    except ValueError:
        abort(400, "Invalid vote id or users' ids")

    if not user:
        abort(400, "Invalid or unregistered phone id")

    controller.set_invitations(db, id, user, users)
예제 #8
0
def publish_vote(phone_id, id, db):
    """Publishes vote."""
    user = controller.get_user(db, phone_id)
    try:
        id = int(id)
    except TypeError:
        abort(400, "Invalid vote id")

    if not user:
        abort(400, "Invalid or unregistered phone id")

    vote = controller.publish_vote(db, id, user)
    response.content_type = "application/json"
    return json_encode(vote)
예제 #9
0
def register_user(phone_id, db):
    """Registers user. If user already created, request will be ignored"""
    logging.info("Serving register_user()")
    if controller.get_user(db, phone_id):
        return

    fullname = request.query.fullname
    email = request.query.email
    if not fullname or not email:
        abort(400, "User name or email are not specified in request")

    # TODO: check email
    # TODO: check phone_id
    logging.info(u"Creating new user {0:>s}, {1:>s}, {2:>s}".format(phone_id, fullname, email))
    controller.create_user(db, phone_id, fullname, email)
예제 #10
0
def edit_vote(phone_id, id, db):
    """Edits vote."""
    user = controller.get_user(db, phone_id)
    try:
        id = int(id)
    except TypeError:
        abort(400, "Invalid vote id")

    if not user:
        abort(400, "Invalid or unregistered phone id")

    title = request.query.title
    text = request.query.text
    is_private = request.query.is_private or False
    is_multiple_choice = request.query.is_multiple_choice or False
    start_date = get_date(request.query.start_date)
    end_date = get_date(request.query.end_date)

    #    if not fullname or not email:
    #        abort(400, 'User name or email are not specified in request')
    #
    # TODO: check params
    try:
        id = int(id)
        vote = controller.edit_vote(
            db=db,
            id=id,
            author=user,
            title=title,
            text=text,
            is_private=is_private,
            is_multiple_choice=is_multiple_choice,
            start_date=start_date,
            end_date=end_date,
        )
    except TypeError:
        abort(400, "Vote not found")
    response.content_type = "application/json"
    return json_encode(vote)
예제 #11
0
def fill_test_data_user(db, phone_id):
    logger.info('Serving fill_test_data_user()')
    user = controller.get_user(db, phone_id)
    if not user:
        abort(400, 'Invalid or unregistered phone id')
    fill_test_data(db, user)
예제 #12
0
def pending_votes(phone_id, db):
    """Returns list of pending votes for a user."""
    user = controller.get_user(db, phone_id)
    response.content_type = "application/json"
    return json_encode_query(controller.get_pending_votes(db, user))
예제 #13
0
def register_user(phone_id, db):
    logging.info("Serving is_registered()")
    is_registered = controller.get_user(db, phone_id) is not None
    return json_encode({"is_registered": is_registered})