feat: 选项

This commit is contained in:
Czw 2021-11-10 23:44:25 +08:00
parent 396fafd8a9
commit 5098177a37
5 changed files with 279 additions and 5 deletions

View file

@ -166,5 +166,6 @@ class GoodsUnit(Model):
__all__ = [
'Warehouse', 'Client', 'Supplier', 'Account',
'ChargeItem', 'ClientCategory', 'SupplierCategory', 'GoodsCategory', 'GoodsUnit',
'ChargeItem', 'ClientCategory', 'SupplierCategory',
'GoodsCategory', 'GoodsUnit',
]

View file

@ -1,6 +1,33 @@
from extensions.permissions import InterfacePermission
from extensions.permissions import BasePermission
from apps.system.permissions import *
from apps.data.permissions import *
from apps.goods.permissions import *
# System
RoleOptionPermission = BasePermission
UserOptionPermission = BasePermission
# Data
WarehouseOptionPermission = BasePermission
ClientOptionPermission = BasePermission
SupplierOptionPermission = BasePermission
AccountOptionPermission = BasePermission
ChargeItemOptionPermission = BasePermission
ClientCategoryOptionPermission = BasePermission
SupplierCategoryOptionPermission = BasePermission
GoodsCategoryOptionPermission = BasePermission
GoodsUnitOptionPermission = BasePermission
# Goods
GoodsOptionPermission = BasePermission
BatchOptionPermission = BasePermission
__all__ = [
'RoleOptionPermission', 'UserOptionPermission',
'WarehouseOptionPermission', 'ClientOptionPermission', 'SupplierOptionPermission', 'AccountOptionPermission',
'ChargeItemOptionPermission', 'ClientCategoryOptionPermission', 'SupplierCategoryOptionPermission',
'GoodsCategoryOptionPermission', 'GoodsUnitOptionPermission', '',
'GoodsOptionPermission', 'BatchOptionPermission',
]

View file

@ -1,7 +1,110 @@
from extensions.serializers import *
from extensions.exceptions import *
from apps.system.models import *
from apps.data.models import *
from apps.goods.models import *
# System
class RoleOptionSerializer(ModelSerializer):
class Meta:
model = Role
fields = ['id', 'name']
class UserOptionSerializer(ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'name']
# Data
class WarehouseOptionSerializer(ModelSerializer):
class Meta:
model = Warehouse
fields = ['id', 'number', 'name', 'is_locked']
class ClientOptionSerializer(ModelSerializer):
class Meta:
model = Client
fields = ['id', 'number', 'name', 'level']
class SupplierOptionSerializer(ModelSerializer):
class Meta:
model = Supplier
fields = ['id', 'number', 'name']
class AccountOptionSerializer(ModelSerializer):
class Meta:
model = Account
fields = ['id', 'number', 'name']
class ChargeItemOptionSerializer(ModelSerializer):
class Meta:
model = ChargeItem
fields = ['id', 'name']
class ClientCategoryOptionSerializer(ModelSerializer):
class Meta:
model = ClientCategory
fields = ['id', 'name']
class SupplierCategoryOptionSerializer(ModelSerializer):
class Meta:
model = SupplierCategory
fields = ['id', 'name']
class GoodsCategoryOptionSerializer(ModelSerializer):
class Meta:
model = GoodsCategory
fields = ['id', 'name']
class GoodsUnitOptionSerializer(ModelSerializer):
class Meta:
model = GoodsUnit
fields = ['id', 'name']
# Goods
class GoodsOptionSerializer(ModelSerializer):
class Meta:
model = Goods
fields = ['id', 'number', 'name', 'barcode', 'enable_shelf_life', 'shelf_life_days',
'purchase_price', 'retail_price', 'level_price1', 'level_price2', 'level_price3']
class BatchOptionSerializer(ModelSerializer):
unit_name = CharField(source='goods.unit.name', read_only=True, label='单位名称')
class Meta:
model = Batch
fields = ['id', 'number', 'remain_quantity', 'unit_name', 'production_date', 'expiration_date']
__all__ = [
'RoleOptionSerializer', 'UserOptionSerializer',
'WarehouseOptionSerializer', 'ClientOptionSerializer', 'SupplierOptionSerializer', 'AccountOptionSerializer',
'ChargeItemOptionSerializer', 'ClientCategoryOptionSerializer', 'SupplierCategoryOptionSerializer',
'GoodsCategoryOptionSerializer', 'GoodsUnitOptionSerializer',
'GoodsOptionSerializer', 'BatchOptionSerializer',
]

View file

@ -1,5 +1,26 @@
from extensions.routers import *
from apps.option.views import *
router = BaseRouter()
# System
router.register('roles/options', RoleOptionViewSet, 'role_option')
router.register('users/options', UserOptionViewSet, 'user_option')
# Data
router.register('warehouses/options', WarehouseOptionViewSet, 'warehouse_option')
router.register('clients/options', ClientOptionViewSet, 'client_option')
router.register('suppliers/options', SupplierOptionViewSet, 'supplier_option')
router.register('accounts/options', AccountOptionViewSet, 'account_option')
router.register('charge_items/options', ChargeItemOptionViewSet, 'charge_item_option')
router.register('client_categories/options', ClientCategoryOptionViewSet, 'client_category_option')
router.register('supplier_categories/options', SupplierCategoryOptionViewSet, 'supplier_category_option')
router.register('goods_categories/options', GoodsCategoryOptionViewSet, 'goods_category_option')
router.register('goods_units/options', GoodsUnitOptionViewSet, 'goods_unit_option')
# Goods
router.register('goods/options', GoodsOptionViewSet, 'goods_option')
router.register('batchs/options', BatchOptionViewSet, 'batch_option')
urlpatterns = router.urls

