This repository has been archived by the owner on Jun 19, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmodels.py
95 lines (83 loc) · 3.34 KB
/
models.py
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
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Notice(db.Model):
id = db.Column(db.Integer, primary_key=True)
ref_no = db.Column(db.Text)
length = db.Column(db.Integer)
length_type = db.Column(db.Text)
location_code = db.Column(db.Text, db.ForeignKey('region.code'))
location = db.relationship('Region',
backref=db.backref('all_notices', lazy='dynamic'))
is_framework = db.Column(db.Integer)
is_sme_friendly = db.Column(db.Integer)
is_voluntary_friendly = db.Column(db.Integer)
date_awarded = db.Column(db.DateTime)
date_created = db.Column(db.DateTime)
deadline_date = db.Column(db.DateTime)
min_value = db.Column(db.Integer)
max_value = db.Column(db.Integer)
status = db.Column(db.Integer)
type_id = db.Column(db.Integer)
@property
def details(self):
# Quick fix - show details of first language (usually English)
return self.all_details.order_by('language_id').first()
@property
def type(self):
if self.type_id == 33:
return 'Pipeline'
else:
return 'Tender or contract'
class NoticeDetail(db.Model):
id = db.Column(db.Integer, primary_key=True)
notice_id = db.Column(db.Integer, db.ForeignKey('notice.id'))
notice = db.relationship('Notice',
backref=db.backref('all_details', lazy='dynamic'))
title = db.Column(db.Text)
description = db.Column(db.Text)
buying_org = db.Column(db.Text)
language_id = db.Column(db.Integer)
contact_email = db.Column(db.Text)
location_text = db.Column(db.Text)
supplier_instructions = db.Column(db.Text)
deadline_for = db.Column(db.Text)
contact_web = db.Column(db.Text)
contact_fax = db.Column(db.Text)
contact_name = db.Column(db.Text)
contact_tel = db.Column(db.Text)
contact_extension = db.Column(db.Text)
contact_address = db.Column(db.Text)
class NoticeDocument(db.Model):
id = db.Column(db.Integer, primary_key=True)
notice_id = db.Column(db.Integer, db.ForeignKey('notice.id'))
notice = db.relationship('Notice',
backref=db.backref('documents', lazy='dynamic'))
mimetype = db.Column(db.Text)
file_id = db.Column(db.String(36))
filename = db.Column(db.Text)
title = db.Column(db.Text)
class Region(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Text)
code = db.Column(db.Text)
parent_id = db.Column(db.Integer, db.ForeignKey('region.id'))
parent_region = db.relationship('Region', remote_side='Region.id')
def location_path(self):
parts = [self.name]
parent = self.parent_region
while parent is not None:
parts.insert(0, parent.name)
parent = parent.parent_region
return '/' + '/'.join(parts)
class Award(db.Model):
id = db.Column(db.Integer, primary_key=True)
notice_id = db.Column(db.Integer, db.ForeignKey('notice.id'))
notice = db.relationship('Notice',
backref=db.backref('awards'))
class AwardDetail(db.Model):
id = db.Column(db.Integer, primary_key=True)
award_id = db.Column(db.Integer, db.ForeignKey('award.id'))
award = db.relationship('Award',
backref=db.backref('details', uselist=False))
business_name = db.Column(db.Text)
business_address = db.Column(db.Text)