-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
118 lines (89 loc) · 4.11 KB
/
models.py
File metadata and controls
118 lines (89 loc) · 4.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Certification(db.Model):
__tablename__ = "certification"
id = db.Column(db.Integer, primary_key=True)
e_type_id = db.Column(db.Integer, db.ForeignKey("equipment_type.id"), nullable=False)
worker_id = db.Column(db.Integer, db.ForeignKey("worker.id"), nullable=False)
def __init__(self, e_type_id, worker_id):
self.e_type_id = e_type_id
self.worker_id = worker_id
def __repr__(self):
return f'<Certification {self.id}, Worker: {self.worker_id}>'
def __str__(self):
e_type = Equipment.query.get(self.e_type_id)
worker = Worker.query.get(self.worker_id)
return f'<Certification {self.id}, Type: {e_type.name}, Worker: {worker.name}>'
class Equipment(db.Model):
__tablename__ = "equipment"
id = db.Column(db.Integer, primary_key=True)
equipment_type_id = db.Column(db.Integer, db.ForeignKey("equipment_type.id"), nullable=False)
facility_id = db.Column(db.Integer, db.ForeignKey("facility.id"), nullable=False)
orders = db.relationship("Order", backref="equipment", lazy=True)
def __init__(self, e_type_id, facility_id):
self.equipment_type_id = e_type_id
self.facility_id = facility_id
def __repr__(self):
return f'<Equipment {self.id}>'
class EquipmentType(db.Model):
__tablename__ = "equipment_type"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(25), nullable=False)
prob = db.Column(db.Float, nullable=False)
hour_min = db.Column(db.Integer, nullable=False)
hour_max = db.Column(db.Integer, nullable=False)
equipments = db.relationship("Equipment", backref="equipment_type", lazy=True)
certifications = db.relationship("Certification", backref="equipment_type", lazy=True)
def __init__(self, name, prob, hour_min, hour_max):
self.name = name
self.prob = prob
self.hour_min = hour_min
self.hour_max = hour_max
def __repr__(self):
return f'<Equipment Type {self.name}>'
class Facility(db.Model):
__tablename__ = "facility"
id = db.Column(db.Integer, primary_key=True)
lat = db.Column(db.Float, nullable=False)
lon = db.Column(db.Float, nullable=False)
equipments = db.relationship("Equipment", backref="facility", lazy=True)
orders = db.relationship("Order", backref="facility", lazy=True)
def __init__(self, lat, lon):
self.lat = lat
self.lon = lon
def __repr__(self):
return f'<Facility {self.id}>'
class Order(db.Model):
__tablename__ = "order"
id = db.Column(db.Integer, primary_key=True)
priority = db.Column(db.Integer, nullable=False)
time_to_completion = db.Column(db.Integer, nullable=False)
created_at = db.Column(db.DateTime, default=db.func.current_timestamp(), nullable=False)
status = db.Column(db.String(15), default="pending", nullable=False)
est_end_time = db.Column(db.DateTime)
est_start_time = db.Column(db.DateTime)
facility_id = db.Column(db.Integer, db.ForeignKey("facility.id"), nullable=False)
equipment_id = db.Column(db.Integer, db.ForeignKey("equipment.id"), nullable=False)
worker_id = db.Column(db.Integer, db.ForeignKey("worker.id"))
def __init__(self, priority, time_to_completion, facility_id, equipment_id):
self.priority = priority
self.time_to_completion = time_to_completion
self.facility_id = facility_id
self.equipment_id = equipment_id
def __repr__(self):
return f'<Work Order {self.id}, {self.status}>'
class Worker(db.Model):
__tablename__ = "worker"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
shift = db.Column(db.String(15), nullable=False)
time_until_free = db.Column(db.DateTime)
certifications = db.relationship("Certification", backref="worker", lazy=True)
orders = db.relationship("Order", backref="worker", lazy=True)
def __init__(self, name, shift):
self.name = name
self.shift = shift
def __repr__(self):
return f'<Worker {self.name}>'