Exemple #1
0
def reg_user():
    email = request.form['email']
    password = request.form['password']

    md5 = hashlib.md5()
    md5.update(password.encode("UTF-8"))

    user = User.query.filter_by(email=email).first()
    if not user:
        new_user = User(email, md5.hexdigest())
        try:
            db.session.add(new_user)
            db.session.commit()

            auth_token = new_user.encode_auth_token()
            if auth_token:
                return Response(auth_token, True, 0).to_json()

            return Response("Error generating token", False,
                            ErrorCodes.generateTokenError).to_json()
        except (SQLAlchemyError, DBAPIError) as e:
            return Response.error_json(e, ErrorCodes.internalError)
    else:
        return Response('User already exists', False,
                        ErrorCodes.userAlreadyExists).to_json()
Exemple #2
0
def push():
    resp = check_mime()
    if resp.code.value:
        return resp.build()
    user = User.query.filter_by(id=current_identity.id).scalar()
    if not user:
        return Response(Code.InternalError,
                        error='无Token对应用户,但是Token有效,用户可能已被删除,请重新注册!').build()
    user.record = str(request.json)
    db.session.add(user)
    db.session.commit()
    return Response(Code.OK, data=f'成功更新 {user.username} 的通讯录!').build()
Exemple #3
0
def register():
    resp = check_mime()
    if resp.code.value:
        return resp.build()
    username, password = request.json.get('username'), request.json.get(
        'password')
    if not all([username, password]):
        return Response(Code.InvalidRequest, error='请求数据缺少用户名或密码!').build()
    user = User.query.filter_by(username=username).scalar()
    if user:
        return Response(Code.UsernameRegistered, error='用户名已被注册!').build()
    user = User(username=username, password=password)
    db.session.add(user)
    db.session.commit()
    return Response(Code.OK, data='成功注册!').build()
Exemple #4
0
def rate(workshop_id):
    workshop = Workshop.query.filter_by(id=workshop_id).first()
    timediff = datetime.utcnow() - workshop.workshop_start
    if workshop is None or timediff.days > 10:
        flash('Workshop survey is not available at the moment!')
        return redirect(url_for('index'))

    form = SurveyForm()
    form.workshop_id.data = workshop_id

    if form.validate_on_submit():
        response = Response(workshop_id=form.workshop_id.data,
                            difficulty=form.difficulty.data,
                            assistants_score=form.assistant.data,
                            knowledge=form.knowledgeable.data,
                            objectives=form.objective.data,
                            timeliness=form.time.data,
                            venue_score=form.venue.data,
                            satisfaction_score=form.satisfaction.data,
                            comments=form.comments.data)
        db.session.add(response)
        db.session.commit()
        return render_template('response.html')

    return render_template('survey.html',
                           form=form,
                           workshop_name=workshop.workshop_name,
                           workshop_category=workshop.workshop_category)
Exemple #5
0
async def test_run_project_in_codebox(docker):
    project_core = ProjectToRun(
        sourcecode='print("Olá mundo!")\n',
        language='python',
    )
    responses = await run_project_in_codebox(project_core)
    assert responses == Response(stdout='Olá mundo!\n', stderr='', exit_code=0)
Exemple #6
0
async def test_run_project(client: AsyncClient) -> None:
    project = ProjectToRun(
        sourcecode='print("Hello World!")\n',
        language='python',
        title='Hello World',
        description='Classic first project',
    )
    logger.info('project not in cache')
    resp = await client.post('/projects', json=project.dict())
    assert resp.status_code == 200
    data = resp.json()
    assert data == {
        'id': '7ded54706f0aefbd641bbbe452ecb174',
        'stdout': 'Hello World!\n',
        'stderr': '',
        'exit_code': 0
    }

    # second call, the project must be in cache
    with patch('app.routers.projects.run_project_in_codebox',
               return_value=Response(**data)) as run_project_in_codebox:
        logger.info('project must be in cache')
        resp = await client.post('/projects', json=project.dict())
        assert resp.status_code == 200
        run_project_in_codebox.assert_not_awaited()

        # third call: not in cache anymore, must call run_project_in_codebox
        logger.debug('sleeping...')
        sleep(config.TIMEOUT + config.TTL)
        logger.info('project must not be in cache anymore')
        resp = await client.post('/projects', json=project.dict())
        assert resp.status_code == 200
        run_project_in_codebox.assert_awaited()
