Added regiter project an cleaned te code with better cuntions and reusable html templates. it's musch cleaner now

master
Kerem Yollu 2 years ago
parent 3e4863d0c6
commit c711194b99

Binary file not shown.

@ -1,10 +1,11 @@
from flask import render_template, url_for, flash, redirect, request, Blueprint
from minibase import db
from minibase.config import themeMinibase
from minibase.config import themeMinibase, globalVars
from minibase.database.models import Company, Company_legal_entity, Company_relation,Company_status
from minibase.database.models import Industry, Note_status
from minibase.database.models import Person_role, Person_competence
from minibase.database.models import Product_status, Product_physical, Product_packaging, Product_eligibility, Product_classification, Product_domain, Product_category, Product_sub_category
from minibase.database.models import Project_status
from minibase.admin.forms import compLegalEntityForm, compRelationForm, compStatusForm
from minibase.admin.forms import personRoleForm, personCompetenceForm
from minibase.admin.forms import industryRegisterForm, noteStatusForm
@ -28,14 +29,14 @@ def company_register_legal_entity():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
@ -57,14 +58,14 @@ def company_register_relation():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
@ -86,14 +87,14 @@ def company_register_status():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
@ -101,7 +102,6 @@ def company_register_status():
form=form)
@admin.route("/register_industry", methods=['GET', 'POST'])
def register_industry():
toPrint = "Company Industry"
@ -116,14 +116,14 @@ def register_industry():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
@ -131,6 +131,7 @@ def register_industry():
form=form)
@admin.route("/person_register_role", methods=['GET', 'POST'])
def person_register_role():
toPrint = "Person Role"
@ -145,14 +146,14 @@ def person_register_role():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
@ -174,14 +175,14 @@ def person_register_competence():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
@ -203,21 +204,20 @@ def note_register_status():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
form=form)
@admin.route("/project_register_status", methods=['GET', 'POST'])
def project_register_status():
toPrint = "Project Status"
@ -231,14 +231,14 @@ def project_register_status():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
@ -259,18 +259,20 @@ def product_register_status():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
@ -287,18 +289,20 @@ def product_register_eligibility():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
@ -315,18 +319,20 @@ def product_register_domain():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
@ -343,18 +349,20 @@ def product_register_classification():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
@ -371,18 +379,20 @@ def product_register_category():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
@ -399,16 +409,18 @@ def product_register_sub_category():
db.session.commit()
flash(f' {toPrint} {" registered!"}', 'success')
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)
return render_template('admin/register_name_and_desc.html',
return render_template('register_form.html',
title='Register ' + toPrint,
tableTitle='Existing ' + toPrint,
dbTable=query,
theme=themeMinibase,
globalVars=globalVars,
form=form)

@ -9,16 +9,17 @@ import minibase.database.utils as dbUtils
class companyForm(FlaskForm):
# Decalarion of the fields for the form and it's propereties
company_name = StringField('Name', validators=[DataRequired(), Length(min=3, max=20)])
legal_entity_id = SelectField('Legal Entity', choices=dbUtils.company_legal_entity_choices, validators=[DataRequired()])
relation_id = SelectField('Relation', choices=dbUtils.company_relation_choices, validators=[DataRequired()])
legal_entity = SelectField('Legal Entity', validators=[DataRequired()])
relation = SelectField('Relation', validators=[DataRequired()])
industry = SelectField('Area', validators=[DataRequired()])
status = SelectField('Status', validators=[DataRequired()])
website = StringField('Website', validators=[Optional(), Length(min=3, max=100)])
country = SelectField('Country', choices=dbUtils.getCountryNames,validators=[DataRequired()])
country = SelectField('Country', validators=[DataRequired()])
state = StringField('State', validators=[DataRequired()])
city = StringField('City', validators=[DataRequired()])
post = IntegerField('Zip', validators=[DataRequired()])
street = StringField('Street', validators=[DataRequired()])
no = IntegerField('No', validators=[DataRequired()])
industry_id = SelectField('Area', choices=dbUtils.getIndustryNames, validators=[DataRequired()])
submit = SubmitField('Register Company')
# Queries to be made in order to validate the form : If Company name exitst within the same country
@ -29,3 +30,9 @@ class companyForm(FlaskForm):
if company.name:
if company.country_bill == self.country.data:
raise ValidationError('This company in this contry alredy exist')
class getCompanyNameForm(FlaskForm): # Defines the form class to be used for the user registretion
# Decalarion of the fields for the form and it's propereties
company = SelectField('Company Name', validators=[DataRequired()])
submit = SubmitField('Show Projects')

@ -1,10 +1,9 @@
from flask import render_template, url_for, flash, redirect, request, Blueprint
from minibase import db
from minibase.config import themeMinibase
from minibase.config import themeMinibase, globalVars
from minibase.database.models import Company
from minibase.database.models import Industry
from minibase.company.forms import companyForm
import minibase.company.utils as utils
from minibase.company.forms import companyForm, getCompanyNameForm
import minibase.database.utils as dbUtils
# Declaring a blueprint
company = Blueprint('company', __name__)
@ -13,37 +12,61 @@ company = Blueprint('company', __name__)
@company.route("/company_register", methods=['GET', 'POST'])
def company_register():
form = companyForm()
form.industry.choices = [(row.id, row.name) for row in dbUtils.getIndustryNames()]
form.relation.choices = [(row.id, row.name) for row in dbUtils.getCompanyRelations()]
form.legal_entity.choices = [(row.id, row.name) for row in dbUtils.getCompanyLegalEntities()]
form.status.choices = [(row.id, row.name) for row in dbUtils.getCompanyStatuses()]
form.country.choices = [(row.id, row.name) for row in dbUtils.getCountryNames()]
if form.validate_on_submit():
company = Company(
name=form.company_name.data,
legal_entity_id=form.legal_entity.data,
relation_id=form.relation.data,
industry_id=form.industry.data,
status_id=form.status.data,
website=form.website.data,
country_bill=form.country.data,
state_bill=form.state.data,
city_bill=form.city.data,
post_code_bill=form.post.data,
street_bill=form.street.data,
street_no_bill=form.no.data,
country_ship=form.country.data,
state_ship=form.state.data,
city_ship=form.city.data,
post_code_ship=form.post.data,
street_ship=form.street.data,
street_no_ship=form.no.data,
industry_id=utils.getIndustryId(form.industry_id.data),
relation_id=utils.getRelationId(form.relation_id.data),
legal_entity_id=utils.getLegalEntityId(form.legal_entity_id.data))
country_id=form.country.data,
state=form.state.data,
city=form.city.data,
post_code=form.post.data,
street=form.street.data,
street_no=form.no.data)
# Here we need to give the id of thr role as this is a foreign key
db.session.add(company)
db.session.commit()
flash(f'{"Company succesfull registered!"}', 'success')
return render_template('company_register.html',
return render_template('register_form.html',
title='Register Company',
theme=themeMinibase,
globalVars=globalVars,
form=form)
elif request.method == 'GET':
form.country.data = str(214)
return render_template('register_form.html',
title='Register Company',
theme=themeMinibase,
globalVars=globalVars,
form=form)
# return redirect(url_for('company.company_register'))
return render_template('company_register.html',
return render_template('register_form.html',
title='Register Company',
theme=themeMinibase,
globalVars=globalVars,
form=form)
@company.route("/select_company", methods=['GET', 'POST'])
def select_company():
form = getCompanyNameForm()
# row.id which correspondsd to company.id is returned when the company is elected
form.company.choices = [(row.id, row.name +' | '+ row.company_country.name) for row in dbUtils.getCompanies()]
if form.validate_on_submit():
dbUtils.setSelectedCompany(form.company.data)
return redirect(url_for('project.select_project'))
return render_template('project/select_company.html',
title='Select Company Name',
theme=themeMinibase,
globalVars=globalVars,
form=form)

@ -28,6 +28,10 @@ class themeMinibase():
legend = "border-bottom mb-2"
smallInfoTextClass = "text-muted"
class globalVars:
selectedCompany = 0
selectedProject = 0
selectedElement = 0
class Config:
# (FLASK) Sectret key wich will be used to secure some requests an connections

@ -0,0 +1 @@
,key,devbian,23.10.2023 16:41,file:///home/key/.config/libreoffice/4;

@ -1 +0,0 @@
,key,devbian,20.10.2023 11:27,file:///home/key/.config/libreoffice/4;

@ -1,5 +1,5 @@
name,legal_entity_id,relation_id,industry_id,status_id,website,street_bill,street_no_bill,city_bill,post_code_bill,state_bill,country_bill,street_ship,street_no_ship,city_ship,post_code_ship,state_ship,country_ship
Steinel,1,1,1,1,www.steinel.ch,Almeinstrasse,10,Einsiedeln,8406,Schwyz,Switzerland,Almeinstrasse,10,Einsiedeln,8406,Schwyz,Switzerland
Kynsight,2,2,3,1,www.kynsight.com,Meierackerestrasse,10,Uster,8610,Zürich,Switzerland,Meierackerestrasse,10,Uster,8610,Zürich,Switzerland
V-zug,3,1,2,1,www.v-zug.com,Industriestrasse,66,Zug,6302,Zug,Switzerland,Industriestrasse,66,Zug,6302,Zug,Switzerland
Stmicroelectronics,1,2,1,1,www.stm.com,Champ-des-Filles,39,Plan-les-Ouates,1228,Geneva,Switzerland,Champ-des-Filles,39,Plan-les-Ouates,1228,Geneva,Switzerland
name,legal_entity_id,relation_id,industry_id,status_id,website,street_bill,street_no_bill,city_bill,post_code_bill,state_bill,country_bill
Steinel,1,1,1,1,www.steinel.ch,Almeinstrasse,10,Einsiedeln,8406,Schwyz,14
Kynsight,2,2,3,1,www.kynsight.com,Meierackerestrasse,10,Uster,8610,Zürich,14
V-zug,3,1,2,1,www.v-zug.com,Industriestrasse,66,Zug,6302,Zug,14
Stmicroelectronics,1,2,1,1,www.stm.com,Champ-des-Filles,39,Plan-les-Ouates,1228,Geneva,14

1 name legal_entity_id relation_id industry_id status_id website street_bill street_no_bill city_bill post_code_bill state_bill country_bill street_ship street_no_ship city_ship post_code_ship state_ship country_ship
2 Steinel 1 1 1 1 www.steinel.ch Almeinstrasse 10 Einsiedeln 8406 Schwyz Switzerland 14 Almeinstrasse 10 Einsiedeln 8406 Schwyz Switzerland
3 Kynsight 2 2 3 1 www.kynsight.com Meierackerestrasse 10 Uster 8610 Zürich Switzerland 14 Meierackerestrasse 10 Uster 8610 Zürich Switzerland
4 V-zug 3 1 2 1 www.v-zug.com Industriestrasse 66 Zug 6302 Zug Switzerland 14 Industriestrasse 66 Zug 6302 Zug Switzerland
5 Stmicroelectronics 1 2 1 1 www.stm.com Champ-des-Filles 39 Plan-les-Ouates 1228 Geneva Switzerland 14 Champ-des-Filles 39 Plan-les-Ouates 1228 Geneva Switzerland

File diff suppressed because one or more lines are too long

@ -52,7 +52,7 @@ class Post(db.Model):
###################################################################################################
# ADMIN
###################################################################################################
class Countries(db.Model):
class Country(db.Model):
id = db.Column(db.Integer, nullable=False, primary_key=True)
name = db.Column(db.String(100), nullable=False)
iso3 = db.Column(db.String(3), nullable=True)
@ -81,6 +81,10 @@ class Countries(db.Model):
flag = db.Column(db.Integer, nullable=False, default=1)
wikiDataId = db.Column(db.String(255))
companies = db.relationship('Company', backref='company_country', viewonly=True, lazy=True)
prodution_land = db.relationship('Product', backref='product_country_production', viewonly=True, lazy=True)
persons = db.relationship('Person', backref='person_country', viewonly=True, lazy=True)
# returns a more information-rich, or official, string representation of an object
def __repr__(self):
return f"{self.name}"
@ -158,7 +162,7 @@ class Person(db.Model):
city = db.Column(db.String(75), nullable=True, default='')
post_code = db.Column(db.String(10), nullable=True, default='')
state = db.Column(db.String(75), nullable=True, default='')
country = db.Column(db.String(75), nullable=True, default='')
country_id = db.Column(db.Integer, db.ForeignKey('country.id'), nullable=False)
image_file = db.Column(db.String(20), nullable=False, default='default_person.jpg')
upload_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
last_update_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
@ -226,18 +230,11 @@ class Company(db.Model):
main_company = db.Column(db.Integer, nullable=False, default='1')
subsidiary_of = db.Column(db.Integer, nullable=True, default='')
website = db.Column(db.String(100), nullable=True, default='')
street_bill = db.Column(db.String(100), nullable=False)
street_no_bill = db.Column(db.Integer, nullable=False)
city_bill = db.Column(db.String(100), nullable=False)
post_code_bill = db.Column(db.Integer, nullable=False)
state_bill = db.Column(db.String(100), nullable=False)
country_bill = db.Column(db.String(100), nullable=False)
street_ship = db.Column(db.String(100), nullable=False)
street_no_ship = db.Column(db.Integer, nullable=False)
city_ship = db.Column(db.String(100), nullable=False)
post_code_ship = db.Column(db.Integer, nullable=False)
state_ship = db.Column(db.String(100), nullable=False)
country_ship = db.Column(db.String(100), nullable=False)
street = db.Column(db.String(100), nullable=False)
street_no = db.Column(db.Integer, nullable=False)
city = db.Column(db.String(100), nullable=False)
post_code = db.Column(db.Integer, nullable=False)
state = db.Column(db.String(100), nullable=False)
classification = db.Column(db.Integer, nullable=False, default=0)
comment = db.Column(db.String(300), nullable=True)
image_file = db.Column(db.String(20), nullable=False, default='default_company.jpg')
@ -246,6 +243,7 @@ class Company(db.Model):
# One To Many relationships where indexes can point o mutiple companies.
# Example : One Legal_entity could cocern multiple companies. (There are surely more than just one GmBH)
country_id = db.Column(db.Integer, db.ForeignKey('country.id'), nullable=False)
legal_entity_id = db.Column(db.Integer, db.ForeignKey('company_legal_entity.id'), nullable=False)
relation_id = db.Column(db.Integer, db.ForeignKey('company_relation.id'), nullable=False)
industry_id = db.Column(db.Integer, db.ForeignKey('industry.id'), nullable=False)
@ -255,6 +253,7 @@ class Company(db.Model):
# Example : One company would/could have many eployees
employees = db.relationship('Person', backref='employer', lazy=True)
projects = db.relationship('Project', backref='belongs_to', lazy=True)
elements = db.relationship('Project_element', backref='company_ship_to', viewonly=True, lazy=True)
notes = db.relationship('Company_note', backref='company', lazy=True)
products = db.relationship('Product', backref='manufacturer', lazy=True)
@ -326,7 +325,7 @@ class Project(db.Model):
company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=False)
status_id = db.Column(db.Integer, db.ForeignKey('project_status.id'), nullable=False)
industry_id = db.Column(db.Integer, db.ForeignKey('industry.id'), nullable=False)
owner_id = db.Column(db.Integer, db.ForeignKey('person.id'), nullable=False)
owner_id = db.Column(db.Integer, db.ForeignKey('person.id'), nullable=True)
# One To Many relationships for a company having mutliple elements of the following indexes
# Example : One company would/could have many eployees
@ -345,6 +344,7 @@ class Project_element(db.Model):
upload_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
last_update_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
company_ship_to_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=False)
project_id = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=False)
owner_id = db.Column(db.Integer, db.ForeignKey('person.id'), nullable=False)
status_id = db.Column(db.Integer, db.ForeignKey('project_status.id'), nullable=False)
@ -405,10 +405,10 @@ class Product(db.Model):
pollution_level = db.Column(db.String(50), nullable=True)
price_change_flag = db.Column(db.Boolean, nullable=False, default=False)
proposed_margin = db.Column(db.Float, nullable=True)
production_country = db.Column(db.String(75), nullable=True, default='')
upload_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
last_update_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow)
production_country_id = db.Column(db.Integer, db.ForeignKey('country.id'), nullable=True)
classification_id = db.Column(db.Integer, db.ForeignKey('product_classification.id'), nullable=True)
domain_id = db.Column(db.Integer, db.ForeignKey('product_domain.id'), nullable=True)
category_id = db.Column(db.Integer, db.ForeignKey('product_category.id'), nullable=True)

