ucampostgresvro 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ucampostgresvro-0.1.0/LICENSE +21 -0
- ucampostgresvro-0.1.0/PKG-INFO +232 -0
- ucampostgresvro-0.1.0/README.md +216 -0
- ucampostgresvro-0.1.0/pyproject.toml +28 -0
- ucampostgresvro-0.1.0/ucampostgresvro/DBA.py +792 -0
- ucampostgresvro-0.1.0/ucampostgresvro/__init__.py +1 -0
- ucampostgresvro-0.1.0/ucampostgresvro/__main__.py +134 -0
- ucampostgresvro-0.1.0/ucampostgresvro/ca.crt +19 -0
- ucampostgresvro-0.1.0/ucampostgresvro/exceptions.py +2 -0
- ucampostgresvro-0.1.0/ucampostgresvro/tests/__init__.py +0 -0
- ucampostgresvro-0.1.0/ucampostgresvro/tests/conftest.py +63 -0
- ucampostgresvro-0.1.0/ucampostgresvro/tests/dbconnect.py +10 -0
- ucampostgresvro-0.1.0/ucampostgresvro/tests/test_DB.py +339 -0
- ucampostgresvro-0.1.0/ucampostgresvro/tests/utils.py +116 -0
- ucampostgresvro-0.1.0/ucampostgresvro/tools.py +7 -0
- ucampostgresvro-0.1.0/ucampostgresvro/utils.py +197 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2025 Information Services / Infrastructure
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
@@ -0,0 +1,232 @@
|
|
1
|
+
Metadata-Version: 2.3
|
2
|
+
Name: ucampostgresvro
|
3
|
+
Version: 0.1.0
|
4
|
+
Summary:
|
5
|
+
Author: Ishan Mahajan
|
6
|
+
Author-email: mahanishanmahajan@gmail.com
|
7
|
+
Requires-Python: >=3.10
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
9
|
+
Classifier: Programming Language :: Python :: 3.10
|
10
|
+
Classifier: Programming Language :: Python :: 3.11
|
11
|
+
Classifier: Programming Language :: Python :: 3.12
|
12
|
+
Classifier: Programming Language :: Python :: 3.13
|
13
|
+
Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0)
|
14
|
+
Description-Content-Type: text/markdown
|
15
|
+
|
16
|
+
# Script for VRA database for Costing
|
17
|
+
|
18
|
+
# Developing
|
19
|
+
1. [Install docker-compose](https://docs.docker.com/compose/install/).
|
20
|
+
2. Docker will run the postgres on port 5455 so, ensure the system has the port available
|
21
|
+
|
22
|
+
```
|
23
|
+
# run pytest testing
|
24
|
+
./developer.sh pytest start
|
25
|
+
|
26
|
+
# run flake8 testing
|
27
|
+
./developer.sh flake8 start
|
28
|
+
|
29
|
+
# delete the testing environment
|
30
|
+
./developer.sh pytest stop
|
31
|
+
|
32
|
+
# delete the flake8 environment
|
33
|
+
./developer.sh flake8 stop
|
34
|
+
```
|
35
|
+
|
36
|
+
|
37
|
+
## Package usage
|
38
|
+
|
39
|
+
- To setup database
|
40
|
+
```
|
41
|
+
from ucampostgresvro import pre_setupconfig
|
42
|
+
from ucampostgresvro.DB import DB
|
43
|
+
db_params = {
|
44
|
+
"dbname": "vrapricing",
|
45
|
+
"user": "postgres",
|
46
|
+
"password": <1Password: vrapricingpostgres>,
|
47
|
+
"host": "infra-db.srv.uis.cam.ac.uk",
|
48
|
+
"port": "5432",
|
49
|
+
"sslmode": "require",
|
50
|
+
"sslrootcert": "./ca.crt", # path to your client certificate
|
51
|
+
}
|
52
|
+
db = DB(db_params)
|
53
|
+
pre_setupconfig(db_params)
|
54
|
+
```
|
55
|
+
- To perform CRUD operation
|
56
|
+
```
|
57
|
+
from ucampostgresvro.DB import DB
|
58
|
+
db_params = {
|
59
|
+
"dbname": "vrapricing",
|
60
|
+
"user": "postgres",
|
61
|
+
"password": <1Password: vrapricingpostgres>,
|
62
|
+
"host": "infra-db.srv.uis.cam.ac.uk",
|
63
|
+
"port": "5432",
|
64
|
+
"sslmode": "require",
|
65
|
+
"sslrootcert": "./ca.crt", # path to your client certificate
|
66
|
+
}
|
67
|
+
db = DB(db_params)
|
68
|
+
|
69
|
+
# CRUD on user DB./
|
70
|
+
|
71
|
+
# create user
|
72
|
+
db.insert_vrauser("ll220", "Ling-Yan Lau")
|
73
|
+
|
74
|
+
# read user
|
75
|
+
print(db.get_vrauser())
|
76
|
+
|
77
|
+
# update user
|
78
|
+
db.update_vrauser("ll220", "bda20", 'Ben Argyle')
|
79
|
+
|
80
|
+
# delete user
|
81
|
+
db.remove_vrauser('bda20')
|
82
|
+
|
83
|
+
# create vra deploymentid
|
84
|
+
db.insert_deployment_id("1231ee112ad11212")
|
85
|
+
|
86
|
+
# read vra deployment id
|
87
|
+
print(db.get_deployment_id("1231a"))
|
88
|
+
|
89
|
+
# update vra deployment id
|
90
|
+
db.update_deployment_id("1231ee112ad1", "1231a")
|
91
|
+
|
92
|
+
# delete vra deployment id
|
93
|
+
db.remove_deployment_id('1231a')
|
94
|
+
|
95
|
+
# create project
|
96
|
+
db.insert_project("0001",1,100.0)
|
97
|
+
|
98
|
+
# read project
|
99
|
+
print(db.get_project())
|
100
|
+
|
101
|
+
# update project
|
102
|
+
db.update_project("0001", "0002", 4, 200)
|
103
|
+
|
104
|
+
# delete project
|
105
|
+
# db.remove_project("0002")
|
106
|
+
|
107
|
+
# create grant
|
108
|
+
db.insert_grant("0001",1,100.0)
|
109
|
+
|
110
|
+
# read grant
|
111
|
+
print(db.get_grant())
|
112
|
+
|
113
|
+
# update grant
|
114
|
+
db.update_grant("0001", "0002", 4, 200)
|
115
|
+
|
116
|
+
# delete grant
|
117
|
+
db.remove_grant("0002")
|
118
|
+
|
119
|
+
# create costing
|
120
|
+
db.insert_costing(2, "Initial Resource", project_id=4, grant_id=None)
|
121
|
+
|
122
|
+
# read costing
|
123
|
+
print(db.get_costing())
|
124
|
+
|
125
|
+
# update costing
|
126
|
+
db.update_costing(2, "Duration Expansion", old_grant_id=4, old_project_id=None, grant_id=4, project_id=None)
|
127
|
+
|
128
|
+
# delete costing
|
129
|
+
db.remove_costing(2, "Duration Expansion", 4, None)
|
130
|
+
|
131
|
+
# to close db connection
|
132
|
+
db.closedb()
|
133
|
+
```
|
134
|
+
|
135
|
+
---
|
136
|
+
### Design
|
137
|
+
|
138
|
+

|
139
|
+
|
140
|
+
## - VRAUSER table
|
141
|
+
```
|
142
|
+
vrapricing=# \d vrauser;
|
143
|
+
Table "public.vrauser"
|
144
|
+
Column | Type | Collation | Nullable | Default
|
145
|
+
--------+------------------------+-----------+----------+-------------------------------------
|
146
|
+
id | integer | | not null | nextval('vrauser_id_seq'::regclass)
|
147
|
+
crsid | character varying(255) | | |
|
148
|
+
name | character varying(255) | | |
|
149
|
+
Indexes:
|
150
|
+
"vrauser_pkey" PRIMARY KEY, btree (id)
|
151
|
+
"vrauser_crsid_key" UNIQUE CONSTRAINT, btree (crsid)
|
152
|
+
Referenced by:
|
153
|
+
TABLE "purchaseorder" CONSTRAINT "purchaseorder_paid_by_fkey" FOREIGN KEY (paid_by) REFERENCES vrauser(id)
|
154
|
+
TABLE "grant" CONSTRAINT "grant_paid_by_fkey" FOREIGN KEY (paid_by) REFERENCES vrauser(id)
|
155
|
+
|
156
|
+
```
|
157
|
+
|
158
|
+
## - VRA Deployment ID tabel
|
159
|
+
```
|
160
|
+
vrapricing=# \d deploymentid;
|
161
|
+
Table "public.deploymentid"
|
162
|
+
Column | Type | Collation | Nullable | Default
|
163
|
+
--------------+-----------------------+-----------+----------+------------------------------------------
|
164
|
+
id | integer | | not null | nextval('deploymentid_id_seq'::regclass)
|
165
|
+
deploymentid | character varying(50) | | |
|
166
|
+
Indexes:
|
167
|
+
"deploymentid_pkey" PRIMARY KEY, btree (id)
|
168
|
+
"deploymentid_deploymentid_key" UNIQUE CONSTRAINT, btree (deploymentid)
|
169
|
+
Referenced by:
|
170
|
+
TABLE "costing" CONSTRAINT "costing_deployment_id_fkey" FOREIGN KEY (deployment_id) REFERENCES deploymentid(id)
|
171
|
+
|
172
|
+
```
|
173
|
+
|
174
|
+
## - project table
|
175
|
+
```
|
176
|
+
vrapricing=# \d projects;
|
177
|
+
Table "public.projects"
|
178
|
+
Column | Type | Collation | Nullable | Default
|
179
|
+
----------------+------------------------+-----------+----------+--------------------------------------
|
180
|
+
id | integer | | not null | nextval('projects_id_seq'::regclass)
|
181
|
+
project_number | character varying(255) | | |
|
182
|
+
paid_by | integer | | |
|
183
|
+
amount | double precision | | not null |
|
184
|
+
Indexes:
|
185
|
+
"projects_pkey" PRIMARY KEY, btree (id)
|
186
|
+
Foreign-key constraints:
|
187
|
+
"projects_paid_by_fkey" FOREIGN KEY (paid_by) REFERENCES vrauser(id)
|
188
|
+
Referenced by:
|
189
|
+
TABLE "costing" CONSTRAINT "costing_project_id_fkey" FOREIGN KEY (project_id) REFERENCES projects(id)
|
190
|
+
|
191
|
+
```
|
192
|
+
|
193
|
+
## - grants table
|
194
|
+
```
|
195
|
+
vrapricing=# \d grant;
|
196
|
+
Table "public.grant"
|
197
|
+
Column | Type | Collation | Nullable | Default
|
198
|
+
----------------+------------------------+-----------+----------+--------------------------------------
|
199
|
+
id | integer | | not null | nextval('grant_id_seq'::regclass)
|
200
|
+
voucher_number | character varying(255) | | |
|
201
|
+
paid_by | integer | | |
|
202
|
+
amount | double precision | | not null |
|
203
|
+
Indexes:
|
204
|
+
"grant_pkey" PRIMARY KEY, btree (id)
|
205
|
+
Foreign-key constraints:
|
206
|
+
"grant_paid_by_fkey" FOREIGN KEY (paid_by) REFERENCES vrauser(id)
|
207
|
+
Referenced by:
|
208
|
+
TABLE "costing" CONSTRAINT "costing_voucher_id_fkey" FOREIGN KEY (voucher_id) REFERENCES grant(id)
|
209
|
+
```
|
210
|
+
|
211
|
+
## - Costing table
|
212
|
+
```
|
213
|
+
vrapricing=# \d costing;
|
214
|
+
Table "public.costing"
|
215
|
+
Column | Type | Collation | Nullable | Default
|
216
|
+
---------------+------------------------+-----------+----------+-------------------------------------
|
217
|
+
id | integer | | not null | nextval('costing_id_seq'::regclass)
|
218
|
+
deployment_id | integer | | |
|
219
|
+
type | character varying(100) | | |
|
220
|
+
po_number_id | integer | | |
|
221
|
+
voucher_id | integer | | |
|
222
|
+
Indexes:
|
223
|
+
"costing_pkey" PRIMARY KEY, btree (id)
|
224
|
+
Check constraints:
|
225
|
+
"costing_type_check" CHECK (type::text = ANY (ARRAY['Resource Expansion'::character varying, 'Duration Expansion'::character varying, 'Initial Resource'::character varying]::text[]))
|
226
|
+
Foreign-key constraints:
|
227
|
+
"costing_deployment_id_fkey" FOREIGN KEY (deployment_id) REFERENCES deploymentid(id)
|
228
|
+
"costing_po_number_id_fkey" FOREIGN KEY (po_number_id) REFERENCES purchaseorder(id)
|
229
|
+
"costing_voucher_id_fkey" FOREIGN KEY (voucher_id) REFERENCES grant(id)
|
230
|
+
|
231
|
+
```
|
232
|
+
|
@@ -0,0 +1,216 @@
|
|
1
|
+
# Script for VRA database for Costing
|
2
|
+
|
3
|
+
# Developing
|
4
|
+
1. [Install docker-compose](https://docs.docker.com/compose/install/).
|
5
|
+
2. Docker will run the postgres on port 5455 so, ensure the system has the port available
|
6
|
+
|
7
|
+
```
|
8
|
+
# run pytest testing
|
9
|
+
./developer.sh pytest start
|
10
|
+
|
11
|
+
# run flake8 testing
|
12
|
+
./developer.sh flake8 start
|
13
|
+
|
14
|
+
# delete the testing environment
|
15
|
+
./developer.sh pytest stop
|
16
|
+
|
17
|
+
# delete the flake8 environment
|
18
|
+
./developer.sh flake8 stop
|
19
|
+
```
|
20
|
+
|
21
|
+
|
22
|
+
## Package usage
|
23
|
+
|
24
|
+
- To setup database
|
25
|
+
```
|
26
|
+
from ucampostgresvro import pre_setupconfig
|
27
|
+
from ucampostgresvro.DB import DB
|
28
|
+
db_params = {
|
29
|
+
"dbname": "vrapricing",
|
30
|
+
"user": "postgres",
|
31
|
+
"password": <1Password: vrapricingpostgres>,
|
32
|
+
"host": "infra-db.srv.uis.cam.ac.uk",
|
33
|
+
"port": "5432",
|
34
|
+
"sslmode": "require",
|
35
|
+
"sslrootcert": "./ca.crt", # path to your client certificate
|
36
|
+
}
|
37
|
+
db = DB(db_params)
|
38
|
+
pre_setupconfig(db_params)
|
39
|
+
```
|
40
|
+
- To perform CRUD operation
|
41
|
+
```
|
42
|
+
from ucampostgresvro.DB import DB
|
43
|
+
db_params = {
|
44
|
+
"dbname": "vrapricing",
|
45
|
+
"user": "postgres",
|
46
|
+
"password": <1Password: vrapricingpostgres>,
|
47
|
+
"host": "infra-db.srv.uis.cam.ac.uk",
|
48
|
+
"port": "5432",
|
49
|
+
"sslmode": "require",
|
50
|
+
"sslrootcert": "./ca.crt", # path to your client certificate
|
51
|
+
}
|
52
|
+
db = DB(db_params)
|
53
|
+
|
54
|
+
# CRUD on user DB./
|
55
|
+
|
56
|
+
# create user
|
57
|
+
db.insert_vrauser("ll220", "Ling-Yan Lau")
|
58
|
+
|
59
|
+
# read user
|
60
|
+
print(db.get_vrauser())
|
61
|
+
|
62
|
+
# update user
|
63
|
+
db.update_vrauser("ll220", "bda20", 'Ben Argyle')
|
64
|
+
|
65
|
+
# delete user
|
66
|
+
db.remove_vrauser('bda20')
|
67
|
+
|
68
|
+
# create vra deploymentid
|
69
|
+
db.insert_deployment_id("1231ee112ad11212")
|
70
|
+
|
71
|
+
# read vra deployment id
|
72
|
+
print(db.get_deployment_id("1231a"))
|
73
|
+
|
74
|
+
# update vra deployment id
|
75
|
+
db.update_deployment_id("1231ee112ad1", "1231a")
|
76
|
+
|
77
|
+
# delete vra deployment id
|
78
|
+
db.remove_deployment_id('1231a')
|
79
|
+
|
80
|
+
# create project
|
81
|
+
db.insert_project("0001",1,100.0)
|
82
|
+
|
83
|
+
# read project
|
84
|
+
print(db.get_project())
|
85
|
+
|
86
|
+
# update project
|
87
|
+
db.update_project("0001", "0002", 4, 200)
|
88
|
+
|
89
|
+
# delete project
|
90
|
+
# db.remove_project("0002")
|
91
|
+
|
92
|
+
# create grant
|
93
|
+
db.insert_grant("0001",1,100.0)
|
94
|
+
|
95
|
+
# read grant
|
96
|
+
print(db.get_grant())
|
97
|
+
|
98
|
+
# update grant
|
99
|
+
db.update_grant("0001", "0002", 4, 200)
|
100
|
+
|
101
|
+
# delete grant
|
102
|
+
db.remove_grant("0002")
|
103
|
+
|
104
|
+
# create costing
|
105
|
+
db.insert_costing(2, "Initial Resource", project_id=4, grant_id=None)
|
106
|
+
|
107
|
+
# read costing
|
108
|
+
print(db.get_costing())
|
109
|
+
|
110
|
+
# update costing
|
111
|
+
db.update_costing(2, "Duration Expansion", old_grant_id=4, old_project_id=None, grant_id=4, project_id=None)
|
112
|
+
|
113
|
+
# delete costing
|
114
|
+
db.remove_costing(2, "Duration Expansion", 4, None)
|
115
|
+
|
116
|
+
# to close db connection
|
117
|
+
db.closedb()
|
118
|
+
```
|
119
|
+
|
120
|
+
---
|
121
|
+
### Design
|
122
|
+
|
123
|
+

|
124
|
+
|
125
|
+
## - VRAUSER table
|
126
|
+
```
|
127
|
+
vrapricing=# \d vrauser;
|
128
|
+
Table "public.vrauser"
|
129
|
+
Column | Type | Collation | Nullable | Default
|
130
|
+
--------+------------------------+-----------+----------+-------------------------------------
|
131
|
+
id | integer | | not null | nextval('vrauser_id_seq'::regclass)
|
132
|
+
crsid | character varying(255) | | |
|
133
|
+
name | character varying(255) | | |
|
134
|
+
Indexes:
|
135
|
+
"vrauser_pkey" PRIMARY KEY, btree (id)
|
136
|
+
"vrauser_crsid_key" UNIQUE CONSTRAINT, btree (crsid)
|
137
|
+
Referenced by:
|
138
|
+
TABLE "purchaseorder" CONSTRAINT "purchaseorder_paid_by_fkey" FOREIGN KEY (paid_by) REFERENCES vrauser(id)
|
139
|
+
TABLE "grant" CONSTRAINT "grant_paid_by_fkey" FOREIGN KEY (paid_by) REFERENCES vrauser(id)
|
140
|
+
|
141
|
+
```
|
142
|
+
|
143
|
+
## - VRA Deployment ID tabel
|
144
|
+
```
|
145
|
+
vrapricing=# \d deploymentid;
|
146
|
+
Table "public.deploymentid"
|
147
|
+
Column | Type | Collation | Nullable | Default
|
148
|
+
--------------+-----------------------+-----------+----------+------------------------------------------
|
149
|
+
id | integer | | not null | nextval('deploymentid_id_seq'::regclass)
|
150
|
+
deploymentid | character varying(50) | | |
|
151
|
+
Indexes:
|
152
|
+
"deploymentid_pkey" PRIMARY KEY, btree (id)
|
153
|
+
"deploymentid_deploymentid_key" UNIQUE CONSTRAINT, btree (deploymentid)
|
154
|
+
Referenced by:
|
155
|
+
TABLE "costing" CONSTRAINT "costing_deployment_id_fkey" FOREIGN KEY (deployment_id) REFERENCES deploymentid(id)
|
156
|
+
|
157
|
+
```
|
158
|
+
|
159
|
+
## - project table
|
160
|
+
```
|
161
|
+
vrapricing=# \d projects;
|
162
|
+
Table "public.projects"
|
163
|
+
Column | Type | Collation | Nullable | Default
|
164
|
+
----------------+------------------------+-----------+----------+--------------------------------------
|
165
|
+
id | integer | | not null | nextval('projects_id_seq'::regclass)
|
166
|
+
project_number | character varying(255) | | |
|
167
|
+
paid_by | integer | | |
|
168
|
+
amount | double precision | | not null |
|
169
|
+
Indexes:
|
170
|
+
"projects_pkey" PRIMARY KEY, btree (id)
|
171
|
+
Foreign-key constraints:
|
172
|
+
"projects_paid_by_fkey" FOREIGN KEY (paid_by) REFERENCES vrauser(id)
|
173
|
+
Referenced by:
|
174
|
+
TABLE "costing" CONSTRAINT "costing_project_id_fkey" FOREIGN KEY (project_id) REFERENCES projects(id)
|
175
|
+
|
176
|
+
```
|
177
|
+
|
178
|
+
## - grants table
|
179
|
+
```
|
180
|
+
vrapricing=# \d grant;
|
181
|
+
Table "public.grant"
|
182
|
+
Column | Type | Collation | Nullable | Default
|
183
|
+
----------------+------------------------+-----------+----------+--------------------------------------
|
184
|
+
id | integer | | not null | nextval('grant_id_seq'::regclass)
|
185
|
+
voucher_number | character varying(255) | | |
|
186
|
+
paid_by | integer | | |
|
187
|
+
amount | double precision | | not null |
|
188
|
+
Indexes:
|
189
|
+
"grant_pkey" PRIMARY KEY, btree (id)
|
190
|
+
Foreign-key constraints:
|
191
|
+
"grant_paid_by_fkey" FOREIGN KEY (paid_by) REFERENCES vrauser(id)
|
192
|
+
Referenced by:
|
193
|
+
TABLE "costing" CONSTRAINT "costing_voucher_id_fkey" FOREIGN KEY (voucher_id) REFERENCES grant(id)
|
194
|
+
```
|
195
|
+
|
196
|
+
## - Costing table
|
197
|
+
```
|
198
|
+
vrapricing=# \d costing;
|
199
|
+
Table "public.costing"
|
200
|
+
Column | Type | Collation | Nullable | Default
|
201
|
+
---------------+------------------------+-----------+----------+-------------------------------------
|
202
|
+
id | integer | | not null | nextval('costing_id_seq'::regclass)
|
203
|
+
deployment_id | integer | | |
|
204
|
+
type | character varying(100) | | |
|
205
|
+
po_number_id | integer | | |
|
206
|
+
voucher_id | integer | | |
|
207
|
+
Indexes:
|
208
|
+
"costing_pkey" PRIMARY KEY, btree (id)
|
209
|
+
Check constraints:
|
210
|
+
"costing_type_check" CHECK (type::text = ANY (ARRAY['Resource Expansion'::character varying, 'Duration Expansion'::character varying, 'Initial Resource'::character varying]::text[]))
|
211
|
+
Foreign-key constraints:
|
212
|
+
"costing_deployment_id_fkey" FOREIGN KEY (deployment_id) REFERENCES deploymentid(id)
|
213
|
+
"costing_po_number_id_fkey" FOREIGN KEY (po_number_id) REFERENCES purchaseorder(id)
|
214
|
+
"costing_voucher_id_fkey" FOREIGN KEY (voucher_id) REFERENCES grant(id)
|
215
|
+
|
216
|
+
```
|
@@ -0,0 +1,28 @@
|
|
1
|
+
[project]
|
2
|
+
name = "ucampostgresvro"
|
3
|
+
version = "0.1.0"
|
4
|
+
description = ""
|
5
|
+
authors = [
|
6
|
+
{name = "Ishan Mahajan",email = "mahanishanmahajan@gmail.com"}
|
7
|
+
]
|
8
|
+
readme = "README.md"
|
9
|
+
requires-python = ">=3.10"
|
10
|
+
dependencies = [
|
11
|
+
"psycopg2-binary (>=2.9.10,<3.0.0)"
|
12
|
+
]
|
13
|
+
|
14
|
+
|
15
|
+
[build-system]
|
16
|
+
requires = ["poetry-core>=2.0.0,<3.0.0"]
|
17
|
+
build-backend = "poetry.core.masonry.api"
|
18
|
+
|
19
|
+
[tool.poetry.group.dev.dependencies]
|
20
|
+
pytest = "^8.3.4"
|
21
|
+
flake8 = "^7.1.1"
|
22
|
+
|
23
|
+
|
24
|
+
[[tool.poetry.source]]
|
25
|
+
name = "ucampostgresvro"
|
26
|
+
url = "https://gitlab.developers.cam.ac.uk/uis/infra/ucampostgresvro.git"
|
27
|
+
priority = "primary"
|
28
|
+
|