from flask import render_template, url_for, flash, redirect, request, Blueprint, session from minibase import db from minibase.config import themeMinibase from minibase.project.forms import getProjectNameForm, getCompanyNameForm, projectUpdateForm import minibase.database.utils as dbUtils from minibase.database.models import Project, Company # Declaring a blueprint project = Blueprint('project', __name__) @project.route("/select_company", methods=['GET', 'POST']) def select_company(): form = getCompanyNameForm() if form.validate_on_submit(): companyId = dbUtils.getCompanyId(form.company.data) dbUtils.setSelectedCompany(companyId) return redirect(url_for('project.select_project')) return render_template('project/select_company.html', title='Select Company Name', theme=themeMinibase, form=form) @project.route("/select_project", methods=['GET', 'POST']) def select_project(): if dbUtils.getSelectedCompany(): # If a company is lesected form = getProjectNameForm() companyId = dbUtils.getSelectedCompany() company_selected = dbUtils.getCompanyName(companyId) if form.validate_on_submit(): flash(f'{"Project Loaded"}', 'success') projectId = dbUtils.getProjectId(companyId, form.project.data) dbUtils.setSelectedProject(projectId) return redirect(url_for('project.show_project')) return render_template('project/select_project.html', title='Select Project Name for : ' + company_selected, theme=themeMinibase, form=form) else: return redirect(url_for('project.select_company')) @project.route("/show_project", methods=['GET', 'POST']) def show_project(): if dbUtils.getSelectedProject(): # If a project is lesected form = projectUpdateForm() projectId = dbUtils.getSelectedProject() project = dbUtils.getProject(projectId) image_file = url_for('static', filename='pics/' + project.image_file) notes = dbUtils.getSelectedProjectNotes() # To initiate choises as a list allow us to match it with the id's form.responsible.choices = [(row.id, row.name +' '+row.last_name) for row in dbUtils.getEmployeesOfSelectedCompany()] form.status.choices = [(row.id, row.name) for row in dbUtils.getProjectStatuses()] form.industry.choices = [(row.id, row.name) for row in dbUtils.getIndustryNames()] if form.validate_on_submit(): flash(f'{"Project Updated"}', 'success') project.owner_id = int(form.responsible.data) project.status_id = int(form.status.data) project.description = form.description.data project.qte_prototype = form.qtePrototype.data project.qte_start = form.qteStart.data project.qte_production = form.qteProduction.data project.date_prototype = form.datePrototype.data project.date_start = form.dateStart.data project.date_production = form.dateProduction.data db.session.add(project) db.session.commit() return redirect(url_for('project.show_project')) elif request.method == 'GET': form.responsible.data = str(project.owner_id) form.status.data = str(project.status.id) form.industry.data = str(project.industry_id) form.description.data = project.description form.qtePrototype.data = project.qte_prototype form.qteStart.data = project.qte_start form.qteProduction.data = project.qte_production form.datePrototype.data = project.date_prototype form.dateStart.data = project.date_start form.dateProduction.data = project.date_production return render_template('project/show_project.html', #title=project.belongs_to.name + ' : ' + project.name, title="kerem", companyName=project.belongs_to.name, projectName=project.name, projectId=project.id, notes=notes, image_file=image_file, theme=themeMinibase, form=form) else: return redirect(url_for('project.select_project'))