@ -1,5 +1,5 @@
name,last_name,company_id,role_id,competence_id,mail_prof,mail_priv,tel_prof_mobile,street_name,street_no,city,post_code,state,country
Kerem,Yollu,2,3,1,kerem.yollu@kynsight.com,kerem.yollu@gmail.com,41789716697,Meierackerstrasse,10,Uster,8610,Zürich,Switzerland
Stefan,Walker,1,2,2,stefan.walker@steinel.ch,stefan.walker@gmail.com,41789716697,Almeinderstrasse,10,Einsiedeln,8410,Schwyz,Switzerland
Meier,Müller,1,2,2,meier.mueller@steinel.ch,meier.mueller@steinel.ch,41789716697,Almeinderstrasse,10,Einsiedeln,8410,Schwyz,Switzerland
Suleyman,Siksok,1,2,2,suleyman.siksok@steinel.ch,suleyman.siksok@steinel.ch,41789716697,Almeinderstrasse,10,Einsiedeln,8410,Schwyz,Switzerland
Kerem,Yollu,2,3,1,kerem.yollu@kynsight.com,kerem.yollu@gmail.com,41789716697,Meierackerstrasse,10,Uster,8610,Zürich,14
Stefan,Walker,1,2,2,stefan.walker@steinel.ch,stefan.walker@gmail.com,41789716697,Almeinderstrasse,10,Einsiedeln,8410,Schwyz,14
Meier,Müller,1,2,2,meier.mueller@steinel.ch,meier.mueller@steinel.ch,41789716697,Almeinderstrasse,10,Einsiedeln,8410,Schwyz,14
Suleyman,Siksok,1,2,2,suleyman.siksok@steinel.ch,suleyman.siksok@steinel.ch,41789716697,Almeinderstrasse,10,Einsiedeln,8410,Schwyz,14

