from flask import render_template, url_for, flash, redirect, request, Blueprint from flask_login import login_required, current_user import minibase.theme as theme from minibase.blueprints.company.models import Companies from minibase.blueprints.geography.models import City import minibase.blueprints.database.utils as dbUtils import minibase.blueprints.main.utils as mainUtils import minibase.blueprints.geography.utils as geoUtils import minibase.blueprints.company.utils as companyUtils 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_update(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)