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_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):
|
||||
STORAGE_TYPE_UNENCRYPTED = "unencrypted"
|
||||
@ -185,6 +208,15 @@ class Document(ModelWithOwner):
|
||||
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"),
|
||||
max_length=32,
|
||||
@ -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):
|
||||
return Tag.objects.all()
|
||||
|
||||
class WarehousesField(serializers.PrimaryKeyRelatedField):
|
||||
def get_queryset(self):
|
||||
return Warehouse.objects.all()
|
||||
|
||||
class DocumentTypeField(serializers.PrimaryKeyRelatedField):
|
||||
def get_queryset(self):
|
||||
@ -653,6 +656,7 @@ class DocumentSerializer(
|
||||
):
|
||||
correspondent = CorrespondentField(allow_null=True)
|
||||
tags = TagsField(many=True)
|
||||
warehouses = WarehousesField(allow_null=True)
|
||||
document_type = DocumentTypeField(allow_null=True)
|
||||
storage_path = StoragePathField(allow_null=True)
|
||||
|
||||
@ -774,6 +778,7 @@ class DocumentSerializer(
|
||||
"title",
|
||||
"content",
|
||||
"tags",
|
||||
"warehouses",
|
||||
"created",
|
||||
"created_date",
|
||||
"modified",
|
||||
@ -1751,15 +1756,18 @@ class WorkflowSerializer(serializers.ModelSerializer):
|
||||
|
||||
|
||||
class WarehouseSerializer(MatchingModelSerializer, OwnedObjectSerializer):
|
||||
parent_warehouse_reference = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Warehouse
|
||||
fields = '__all__'
|
||||
|
||||
def get_parent_warehouse_reference(self, obj):
|
||||
if obj.parent_warehouse:
|
||||
return WarehouseSerializer(obj.parent_warehouse).data
|
||||
return None
|
||||
def to_representation(self, instance):
|
||||
data = super().to_representation(instance)
|
||||
if instance.parent_warehouse:
|
||||
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
|
||||
|
||||
queryset = Warehouse.objects.select_related("owner").order_by(
|
||||
@ -1774,5 +1774,5 @@ class WarehouseViewSet(ModelViewSet):
|
||||
ObjectOwnedOrGrantedPermissionsFilter,
|
||||
)
|
||||
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