1 name last_name company_id role_id competence_id mail_prof mail_priv tel_prof_mobile street_name street_no city post_code state country
2 Kerem Yollu 2 3 1 kerem.yollu@kynsight.com kerem.yollu@gmail.com 41789716697 Meierackerstrasse 10 Uster 8610 Zürich Switzerland 14
3 Stefan Walker 1 2 2 stefan.walker@steinel.ch stefan.walker@gmail.com 41789716697 Almeinderstrasse 10 Einsiedeln 8410 Schwyz Switzerland 14
4 Meier Müller 1 2 2 meier.mueller@steinel.ch meier.mueller@steinel.ch 41789716697 Almeinderstrasse 10 Einsiedeln 8410 Schwyz Switzerland 14
5 Suleyman Siksok 1 2 2 suleyman.siksok@steinel.ch suleyman.siksok@steinel.ch 41789716697 Almeinderstrasse 10 Einsiedeln 8410 Schwyz Switzerland 14

@ -1,3 +1,3 @@
name,description,qte_per_project,project_id,owner_id,atatus_id
Power Board,Dc-Dc regulation fo batteries,8,1,1,1
Ui,user input,1,1,1,1
name,description,qte_per_project,project_id,owner_id,atatus_id,company_ship_to_id
Power Board,Dc-Dc regulation fo batteries,8,1,1,1,2
Ui,user input,1,1,1,1,2

