from flask import render_template, url_for, flash, redirect, request, Blueprint from flask_login import login_required import minibase.theme as theme from minibase.blueprints.company.models import Companies import minibase.blueprints.database.utils as dbUtils import minibase.blueprints.main.utils as mainUtils from minibase.blueprints.company.forms import companyForm # Declaring a blueprint company = Blueprint('company', __name__, template_folder='templates') @company.route("/list", methods=['GET', 'POST']) def list(): page=request.args.get('page', 1, type=int) table=dbUtils.table_printable_paginate(Companies, page, 20, 'account/', 'id') return(render_template('view.html', theme=theme, table=table, title="Companies")) @company.route("/account/", methods=['GET', 'POST']) @login_required def account(companyId): if companyId: company = Companies.query.get_or_404(companyId) form = companyForm() form.populate_for_updating(company) _accountInfo = mainUtils.accountInfo( title=company.name, description=company.legal_entity.name, short=company.website, status=company.type.name, image_file=mainUtils.imageFileLink(company.image_file) ) if form.validate_on_submit(): if form.image_file.data: picture_file = mainUtils.save_picture(form.image_file.data) company.image_file = picture_file mainUtils.fill_model(company, form) dbUtils.dbCommit() flash('Company Has been successfully updated', 'success') return redirect(url_for('company.account', companyId=companyId)) elif request.method == 'GET': mainUtils.populate_form(form, company) return render_template('account.html', theme=theme, accountInfo=_accountInfo, form=form) else: flash('You need to select a company id', 'alarm') return redirect(url_for('company.list')) @company.route("/add", methods=['GET', 'POST']) @login_required def add(): company = Companies() form = companyForm() form.populate_for_adding(company) if form.validate_on_submit(): mainUtils.fill_model(company, form) dbUtils.dbAddAndCommit(company) flash('Company Has been successfully Added', 'success') return redirect(url_for('company.list')) return render_template('edit.html', title="Add Company", theme=theme, form=form)