Exemple #7
0
def send_request(check, timeout):
    """Send an HTTP GET request for a check."""
    start_time = datetime.utcnow()
    try:
        r = requests.get(check.url, timeout=timeout)
        status = Status.SUCCESS if r.status_code < 400 else Status.FAILURE
        description = "HTTP {code}: {msg}".format(
            code=r.status_code, msg=http.client.responses[r.status_code])
    except ConnectionError:
        status = Status.FAILURE
        description = "Error: connection failed"
    except Timeout:
        status = Status.FAILURE
        description = "Error: request timed out"
    except TooManyRedirects:
        status = Status.FAILURE
        description = "Error: too many redirects"
    except RequestException as e:
        status = Status.FAILURE
        description = "Unknown error: {}".format(str(e))
    finally:
        elapsed_ms = int(
            (datetime.utcnow() - start_time).total_seconds() * 1000)
        return Response(
            check_id=check.id,
            start_time=start_time,
            elapsed_ms=elapsed_ms,
            status=status,
            description=description,
        )
Exemple #8
0
    def add(vouchers_id, description, status):
        respObj = Response(
            vouchers_id = vouchers_id,
            description = description,
            status = status,
            timestamp = timestampNow())

        db.session.add(respObj)
        db.session.commit()
Exemple #9
0
def login_user():
    email = request.form['email']
    password = request.form['password']

    md5 = hashlib.md5()
    md5.update(password.encode("UTF-8"))

    try:
        user = User.query.filter_by(email=email).first()
        if user is None or not user.password == md5.hexdigest():
            return Response("Invalid email or password", False,
                            ErrorCodes.userNotFoundError).to_json()
        auth_token = user.encode_auth_token()
        if auth_token:
            return Response(auth_token.decode(), True, 0).to_json()
    except Exception as e:
        print(e)
        return Response.error_json(e, ErrorCodes.internalError)
Exemple #10
0
def response():
    """Create a response."""
    return Response(
        id=1,
        check_id=1,
        start_time=datetime.utcnow(),
        elapsed_ms=50,
        status=Status.SUCCESS,
        description="HTTP 200: OK",
    )
Exemple #11
0
def seed_responses():

    res1 = Response(node_id=1, 
    politic_id=1,
    answer='Y')

    res2 = Response(node_id=1, 
    politic_id=2,
    answer='N')

    res3 = Response(node_id=6, 
    politic_id=2,
    answer='N')

    db.session.add(res1)
    db.session.add(res2)
    db.session.add(res3)

    db.session.commit()
Exemple #12
0
def check_user_genres(token):
    try:
        user_id = User.decode_auth_token(token)
        user = User.query.get(user_id)
        if len(user.genres) == 0:
            return Response(USER_GENRES_CHECK_RESULT_MESSAGE, False,
                            0).to_json()
        else:
            return Response(USER_GENRES_CHECK_RESULT_MESSAGE, True,
                            0).to_json()
    except IntegrityError:
        return Response("Genre already exists", False,
                        ErrorCodes.genreAlreadyExists).to_json()
    except SQLAlchemyError as e:
        return Response.error_json(e)
    except ExpiredSignatureError:
        return Response.expired_token_json()
    except InvalidTokenError:
        return Response.invalid_token_json()
Exemple #13
0
def average_response(study):
    card_positions_x = average_card_positions_x(study)
    cards_positions_y = average_card_positions_y(study)
    data_values = average_response_data_values(study)

    average_response = Response(
        data_values=data_values, card_positions=card_positions_x + cards_positions_y
    )

    return average_response
Exemple #14
0
def submit(request, uuid, form_id):
    form = get_object_or_404(Form, uuid=uuid, form_id=form_id)
    resp = Response(form=form, name="John Doe", email="*****@*****.**")
    # name=request.POST["name"],
    # email=request.POST["email"],
    resp.save()

    for field in form.fields.all():
        fieldresp = FormFieldResponse(
            form_field=field, response=resp, content=request.POST[str(field.pk)]
        )
        fieldresp.save()
    return redirect("submitted", form.uuid, form.form_id)
Exemple #15
0
def set_user_genres(token, genre_id):
    try:
        user_id = User.decode_auth_token(token)
        user_and_genre = UsersAndGenres(user_id, genre_id)
        db.session.add(user_and_genre)
        db.session.commit()
        return Response.success_json()
    except IntegrityError:
        return Response("Genre already exists", False,
                        ErrorCodes.genreAlreadyExists).to_json()
    except SQLAlchemyError as e:
        return Response.error_json(e)
    except ExpiredSignatureError:
        return Response.expired_token_json()
    except InvalidTokenError:
        return Response.invalid_token_json()
Exemple #16
0
def create_response():
    """
    Creates a response.
    """
    form = ResponseForm()
    print(request.get_json())
    # Get the csrf_token from the request cookie and put it into the
    # form manually to validate_on_submit can be used
    form['csrf_token'].data = request.cookies['csrf_token']
    if form.validate_on_submit():
        response = Response(node_id=form.data['node_id'],
                            politic_id=form.data['politic_id'],
                            answer=form.data['answer'])
        db.session.add(response)
        db.session.commit()
        return response.to_dict()
    return 'invalid form'
