constec 0.3.0__py3-none-any.whl → 0.3.2__py3-none-any.whl
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.
- constec/db/migrations/0001_initial.py +7 -0
- constec/db/migrations/0002_module_level.py +38 -0
- constec/db/models/__init__.py +3 -1
- constec/db/models/contact.py +3 -0
- constec/db/models/module.py +35 -0
- {constec-0.3.0.dist-info → constec-0.3.2.dist-info}/METADATA +1 -1
- {constec-0.3.0.dist-info → constec-0.3.2.dist-info}/RECORD +10 -9
- {constec-0.3.0.dist-info → constec-0.3.2.dist-info}/WHEEL +0 -0
- {constec-0.3.0.dist-info → constec-0.3.2.dist-info}/licenses/LICENSE +0 -0
- {constec-0.3.0.dist-info → constec-0.3.2.dist-info}/top_level.txt +0 -0
|
@@ -34,6 +34,7 @@ class Migration(migrations.Migration):
|
|
|
34
34
|
],
|
|
35
35
|
options={
|
|
36
36
|
'db_table': 'erp"."entities',
|
|
37
|
+
'verbose_name_plural': 'Entities',
|
|
37
38
|
},
|
|
38
39
|
),
|
|
39
40
|
migrations.CreateModel(
|
|
@@ -121,12 +122,14 @@ class Migration(migrations.Migration):
|
|
|
121
122
|
],
|
|
122
123
|
options={
|
|
123
124
|
'db_table': 'core"."companies',
|
|
125
|
+
'verbose_name_plural': 'Companies',
|
|
124
126
|
},
|
|
125
127
|
),
|
|
126
128
|
migrations.CreateModel(
|
|
127
129
|
name='Contact',
|
|
128
130
|
fields=[
|
|
129
131
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
132
|
+
('label', models.CharField(blank=True, help_text="Optional label (e.g. 'Personal', 'Work')", max_length=100)),
|
|
130
133
|
('value', models.CharField(max_length=255)),
|
|
131
134
|
('metadata', models.JSONField(blank=True, default=dict)),
|
|
132
135
|
('type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contacts', to='constec_db.contacttype')),
|
|
@@ -377,6 +380,8 @@ class Migration(migrations.Migration):
|
|
|
377
380
|
],
|
|
378
381
|
options={
|
|
379
382
|
'db_table': 'core"."tag_categories',
|
|
383
|
+
'verbose_name': 'Tag category',
|
|
384
|
+
'verbose_name_plural': 'Tag categories',
|
|
380
385
|
},
|
|
381
386
|
),
|
|
382
387
|
migrations.AddField(
|
|
@@ -435,6 +440,8 @@ class Migration(migrations.Migration):
|
|
|
435
440
|
],
|
|
436
441
|
options={
|
|
437
442
|
'db_table': 'core"."user_company_access',
|
|
443
|
+
'verbose_name': 'User company access',
|
|
444
|
+
'verbose_name_plural': 'User company access',
|
|
438
445
|
},
|
|
439
446
|
),
|
|
440
447
|
migrations.AddIndex(
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from django.db import migrations, models
|
|
2
|
+
import django.db.models.deletion
|
|
3
|
+
import uuid
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('constec_db', '0001_initial'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AddField(
|
|
14
|
+
model_name='module',
|
|
15
|
+
name='level',
|
|
16
|
+
field=models.CharField(
|
|
17
|
+
choices=[('organization', 'Organization Level'), ('company', 'Company Level')],
|
|
18
|
+
default='company',
|
|
19
|
+
max_length=20,
|
|
20
|
+
),
|
|
21
|
+
),
|
|
22
|
+
migrations.CreateModel(
|
|
23
|
+
name='OrganizationModule',
|
|
24
|
+
fields=[
|
|
25
|
+
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
26
|
+
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
27
|
+
('updated_at', models.DateTimeField(auto_now=True)),
|
|
28
|
+
('is_enabled', models.BooleanField(default=True)),
|
|
29
|
+
('settings', models.JSONField(blank=True, default=dict)),
|
|
30
|
+
('module', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='organization_modules', to='constec_db.module')),
|
|
31
|
+
('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='organization_modules', to='constec_db.organization')),
|
|
32
|
+
],
|
|
33
|
+
options={
|
|
34
|
+
'db_table': 'core"."organization_modules',
|
|
35
|
+
'unique_together': {('organization', 'module')},
|
|
36
|
+
},
|
|
37
|
+
),
|
|
38
|
+
]
|
constec/db/models/__init__.py
CHANGED
|
@@ -24,7 +24,7 @@ from .person import Person
|
|
|
24
24
|
from .group import UserGroup
|
|
25
25
|
from .contact import ContactType, Contact, PersonContact
|
|
26
26
|
from .tag import TagCategory, PersonTag, PersonTagged
|
|
27
|
-
from .module import Module, CompanyModule
|
|
27
|
+
from .module import Module, ModuleLevel, CompanyModule, OrganizationModule
|
|
28
28
|
|
|
29
29
|
# ERP models (erp schema)
|
|
30
30
|
from .erp import System, CompanySystem, Connection
|
|
@@ -69,7 +69,9 @@ __all__ = [
|
|
|
69
69
|
'PersonTagged',
|
|
70
70
|
# Module
|
|
71
71
|
'Module',
|
|
72
|
+
'ModuleLevel',
|
|
72
73
|
'CompanyModule',
|
|
74
|
+
'OrganizationModule',
|
|
73
75
|
# ERP (erp schema)
|
|
74
76
|
'System',
|
|
75
77
|
'CompanySystem',
|
constec/db/models/contact.py
CHANGED
|
@@ -23,6 +23,7 @@ class Contact(UUIDModel):
|
|
|
23
23
|
on_delete=models.CASCADE,
|
|
24
24
|
related_name="contacts",
|
|
25
25
|
)
|
|
26
|
+
label = models.CharField(max_length=100, blank=True, help_text="Optional label (e.g. 'Personal', 'Work')")
|
|
26
27
|
value = models.CharField(max_length=255)
|
|
27
28
|
metadata = models.JSONField(default=dict, blank=True)
|
|
28
29
|
|
|
@@ -31,6 +32,8 @@ class Contact(UUIDModel):
|
|
|
31
32
|
db_table = 'core"."contacts'
|
|
32
33
|
|
|
33
34
|
def __str__(self):
|
|
35
|
+
if self.label:
|
|
36
|
+
return f"{self.label}: {self.value} ({self.type.name})"
|
|
34
37
|
return f"{self.value} ({self.type.name})"
|
|
35
38
|
|
|
36
39
|
|
constec/db/models/module.py
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
from django.db import models
|
|
2
2
|
from .base import UUIDModel
|
|
3
3
|
from .company import Company
|
|
4
|
+
from .organization import Organization
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ModuleLevel(models.TextChoices):
|
|
8
|
+
ORGANIZATION = 'organization', 'Organization Level'
|
|
9
|
+
COMPANY = 'company', 'Company Level'
|
|
4
10
|
|
|
5
11
|
|
|
6
12
|
class Module(UUIDModel):
|
|
@@ -10,6 +16,11 @@ class Module(UUIDModel):
|
|
|
10
16
|
description = models.TextField(blank=True, null=True)
|
|
11
17
|
version = models.CharField(max_length=20)
|
|
12
18
|
is_active = models.BooleanField(default=True)
|
|
19
|
+
level = models.CharField(
|
|
20
|
+
max_length=20,
|
|
21
|
+
choices=ModuleLevel.choices,
|
|
22
|
+
default=ModuleLevel.COMPANY,
|
|
23
|
+
)
|
|
13
24
|
|
|
14
25
|
class Meta:
|
|
15
26
|
app_label = 'constec_db'
|
|
@@ -41,3 +52,27 @@ class CompanyModule(UUIDModel):
|
|
|
41
52
|
|
|
42
53
|
def __str__(self):
|
|
43
54
|
return f"{self.company.name} - {self.module.name}"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class OrganizationModule(UUIDModel):
|
|
58
|
+
"""Modules enabled per organization."""
|
|
59
|
+
organization = models.ForeignKey(
|
|
60
|
+
Organization,
|
|
61
|
+
on_delete=models.CASCADE,
|
|
62
|
+
related_name="organization_modules",
|
|
63
|
+
)
|
|
64
|
+
module = models.ForeignKey(
|
|
65
|
+
Module,
|
|
66
|
+
on_delete=models.CASCADE,
|
|
67
|
+
related_name="organization_modules",
|
|
68
|
+
)
|
|
69
|
+
is_enabled = models.BooleanField(default=True)
|
|
70
|
+
settings = models.JSONField(default=dict, blank=True)
|
|
71
|
+
|
|
72
|
+
class Meta:
|
|
73
|
+
app_label = 'constec_db'
|
|
74
|
+
db_table = 'core"."organization_modules'
|
|
75
|
+
unique_together = [['organization', 'module']]
|
|
76
|
+
|
|
77
|
+
def __str__(self):
|
|
78
|
+
return f"{self.organization.name} - {self.module.name}"
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
constec/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
constec/db/__init__.py,sha256=wou_y3aqCg1xP8Gr13FKRy0kEI2avV-19G3P2g3bzjs,287
|
|
3
3
|
constec/db/apps.py,sha256=zc-9lGNa049q9bvxV7957EwnZjuBozPLZq594cKAU24,221
|
|
4
|
-
constec/db/migrations/0001_initial.py,sha256=
|
|
4
|
+
constec/db/migrations/0001_initial.py,sha256=ru0auCkdz83Qu3e7hGX24WjZXAlM6fE7RZtgAnzANzQ,28979
|
|
5
|
+
constec/db/migrations/0002_module_level.py,sha256=Es27KUOuI_qrlyL8xBTjwsJJHVduAErNxn4Sdi0a-0w,1526
|
|
5
6
|
constec/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
constec/db/models/__init__.py,sha256=
|
|
7
|
+
constec/db/models/__init__.py,sha256=1jnyjSYHkBbAxAkrPDieRP2zG5QIDHXeNC57q77r_ZE,2210
|
|
7
8
|
constec/db/models/base.py,sha256=1t_eYXYyggoL5fKLcitRPKr1qUE1Ql3_sOmSHQMD3QE,359
|
|
8
9
|
constec/db/models/company.py,sha256=9Mr2Q9iSwu4bhp_4KPZqZy4ciJ62rI_AxFWSs1wGGhE,1097
|
|
9
|
-
constec/db/models/contact.py,sha256=
|
|
10
|
+
constec/db/models/contact.py,sha256=VJ66YgzCqp09dzYM5IK9rZZV1jqBepJQO8YK28gA98k,2106
|
|
10
11
|
constec/db/models/erp.py,sha256=sN0U0XCMNW-pc9CNLZG_kPZeWXznq_XU3ML2zJ3arjA,3518
|
|
11
12
|
constec/db/models/erp_entity.py,sha256=aussrOd7kyNaP2tRJ5SS_WLzpXcZ-SyBa7KnSCkL89g,3954
|
|
12
13
|
constec/db/models/flow.py,sha256=K_UA7E4zJ2-UPNp5H9e-lfPeGn0wDEiOl0cRal4Dmb8,4414
|
|
13
14
|
constec/db/models/group.py,sha256=ueCOIfpmzR683ojWf5vLb6IG_jawfVRM7IJcGK05I3Y,897
|
|
14
|
-
constec/db/models/module.py,sha256=
|
|
15
|
+
constec/db/models/module.py,sha256=iWz0ddrkWnYpLXsC0dR2Y1sI09Zdo_DKY6AboDkLKmY,2240
|
|
15
16
|
constec/db/models/organization.py,sha256=9dbsh5UBShtDRAeyMqqQEPEaflhzS3aiZpRWUiEluBU,1731
|
|
16
17
|
constec/db/models/person.py,sha256=B4BNdy2AgqmxrZrkWWvqnFxFHs4uO1n61Y_5sP6MsUo,848
|
|
17
18
|
constec/db/models/session.py,sha256=HeIk5rK25IaxKBRX-XNuJ75ndjJZ08rAdSGTLvTwlLE,2695
|
|
@@ -24,8 +25,8 @@ constec/shared/exceptions.py,sha256=8Bih40RWoH0gVhto09mH2ppSQV_drHPnGWITcoD-0J0,
|
|
|
24
25
|
constec/utils/__init__.py,sha256=brf-G4UvU-3CK_rKNPTaHwsVsxnoJSbml_QTZJSM7d0,458
|
|
25
26
|
constec/utils/cuit.py,sha256=dQKGlA4pRQ5DyR-N4BiV8ZsvAle2Vgjif7PU72zHx_A,2753
|
|
26
27
|
constec/utils/password.py,sha256=XNpTJ9xZQSoZNjXEAnexAEZuYkwW1dFgX4AY-B5Q0gA,1462
|
|
27
|
-
constec-0.3.
|
|
28
|
-
constec-0.3.
|
|
29
|
-
constec-0.3.
|
|
30
|
-
constec-0.3.
|
|
31
|
-
constec-0.3.
|
|
28
|
+
constec-0.3.2.dist-info/licenses/LICENSE,sha256=a1R51ONDGq0UQfV-n3ybsNL7EGhcC2sQ1sXvRANaFVI,1064
|
|
29
|
+
constec-0.3.2.dist-info/METADATA,sha256=J0XmkG2ci3GLLWw8hYT6Kui7z8-xRhNibdA5eYlLF90,2954
|
|
30
|
+
constec-0.3.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
31
|
+
constec-0.3.2.dist-info/top_level.txt,sha256=bQ9AydOLlthShsr7tA7t7ivbLvlLPdhHOo0BdWgnh_Y,8
|
|
32
|
+
constec-0.3.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|