def create_and_get_country_sector_db_record(type_, dict_):
    """
    Creates a country or sector record in DB.
    :param type_: 'country' or 'sector'
    :param dict_: dictionary with all needed fundamentals on country and sector
    :return: added DB record
    """

    time_now = datetime.today()
    data_json = {
        'name': dict_[type_],
        'date': time_now,
        'pe': dict_[f'pe_{type_}'],
        'div_yield': dict_[f'div_{type_}'],
        'forward_pe': dict_[f'forward_pe_{type_}'],
        'eps_g_past_5y': dict_[f'eps_g_past_5y_{type_}'],
        'eps_g_next_5y': dict_[f'eps_g_next_5y_{type_}']
    }

    if type_ == "country":
        record_in_db = CountryFundamentals(data_json)
    else:
        record_in_db = SectorFundamentals(data_json)

    db_session.add(record_in_db)
    try:
        db_session.commit()
        logger.info(f"{type_} {record_in_db.name} was added to DB.")
        return record_in_db
    except exc.SQLAlchemyError:
        logger.error(f"Failed to add {type} fundamentals to DB.")
        raise ErrorFundamentalsDB("'Create and Get country sector db record'")
Beispiel #2
0
def edit_profile(username):
    user = User.query.filter(User.username == username).first()
    posts = Post.query.filter(Post.user_id == user.id).order_by(Post.created.desc())
    if request.method == 'POST':
        first_name = request.form['first_name']
        last_name = request.form['last_name']
        day = request.form.get('day')
        month = request.form.get('month')
        year = request.form.get('year')
        gender = request.form['gender']
        relationship_status = request.form['relationship_status']
        current_city = request.form['current_city']
        bio = request.form['bio']
        user.first_name = first_name
        user.last_name = last_name
        user.date_of_birth = ''
        user.day = day
        user.month = month
        user.year = year
        user.gender = gender
        user.relationship_status = relationship_status
        user.current_city = current_city
        user.bio = bio
        if 'photo' in request.files:
            photo = request.files['photo']
            if photo.filename != '':
                user.profile_pic = photos.save(request.files['photo'])
        db_session.add(user)
        db_session.commit()
        return redirect(url_for('blog.profile', username=user.username))
    return render_template('blog/edit_profile.html', user=user)
Beispiel #3
0
def save_news_to_db(all_news) -> bool:
    """
    Saving news to the DB.
    :param all_news: all news
    :return: no return
    """

    for one_news in all_news:
        first_news_in_db = News.query.filter(
            News.title == one_news['title']).first()

        if not first_news_in_db:
            logger.info(
                f"Trying to add news with title '{one_news['title']}' to DB.")
            db_session.add(News(one_news))
            send_to_bot(one_news)
        elif one_news['change'] != first_news_in_db.change:
            logger.info(
                f"Trying to update price of {first_news_in_db.ticker} in DB.")
            first_news_in_db.change = one_news['change']

    try:
        db_session.commit()
        logger.info(f"All news in DB are added and updated.")
        return True
    except exc.SQLAlchemyError:
        logger.error(f"Failed to add or update news to DB.")
        return False
Beispiel #4
0
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        error = None

        if not username:
            error = 'Username is required.'
        elif not password:
            error = 'Password is required.'
        elif db_session.query(
                User.id).filter(User.UserName == username).first() is not None:
            error = f'User {username} is already registered.'

        if error is None:
            user = User(UserName=username,
                        PassWord=generate_password_hash(password))
            db_session.add(user)
            db_session.commit()

            return redirect(url_for('auth.login'))

        flash(error)

    return render_template('auth/register.html')
def create_and_get_stocks_db_record(ticker):
    """
    Creates a stocks record in DB.
    :param ticker: stocks ticker
    :return: added DB record
    """

    data_json = get_all_stocks_fundamentals(ticker)
    ticker_in_db = Fundamentals(data_json)

    country_sector = get_finviz_fundamentals_of_sector_country(ticker)
    country = get_actual_country_sector_fundamentals_from_db(
        "country", country_sector)
    sector = get_actual_country_sector_fundamentals_from_db(
        "sector", country_sector)
    ticker_in_db.country = country
    ticker_in_db.sector = sector

    db_session.add(ticker_in_db)
    try:
        db_session.commit()
        logger.info(f"Stocks ticker {ticker} was added to DB.")
        return ticker_in_db
    except exc.SQLAlchemyError as e:
        logger.error(f"Failed to add {ticker} fundamentals to DB.")
        raise ErrorFundamentalsDB("'Create and Get stock db record'")