1 name description qte_per_project project_id owner_id atatus_id company_ship_to_id
2 Power Board Dc-Dc regulation fo batteries 8 1 1 1 2
3 Ui user input 1 1 1 1 2

@ -1,14 +1,12 @@
from minibase.database.models import Company, Company_relation, Company_legal_entity
from minibase.database.models import Industry, Countries
from minibase.database.models import Company, Company_relation, Company_legal_entity, Company_status
from minibase.database.models import Industry, Country
from minibase.database.models import Person, Person_role, Person_competence
from minibase.database.models import Project, Project_element, Project_status, Project_note
from minibase.database.models import Product
from minibase.config import globalVars
from minibase import db
from numpy import genfromtxt
selectedCompany=0
selectedProject=0
# Gets the id of company from the formated output defined at models.py for the Company Model
# The argument formatedCompanySelection is formated by SQLAlchemy in models.py files
# Please look there before changing anything here.
@ -38,45 +36,59 @@ def getPersonName(personId):
# Gets the country of the company based on it's id
def getCompanyCountry(companyId):
selection = Company.query.filter_by(id=companyId).first()
return selection.country_bill
return selection.company_country
def getCompanyCountryId(companyId):
selection = Company.query.filter_by(id=companyId).first()
return selection.country_id
# Gets the state of the company based on it's id
def getCompanyState(companyId):
selection = Company.query.filter_by(id=companyId).first()
return selection.street_bill
return selection.street
# Gets the city of the company based on it's id
def getCompanyCity(companyId):
selection = Company.query.filter_by(id=companyId).first()
return selection.city_bill
return selection.city
# Gets the Postal Code of the company based on it's id
def getCompanyPostCode(companyId):
selection = Company.query.filter_by(id=companyId).first()
return selection.post_code_bill
return selection.post_code
# Gets the Name of the street of the company based on it's id
def getCompanyStreetName(companyId):
selection = Company.query.filter_by(id=companyId).first()
return selection.street_bill
return selection.street
# Gets the Number of the street of the company based on it's id
def getCompanyStreetNo(companyId):
selection = Company.query.filter_by(id=companyId).first()
return selection.street_no_bill
return selection.street_no
# Gets the names the all the companies
def getCompanyNames():
def getCompanies():
selection = Company.query.order_by(Company.name.asc())
return selection
def getPersonRoles():
selection = Person_role.query.order_by(Person_role.name.asc())
return selection
def getPersonCompetences():
selection = Person_competence.query.order_by(Person_competence.name.asc())
return selection
# Gets the Name of the street of the company based on it's id
def getCompanyName(companyId):
selection = Company.query.filter_by(id=companyId).first()
@ -107,31 +119,28 @@ def getProjectName(projectId):
# Defines the selected company for the current request. This is important to fill so that some
# Templates knows if they have to show something and warns the user if no compani was selected
def setSelectedCompany(company_id):
global selectedCompany
selectedCompany = int(company_id)
globalVars.selectedCompany = Company.query.filter_by(id=int(company_id)).first()
# Returns the Selected company
def getSelectedCompany():
global selectedCompany
return selectedCompany
return Company.query.filter_by(id=globalVars.selectedCompany.id).first()
# Get the list of projects for the selected Company and if no company was selected
# Prints an error that will be put in the selection form.
def getProjectOfSelectedCompany():
global selectedCompany
if selectedCompany:
selection = Project.query.filter_by(company_id=selectedCompany)
if globalVars.selectedCompany.id:
selection = Project.query.filter_by(company_id=globalVars.selectedCompany.id)
return selection
return ["No company is selected"]
# Get the list of projects for the selected Company and if no company was selected
# Prints an error that will be put in the selection form.
def getEmployeesOfSelectedCompany():
global selectedCompany
if selectedCompany:
selection = Person.query.filter_by(company_id=selectedCompany)
if globalVars.selectedCompany.id:
selection = Person.query.filter_by(company_id=globalVars.selectedCompany.id)
return selection
return ["No company is selected"]
@ -139,27 +148,24 @@ def getEmployeesOfSelectedCompany():
# Defines the selected project for the current request. This is important to fill so that some
# Templates knows if they have to show something and warns the user if no compani was selected
def setSelectedProject(project_id):
global selectedProject
selectedProject = int(project_id)
globalVars.selectedProject = Project.query.filter_by(id=int(project_id)).first()
# Returns the Selected project
def getSelectedProject():
return selectedProject
return Project.query.filter_by(id=globalVars.selectedProject.id).first()
def getSelectedProjectOwner():
global selectedProject
if selectedProject:
selection = Project.query.filter_by(id=selectedProject).first()
if globalVars.selectedProject.id:
selection = Project.query.filter_by(id=globalVars.selectedProject.id).first()
return getPersonName(selection.project_responsible.id)
return ["No Project is selected"]
def getSelectedProjectNotes():
global selectedProject
if selectedProject:
selection = Project_note.query.filter_by(project_id=selectedProject)
if globalVars.selectedProject.id:
selection = Project_note.query.filter_by(project_id=globalVars.selectedProject.id)
return selection
return ["No Project is selected"]
@ -167,7 +173,6 @@ def getSelectedProjectNotes():
# Get the project id based on the project's name and compan's id
# As they can be project's that have the same name but corresponds to different companies.
def getProjectId(companyId, projectName):
global selectedCompany
selection = Project.query.filter_by(company_id=companyId, name=projectName).first()
return selection.id
@ -175,35 +180,43 @@ def getProjectId(companyId, projectName):
# Returns the query of all awailable companie names on the table named Project
# Note that the formating is done during the SQLAlchemy Table declaration.
def person_role_choices():
choices = Person_role.query.all()
choices = Person_role.query.order_by(Person_role.name.asc())
return choices
# Returns the query of all awailable companie names on the table named Company
# Note that the formating is done during the SQLAlchemy Table declaration.
def person_competence_choices():
choices = Person_competence.query.all()
choices = Person_competence.query.order_by(Person_competence.name.asc())
return choices
# Retunrs the qurry of all awailable industrie names on the table named Industry
# Note that the formating is done during the SQLAlchemy Table declaration.
def getIndustryNames():
choices = Industry.query.all()
choices = Industry.query.order_by(Industry.name.asc())
return choices
# Retunrs the query of all awailable legal entity names on the table named Company_legal_entity
# Note that the formating is done during the SQLAlchemy Table declaration.
def company_legal_entity_choices():
choices = Company_legal_entity.query.all()
def getCompanyLegalEntities():
choices = Company_legal_entity.query.order_by(Company_legal_entity.name.asc())
return choices
# Retunrs the query of all awailable Status elements
def getCompanyStatuses():
choices = Company_status.query.order_by(Company_status.name.asc())
return choices
# Retunrs the query of all awailable Relation names on the table named Company_relation
# Note that the formating is done during the SQLAlchemy Table declaration.
def company_relation_choices():
choices = Company_relation.query.all()
def getCompanyRelations():
choices = Company_relation.query.order_by(Company_relation.name.asc())
return choices
@ -231,12 +244,12 @@ def getLegalEntityId(nameForId):
return selection.id
# Retunrs the query of all awailable Country names on the table named Countries
# Retunrs the query of all awailable Country names on the table named Country
# Note that the formating is done during the SQLAlchemy Table declaration.
# Important note This table is ImporteD externally from a modifier SQL version of
# Github : https://github.com/dr5hn/countries-states-cities-database
def getCountryNames():
choices = Countries.query.all()
choices = Country.query.all()
return choices
@ -280,18 +293,12 @@ def db_add_company(csv):
'industry_id': i[3],
'status_id': i[4],
'website': i[5],
'street_bill': i[6],
'street_no_bill': i[7],
'city_bill': i[8],
'post_code_bill': i[9],
'state_bill': i[10],
'country_bill': i[11],
'street_ship': i[12],
'street_no_ship': i[13],
'city_ship': i[14],
'post_code_ship': i[15],
'state_ship': i[16],
'country_ship': i[17]})
'street': i[6],
'street_no': i[7],
'city': i[8],
'post_code': i[9],
'state': i[10],
'country_id': i[11]})
db.session.add(record) # Add all the records
db.session.commit() # Attempt to commit all the records
except Exception as error:
@ -318,7 +325,7 @@ def db_add_person(csv):
'city': i[10],
'post_code': i[11],
'state': i[12],
'country': i[13]
'country_id': i[13]
})
db.session.add(record) # Add all the records
db.session.commit() # Attempt to commit all the records
@ -362,7 +369,8 @@ def db_add_project_element(csv):
'qte_per_project': i[2],
'project_id': i[3],
'owner_id': i[4],
'status_id': i[5]})
'status_id': i[5],
'company_ship_to_id': i[6]})
db.session.add(record) # Add all the records
db.session.commit() # Attempt to commit all the records
except Exception as error:

@ -1,6 +1,6 @@
from flask import render_template, request, Blueprint
from minibase.database.models import Company, Post, Company_note, Person_note
from minibase.config import themeMinibase
from minibase.config import themeMinibase, globalVars
from minibase import db
# Declaring a blueprint
@ -20,6 +20,7 @@ def home():
# (HTML) Renders the template for templates/home.html
return render_template('home.html',
theme=themeMinibase,
globalVars=globalVars,
posts=posts,
companies=companies,
companie_notes=companie_notes,
@ -28,12 +29,18 @@ def home():
@main.route("/about")
def about():
return render_template('about.html', theme=themeMinibase, title='About')
return render_template('about.html',
theme=themeMinibase,
globalVars=globalVars,
title='About')
@main.route("/customer")
def customer():
return render_template('customer.html', theme=themeMinibase, title='About')
return render_template('customer.html',
theme=themeMinibase,
globalVars=globalVars,
title='About')
@main.cli.command("initdb")

@ -11,15 +11,15 @@ class personForm(FlaskForm):
name = StringField('Name', validators=[DataRequired(), Length(min=3, max=20)])
last_name = StringField('Last Name', validators=[DataRequired(), Length(min=3, max=20)])
date_of_birth = DateField('Birth Date')
company = SelectField('Company', validators=[DataRequired()])
competence = SelectField('Competence', validators=[DataRequired()])
role = SelectField('Role', validators=[DataRequired()])
mail_prof = StringField('Email Professional', validators=[DataRequired(), Email()])
mail_priv = StringField('Email Private', validators=[Optional(), Email()])
tel_prof_fix = StringField('Tel Professional Fix', validators=[Optional()])
tel_prof_mobile = StringField('Tel Professional Mob', validators=[Optional()])
tel_priv_fix = StringField('Tel Private Fix', validators=[Optional()])
tel_priv_mobile = StringField('Tel Private Mob', validators=[Optional()])
company_id = SelectField('Company', choices=dbUtils.getCompanyNames, validators=[DataRequired()])
competence_id = SelectField('Competence', choices=dbUtils.person_competence_choices, validators=[DataRequired()])
role_id = SelectField('Role', choices=dbUtils.person_role_choices, validators=[DataRequired()])
submit = SubmitField('Register Person')
# Queries to be made in order to validate the form : If person with this name exitst within the same company
@ -30,4 +30,4 @@ class personForm(FlaskForm):
if person.name:
if person.last_name.lower() == self.last_name.data.lower():
if person.company == self.company.data:
raise ValidationError('This person working in this company alredy exist')
raise ValidationError('This person working in this company already exist')

@ -1,9 +1,9 @@
from flask import render_template, url_for, flash, redirect, request, Blueprint
from minibase import db
from minibase.config import themeMinibase
from minibase.config import themeMinibase, globalVars
from minibase.database.models import Person
from minibase.person.forms import personForm
import minibase.database.utils as DbUtils
import minibase.database.utils as dbUtils
# Declaring a blueprint
person = Blueprint('person', __name__)
@ -12,8 +12,10 @@ person = Blueprint('person', __name__)
@person.route("/person_register", methods=['GET', 'POST'])
def person_register():
form = personForm()
form.company.choices = [(row.id, row.name) for row in dbUtils.getCompanies()]
form.competence.choices = [(row.id, row.name) for row in dbUtils.getPersonCompetences()]
form.role.choices = [(row.id, row.name) for row in dbUtils.getPersonRoles()]
if form.validate_on_submit():
companyID = DbUtils.getCompanyId(form.company_id.data)
person = Person(
name=form.name.data,
last_name=form.last_name.data,
@ -24,27 +26,28 @@ def person_register():
tel_priv_mobile=form.tel_priv_mobile.data,
mail_prof=form.mail_prof.data,
mail_priv=form.mail_priv.data,
company_id=companyID,
country=DbUtils.getCompanyCountry(companyID),
state=DbUtils.getCompanyState(companyID),
city=DbUtils.getCompanyCity(companyID),
post_code=DbUtils.getCompanyPostCode(companyID),
street_name=DbUtils.getCompanyStreetName(companyID),
street_no=DbUtils.getCompanyStreetNo(companyID),
role_id=DbUtils.getPersonRoleId(form.role_id.data),
competence_id=DbUtils.getPersonCompetenceId(form.competence_id.data))
company_id=form.company.data,
country_id=dbUtils.getCompanyCountryId(form.company.data),
state=dbUtils.getCompanyState(form.company.data),
city=dbUtils.getCompanyCity(form.company.data),
post_code=dbUtils.getCompanyPostCode(form.company.data),
street_name=dbUtils.getCompanyStreetName(form.company.data),
street_no=dbUtils.getCompanyStreetNo(form.company.data),
role_id=form.role.data,
competence_id=form.competence.data)
db.session.add(person)
db.session.commit()
flash(f'{"Company succesfull registered!"}', 'success')
return render_template('person_register.html',
flash(f'{"Person succesfull registered!"}', 'success')
return render_template('register_form.html',
title='Register Person',
theme=themeMinibase,
globalVars=globalVars,
form=form)
# return redirect(url_for('company.company_register'))
return render_template('person_register.html',
return render_template('register_form.html',
title='Register Person',
theme=themeMinibase,
globalVars=globalVars,
form=form)

@ -4,7 +4,7 @@ from flask_login import current_user, login_required
from minibase import db
from minibase.database.models import Post
from minibase.posts.forms import postForm
from minibase.config import themeMinibase
from minibase.config import themeMinibase, globalVars
# Declaring a blueprint
posts = Blueprint('posts', __name__)
@ -24,6 +24,7 @@ def new_post():
title='Create Post',
legend='Create Post',
theme=themeMinibase,
globalVars=globalVars,
form=form)
@ -33,6 +34,7 @@ def post(post_id):
return render_template('post.html',
title=post.title,
post=post,
globalVars=globalVars,
theme=themeMinibase)
@ -56,6 +58,7 @@ def post_update(post_id):
title='Update Post',
legend='Update Post',
theme=themeMinibase,
globalVars=globalVars,
form=form)