View file

@ -1,8 +1,130 @@
from extensions.permissions import *
from extensions.exceptions import *
from extensions.viewsets import *
from apps.option.serializers import *
from apps.option.permissions import *
from apps.option.filters import *
from apps.option.schemas import *
from apps.system.models import *
from apps.data.models import *
from apps.goods.models import *
# System
class RoleOptionViewSet(OptionViewSet):
serializer_class = RoleOptionSerializer
permission_classes = [IsAuthenticated, RoleOptionPermission]
search_fields = ['name']
queryset = Role.objects.all()
class UserOptionViewSet(OptionViewSet):
serializer_class = UserOptionSerializer
permission_classes = [IsAuthenticated, UserOptionPermission]
search_fields = ['username', 'name']
queryset = User.objects.filter(is_active=True)
# Data
class WarehouseOptionViewSet(OptionViewSet):
serializer_class = WarehouseOptionSerializer
permission_classes = [IsAuthenticated, WarehouseOptionPermission]
filterset_fields = ['manager']
search_fields = ['number', 'name']
ordering_fields = ['id', 'number', 'order']
ordering = ['order', 'number', 'id']
queryset = Warehouse.objects.filter(is_active=True)
class ClientOptionViewSet(OptionViewSet):
serializer_class = ClientOptionSerializer
permission_classes = [IsAuthenticated, ClientOptionPermission]
filterset_fields = ['level', 'category']
search_fields = ['number', 'name']
ordering_fields = ['id', 'number', 'order']
ordering = ['order', 'number', 'id']
queryset = Client.objects.filter(is_active=True)
class SupplierOptionViewSet(OptionViewSet):
serializer_class = SupplierOptionSerializer
permission_classes = [IsAuthenticated, SupplierOptionPermission]
filterset_fields = ['category']
search_fields = ['number', 'name']
ordering_fields = ['id', 'number', 'order']
ordering = ['order', 'number', 'id']
queryset = Supplier.objects.filter(is_active=True)
class AccountOptionViewSet(OptionViewSet):
serializer_class = AccountOptionSerializer
permission_classes = [IsAuthenticated, AccountOptionPermission]
search_fields = ['number', 'name']
ordering_fields = ['id', 'number', 'order']
ordering = ['order', 'number', 'id']
queryset = Account.objects.filter(is_active=True)
class ChargeItemOptionViewSet(OptionViewSet):
serializer_class = ChargeItemOptionSerializer
permission_classes = [IsAuthenticated, ChargeItemOptionPermission]
search_fields = ['name']
queryset = ChargeItem.objects.all()
class ClientCategoryOptionViewSet(OptionViewSet):
serializer_class = ClientCategoryOptionSerializer
permission_classes = [IsAuthenticated, ClientCategoryOptionPermission]
search_fields = ['name']
queryset = ClientCategory.objects.all()
class SupplierCategoryOptionViewSet(OptionViewSet):
serializer_class = SupplierCategoryOptionSerializer
permission_classes = [IsAuthenticated, SupplierCategoryOptionPermission]
search_fields = ['name']
queryset = SupplierCategory.objects.all()
class GoodsCategoryOptionViewSet(OptionViewSet):
serializer_class = GoodsCategoryOptionSerializer
permission_classes = [IsAuthenticated, GoodsCategoryOptionPermission]
search_fields = ['name']
queryset = GoodsCategory.objects.all()
class GoodsUnitOptionViewSet(OptionViewSet):
serializer_class = GoodsUnitOptionSerializer
permission_classes = [IsAuthenticated, GoodsUnitOptionPermission]
search_fields = ['name']
queryset = GoodsUnit.objects.all()
# Goods
class GoodsOptionViewSet(OptionViewSet):
serializer_class = GoodsOptionSerializer
permission_classes = [IsAuthenticated, GoodsOptionPermission]
filterset_fields = ['category']
search_fields = ['number', 'name']
ordering_fields = ['id', 'number', 'order']
ordering = ['order', 'number', 'id']
queryset = Goods.objects.filter(is_active=True)
class BatchOptionViewSet(OptionViewSet):
serializer_class = BatchOptionSerializer
permission_classes = [IsAuthenticated, BatchOptionPermission]
filterset_fields = ['warehouse', 'goods']
ordering_fields = ['id', 'number']
ordering = ['-number', 'id']
select_related_fields = ['goods__unit']
queryset = Batch.objects.filter(is_empty=False)
__all__ = [
'RoleOptionViewSet', 'UserOptionViewSet',
'WarehouseOptionViewSet', 'ClientOptionViewSet', 'SupplierOptionViewSet', 'AccountOptionViewSet',
'ChargeItemOptionViewSet', 'ClientCategoryOptionViewSet', 'SupplierCategoryOptionViewSet',
'GoodsCategoryOptionViewSet', 'GoodsUnitOptionViewSet',
'GoodsOptionViewSet', 'BatchOptionViewSet',
]