django 工单模板 添加审批流 后端接口 modelviewset
django 后端接口 modelviewset
-
apps/flowconf/models.py
-
from django.db import models # 新建工单模板 # Create your models here. # 工单模板 class FlowConf(models.Model): name = models.CharField('工作流名称', max_length=32) customfield = models.TextField('自定义字段') description = models.TextField('描述', ) class Meta: db_table = '工单模板' verbose_name = "工单模板" verbose_name_plural = verbose_name # 工单分类 # class FlowType(models.Model): # name = models.CharField('工作流名称', max_length=50) # description = models.TextField('描述', ) # flowconf = models.ForeignKey(FlowConf, on_delete=models.CASCADE) # 配置审批流 class ApproveActionConf(models.Model): flowconf = models.ForeignKey(FlowConf, on_delete=models.CASCADE) sequence = models.IntegerField('审批序号') approve_type_id = models.CharField('审批类型', max_length=32, choices=(('1', '角色组审批'), ('2', '指定人员审批'))) approve_id = models.CharField('审批id', max_length=32) class Meta: db_table = '配置审批流' verbose_name = "配置审批流" verbose_name_plural = verbose_name # 自动化工单配置 # class AutoActionConf(models.Model): # flowconf = models.ManyToManyField(FlowConf) # scriptpath = models.CharField('执行脚本路径', max_length=50) # url = models.CharField('自动化调用路径', max_length=200) # method = models.CharField('调用自动化接口', max_length=32) # timeout = models.CharField('自动化执行超时时间', max_length=32)
-
-
serializers.py
-
""" author:翔翔 date: use: """ from rest_framework import serializers from flowconf.models import flowconf, Role from .models import * # 工单模板 class FlowConfModelSerializer(serializers.ModelSerializer): # approve_type_id = serializers.SerializerMethodField(read_only=True) class Meta: model = FlowConf fields = "__all__" # def get_approve_type_id(self,row): # print(row) # approve_type_id = row.approveactionconf_set # print(approve_type_id) # # return {} # 展示审批流 class ApproveActionConfModelSerializer(serializers.ModelSerializer): # 自定义字段 展示对应类型下的审批人员 specific_flowconf = serializers.SerializerMethodField(read_only=True) # 序列化外键 flowconf = FlowConfModelSerializer() class Meta: model = ApproveActionConf fields = "__all__" def get_specific_flowconf(self, row): # 获取审批类型id approve_type_id = row.approve_type_id # 审批人id approve_id = row.approve_id if approve_type_id == '1': """用户审批""" approve = flowconf.objects.get(id=approve_id) return { "approve": approve.flowconfname, "approve_type": "指定人员", } elif approve_type_id == '2': approve = Role.objects.get(id=approve_type_id) return { "approve": approve.zh_name, "approve_type": "角色组", } else: """待添加""" pass # 展示 反向查询 表民_set approveactionconf_set class FlowConfDeepSerializers(FlowConfModelSerializer): approveactionconf_set = ApproveActionConfModelSerializer(many=True) # 添加审批流使用 class ApproveActionConfModelSerializer2(serializers.ModelSerializer): class Meta: model = ApproveActionConf fields = "__all__"
-
-
views.py
-
from django.shortcuts import render # Create your views here. from rest_framework.viewsets import ModelViewSet from .serializers import * from .models import * # 工单模板 操作 class FlowConfModelViewSet(ModelViewSet): queryset = FlowConf.objects.all() serializer_class = FlowConfModelSerializer # 根据不同的请求获取不同的序列化器 def get_serializer_class(self): if self.action == 'list': # print(self.action, "1") return FlowConfModelSerializer elif self.action == "create": return FlowConfModelSerializer elif self.action == "update": return FlowConfModelSerializer else: print(self.action, "2") # 获取详细信息 return FlowConfDeepSerializers # 配置审批流 class ApproveActionConfModelViewSet(ModelViewSet): queryset = ApproveActionConf.objects.all() serializer_class = ApproveActionConfModelSerializer def get_serializer_class(self): # 添加时 使用这个序列化器 if self.action == "create": return ApproveActionConfModelSerializer2
-
-
urls.py
-
from django.urls import path, include from rest_framework.routers import DefaultRouter from .views import * router = DefaultRouter() router.register(r'flowconf', FlowConfModelViewSet) router.register(r'approveactionconf', ApproveActionConfModelViewSet) urlpatterns = [ ] urlpatterns += router.urls
-
-
主路由
-
"""opwf URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.2/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('workflow/', include('workflow.urls')), ]
-