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)
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')
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))
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))
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)
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)
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)
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)
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)
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)
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)
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))
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})