@ -5,12 +5,6 @@ from flask_wtf.file import FileField, FileAllowed
import minibase.database.utils as dbUtils
class getCompanyNameForm(FlaskForm): # Defines the form class to be used for the user registretion
# Decalarion of the fields for the form and it's propereties
company = SelectField('Company Name', choices=dbUtils.getCompanyNames, validators=[DataRequired()])
submit = SubmitField('Show Projects')
class getProjectNameForm(FlaskForm): # Defines the form class to be used for the user registretion
# Decalarion of the fields for the form and it's propereties
project = SelectField('Project Name', choices=dbUtils.getProjectOfSelectedCompany, validators=[DataRequired()])
@ -19,16 +13,17 @@ class getProjectNameForm(FlaskForm): # Defines the form class to be used for th
class projectRegisterForm(FlaskForm):
name = StringField('Project Name', validators=[DataRequired(), Length(min=3, max=20)])
description = StringField('ProjectName', validators=[DataRequired(), Length(min=3, max=300)])
description = StringField('Project Description', validators=[DataRequired(), Length(min=3, max=300)])
company = SelectField('Company name', validators=[DataRequired()])
industry = SelectField('industry', validators=[DataRequired()])
status = SelectField('Status', validators=[DataRequired()])
qtePrototype = IntegerField('Prototye Quantity', validators=[DataRequired()])
datePrototye = DateField('Prototyping Date', validators=[DataRequired()])
datePrototype = DateField('Prototyping Date', validators=[DataRequired()])
qteStart = IntegerField('Starting Quantity', validators=[DataRequired()])
dateStart = DateField('Firts Starting Date', validators=[DataRequired()])
qteStartProduction = IntegerField('Production Quantity', validators=[DataRequired()])
qteProduction = IntegerField('Production Quantity', validators=[DataRequired()])
dateProduction = DateField('Production Date', validators=[DataRequired()])
company = SelectField('Company name', choices=dbUtils.getCompanyNames, validators=[DataRequired()])
industry = SelectField('industry', choices=dbUtils.getIndustryNames, validators=[DataRequired()])
picture = FileField('Update Profile Picture', validators=[FileAllowed(['jpg', 'png'])])
picture = FileField('Update Project Picture', validators=[FileAllowed(['jpg', 'png'])])
submit = SubmitField('Register Project')

@ -1,55 +1,39 @@
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
from minibase.config import themeMinibase, globalVars
from minibase.project.forms import getProjectNameForm, projectUpdateForm, projectRegisterForm
import minibase.database.utils as dbUtils
from minibase.database.models import Project, Company
from minibase.database.models import Project
# 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
if globalVars.selectedCompany: # If a company is sected
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)
projectId = dbUtils.getProjectId(globalVars.selectedCompany.id, 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,
title='Select Project Name for : ' + globalVars.selectedCompany.name,
theme=themeMinibase,
globalVars=globalVars,
form=form)
else:
return redirect(url_for('project.select_company'))
flash(f'{"Please selecet a company first"}', 'warning')
return redirect(url_for('company.select_company'))
@project.route("/show_project", methods=['GET', 'POST'])
def show_project():
if dbUtils.getSelectedProject(): # If a project is lesected
if globalVars.selectedProject: # If a company is sected
form = projectUpdateForm()
projectId = dbUtils.getSelectedProject()
project = dbUtils.getProject(projectId)
# I can't use globalVars here for sqlAlchemy to be able to make a session an sql query must be made and returned
project = dbUtils.getSelectedProject()
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
@ -59,9 +43,10 @@ def show_project():
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.industry_id = int(form.industry.data)
project.status_id = int(form.status.data)
project.owner_id = int(form.responsible.data)
project.qte_prototype = form.qtePrototype.data
project.qte_start = form.qteStart.data
project.qte_production = form.qteProduction.data
@ -84,14 +69,55 @@ def show_project():
form.dateProduction.data = project.date_production
return render_template('project/show_project.html',
#title=project.belongs_to.name + ' : ' + project.name,
title="kerem",
title=project.belongs_to.name + ' : ' + project.name,
companyName=project.belongs_to.name,
projectName=project.name,
projectId=project.id,
notes=notes,
image_file=image_file,
theme=themeMinibase,
globalVars=globalVars,
form=form)
else:
flash(f'{"Please selecet a project first"}', 'warning')
return redirect(url_for('project.select_project'))
@project.route("/register_project", methods=['GET', 'POST'])
def register_project():
form = projectRegisterForm()
form.company.choices = [(row.id, row.name) for row in dbUtils.getCompanies()]
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 = Project(
name=form.name.data,
company_id=form.company.data,
description=form.description.data,
industry_id=form.industry.data,
status_id=form.status.data,
qte_prototype=form.qtePrototype.data,
qte_start=form.qteStart.data,
qte_production=form.qteProduction.data,
date_prototype=form.datePrototype.data,
date_start=form.dateStart.data,
date_production=form.dateProduction.data)
# Adds project to the database
db.session.add(project)
db.session.commit()
# Prepares the globalVars for redirection.
dbUtils.setSelectedCompany(form.company.data)
projectId = dbUtils.getProjectId(globalVars.selectedCompany.id, form.name.data)
# Prepares the globalVars for redirection.
dbUtils.setSelectedProject(projectId)
flash(f'{"Project Registered"}', 'success')
# Wihtout the selectedProject and selectedCompny Varibale the redirect would give an error
return redirect(url_for('project.show_project'))
return render_template('register_form.html',
title="Register Project",
theme=themeMinibase,
globalVars=globalVars,
form=form)

