diff --git a/webinterface/minibase/database/__pycache__/models.cpython-311.pyc b/webinterface/minibase/database/__pycache__/models.cpython-311.pyc index 6f48fa28..929751e5 100644 Binary files a/webinterface/minibase/database/__pycache__/models.cpython-311.pyc and b/webinterface/minibase/database/__pycache__/models.cpython-311.pyc differ diff --git a/webinterface/minibase/database/models.py b/webinterface/minibase/database/models.py index a206a234..a94770c2 100644 --- a/webinterface/minibase/database/models.py +++ b/webinterface/minibase/database/models.py @@ -105,7 +105,8 @@ class Note_status(db.Model): description = db.Column(db.String(300), nullable=False) 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) - notes = db.relationship('Company_note', backref='company_note_status', lazy=True) + company_notes = db.relationship('Company_note', backref='company_note_status', lazy=True) + person_notes = db.relationship('Person_note', backref='person_note_status', lazy=True) # returns a more information-rich, or official, string representation of an object def __repr__(self): @@ -131,7 +132,7 @@ class Industry(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) companies = db.relationship('Company', backref='company_industry', lazy=True) - #projects = db.relationship('Project', backref='project_industry', lazy=True) + projects = db.relationship('Project', backref='project_industry', lazy=True) # returns a more information-rich, or official, string representation of an object def __repr__(self): @@ -171,8 +172,8 @@ class Person(db.Model): # One To Many relationships for a company having mutliple elements of the following indexes # Example : One company would/could have many eployees notes = db.relationship('Person_note', backref='person', lazy=True) - # projects = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=True) - # elements = db.Column(db.Integer, db.ForeignKey('project_element.id'), nullable=True) + projects = db.relationship('Project', backref='project_responsible', lazy=True) + elements = db.relationship('Project', backref='element_responsible', lazy=True) class Person_role(db.Model): @@ -206,7 +207,7 @@ class Person_note(db.Model): date_due = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) person_id = db.Column(db.Integer, db.ForeignKey('person.id'), nullable=False) - #status_id = db.Column(db.Integer, db.ForeignKey('note_status.id'), nullable=False) + status_id = db.Column(db.Integer, db.ForeignKey('note_status.id'), nullable=False) # returns a more information-rich, or official, string representation of an object def __repr__(self): @@ -250,6 +251,7 @@ class Company(db.Model): # One To Many relationships for a company having mutliple elements of the following indexes # 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) notes = db.relationship('Company_note', backref='company', lazy=True) @@ -301,31 +303,29 @@ class Company_note(db.Model): ################################################################################################### # Project ################################################################################################### -''' class Project(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) description = db.Column(db.String(300), nullable=False) - - #elements = db.relationship('Project_element', backref='project_elements', lazy=True) - - #company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=False) - #industry_id = db.Column(db.Integer, db.ForeignKey('industry.id'), nullable=False) - - project_owner = db.relationship('Person', backref='project_owner', lazy=True) - #buyer = db.relationship('Person', backref='project_buyer', lazy=True) - #responsible = db.relationship('Person', backref='project_manager', lazy=True) date_prototype = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) - qte_prototype = db.Column(db.Integer, nullable=True) + qte_prototype = db.Column(db.Integer, nullable=False) date_start = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) - qte_start = db.Column(db.Integer, nullable=True) + qte_start = db.Column(db.Integer, nullable=False) date_production = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) - qte_production = db.Column(db.Integer, nullable=True) - - status = db.Column(db.String(100), nullable=True, default='') + qte_production = db.Column(db.Integer, nullable=False) 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) + # One To Many relationships where indexes can point o mutiple companies. + 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) + + # One To Many relationships for a company having mutliple elements of the following indexes + # Example : One company would/could have many eployees + elements = db.relationship('Project_element', backref='project', lazy=True) + # returns a more information-rich, or official, string representation of an object def __repr__(self): return f"{self.name}" @@ -334,20 +334,125 @@ class Project_element(db.Model): id = db.Column(db.Integer, nullable=False, primary_key=True) name = db.Column(db.String(100), nullable=False) description = db.Column(db.String(300), nullable=False) + qte_per_project = db.Column(db.Integer, nullable=False, default='0') + 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) project_id = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=True) - industry_id = db.Column(db.Integer, db.ForeignKey('industry.id'), nullable=True) - owner = db.relationship('Person', backref='element_owner', lazy=True) - buyer = db.relationship('Person', backref='element_buyer', lazy=True) - responsible = db.relationship('Person', backref='element_manager', lazy=True) + 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) - qte_per_project = db.Column(db.Integer, nullable=False, default='0') + # returns a more information-rich, or official, string representation of an object + def __repr__(self): + return f"{self.name}" - status = db.Column(db.String(100), nullable=True, default='') +class Project_status(db.Model): + id = db.Column(db.Integer, nullable=False, primary_key=True) + name = db.Column(db.String(50), nullable=False) + description = db.Column(db.String(300), nullable=False) 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) + projects = db.relationship('Project', backref='status', lazy=True) + elements = db.relationship('Project', backref='element_status', lazy=True) + # returns a more information-rich, or official, string representation of an object def __repr__(self): return f"{self.name}" -''' + +################################################################################################### +# Product +################################################################################################### + +class Product(db.Model): + id = db.Column(db.Integer, nullable=False, primary_key=True) + buy_cost = db.Column(db.Float, nullable=False) + comment = db.Column(db.String(300), nullable=False) + comment_manufacturer = db.Column(db.String(300), nullable=False) + currency = db.Column(db.String(50), nullable=False) + description = db.Column(db.String(300), nullable=False) + last_time_buy_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) + lead_time_days = db.Column(db.Integer, nullable=False) + minimum_awarding_quantity = db.Column(db.Integer, nullable=False) + minimum_order_quantity = db.Column(db.Integer, nullable=False) + minimum_quote_quantity = db.Column(db.Integer, nullable=False) + obsolete_date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) + ordering_code = db.Column(db.String(100), nullable=False) + pollution_level = db.Column(db.String(50), nullable=True) + price_change_flag = db.Column(db.Boolean, nullable=False, default='0') + pricing_scheme = db.Column(db.String(300), nullable=False) + proposed_margin = db.Column(db.Float, nullable=False) + 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) + + status_id = db.Column(db.Integer, db.ForeignKey('product_status.id'), nullable=False) + classification_id = db.Column(db.Integer, db.ForeignKey('product_classification.id'), nullable=False) + packaging_id = db.Column(db.Integer, db.ForeignKey('product_packaging.id'), nullable=False) + physical_id = db.Column(db.Integer, db.ForeignKey('product_physical.id'), nullable=False) + + +class Product_status(db.Model): + id = db.Column(db.Integer, nullable=False, primary_key=True) + name = db.Column(db.String(50), nullable=False) + description = db.Column(db.String(300), nullable=False) + 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) + + products = db.relationship('Product', backref='status', lazy=True) + + # returns a more information-rich, or official, string representation of an object + def __repr__(self): + return f"{self.name}" + + +class Product_classification(db.Model): + id = db.Column(db.Integer, nullable=False, primary_key=True) + name = db.Column(db.String(50), nullable=False) + description = db.Column(db.String(300), nullable=False) + + products = db.relationship('Product', backref='classification', lazy=True) + + # returns a more information-rich, or official, string representation of an object + def __repr__(self): + return f"{self.name}" + + +class Product_packaging(db.Model): + id = db.Column(db.Integer, nullable=False, primary_key=True) + name = db.Column(db.String(50), nullable=False) + description = db.Column(db.String(300), nullable=False) + unit = db.Column(db.Integer) + quantity = db.Column(db.Integer) + total = db.Column(db.Integer) + + products = db.relationship('Product', backref='packaging', lazy=True) + + # returns a more information-rich, or official, string representation of an object + def __repr__(self): + return f"{self.name}" + + +class Product_physical(db.Model): + id = db.Column(db.Integer, nullable=False, primary_key=True) + name = db.Column(db.String(50), nullable=False) + description = db.Column(db.String(300), nullable=False) + image_file = db.Column(db.String(20), nullable=False, default='default_company.jpg') + pitch_x = db.Column(db.Float, nullable=True) + pitch_y = db.Column(db.Float, nullable=True) + size_x = db.Column(db.Float, nullable=True) + size_y = db.Column(db.Float, nullable=True) + size_z = db.Column(db.Float, nullable=True) + type = db.Column(db.String(50), nullable=False) + + products = db.relationship('Product', backref='physical', lazy=True) + # returns a more information-rich, or official, string representation of an object + def __repr__(self): + return f"{self.name}" + +''' + physical (MUL, int) + container (varchar) + favourite (tinyint, NULL, nullable) + manufacturer (varchar) + production_site (varchar) +''' diff --git a/webinterface/minibase/main/__pycache__/routes.cpython-311.pyc b/webinterface/minibase/main/__pycache__/routes.cpython-311.pyc index ee1715c1..721b0595 100644 Binary files a/webinterface/minibase/main/__pycache__/routes.cpython-311.pyc and b/webinterface/minibase/main/__pycache__/routes.cpython-311.pyc differ diff --git a/webinterface/minibase/main/routes.py b/webinterface/minibase/main/routes.py index f407ea3e..8f9db33e 100644 --- a/webinterface/minibase/main/routes.py +++ b/webinterface/minibase/main/routes.py @@ -1,5 +1,5 @@ from flask import render_template, request, Blueprint -from minibase.database.models import Company, Post, Company_note +from minibase.database.models import Company, Post, Company_note, Person_note from minibase.config import themeMinibase from minibase import db @@ -16,8 +16,14 @@ def home(): posts = Post.query.order_by(Post.date_posted.asc()).paginate(per_page=2) companies = Company.query.order_by(Company.name.asc()) companie_notes = Company_note.query.order_by(Company_note.title.asc()) + person_notes = Person_note.query.order_by(Person_note.title.asc()) # (HTML) Renders the template for templates/home.html - return render_template('home.html', theme=themeMinibase, posts=posts, companies=companies, companie_notes=companie_notes) + return render_template('home.html', + theme=themeMinibase, + posts=posts, + companies=companies, + companie_notes=companie_notes, + person_notes=person_notes) @main.route("/about") diff --git a/webinterface/minibase/site.db b/webinterface/minibase/site.db index 18414f4d..6ccc2b3c 100644 Binary files a/webinterface/minibase/site.db and b/webinterface/minibase/site.db differ diff --git a/webinterface/minibase/templates/home.html b/webinterface/minibase/templates/home.html index aedd9ee2..09f85ef9 100644 --- a/webinterface/minibase/templates/home.html +++ b/webinterface/minibase/templates/home.html @@ -2,9 +2,8 @@ {% block content %}
-
+