Exemple #17
0
def add_user_book(book_id, token):
    try:
        user_id = User.decode_auth_token(token)

        users_and_books = UsersAndBooks(user_id, book_id, None)
        db.session.add(users_and_books)
        db.session.commit()
        return Response.success_json()
    except IntegrityError:
        return Response("Book already exists or not found.", False,
                        ErrorCodes.bookAlreadyExists).to_json()
    except SQLAlchemyError as e:
        return Response.error_json(e)
    except ExpiredSignatureError:
        return Response.expired_token_json()
    except InvalidTokenError:
        return Response.invalid_token_json()
def convert_response(cards_x, cards_y, data_values):
    dv = []
    cp = []
    cards_x_munch = munchify(cards_x)
    cards_y_munch = munchify(cards_y)
    data_values_munch = munchify(data_values)

    for col, cards in cards_x_munch.items():

        col_num = int(col.split("_")[1])
        for card in cards:

            card_db = Card.query.filter_by(id=card.id).first_or_404()

            card_position = CardPosition(position=col_num, card=card_db)
            cp.append(card_position)

    for row, cards in cards_y_munch.items():

        row_num = int(row.split("_")[1])
        for card in cards:

            card_db = Card.query.filter_by(id=card.id).first_or_404()

            card_position = CardPosition(position=row_num, card=card_db)
            cp.append(card_position)

    for col_row, data_values in data_values_munch.items():
        col_num = int(col_row.split("_")[1])
        row_num = int(col_row.split("_")[3])

        for data_value in data_values:
            data_value_label = DataValueLabel.query.filter_by(
                id=data_value.id).first_or_404()

            if data_value.value is not None:
                data_value = DataValue(
                    column=col_num,
                    row=row_num,
                    value=data_value.value,
                    data_value_label=data_value_label,
                )
                dv.append(data_value)

    return Response(data_values=dv, card_positions=cp)
Exemple #19
0
def submit_response(user, form):
    '''Submit Question Response to Database'''
    # Get the submitted Option
    optID = form.get('option')
    option = Option.query.filter_by(id=optID).first()
    qnID = option.qnID

    # Create a Response entry
    response = Response(userID=user.id,optID=option.id,qnID=option.qnID)

    # Save to DB
    db.session.add(response)
    db.session.commit()

    # Update topic / overall proficiency
    qn = Question.query.filter_by(id=qnID).first()
    topicID = qn.topicID if qn.topicID else 1
    if topicID > 1:
        update_proficiency(user, topicID)
    if qn.user.admin:
        update_proficiency(user)
Exemple #20
0
def delete_user_book(token, book_id):
    try:
        user_id = User.decode_auth_token(token)
        user_and_book = UsersAndBooks\
            .query\
            .filter(UsersAndBooks.user_id == user_id, UsersAndBooks.book_id == book_id)\
            .first()
        if user_and_book is not None:
            UsersAndBooks.query.filter(
                UsersAndBooks.user_id == user_id,
                UsersAndBooks.book_id == book_id).delete()
            db.session.commit()
            return Response.success_json()
        else:
            return Response("Book not found", False,
                            ErrorCodes.bookNotFound).to_json()
    except SQLAlchemyError as e:
        return Response.error_json(e)
    except ExpiredSignatureError:
        return Response.expired_token_json()
    except InvalidTokenError:
        return Response.invalid_token_json()
Exemple #21
0
def add_book():
    name = request.form['name']
    author = request.form['author']
    description = request.form['description']
    url = request.form.get('url')
    coef_love = request.form['coef_love']
    coef_fantastic = request.form['coef_fantastic']
    coef_fantasy = request.form['coef_fantasy']
    coef_detective = request.form['coef_detective']
    coef_adventure = request.form['coef_adventure']
    coef_art = request.form['coef_art']

    try:
        book = Book.query.filter_by(name=name).first()
        if book is None or not book.author == author:
            new_book = Book(name, author, description, url)
            db.session.add(new_book)
            db.session.flush()

            love = Coefficient(new_book.id, LOVE_ID, coef_love)
            fantastic = Coefficient(new_book.id, FANTASTIC_ID, coef_fantastic)
            fantasy = Coefficient(new_book.id, FANTASY_ID, coef_fantasy)
            detective = Coefficient(new_book.id, DETECTIVE_ID, coef_detective)
            adventure = Coefficient(new_book.id, ADVENTURE_ID, coef_adventure)
            art = Coefficient(new_book.id, ART_ID, coef_art)

            db.session.add(love)
            db.session.add(fantastic)
            db.session.add(fantasy)
            db.session.add(detective)
            db.session.add(adventure)
            db.session.add(art)
            db.session.commit()
            return Response.success_json()
        else:
            return Response(book_already_exists_message, False,
                            ErrorCodes.bookAlreadyExists).to_json()
    except (SQLAlchemyError, DBAPIError) as e:
        return Response.error_json(e)
    def __init__(self, stationId, resolution, observation_type, start, end):
        """
        Call the class ( FtpFileFinder ) and it's Method FtpSearch at first, so that the
        connection and the paths are ready to be used.
        :param stationId: string *required
        :param resolution: string *required
        :param observation_type: string *required
        :param start: Date time *not required
        :param end: Date time *not required
        """

        self.stationId = stationId
        self.resolution = resolution
        self.observation_type = observation_type
        self.start = util.deserialize_datetime(start)
        self.end = util.deserialize_datetime(end)
        self.path_choices = FtpFileFinder().findFile(
            self.generateWalkPathByResolutionAndStationId(),
            r'.*' + self.stationId + '.*', r'^Meta_Daten.*')
        self.response = Response()
        self.response.observation_type = self.observation_type
        self.response.resolution = self.resolution
        self.response.station_id = self.stationId
        self.response.timeseries = []
