bugfix/Warehouse
This commit is contained in:
parent
53326c579d
commit
9d4d0b39a6
@ -0,0 +1,35 @@
|
|||||||
|
# Generated by Django 4.2.11 on 2024-05-16 04:35
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('documents', '1046_workflowaction_remove_all_correspondents_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Warehouse',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=256, unique=True, verbose_name='name')),
|
||||||
|
('type', models.CharField(blank=True, choices=[('Warehouse', 'Warehouse'), ('Shelf', 'Shelf'), ('Boxcase', 'Boxcase')], default='Warehouse', max_length=20, null=True)),
|
||||||
|
('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='owner')),
|
||||||
|
('parent_warehouse', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='parent_warehouses', to='documents.warehouse')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'warehouse',
|
||||||
|
'verbose_name_plural': 'warehouses',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='document',
|
||||||
|
name='warehouses',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='documents', to='documents.warehouse', verbose_name='warehouses'),
|
||||||
|
),
|
||||||
|
]
|
@ -129,6 +129,29 @@ class StoragePath(MatchingModel):
|
|||||||
verbose_name = _("storage path")
|
verbose_name = _("storage path")
|
||||||
verbose_name_plural = _("storage paths")
|
verbose_name_plural = _("storage paths")
|
||||||
|
|
||||||
|
class Warehouse(ModelWithOwner):
|
||||||
|
|
||||||
|
WAREHOUSE = "Warehouse"
|
||||||
|
SHELF = "Shelf"
|
||||||
|
BOXCASE = "Boxcase"
|
||||||
|
TYPE_WAREHOUSE = (
|
||||||
|
(WAREHOUSE, _("Warehouse")),
|
||||||
|
(SHELF, _("Shelf")),
|
||||||
|
(BOXCASE, _("Boxcase")),
|
||||||
|
)
|
||||||
|
|
||||||
|
name = models.CharField(_("name"), max_length=256, unique=True)
|
||||||
|
type = models.CharField(max_length=20, null=True, blank=True,
|
||||||
|
choices=TYPE_WAREHOUSE,
|
||||||
|
default=WAREHOUSE,)
|
||||||
|
parent_warehouse = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name="parent_warehouses" )
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _("warehouse")
|
||||||
|
verbose_name_plural = _("warehouses")
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
class Document(ModelWithOwner):
|
class Document(ModelWithOwner):
|
||||||
STORAGE_TYPE_UNENCRYPTED = "unencrypted"
|
STORAGE_TYPE_UNENCRYPTED = "unencrypted"
|
||||||
@ -184,6 +207,15 @@ class Document(ModelWithOwner):
|
|||||||
blank=True,
|
blank=True,
|
||||||
verbose_name=_("tags"),
|
verbose_name=_("tags"),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
warehouses = models.ForeignKey(
|
||||||
|
Warehouse,
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
related_name="documents",
|
||||||
|
on_delete=models.SET_NULL,
|
||||||
|
verbose_name=_("warehouses"),
|
||||||
|
)
|
||||||
|
|
||||||
checksum = models.CharField(
|
checksum = models.CharField(
|
||||||
_("checksum"),
|
_("checksum"),
|
||||||
@ -1241,26 +1273,3 @@ class Workflow(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Warehouse(ModelWithOwner):
|
|
||||||
|
|
||||||
WAREHOUSE = "Warehouse"
|
|
||||||
SHELF = "Shelf"
|
|
||||||
BOXCASE = "Boxcase"
|
|
||||||
TYPE_WAREHOUSE = (
|
|
||||||
(WAREHOUSE, _("Warehouse")),
|
|
||||||
(SHELF, _("Shelf")),
|
|
||||||
(BOXCASE, _("Boxcase")),
|
|
||||||
)
|
|
||||||
|
|
||||||
name = models.CharField(_("name"), max_length=256, unique=True)
|
|
||||||
type = models.CharField(max_length=20, null=True, blank=True,
|
|
||||||
choices=TYPE_WAREHOUSE,
|
|
||||||
default=WAREHOUSE,)
|
|
||||||
parent_warehouse = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name="parent_warehouses" )
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
verbose_name = _("warehouse")
|
|
||||||
verbose_name_plural = _("warehouses")
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.name
|
|
@ -428,6 +428,9 @@ class TagsField(serializers.PrimaryKeyRelatedField):
|
|||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return Tag.objects.all()
|
return Tag.objects.all()
|
||||||
|
|
||||||
|
class WarehousesField(serializers.PrimaryKeyRelatedField):
|
||||||
|
def get_queryset(self):
|
||||||
|
return Warehouse.objects.all()
|
||||||
|
|
||||||
class DocumentTypeField(serializers.PrimaryKeyRelatedField):
|
class DocumentTypeField(serializers.PrimaryKeyRelatedField):
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
@ -653,6 +656,7 @@ class DocumentSerializer(
|
|||||||
):
|
):
|
||||||
correspondent = CorrespondentField(allow_null=True)
|
correspondent = CorrespondentField(allow_null=True)
|
||||||
tags = TagsField(many=True)
|
tags = TagsField(many=True)
|
||||||
|
warehouses = WarehousesField(allow_null=True)
|
||||||
document_type = DocumentTypeField(allow_null=True)
|
document_type = DocumentTypeField(allow_null=True)
|
||||||
storage_path = StoragePathField(allow_null=True)
|
storage_path = StoragePathField(allow_null=True)
|
||||||
|
|
||||||
@ -774,6 +778,7 @@ class DocumentSerializer(
|
|||||||
"title",
|
"title",
|
||||||
"content",
|
"content",
|
||||||
"tags",
|
"tags",
|
||||||
|
"warehouses",
|
||||||
"created",
|
"created",
|
||||||
"created_date",
|
"created_date",
|
||||||
"modified",
|
"modified",
|
||||||
@ -1751,15 +1756,18 @@ class WorkflowSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
|
|
||||||
class WarehouseSerializer(MatchingModelSerializer, OwnedObjectSerializer):
|
class WarehouseSerializer(MatchingModelSerializer, OwnedObjectSerializer):
|
||||||
parent_warehouse_reference = serializers.SerializerMethodField()
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Warehouse
|
model = Warehouse
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
def get_parent_warehouse_reference(self, obj):
|
def to_representation(self, instance):
|
||||||
if obj.parent_warehouse:
|
data = super().to_representation(instance)
|
||||||
return WarehouseSerializer(obj.parent_warehouse).data
|
if instance.parent_warehouse:
|
||||||
return None
|
data['parent_warehouse'] = WarehouseSerializer(instance.parent_warehouse).data
|
||||||
|
else:
|
||||||
|
data['parent_warehouse'] = None
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1758,7 +1758,7 @@ class SystemStatusView(PassUserMixin):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class WarehouseViewSet(ModelViewSet):
|
class WarehouseViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
|
||||||
model = Warehouse
|
model = Warehouse
|
||||||
|
|
||||||
queryset = Warehouse.objects.select_related("owner").order_by(
|
queryset = Warehouse.objects.select_related("owner").order_by(
|
||||||
@ -1774,5 +1774,5 @@ class WarehouseViewSet(ModelViewSet):
|
|||||||
ObjectOwnedOrGrantedPermissionsFilter,
|
ObjectOwnedOrGrantedPermissionsFilter,
|
||||||
)
|
)
|
||||||
filterset_class = WarehouseFilterSet
|
filterset_class = WarehouseFilterSet
|
||||||
ordering_fields = ("name", "type", "parent_warehouse")
|
ordering_fields = ("name", "type", "parent_warehouse", "document_count")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user