This commit is contained in:
caoqianming 2020-06-15 18:04:50 +08:00
parent e30d372b10
commit b160e93cb5
11 changed files with 245 additions and 9 deletions

View File

@ -1,3 +1,4 @@
from django.contrib import admin
from .models import Standard
# Register your models here.
admin.site.register(Standard)

View File

@ -0,0 +1,53 @@
# Generated by Django 3.0.7 on 2020-06-15 03:37
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Standard',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('name', models.CharField(max_length=1000, verbose_name='标准名称')),
('code', models.CharField(blank=True, max_length=30, null=True, verbose_name='编号')),
('publish_date', models.DateField(verbose_name='发布日期')),
('implement_date', models.DateField(verbose_name='实施日期')),
('status', models.CharField(choices=[('现行', '现行'), ('即将实施', '即将实施'), ('作废', '作废'), ('废止', '废止')], default='状态', max_length=50, verbose_name='状态')),
('path', models.CharField(blank=True, max_length=1000, null=True, verbose_name='文件地址')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='standard_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='standard_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'verbose_name': '标准库',
'verbose_name_plural': '标准库',
},
),
migrations.CreateModel(
name='ImplementRule',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='implementrule_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='implementrule_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
]

View File

@ -0,0 +1,85 @@
# Generated by Django 3.0.7 on 2020-06-15 09:07
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('system', '0019_auto_20200612_1448'),
('certset', '0001_initial'),
]
operations = [
migrations.AlterModelOptions(
name='implementrule',
options={'verbose_name': '实施规则', 'verbose_name_plural': '实施规则'},
),
migrations.AddField(
model_name='implementrule',
name='cert_pattern',
field=models.ManyToManyField(blank=True, related_name='implementrule_cert_pattern', to='system.Dict', verbose_name='认证模式'),
),
migrations.AddField(
model_name='implementrule',
name='cnas_scope',
field=models.ManyToManyField(blank=True, related_name='implementrule_cnas_scope', to='system.Dict', verbose_name='CNAS业务范围'),
),
migrations.AddField(
model_name='implementrule',
name='code',
field=models.CharField(default='ok', max_length=30, unique=True, verbose_name='编号'),
preserve_default=False,
),
migrations.AddField(
model_name='implementrule',
name='economy_class',
field=models.ManyToManyField(blank=True, related_name='implementrule_economy_class', to='system.Dict', verbose_name='国民经济分类'),
),
migrations.AddField(
model_name='implementrule',
name='name',
field=models.CharField(default='ok', max_length=1000, verbose_name='规则名称'),
preserve_default=False,
),
migrations.AddField(
model_name='implementrule',
name='pv_class',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='implementrule_pv_class', to='system.Dict', verbose_name='自愿性产品认证产品'),
),
migrations.AddField(
model_name='implementrule',
name='pv_scope',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='implementrule_pv_scope', to='system.Dict', verbose_name='认证领域'),
),
migrations.AddField(
model_name='implementrule',
name='standards',
field=models.ManyToManyField(blank=True, related_name='implementrule_standards', to='certset.Standard', verbose_name='依据标准'),
),
migrations.CreateModel(
name='Unit',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('name', models.CharField(max_length=1000, verbose_name='单元名称')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='unit_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='unit_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'verbose_name': '产品单元',
'verbose_name_plural': '产品单元',
},
),
migrations.AddField(
model_name='implementrule',
name='units',
field=models.ManyToManyField(blank=True, related_name='implementrule_units', to='certset.Unit', verbose_name='单元划分'),
),
]

View File