@ -1,65 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<div class="{{ theme.userInputDivClass }}" style="{{ theme.userInputFormColor }}">
<form method="POST" action="">
{{ form.hidden_tag() }}
<fieldset class="form-group"></fieldset>
<legend class="border-bottom mb-4">{{ title }}</legend>
<!-- name of the company-->
<div class="form-group">
{{ form.name.label(class="form-control-label") }}
{% if form.name.errors %}
{{ form.name(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.name.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.name(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- description of the company-->
<div class="form-group">
{{ form.description.label(class="form-control-label") }}
{% if form.description.errors %}
{{ form.description(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.description.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.description(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Submit Button -->
<div class="form-group">
{{ form.submit(class="btn btn-outline-info") }}
</div>
</form>
</div>
<div class="container-fluid pt-2">
<h3> <a href="#"> {{ tableTitle }}</a> </h3>
<table class="{{ theme.tableClass }}">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
{% for item in dbTable %}
<tr>
<th scope="row">{{ item.name }}</th>
<td>{{ item.description}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock content %}

@ -1,182 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<div class="{{ theme.userInputDivClass }}" style="{{ theme.userInputFormColor }}">
<form method="POST" action="">
{{ form.hidden_tag() }}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Register Company</legend>
<!-- name of the company-->
<div class="form-group">
{{ form.company_name.label(class="form-control-label") }}
{% if form.company_name.errors %}
{{ form.company_name(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.company_name.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.company_name(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- legal_entity_id of the company-->
<div class="form-group">
{{ form.legal_entity_id.label(class="form-control-label") }}
{% if form.legal_entity_id.errors %}
{{ form.legal_entity_id(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.legal_entity_id.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.legal_entity_id(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Relation of the company to us-->
<div class="form-group">
{{ form.relation_id.label(class="form-control-label") }}
{% if form.relation_id.errors %}
{{ form.relation_id(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.relation_id.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.relation_id(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- industry_id of the company-->
<div class="form-group">
{{ form.industry_id.label(class="form-control-label") }}
{% if form.industry_id.errors %}
{{ form.industry_id(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.industry_id.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.industry_id(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- website of the company-->
<div class="form-group">
{{ form.website.label(class="form-control-label") }}
{% if form.website.errors %}
{{ form.website(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.website.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.website(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- street of the company -->
<div class="form-group">
{{ form.street.label(class="form-control-label") }}
{% if form.street.errors %}
{{ form.street(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.street.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.street(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- no of the company -->
<div class="form-group">
{{ form.no.label(class="form-control-label") }}
{% if form.no.errors %}
{{ form.no(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.no.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.no(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- city of the company-->
<div class="form-group">
{{ form.city.label(class="form-control-label") }}
{% if form.city.errors %}
{{ form.city(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.city.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.city(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- state of the company-->
<div class="form-group">
{{ form.state.label(class="form-control-label") }}
{% if form.state.errors %}
{{ form.state(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.state.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.state(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Postal Code of the company -->
<div class="form-group">
{{ form.post.label(class="form-control-label") }}
{% if form.post.errors %}
{{ form.post(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.post.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.post(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Country of the company -->
<div class="form-group">
{{ form.country.label(class="form-control-label") }}
{% if form.country.errors %}
{{ form.country(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.country.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.country(class="form-control form-control-lg") }}
{% endif %}
</div>
</fieldset>
<!-- Submit Button -->
<div class="form-group">
{{ form.submit(class="btn btn-outline-info") }}
</div>
</form>
</div>
{% endblock content %}

@ -22,7 +22,7 @@
{% for company in companies %}
<tr>
<th scope="row">{{ company.name }} {{ company.legal_entity}}</th>
<td>{{ company.country_bill}}</td>
<td>{{ company.company_country }}</td>
<td> <a href="http://{{ company.website }}/" target="_blank" rel="noopener noreferrer">{{ company.website}} </a> </td>
<td>{{ company.relation}}</td>
<td>{{ company.company_industry}}</td>

@ -72,16 +72,36 @@
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Project</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="{{ url_for('project.select_company') }}">Find Projects</a>
<a class="dropdown-item" href="{{ url_for('company.select_company') }}">Find Projects</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Register Project</a>
<a class="dropdown-item" href="{{ url_for('project.register_project') }}">Register Project</a>
<a class="dropdown-item" href="#">Update Project</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Register Element</a>
<a class="dropdown-item" href="#">Update Element</a>
</div>
</ul>
<ul class="navbar-nav">
<li class="nav-brand"><h3 class="nav-brand" style="color: {{ theme.orange }};">||</h3></li>
{% if globalVars.selectedCompany.id %}
<li class="nav-item"><a class="nav-link" href="#">{{ globalVars.selectedCompany.name}}</a></li>
{% else %}
<li class="nav-item"><a class="nav-link" href="{{ url_for('company.select_company') }}">Customer</a></li>
{% endif %}
<li class="nav-item"><a class="nav-link" style="color: {{ theme.orange }};"> / </a></li>
{% if globalVars.selectedProject.id %}
<li class="nav-item"><a class="nav-link" href="{{ url_for('project.show_project') }}">{{ globalVars.selectedProject.name}}</a></li>
{% else %}
<li class="nav-item"><a class="nav-link" href="{{ url_for('project.select_project') }}">Project</a></li>
{% endif %}
<li class="nav-item"><a class="nav-link" style="color: {{ theme.orange }};"> / </a></li>
{% if globalVars.selectedElement.id %}
<li class="nav-item"><a class="nav-link" href="#">Element</a></li>
{% else %}
<li class="nav-item"><a class="nav-link" href="#">Element</a></li>
{% endif %}
<li class="nav-brand"><h3 class="nav-brand" style="color: {{ theme.orange }};">||</h3></li>
</ul>
{% endif %}
<ul class="navbar-nav ml-auto">
{% if current_user.is_authenticated %}
<li class="nav-item"><a class="nav-link" style="color: {{ theme.light_blue }};" href="{{ url_for('users.account') }}">Account</a></li>

@ -1,198 +0,0 @@
{% extends "layout.html" %}
{% block content %}
<div class="{{ theme.userInputDivClass }}" style="{{ theme.userInputFormColor }}">
<form method="POST" action="">
{{ form.hidden_tag() }}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Register Person</legend>
<!-- name of the person-->
<div class="form-group">
{{ form.name.label(class="form-control-label") }}
{% if form.name.errors %}
{{ form.name(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.name.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.name(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- last_name of the person-->
<div class="form-group">
{{ form.last_name.label(class="form-control-label") }}
{% if form.last_name.errors %}
{{ form.last_name(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.last_name.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.last_name(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Company of the person -->
<div class="form-group">
{{ form.company_id.label(class="form-control-label") }}
{% if form.company_id.errors %}
{{ form.company_id(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.company_id.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.company_id(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Role on the company no of the person -->
<div class="form-group">
{{ form.role_id.label(class="form-control-label") }}
{% if form.role_id.errors %}
{{ form.role_id(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.role_id.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.role_id(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Competence on the company no of the person -->
<div class="form-group">
{{ form.competence_id.label(class="form-control-label") }}
{% if form.competence_id.errors %}
{{ form.competence_id(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.competence_id.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.competence_id(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- date_of_birth of the person to us-->
<div class="form-group">
{{ form.date_of_birth.label(class="form-control-label") }}
{% if form.date_of_birth.errors %}
{{ form.date_of_birth(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.date_of_birth.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.date_of_birth(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- mail_prof of the person-->
<div class="form-group">
{{ form.mail_prof.label(class="form-control-label") }}
{% if form.mail_prof.errors %}
{{ form.mail_prof(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.mail_prof.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.mail_prof(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- mail_priv of the person -->
<div class="form-group">
{{ form.mail_priv.label(class="form-control-label") }}
{% if form.mail_priv.errors %}
{{ form.mail_priv(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.mail_priv.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.mail_priv(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Fix professional tel no of the person-->
<div class="form-group">
{{ form.tel_prof_fix.label(class="form-control-label") }}
{% if form.tel_prof_fix.errors %}
{{ form.tel_prof_fix(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.tel_prof_fix.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.tel_prof_fix(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Mobile professional number of the person-->
<div class="form-group">
{{ form.tel_prof_mobile.label(class="form-control-label") }}
{% if form.tel_prof_mobile.errors %}
{{ form.tel_prof_mobile(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.tel_prof_mobile.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.tel_prof_mobile(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Private fix Tel Number of the person -->
<div class="form-group">
{{ form.tel_priv_fix.label(class="form-control-label") }}
{% if form.tel_priv_fix.errors %}
{{ form.tel_priv_fix(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.tel_priv_fix.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.tel_priv_fix(class="form-control form-control-lg") }}
{% endif %}
</div>
<!-- Private Tel no of the person -->
<div class="form-group">
{{ form.tel_priv_mobile.label(class="form-control-label") }}
{% if form.tel_priv_mobile.errors %}
{{ form.tel_priv_mobile(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.tel_priv_mobile.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ form.tel_priv_mobile(class="form-control form-control-lg") }}
{% endif %}
</div>
</fieldset>
<!-- Submit Button -->
<div class="form-group">
{{ form.submit(class="btn btn-outline-info") }}
</div>
</form>
</div>
{% endblock content %}

@ -23,7 +23,7 @@
<!-- Submit Button -->
<div class="form-group">
{{ form.submit(class="btn btn-outline-info") }}
<a type="button" class="btn btn-secondary" href="{{ url_for('project.select_company') }}">Back to company selection</a>
<a type="button" class="btn btn-secondary" href="{{ url_for('company.select_company') }}">Back to company selection</a>
</div>
</form>
</div>

@ -0,0 +1,56 @@
{% extends "layout.html" %}
{% block content %}
<div class="{{ theme.userInputDivClass }}" style="{{ theme.userInputFormColor }}">
<form method="POST" action="">
{{ form.hidden_tag() }}
<fieldset class="form-group">
<legend class="border-bottom mb-4">{{title}}</legend>
{% for item in form %}
<div class="form-group">
{% if item.id == "submit" %}
{% elif item.id == "csrf_token" %}
{% else %}
{{ item.label(class="form-control-label") }}
{% if item.errors %}
{{ item(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in item.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% else %}
{{ item(class="form-control form-control-lg") }}
{% endif %}
{% endif %}
</div>
{% endfor %}
</fieldset>
<!-- Submit Button -->
<div class="form-group">
{{ form.submit(class="btn btn-outline-info") }}
</div>
</form>
</div>
{% if dbTable %}
<div class="container-fluid pt-2">
<h3> <a href="#"> {{ tableTitle }}</a> </h3>
<table class="{{ theme.tableClass }}">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
{% for item in dbTable %}
<tr>
<th scope="row">{{ item.name }}</th>
<td>{{ item.description}}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endif %}
{% endblock content %}

@ -1,7 +1,7 @@
from flask import render_template, url_for, flash, redirect, request, Blueprint
from flask_login import login_user, current_user, logout_user, login_required
from minibase import db, bcrypt
from minibase.config import themeMinibase
from minibase.config import themeMinibase, globalVars
from minibase.database.models import User, Post
from minibase.users.forms import (registrationForm, loginForm, updateAccountForm,
requestResetForm, resetPasswordForm)
@ -30,6 +30,7 @@ def register():
return render_template('register.html',
title='Register',
theme=themeMinibase,
globalVars=globalVars,
form=form)
@ -50,6 +51,7 @@ def login():
return render_template('login.html',
title='Login',
theme=themeMinibase,
globalVars=globalVars,
form=form)
@users.route("/logout")
@ -77,8 +79,9 @@ def account():
image_file = url_for('static', filename='pics/' + current_user.image_file)
return render_template('account.html',
title='Account',
image_file=image_file,
theme=themeMinibase,
globalVars=globalVars,
image_file=image_file,
form=form)
@ -90,6 +93,8 @@ def user_posts(username):
.order_by(Post.date_posted.asc())\
.paginate(page=page, per_page=2)
return render_template('user_posts.html',
theme=themeMinibase,
globalVars=globalVars,
posts=posts,
user=user)
@ -105,6 +110,7 @@ def reset_request():
return render_template('reset_request.html',
title='Reset Password',
theme=themeMinibase,
globalVars=globalVars,
form=form)
@ -126,4 +132,5 @@ def reset_token(token):
return render_template('reset_token.html',
title='Reset Password',
theme=themeMinibase,
globalVars=globalVars,
form=form)

Loading…
Cancel
Save