amsdal_crm 0.2.1__tar.gz → 0.2.2__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.
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/PKG-INFO +1 -1
- amsdal_crm-0.2.2/amsdal_crm/__about__.py +1 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/migrations/0000_initial.py +4 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/models/entity.py +12 -0
- amsdal_crm-0.2.1/amsdal_crm/__about__.py +0 -1
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/.amsdal/.environment +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/.amsdal-cli +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/.github/workflows/ci.yml +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/.github/workflows/release.yml +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/.github/workflows/tag_check.yml +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/.gitignore +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/CLAUDE.md +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/README.md +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/RELEASE.md +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/Third-Party Materials - AMSDAL Dependencies - License Notices.md +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/app.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/constants.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/errors.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/fixtures/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/fixtures/permissions.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/fixtures/pipelines.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/lifecycle/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/lifecycle/consumer.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/models/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/models/activity.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/models/attachment.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/models/custom_field_definition.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/models/deal.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/models/pipeline.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/models/stage.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/models/workflow_rule.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/services/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/services/activity_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/services/custom_field_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/services/deal_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/services/email_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/services/workflow_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/amsdal_crm/settings.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/config.yml +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/license_check.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/pyproject.toml +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/scripts/release.sh +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/scripts/tag_check.sh +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/conftest.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/integration/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/integration/conftest.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/integration/services/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/integration/services/test_deal_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/integration/services/test_email_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/integration/services/test_workflow_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/conftest.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/lifecycle/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/lifecycle/test_consumer.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/models/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/models/test_activity.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/models/test_deal.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/models/test_entity.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/models/test_pipeline.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/models/test_remaining.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/models/test_stage.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/services/__init__.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/services/test_activity_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/services/test_custom_field_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/services/test_deal_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/services/test_email_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/services/test_workflow_service.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/test_app.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/test_constants.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/test_errors.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/tests/unit/test_settings.py +0 -0
- {amsdal_crm-0.2.1 → amsdal_crm-0.2.2}/uv.lock +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.2.2'
|
|
@@ -107,6 +107,7 @@ class Migration(migrations.Migration):
|
|
|
107
107
|
"postal_code": {"type": "string", "title": "Postal Code"},
|
|
108
108
|
"country": {"type": "string", "title": "Country"},
|
|
109
109
|
"is_primary": {"type": "boolean", "default": False, "title": "Is Primary"},
|
|
110
|
+
"custom_fields": {"type": "anything", "title": "Custom Fields"},
|
|
110
111
|
},
|
|
111
112
|
"custom_code": 'async def apre_create(self) -> None:\n """Async hook called before creating account."""\n if self.custom_fields:\n from amsdal_crm.services.custom_field_service import CustomFieldService\n self.custom_fields = await CustomFieldService.avalidate_custom_fields(\'EntityAddress\', self.custom_fields)\n await super().apre_create()\n\nasync def apre_update(self) -> None:\n """Async hook called before updating account."""\n if self.custom_fields:\n from amsdal_crm.services.custom_field_service import CustomFieldService\n self.custom_fields = await CustomFieldService.avalidate_custom_fields(\'EntityAddress\', self.custom_fields)\n await super().apre_update()\n\ndef pre_create(self) -> None:\n """Hook called before creating account."""\n if self.custom_fields:\n from amsdal_crm.services.custom_field_service import CustomFieldService\n self.custom_fields = CustomFieldService.validate_custom_fields(\'EntityAddress\', self.custom_fields)\n super().pre_create()\n\ndef pre_update(self) -> None:\n """Hook called before updating account."""\n if self.custom_fields:\n from amsdal_crm.services.custom_field_service import CustomFieldService\n self.custom_fields = CustomFieldService.validate_custom_fields(\'EntityAddress\', self.custom_fields)\n super().pre_update()',
|
|
112
113
|
"storage_metadata": {
|
|
@@ -375,6 +376,7 @@ class Migration(migrations.Migration):
|
|
|
375
376
|
"value": {"type": "string", "title": "Contact Point Value"},
|
|
376
377
|
"is_primary": {"type": "boolean", "default": False, "title": "Is Primary"},
|
|
377
378
|
"can_contact": {"type": "boolean", "default": True, "title": "Can Contact"},
|
|
379
|
+
"custom_fields": {"type": "anything", "title": "Custom Fields"},
|
|
378
380
|
"entity": {
|
|
379
381
|
"type": "Entity",
|
|
380
382
|
"title": "Entity",
|
|
@@ -402,6 +404,7 @@ class Migration(migrations.Migration):
|
|
|
402
404
|
"value": {"type": "string", "title": "Identifier Value"},
|
|
403
405
|
"country": {"type": "string", "title": "Country"},
|
|
404
406
|
"is_primary": {"type": "boolean", "default": False, "title": "Is Primary"},
|
|
407
|
+
"custom_fields": {"type": "anything", "title": "Custom Fields"},
|
|
405
408
|
"entity": {
|
|
406
409
|
"type": "Entity",
|
|
407
410
|
"title": "Entity",
|
|
@@ -429,6 +432,7 @@ class Migration(migrations.Migration):
|
|
|
429
432
|
"start_date": {"type": "string", "title": "Start Date"},
|
|
430
433
|
"end_date": {"type": "string", "title": "End Date"},
|
|
431
434
|
"relationship_group_name": {"type": "string", "title": "Relationship Group Name"},
|
|
435
|
+
"custom_fields": {"type": "anything", "title": "Custom Fields"},
|
|
432
436
|
"from_entity": {
|
|
433
437
|
"type": "Entity",
|
|
434
438
|
"title": "From Entity",
|
|
@@ -125,6 +125,9 @@ class EntityRelationship(TimestampMixin, Model):
|
|
|
125
125
|
end_date: str | None = Field(default=None, title='End Date')
|
|
126
126
|
relationship_group_name: str | None = Field(default=None, title='Relationship Group Name')
|
|
127
127
|
|
|
128
|
+
# Custom fields (JSON)
|
|
129
|
+
custom_fields: dict[str, Any] | None = Field(default=None, title='Custom Fields')
|
|
130
|
+
|
|
128
131
|
def pre_create(self) -> None:
|
|
129
132
|
"""Hook called before creating account."""
|
|
130
133
|
if self.custom_fields:
|
|
@@ -178,6 +181,9 @@ class EntityIdentifier(TimestampMixin, Model):
|
|
|
178
181
|
# TODO: validate one per entity
|
|
179
182
|
is_primary: bool = Field(default=False, title='Is Primary')
|
|
180
183
|
|
|
184
|
+
# Custom fields (JSON)
|
|
185
|
+
custom_fields: dict[str, Any] | None = Field(default=None, title='Custom Fields')
|
|
186
|
+
|
|
181
187
|
def pre_create(self) -> None:
|
|
182
188
|
"""Hook called before creating account."""
|
|
183
189
|
if self.custom_fields:
|
|
@@ -231,6 +237,9 @@ class EntityContactPoint(TimestampMixin, Model):
|
|
|
231
237
|
is_primary: bool = Field(default=False, title='Is Primary')
|
|
232
238
|
can_contact: bool = Field(default=True, title='Can Contact')
|
|
233
239
|
|
|
240
|
+
# Custom fields (JSON)
|
|
241
|
+
custom_fields: dict[str, Any] | None = Field(default=None, title='Custom Fields')
|
|
242
|
+
|
|
234
243
|
def pre_create(self) -> None:
|
|
235
244
|
"""Hook called before creating account."""
|
|
236
245
|
if self.custom_fields:
|
|
@@ -287,6 +296,9 @@ class EntityAddress(TimestampMixin, Model):
|
|
|
287
296
|
# TODO: validate one per entity
|
|
288
297
|
is_primary: bool = Field(default=False, title='Is Primary')
|
|
289
298
|
|
|
299
|
+
# Custom fields (JSON)
|
|
300
|
+
custom_fields: dict[str, Any] | None = Field(default=None, title='Custom Fields')
|
|
301
|
+
|
|
290
302
|
def pre_create(self) -> None:
|
|
291
303
|
"""Hook called before creating account."""
|
|
292
304
|
if self.custom_fields:
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.2.1'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|