Guest User

Untitled

a guest
Jan 12th, 2019
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.82 KB | None | 0 0
  1. @login_manager.user_loader
  2. def load_user(user_id):
  3. return User.query.get(int(user_id))
  4.  
  5.  
  6. class User(db.Model, UserMixin):
  7. id = db.Column(db.Integer, primary_key = True)
  8. username = db.Column(db.String(20), unique=True, nullable=False)
  9. email = db.Column(db.String(120), unique=True, nullable=False)
  10. password = db.Column(db.String(60), nullable=False)
  11. date_registered = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  12. role = db.Column(db.Integer, nullable=False)
  13. role_exp_date = db.Column(db.DateTime)
  14. #o2o
  15. personal_datas = db.relationship('PersonalData', uselist=False, backref='user', lazy=True)
  16. persons = db.relationship('Person', uselist=False, backref='user', lazy=True)
  17. #o2m
  18. posts = db.relationship('Post', backref='author', lazy=True)
  19. comments = db.relationship('PostComment', backref='author', lazy=True)
  20. projects_owned = db.relationship('ConstrProject', backref='owner', lazy=True)
  21. attachments = db.relationship('Attachment', backref='author', lazy=True)
  22.  
  23. def __repr__(self):
  24. return f"{self.username} ({self.email})"
  25.  
  26.  
  27.  
  28. class PersonalData(db.Model):
  29. id = db.Column(db.Integer, primary_key = True)
  30. date_birth = db.Column(db.DateTime)
  31. image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
  32. interests = db.Column(db.Text)
  33. experties = db.Column(db.Text) #Потом сделать отдельную таблицу...
  34. #o2o
  35. user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
  36. #o2m
  37.  
  38.  
  39. class Person(db.Model):
  40. id = db.Column(db.Integer, primary_key = True)
  41. first_name = db.Column(db.String(30), nullable=False)
  42. middle_name = db.Column(db.String(40), nullable=False)
  43. last_name = db.Column(db.String(60), nullable=False)
  44. email = db.Column(db.String(120))
  45. license = db.Column(db.String(120))
  46. address = db.Column(db.String(240))
  47. telephone = db.Column(db.String(30))
  48. #o2o
  49. user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
  50. #o2m
  51. signers = db.relationship('Signer', backref='person', lazy=True)
  52.  
  53. def __repr__(self):
  54. return f"{self.last_name.Capitalize} {self.first_name[0].Upper}. {self.middle_name[0].Upper}."
  55.  
  56.  
  57. class ConstrProject(db.Model):
  58. __tablename__ = 'constrproject'
  59. id = db.Column(db.Integer, primary_key = True)
  60. name = db.Column(db.String(120), nullable=False, default='New Project')
  61. full_title = db.Column(db.Text, default='New Project')
  62. notes = db.Column(db.Text)
  63. public = db.Column(db.Boolean, default=True) #? check expamples
  64. date_created = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  65. date_last_edit = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  66. document_template = db.Column(db.Integer, nullable=False, default=1) #later to m2m
  67. print_settings = db.Column(db.Integer, nullable=False, default=1) #later to m2m
  68. address = db.Column(db.String(240))
  69. #o2m
  70. documents = db.relationship('Document', backref='project', lazy=True)
  71. #m2o
  72. owner_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) #+ #default = CurrentUser
  73. developer_id = db.Column(db.Integer, db.ForeignKey('company.id'))
  74. main_contractor_id = db.Column(db.Integer, db.ForeignKey('company.id'))
  75. architect_id = db.Column(db.Integer, db.ForeignKey('company.id'))
  76. subcontractor_id = db.Column(db.Integer, db.ForeignKey('company.id'))
  77. other_id = db.Column(db.Integer, db.ForeignKey('company.id'))
  78.  
  79.  
  80. developer = db.relationship('Company', foreign_keys=[developer_id], back_populates='constr_projects_developed')
  81. main_contractor = db.relationship('Company', foreign_keys=[main_contractor_id], back_populates='constr_projects_main_contracts')
  82. architect = db.relationship('Company', foreign_keys=[architect_id], back_populates='constr_projects_architect')
  83. subcontractor = db.relationship('Company', foreign_keys=[subcontractor_id], back_populates='constr_projects_subcontracts')
  84. other = db.relationship('Company', foreign_keys=[other_id], back_populates='constr_projects_other')
  85.  
  86.  
  87. tech_control_reps_id = db.Column(db.Integer, db.ForeignKey('signer.id'), nullable=False)
  88. main_contractor_reps_id = db.Column(db.Integer, db.ForeignKey('signer.id'), nullable=False)
  89. architect_reps_id = db.Column(db.Integer, db.ForeignKey('signer.id'), nullable=False)
  90. subcontractor_reps_id = db.Column(db.Integer, db.ForeignKey('signer.id'), nullable=False)
  91. other_reps_id = db.Column(db.Integer, db.ForeignKey('signer.id'), nullable=False)
  92.  
  93. tech_control_reps = db.relationship('Signer', foreign_keys=[tech_control_reps_id], back_populates='tech_control_projects')
  94. main_contractor_reps = db.relationship('Signer', foreign_keys=[main_contractor_reps_id], back_populates='main_contractor_projects')
  95. architect_reps = db.relationship('Signer', foreign_keys=[architect_reps_id], back_populates='architect_projects')
  96. subcontractor_reps = db.relationship('Signer', foreign_keys=[subcontractor_reps_id], back_populates='subcontractor_projects')
  97. other_reps = db.relationship('Signer', foreign_keys=[other_reps_id], back_populates='others_projects')
  98.  
  99. def __repr__(self):
  100. return f"Site: {self.name}, (id{self.id})"
  101.  
  102.  
  103.  
  104.  
  105.  
  106. class Signer(db.Model):
  107. id = db.Column(db.Integer, primary_key = True)
  108. decree = db.Column(db.String(120))
  109. job_title = db.Column(db.String(120))
  110. date_duty_start = db.Column(db.DateTime)
  111. date_duty_end = db.Column(db.DateTime)
  112. #o2m
  113. person_id = db.Column(db.Integer, db.ForeignKey('person.id'), nullable=False)
  114. company_id = db.Column(db.Integer, db.ForeignKey('company.id'), nullable=False)
  115. #m2o
  116. tech_control_projects = db.relationship('ConstrProject', back_populates='tech_control_reps')
  117. main_contractor_projects = db.relationship('ConstrProject', back_populates='main_contractor_reps')
  118. architect_projects = db.relationship('ConstrProject', back_populates='architect_reps')
  119. subcontractor_projects = db.relationship('ConstrProject', back_populates='subcontractor_reps')
  120. others_projects = db.relationship('ConstrProject', back_populates='other_reps')
  121.  
  122. def __repr__(self):
  123. return f"{self.job_title} as per {self.decree}." #название компании как подтянуть
  124.  
  125.  
  126.  
  127. class Company(db.Model):
  128. id = db.Column(db.Integer, primary_key = True)
  129. name = db.Column(db.String(60))
  130. full_title = db.Column(db.String(240))
  131. tin = db.Column(db.Integer)
  132. kpp = db.Column(db.Integer)
  133. ogrn = db.Column(db.Integer)
  134. email = db.Column(db.String(120))
  135. address = db.Column(db.String(240))
  136. telephone = db.Column(db.String(30))
  137. #o2m
  138. license_number = db.Column(db.String(40), nullable = False)
  139. license_date_issued = db.Column(db.DateTime)
  140. license_category = db.Column(db.String(120), default = '2nd')
  141. license_issued_by = db.Column(db.String(120))
  142. license_issued_by_tin = db.Column(db.Integer)
  143. license_issued_by_kpp = db.Column(db.Integer)
  144. license_issued_by_ogrn = db.Column(db.Integer)
  145.  
  146. signers = db.relationship('Signer', backref='company', lazy=True)
  147. constr_projects_developed = db.relationship('ConstrProject', back_populates='developer')
  148. constr_projects_main_contracts = db.relationship('ConstrProject', back_populates='main_contractor')
  149. constr_projects_architect = db.relationship('ConstrProject', back_populates='architect')
  150. constr_projects_subcontracts = db.relationship('ConstrProject', back_populates='subcontractor')
  151. constr_projects_other = db.relationship('ConstrProject', back_populates='other')
  152.  
  153. def __repr__(self):
  154. return f"{self.name}"
  155.  
  156.  
  157.  
  158. class Post(db.Model):
  159. id = db.Column(db.Integer, primary_key = True)
  160. title = db.Column(db.String(100), nullable=False)
  161. date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  162. content = db.Column(db.Text, nullable=False)
  163. #o2m
  164. comments = db.relationship('PostComment', backref='Post', lazy=True)
  165. #m2o
  166. user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
  167.  
  168.  
  169. def __repr__(self):
  170. return f"Post('{self.title}', '{self.date_posted}')"
  171.  
  172.  
  173.  
  174. class PostComment(db.Model):
  175. id = db.Column(db.Integer, primary_key = True)
  176. date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  177. content = db.Column(db.Text, nullable=False)
  178. #m2o
  179. user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
  180. post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False)
  181.  
  182. def __repr__(self):
  183. return f"Comment('{self.id}', '{self.date_posted}')"
  184.  
  185.  
  186.  
  187.  
  188. class Document(db.Model):
  189. id = db.Column(db.Integer, primary_key = True)
  190. type = db.Column(db.String(60), nullable=False, default='АОСР')
  191. date_last_edit = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  192. notes = db.Column(db.Text)
  193. public = db.Column(db.Boolean, default=True)
  194. number = db.Column(db.String(20), nullable=False)
  195. date = db.Column(db.DateTime, default=datetime.utcnow)
  196. job_name = db.Column(db.Text) #? обязательный? на каком этапе делать проверку?
  197. job_place = db.Column(db.String(200))
  198. date_job_start = db.Column(db.DateTime, default=datetime.utcnow)
  199. date_job_end = db.Column(db.DateTime, default=datetime.utcnow)
  200. regulations = db.Column(db.Text)
  201. next_job_allowed = db.Column(db.String(240))
  202. attachments_user_defined = db.Column(db.Text)
  203. #o2m
  204. attachments = db.relationship('Attachment', backref='document', lazy=True)
  205. #m2o
  206. project_id = db.Column(db.Integer, db.ForeignKey('constrproject.id'), nullable=False)
  207. author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
  208. #m2m
  209.  
  210. arch_docs = db.Column(db.Text)
  211. building_materials = db.Column(db.Text)
  212. work_drawings = db.Column(db.Text)
  213.  
  214. def __repr__(self):
  215. return f"АОСР ('{self.number}', '{self.job_name} {self.job_place}', '{self.project}' )"
  216.  
  217.  
  218.  
  219. class Attachment(db.Model):
  220. id = db.Column(db.Integer, primary_key = True)
  221. type_of_document = db.Column(db.String(60), nullable=False, default="QAC")
  222. number = db.Column(db.String(50), nullable=False)
  223. date = db.Column(db.DateTime)
  224. date_valid_start = db.Column(db.DateTime)
  225. date_valid_end = db.Column(db.DateTime)
  226. contents = db.Column(db.Text)
  227. type_of_file = db.Column(db.String(10), nullable=False, default = 'jpg')
  228. image_file = db.Column(db.String(20), nullable=False)
  229. #m2o
  230. author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
  231. document_id = db.Column(db.Integer, db.ForeignKey('document.id'), nullable=False)
  232.  
  233. def __repr__(self):
  234. if self.text:
  235. return f'{self.text}'
  236. return f'+{self.type_of_document} id{self.id} ({self.type_of_file})'
Add Comment
Please, Sign In to add comment