You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.6 KiB
38 lines
1.6 KiB
from django.db import models |
|
from django.db.models import Q |
|
from finance.models.base import TimestampedModel |
|
|
|
|
|
class ImportBatch(TimestampedModel): |
|
document_hash = models.CharField(max_length=64) |
|
source_format = models.CharField(max_length=16) |
|
profile = models.CharField(max_length=32) |
|
parser_version = models.CharField(max_length=32, default="1") |
|
encoding = models.CharField(max_length=32) |
|
context = models.JSONField(default=dict) |
|
section_mapping = models.JSONField(default=dict) |
|
summary = models.JSONField(default=dict) |
|
snapshot = models.JSONField(default=dict) |
|
actor_kind = models.CharField(max_length=16) |
|
actor_identifier = models.CharField(max_length=200) |
|
state = models.CharField(max_length=16, default="PREVIEW") |
|
revision = models.PositiveIntegerField(default=1) |
|
result = models.JSONField(default=dict) |
|
|
|
class Meta: |
|
constraints = [ |
|
models.CheckConstraint(condition=Q(state__in=["PREVIEW", "COMMITTED", "CANCELLED"]), name="import_batch_state"), |
|
models.CheckConstraint(condition=Q(revision__gte=1), name="import_batch_revision"), |
|
] |
|
|
|
|
|
class ImportItem(TimestampedModel): |
|
batch = models.ForeignKey(ImportBatch, on_delete=models.PROTECT, related_name="items") |
|
locator = models.CharField(max_length=255) |
|
candidate = models.JSONField() |
|
issues = models.JSONField(default=list) |
|
duplicates = models.JSONField(default=dict) |
|
decision = models.JSONField(default=dict) |
|
|
|
class Meta: |
|
constraints = [models.UniqueConstraint(fields=["batch", "locator"], name="import_item_locator_unique")]
|
|
|