Exemple #23
0
 def initialize(self):
     self.response = Response()
     self.set_header('Access-Control-Allow-Origin', '*')
     self.set_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
     self.set_header('Access-Control-Allow-Headers', 'Authorization')
Exemple #24
0
 def create_subpresponse(self):
     new_subresponse = Response(user_id=self.creator.id,
                                post_id=self.parent_response.parent_post.id,
                                content=self.content)
     self.parent_response.add_subresponse(new_subresponse)
     db.session.commit()
Exemple #25
0
def method_not_allowed(e):
    return Response("Method not allowed. Check for correct request type (GET, POST, PUT, DELETE)", False, 405)\
               .to_json(), 405
Exemple #26
0
def method_not_found(e):
    return Response("Method not found. Please, see documentation", False, 404).to_json(), 404
Exemple #27
0
def pull():
    user = User.query.filter_by(id=current_identity.id).scalar()
    if not user:
        return Response(Code.InternalError,
                        error='无Token对应用户,但是Token有效,用户可能已被删除,请重新注册!').build()
    return Response(Code.OK, data=user.record).build()
Exemple #28
0
def run_test_cases(suite_id):
    s_id = suite_id
    rs = HttpSession()
    cases = TestCase.query.filter_by(suite_id=s_id)
    if cases:
        for case in cases:
            url = case.url
            method = case.method
            params = case.params and json.loads(case.params)
            headers = case.headers and json.loads(case.headers)
            data = case.data
            cookies = case.cookies and json.loads(case.cookies)
            auth = case.auth
            timeout = case.timeout
            files = case.files
            allow_redirects = case.allow_redirects
            proxies = case.proxies
            hooks = case.hooks
            stream = case.stream
            verify = case.verify
            cert = case.cert
            json_str = case.json_str
            resp = rs.request(url,
                              method,
                              params=params,
                              data=data,
                              headers=headers,
                              cookies=cookies,
                              files=files,
                              auth=auth,
                              timeout=timeout,
                              allow_redirects=allow_redirects,
                              proxies=proxies,
                              hooks=hooks,
                              stream=stream,
                              verify=verify,
                              cert=cert,
                              json=json_str)

            try:
                case.status = rs.request_meta.get("status")
                db.session.add(case)
                db.session.commit()
            except DatabaseError:
                db.session.rollback()
                return jsonify({
                    "status": "error",
                    "reason": traceback.format_exc(),
                    "msg": "update test case error"
                })

            try:
                # update response to db
                response = Response()
                response.status_code = rs.request_meta.get("status_code")
                response.content_size = rs.request_meta.get("content_size")
                response.status = rs.request_meta.get("status")
                response.start_time = rs.request_meta.get("start_time")
                response.end_time = rs.request_meta.get("end_time")
                if resp.headers:
                    response.headers = pretty_json(dict(resp.headers))
                if resp.cookies:
                    response.cookies = pretty_json(dict(resp.cookies))
                content_type = rs.request_meta.get("content_type")
                response.content_type = content_type
                if content_type:
                    if "application/json" in content_type:
                        response.content = pretty_json(resp.json())
                    elif "text/html" in content_type:
                        if resp.encoding == "ISO-8859-1":
                            resp.encoding = resp.apparent_encoding
                        response.content = pretty_url(resp.text)

                response.error = rs.request_meta.get("message")
                response.case_id = case.id
                db.session.add(response)
                db.session.commit()
            except DatabaseError:
                db.session.rollback()
                return redirect(url_for("api.show_test_cases", suite_id=s_id))
Exemple #29
0
def check_mime():
    if not request.is_json:
        return Response(Code.InvalidRequest, error='请求数据格式必须为 JSON!')
    else:
        return Response(Code.OK)
 def make_response(self, data, **kwargs):
     return Response(**data)