Skip to content

Commit c4c5924

Browse files
committed
Added Version / UserAdditionalInfo entities
1 parent 1838e91 commit c4c5924

File tree

2 files changed

+126
-0
lines changed

2 files changed

+126
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Generated by Django 5.1.3 on 2024-11-17 15:30
2+
3+
import django.db.models.deletion
4+
from django.conf import settings
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('ifc_validation_models', '0002_modelinstance_modelid_stepfileid_ifctype'),
12+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name='Version',
18+
fields=[
19+
('created', models.DateTimeField(auto_now_add=True, help_text='Timestamp this instance was created.')),
20+
('updated', models.DateTimeField(blank=True, help_text='Timestamp this instance was last updated.', null=True)),
21+
('id', models.AutoField(help_text='Identifier of the Version (auto-generated).', primary_key=True, serialize=False)),
22+
('name', models.CharField(db_index=True, help_text='Name of the Version, eg. 0.6.8', max_length=50, unique=True)),
23+
('released', models.DateTimeField(help_text='Timestamp the Version was released.')),
24+
('release_notes', models.TextField(blank=True, help_text='Description or URL of the Release Notes.', max_length=255, null=True)),
25+
],
26+
options={
27+
'verbose_name': 'Version',
28+
'verbose_name_plural': 'Versions',
29+
'db_table': 'ifc_version',
30+
},
31+
),
32+
migrations.CreateModel(
33+
name='UserAdditionalInfo',
34+
fields=[
35+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
36+
('created', models.DateTimeField(auto_now_add=True, help_text='Timestamp this instance was created.')),
37+
('updated', models.DateTimeField(blank=True, help_text='Timestamp this instance was last updated.', null=True)),
38+
('is_vendor', models.BooleanField(blank=True, help_text='Whether this user belongs to an Authoring Tool vendor (optional)', null=True)),
39+
('company', models.OneToOneField(blank=True, help_text='What Company the User belongs to (optional)', null=True, on_delete=django.db.models.deletion.CASCADE, to='ifc_validation_models.company')),
40+
('created_by', models.ForeignKey(help_text='Who created this instance', on_delete=django.db.models.deletion.RESTRICT, related_name='+', to=settings.AUTH_USER_MODEL)),
41+
('updated_by', models.ForeignKey(blank=True, help_text='Who updated this instance.', null=True, on_delete=django.db.models.deletion.RESTRICT, related_name='+', to=settings.AUTH_USER_MODEL)),
42+
('user', models.OneToOneField(help_text='What User this additional info belongs to', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
43+
],
44+
options={
45+
'verbose_name': 'User Additional Info',
46+
'verbose_name_plural': 'User Additional Info',
47+
'db_table': 'ifc_user_aditional_info',
48+
},
49+
),
50+
]

models.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,38 @@ def __str__(self):
230230
return f'{self.name}'
231231

232232

233+
class UserAdditionalInfo(AuditedBaseModel):
234+
"""
235+
A model to store and track additional User fields.
236+
"""
237+
238+
user = models.OneToOneField(
239+
User,
240+
on_delete=models.CASCADE,
241+
help_text='What User this additional info belongs to'
242+
)
243+
244+
is_vendor = models.BooleanField(
245+
null=True,
246+
blank=True,
247+
help_text='Whether this user belongs to an Authoring Tool vendor (optional)'
248+
)
249+
250+
company = models.OneToOneField(
251+
Company,
252+
null=True,
253+
blank=True,
254+
on_delete=models.CASCADE,
255+
help_text='What Company the User belongs to (optional)'
256+
)
257+
258+
class Meta:
259+
260+
db_table = "ifc_user_aditional_info"
261+
verbose_name = "User Additional Info"
262+
verbose_name_plural = "User Additional Info"
263+
264+
233265
class AuthoringTool(TimestampedBaseModel):
234266
"""
235267
A model to store and track Authoring Tool information.
@@ -1158,6 +1190,50 @@ def determine_severity(self):
11581190
raise ValueError(f"Outcome code '{self.name}' not recognized")
11591191

11601192

1193+
class Version(TimestampedBaseModel):
1194+
1195+
"""
1196+
A model to store and track Validation Service software versions.
1197+
"""
1198+
1199+
id = models.AutoField(
1200+
primary_key=True,
1201+
help_text="Identifier of the Version (auto-generated)."
1202+
)
1203+
1204+
name = models.CharField(
1205+
max_length=50,
1206+
null=False,
1207+
blank=False,
1208+
unique=True,
1209+
db_index=True,
1210+
help_text="Name of the Version, eg. 0.6.8"
1211+
)
1212+
1213+
released = models.DateTimeField(
1214+
null=False,
1215+
blank=False,
1216+
help_text="Timestamp the Version was released."
1217+
)
1218+
1219+
release_notes = models.TextField(
1220+
max_length=255,
1221+
null=True,
1222+
blank=True,
1223+
help_text="Description or URL of the Release Notes (optional)."
1224+
)
1225+
1226+
class Meta:
1227+
1228+
db_table = "ifc_version"
1229+
verbose_name = "Version"
1230+
verbose_name_plural = "Versions"
1231+
1232+
def __str__(self):
1233+
1234+
return f'{self.name}'
1235+
1236+
11611237
id_prefix_mapping = {
11621238
Model: 'm',
11631239
ModelInstance: 'i',

0 commit comments

Comments
 (0)