Overwiev

-

Companies

@@ -34,6 +33,7 @@
+

Notes

@@ -63,6 +63,38 @@
+ + +
+

Notes

+ + + + + + + + + + + + + + {% for elem in person_notes %} + + + + + + + + + + {% endfor %} + +
PersonTitleContentStatusPriorityDate PostedDue Date
{{ elem.person.name }}{{ elem.title }}{{ elem.content }}{{ elem.person_note_status }}{{ elem.priority }}{{ elem.date_posted.strftime('%d-%m-%Y') }}{{ elem.date_due.strftime('%d-%m-%Y') }}
+
+ +
-
{% endblock content %} diff --git a/webinterface/prepare.py b/webinterface/prepare.py index 10839c31..0ea2ea66 100644 --- a/webinterface/prepare.py +++ b/webinterface/prepare.py @@ -2,7 +2,8 @@ from minibase import db, create_minibase from minibase.database.models import Person, Person_role, Person_competence, Person_note from minibase.database.models import Company, Company_relation, Company_legal_entity, Company_note, Company_status from minibase.database.models import Status, Industry, Note_status -#from minibase.database.models import Project +from minibase.database.models import Project, Project_status, Project_element +from minibase.database.models import Product, Product_status, Project_element, Product_physical, Product_packaging app = create_minibase() app.app_context().push() @@ -215,34 +216,67 @@ note3 = Person_note( title='Birthday of Stefan', content='Congratulate Stefan for his birthday', priority='5', - person_id='2') - #status_id='1') + person_id='2', + status_id='1') db.session.add(note3) note4 = Person_note( title='Wake Up kerem', content='He is still slepping', priority='10', - person_id='1') - #status_id='3') + person_id='1', + status_id='3') db.session.add(note4) note5 = Person_note( title='Research for Stefan', content='He is looking for a new job', priority='8', - person_id='2') - #status_id='2') + person_id='2', + status_id='2') db.session.add(note5) -''' +################################################################################################### + + +projectStatus1 = Project_status( + name='Open', + description='Ongoing') +db.session.add(projectStatus1) + +projectStatus2 = Project_status( + name='Closed', + description='Closed') +db.session.add(projectStatus2) + +projectStatus3 = Project_status( + name='Pending', + description='Action Required') +db.session.add(projectStatus3) + + project1 = Project( - name='Stwa-Hs', - description='Akku Sprüh Gerät für hautmittel!') -# buyer='2', -# responsible='1') + name='STWA-HS', + description='Aküsprühgerät für hautmittel', + company_id='1', + status_id='1', + industry_id='1', + owner_id='1', + qte_prototype='10', + qte_start='5000', + qte_production='10000') db.session.add(project1) +element1 = Project_element( + name='Power Board', + description='Dc-Dc regulation fo batteries', + qte_per_project='8', + project_id='1', + owner_id='1', + status_id='1') + +db.session.add(element1) +''' ################################################################################################### status1 = Status( name='Obsolete',