Beispiel #6
0
def create():
    if request.method == 'POST':
        body = request.form['body']

        post = Post(body=body, author=g.user)
        db_session.add(post)
        db_session.commit()
        return redirect(url_for('blog.index'))

    return render_template('blog/create.html')
def create():
    form = ProjectCreateForm(request.form)
    if request.method == 'GET':
        return render_template('projects/create_project.html', form=form)
    if request.method == 'POST' and form.validate():
        # print(form.name.data, form.client.data, form.technology.data, form.status.data)
        project = Project(form.name.data, form.client.data,
                          form.technology.data, form.status.data)
        db_session.add(project)
        db_session.commit()
        return redirect(url_for('project.list'))
Beispiel #8
0
def update(id):
    post = get_post(id)

    if request.method == 'POST':
        body = request.form['body']

        post.body = body
        db_session.add(post)
        db_session.commit()
        return redirect(url_for('blog.index'))

    return render_template('blog/update.html', post=post)
Beispiel #9
0
def create_server():
    server = Server.from_json(request.json)
    if not server:
        return response('bad json', status=400)
    target_rack = Rack.query.get(server.rack_id)
    if not target_rack:
        return response('target rack not exist', status=400)
    if target_rack.size >= target_rack.capacity.value:
        return response('rack is full', status=400)
    db_session.add(server)
    target_rack.increase_size()
    db_session.commit()
    return jsonify({'id': server.id})
def tcreate(project_id):
    form = TaskCreateForm(request.form)
    if request.method == 'GET':
        project = Project.query.filter_by(id=project_id).first()
        form.project_id.data = project_id
        return render_template('tasks/create_task.html',
                               form=form,
                               project=project)
    if request.method == 'POST' and form.validate():
        # print("Project ID: ",form.project_id)
        task = Task(title=form.title.data,
                    description=form.description.data,
                    project_id=form.project_id.data)
        db_session.add(task)
        db_session.commit()
        return redirect(url_for('project.tlist', project_id=project_id))
Beispiel #11
0
def save_bot_user_to_db(user_id, username) -> None:
    """
    Saving new users to the DB.
    :param user_id: user id
    :param username: user username
    """

    new_user = BotUser(id=user_id, username=username)
    db_session.add(new_user)
    try:
        db_session.commit()
    except exc.SQLAlchemyError:
        logging.info(f"Failed to add user {username} to DB.")
        sys.exit(
            "Encountered general SQLAlchemyError during saving user in DB in ReadingBot."
        )
Beispiel #12
0
def register():
    """Register a new user.

    Validates that the username is not already taken. Hashes the
    password for security.
    """
    if request.method == "POST":
        username = request.form["username"]
        password = request.form["password"]

        error = None

        if not username:
            error = "Username is required."
        elif not password:
            error = "Password is required."
        else:
            if User.query.filter(User.username == username).first():
                error = f"User {username} is already registered."

        if error is None:
            # the name is available, store it in the database and go to the login page
            user = User(username, generate_password_hash(password))
            try:
                db_session.add(user)
                db_session.commit()
                return redirect(url_for("auth.login"))
            except Exception as e:
                logger.exception('register user[{0}] exception: [{1}].'.format(
                    user, e))
                db_session.rollback()
                error = "Register failed."

        flash(error)

    return render_template("auth/register.html")
Beispiel #13
0
def default_data(app):
    from flaskr import models
    from flaskr.db import db_session
    models.Rack.query.delete()
    models.Server.query.delete()
    db_session.commit()
    rack = models.Rack(capacity=models.RackCapacities.ten)
    db_session.add(rack)
    db_session.commit()
    for i in range(5):
        db_session.add(models.Server(rack_id=rack.id))
        rack.size = models.Rack.size + 1
        db_session.commit()

    rack = models.Rack(capacity=models.RackCapacities.twenty)
    db_session.add(rack)
    db_session.commit()
    for i in range(20):
        db_session.add(models.Server(rack_id=rack.id))
        rack.size = models.Rack.size + 1
        db_session.commit()