@ -1,5 +1,5 @@
from django.db import models
from apps.system.models import CommonAModel
from apps.system.models import CommonAModel, Dict
# Create your models here.
class Standard(CommonAModel):
@ -15,7 +15,44 @@ class Standard(CommonAModel):
implement_date = models.DateField('实施日期')
status = models.CharField('状态', max_length=50,
choices=status_choices, default='状态')
path = models.CharField('文件地址', max_length=1000, null=True, blank=True)
class Meta:
verbose_name = '标准库'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class Unit(CommonAModel):
name = models.CharField('单元名称', max_length=1000)
class Meta:
verbose_name = '产品单元'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
pass
class ImplementRule(CommonAModel):
pass
name = models.CharField('规则名称', max_length=1000)
code = models.CharField('编号', max_length=30, unique=True)
units = models.ManyToManyField(Unit, blank=True, verbose_name='单元划分', related_name='implementrule_units')
standards = models.ManyToManyField(Standard, blank=True, verbose_name='依据标准', related_name='implementrule_standards')
pv_scope = models.ForeignKey(Dict, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='认证领域', related_name= 'implementrule_pv_scope')
pv_class = models.ForeignKey(Dict, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='自愿性产品认证产品', related_name= 'implementrule_pv_class')
cnas_scope = models.ManyToManyField(Dict, blank=True, verbose_name='CNAS业务范围', related_name= 'implementrule_cnas_scope')
economy_class = models.ManyToManyField(Dict, blank=True, verbose_name='国民经济分类', related_name= 'implementrule_economy_class')
cert_pattern = models.ManyToManyField(Dict, blank=True, verbose_name='认证模式', related_name= 'implementrule_cert_pattern')
class Meta:
verbose_name = '实施规则'
verbose_name_plural = verbose_name
def __str__(self):
return self.name

View File

@ -0,0 +1,19 @@
from rest_framework import serializers
from .models import Standard, Unit, ImplementRule
class StandardSerializer(serializers.ModelSerializer):
class Meta:
model = Standard
fields = '__all__'
class ImplementRuleSerializer(serializers.ModelSerializer):
class Meta:
model = ImplementRule
fields = '__all__'
class UnitSerializer(serializers.ModelSerializer):
class Meta:
model = Unit
fields = '__all__'

View File

@ -0,0 +1,12 @@
from django.urls import path, include
from .views import StandardViewSet, UnitdViewSet, ImplementRuleViewSet
from rest_framework import routers
router = routers.DefaultRouter()
router.register('standard', StandardViewSet, basename="standard")
router.register('unit', UnitdViewSet, basename="unit")
router.register('implementrule', ImplementRuleViewSet, basename="implementrule")
urlpatterns = [
path('', include(router.urls))
]

View File

@ -1,3 +1,32 @@
from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from .models import Standard, Unit, ImplementRule
from .serializers import StandardSerializer, ImplementRuleSerializer, UnitSerializer
# Create your views here.
class StandardViewSet(ModelViewSet):
perms_map = {'get': '*', 'post': 'standard_create',
'put': 'standard_update', 'delete': 'standard_delete'}
queryset = Standard.objects
serializer_class = StandardSerializer
search_fields = ['name', 'code', 'status', 'implement_date']
filterset_fields = ['status']
ordering = ['-create_time']
class ImplementRuleViewSet(ModelViewSet):
perms_map = {'get': '*', 'post': 'implementrule_create',
'put': 'implementrule_update', 'delete': 'implementrule_delete'}
queryset = ImplementRule.objects
serializer_class = ImplementRuleSerializer
search_fields = ['name', 'code']
filterset_fields = ['pv_scope']
ordering = ['-create_time']
class UnitdViewSet(ModelViewSet):
perms_map = {'get': '*', 'post': 'unit_create',
'put': 'unit_update', 'delete': 'unit_delete'}
queryset = Unit.objects
serializer_class = UnitSerializer
search_fields = ['name']
filterset_fields = ['name']
ordering = ['-create_time']

View File

@ -48,7 +48,7 @@ class LogoutView(APIView):
class TaskViewSet(ModelViewSet):
queryset = PeriodicTask.objects
serializer_class = TaskSerializer
search_fields = ['^name']
search_fields = ['name']
filterset_fields = ['enabled']
ordering = ['-pk']

View File

@ -147,8 +147,7 @@ REST_FRAMEWORK = {
'rest_framework.filters.SearchFilter',
'rest_framework.filters.OrderingFilter'
],
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
'DEFAULT_PAGINATION_CLASS': 'utils.pagination.MyPagination',
'DATETIME_FORMAT': '%Y-%m-%d %H:%M:%S',
'DATE_FORMAT': '%Y-%m-%d',
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',

View File

@ -32,6 +32,7 @@ urlpatterns = [
path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('token/black/', LogoutView.as_view(), name='token_black'),
path('system/', include('apps.system.urls')),
path('certset/', include('apps.certset.urls')),
path('docs/', include_docs_urls(title="接口文档",
authentication_classes=[], permission_classes=[])),
path('', include(router.urls)),

View File

@ -3,4 +3,4 @@ from rest_framework.pagination import PageNumberPagination
class MyPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'limit'
page_size_query_param = 'page_size'