Compare commits

..

No commits in common. "71bc4e76f06be954d05fd4abff05aa2a7e9422b6" and "8b7a87abb647e36a3bbe6dcb3b864baa11ddf010" have entirely different histories.

5 changed files with 74 additions and 55 deletions

View File

@ -58,28 +58,39 @@ class LendingSeal(CommonBDModel):
return_date = models.DateField('拟归还日期', blank=True, null=True) return_date = models.DateField('拟归还日期', blank=True, null=True)
actual_return_date = models.DateField('实际归还日期', blank=True, null=True) actual_return_date = models.DateField('实际归还日期', blank=True, null=True)
reason = models.CharField('借用理由', max_length=100, blank=True, null=True) reason = models.CharField('借用理由', max_length=100, blank=True, null=True)
# submit_user = models.ForeignKey(
# User, verbose_name='提交人', on_delete=models.CASCADE, null=True, blank=True, related_name='seal_submit_user')
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单', ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
on_delete=models.SET_NULL, related_name='seal_ticket', null=True, blank=True, db_constraint=False) on_delete=models.SET_NULL, related_name='seal_ticket', null=True, blank=True, db_constraint=False)
note = models.TextField('备注', null=True, blank=True) note = models.TextField('备注', null=True, blank=True)
class Vehicle(CommonADModel): # class Vehicle(CommonADModel):
"""TN: 用车申请""" # """TN: 用车申请"""
start_time = models.DateField('出车时间', blank=True, null=True)
end_time = models.DateField('还车时间', blank=True, null=True) # submit_user = models.ForeignKey(
location = models.CharField('出发地点', null=True, blank=True, max_length=100) # User, verbose_name='用车人', on_delete=models.CASCADE, null=True, blank=True, related_name='vehicle_submit_user')
destination = models.CharField('到达地点', null=True, blank=True, max_length=100) # approval_user = models.ForeignKey(
start_km = models.PositiveIntegerField('出发公里数') # User, verbose_name='审批人', on_delete=models.CASCADE, null=True, blank=True, related_name='vehicle_approval_user'
end_km = models.PositiveIntegerField('归还公里数') # )
actual_km = models.PositiveIntegerField('实际行驶公里数', editable=False) # start_time = models.DateTimeField('出车时间')
is_city = models.BooleanField('是否市内用车', default=True) # end_time = models.DateTimeField('还车时间')
reason = models.CharField('用车事由', max_length=100) # location = models.CharField('出发地点', null=True, blank=True, max_length=100)
ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单', # destination = models.CharField('到达地点', null=True, blank=True, max_length=100)
on_delete=models.SET_NULL, related_name='vehicle_ticket', null=True, blank=True, db_constraint=False) # start_km = models.PositiveIntegerField('出发公里数')
def save(self, *args, **kwargs): # end_km = models.PositiveIntegerField('归还公里数')
if self.end_km and self.start_km: # actual_km = models.PositiveIntegerField('实际行驶公里数', editable=False)
self.actual_km = self.end_km - self.start_km # is_city = models.BooleanField('是否市内用车', default=True)
return super().save(*args, **kwargs) # reason = models.CharField('用车事由', max_length=100)
# ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单',
# on_delete=models.SET_NULL, related_name='vehicle_ticket', null=True, blank=True, db_constraint=False)
# state = models.PositiveIntegerField(
# '状态', choices=MTASK_STATES, default=MTASK_CREATED, help_text=str(MTASK_STATES))
# def save(self, *args, **kwargs):
# if self.end_km and self.start_km:
# self.actual_km = self.end_km - self.start_km
# return super().save(*args, **kwargs)
# class FileRecord(CommonBDModel): # class FileRecord(CommonBDModel):

View File

@ -1,5 +1,5 @@
from .models import (Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle) from .models import (Mroom, MroomBooking, MroomSlot, LendingSeal)
# , Publicity, # Vehicle, Publicity,
# FileRecord, BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo) # FileRecord, BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo)
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from rest_framework import serializers from rest_framework import serializers
@ -80,18 +80,17 @@ class MroomSlotSerializer(CustomModelSerializer):
class LendingSealSerializer(CustomModelSerializer): class LendingSealSerializer(CustomModelSerializer):
create_by_name = serializers.CharField(source='create_by.name', read_only=True) create_by_name = serializers.CharField(source='create_by.name', read_only=True)
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
class Meta: class Meta:
model = LendingSeal model = LendingSeal
fields = '__all__' fields = '__all__'
read_only_fields = EXCLUDE_FIELDS read_only_fields = EXCLUDE_FIELDS
class VehicleSerializer(CustomModelSerializer): # class VehicleSerializer(CustomModelSerializer):
class Meta: # class Meta:
model = Vehicle # model = Vehicle
fields = '__all__' # fields = '__all__'
read_only_fields = EXCLUDE_FIELDS + ['actual_km'] # read_only_fields = EXCLUDE_FIELDS + ['actual_km']
# class FileRecordSerializer(CustomModelSerializer): # class FileRecordSerializer(CustomModelSerializer):

View File

@ -1,7 +1,7 @@
from apps.wf.models import Ticket from apps.wf.models import Ticket
# TicketFlow, Transition, Workflow, CustomField, State, # TicketFlow, Transition, Workflow, CustomField, State,
from apps.ofm.models import LendingSeal, Vehicle from apps.ofm.models import LendingSeal
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
@ -13,6 +13,9 @@ def seal_submit_validate(ins: LendingSeal):
def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict): def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict):
ins = LendingSeal.objects.get(id=new_ticket_data['t_id']) ins = LendingSeal.objects.get(id=new_ticket_data['t_id'])
# if ins.submit_time is not None:
# raise ParseError('该印章申请不可提交审批')
# seal_submit_validate(ins)
ticket_data = ticket.ticket_data ticket_data = ticket.ticket_data
ticket_data.update({ ticket_data.update({
't_model': 'LendingSeal', 't_model': 'LendingSeal',
@ -25,17 +28,3 @@ def bind_lendingseal(ticket: Ticket, transition, new_ticket_data: dict):
ins.ticket = ticket ins.ticket = ticket
ins.save() ins.save()
def bind_vehicle(ticket: Ticket, transition, new_ticket_data: dict):
ins = Vehicle.objects.get(id=new_ticket_data['t_id'])
ticket_data = ticket.ticket_data
ticket_data.update({
't_model': 'Vehicle',
't_id': ins.id,
})
ticket.ticket_data = ticket_data
ticket.create_by = ins.create_by
ticket.save()
if ins.ticket is None:
ins.ticket = ticket
ins.save()

View File

@ -1,7 +1,7 @@
from django.urls import path, include from django.urls import path, include
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet, VehicleViewSet) from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet)
# , , FilerecordViewSet, SealModelViewSet, # , VehicleViewSet, FilerecordViewSet, SealModelViewSet,
# FileborrowViewSet, PublicityViewSet, PatentInfoViewSet, PaperViewSet, PlatformViewSet, # FileborrowViewSet, PublicityViewSet, PatentInfoViewSet, PaperViewSet, PlatformViewSet,
# ProjectViewSet, PatentRecordViewSet, PaperRecordViewSet, ProjectApprovalViewSet, ProjectInfoViewSet) # ProjectViewSet, PatentRecordViewSet, PaperRecordViewSet, ProjectApprovalViewSet, ProjectInfoViewSet)
@ -14,7 +14,7 @@ router.register('mroombooking', MroomBookingViewSet, basename='mroombooking')
router.register('mroomslot', MroomSlotViewSet, basename='mroomslot') router.register('mroomslot', MroomSlotViewSet, basename='mroomslot')
# router.register('sealmanage', SealManageViewSet, basename='sealmanage') # router.register('sealmanage', SealManageViewSet, basename='sealmanage')
router.register('lendingseal', LendingSealViewSet, basename='lendingseal') router.register('lendingseal', LendingSealViewSet, basename='lendingseal')
router.register('vehicle', VehicleViewSet, basename='vehicle') # router.register('vehicle', VehicleViewSet, basename='vehicle')
# router.register('filerecord', FilerecordViewSet, basename='filerecord') # router.register('filerecord', FilerecordViewSet, basename='filerecord')
# router.register('fileborrow', FileborrowViewSet, basename='fileborrow') # router.register('fileborrow', FileborrowViewSet, basename='fileborrow')
# router.register('publicity', PublicityViewSet, basename='publicity') # router.register('publicity', PublicityViewSet, basename='publicity')

View File

@ -1,9 +1,9 @@
from django.shortcuts import render from django.shortcuts import render
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
from .models import Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle from .models import Mroom, MroomBooking, MroomSlot, LendingSeal
# , FileRecord, Seal # Vehicle, FileRecord, Seal
# BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo) # BorrowRecord, Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo)
from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer, VehicleSerializer) from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer)
# ,SealSerializer, # ,SealSerializer,
# LendingSealSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer, # LendingSealSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer,
# PatentInfoSerializer, PaperSerializer, PlatformSerializer, ProjectSerializer, ProjectMemberSerializer, PaperRecordSerializer, ProjectApprovalSerializer, ProjectInfoSerializer) # PatentInfoSerializer, PaperSerializer, PlatformSerializer, ProjectSerializer, ProjectMemberSerializer, PaperRecordSerializer, ProjectApprovalSerializer, ProjectInfoSerializer)
@ -102,6 +102,27 @@ class MroomSlotViewSet(CustomListModelMixin, CustomGenericViewSet):
filterset_fields = ["mroom", "mdate", "booking"] filterset_fields = ["mroom", "mdate", "booking"]
# class SealModelViewSet(CustomModelViewSet):
# """list: 印章列表
# 印章列表
# """
# queryset = Seal.objects.all()
# serializer_class = SealSerializer
# filterset_fields = ["name"]
# ordering = ["name"]
# class SealManageViewSet(CustomModelViewSet):
# """list: 印章管理
# 印章管理
# """
# queryset = SealManage.objects.all()
# serializer_class = SealManageSerializer
# filterset_fields = ["seal"]
class LendingSealViewSet(CustomModelViewSet): class LendingSealViewSet(CustomModelViewSet):
"""list: 印章外出 """list: 印章外出
@ -113,18 +134,17 @@ class LendingSealViewSet(CustomModelViewSet):
serializer_class = LendingSealSerializer serializer_class = LendingSealSerializer
filterset_class = SealFilter filterset_class = SealFilter
ordering = ["create_time"] ordering = ["create_time"]
data_filter = True
class VehicleViewSet(CustomModelViewSet): # class VehicleViewSet(CustomModelViewSet):
"""list: 车辆 # """list: 车辆
车辆 # 车辆
""" # """
queryset = Vehicle.objects.all() # queryset = Vehicle.objects.all()
serializer_class = VehicleSerializer # serializer_class = VehicleSerializer
filterset_fields = ["submit_user"] # filterset_fields = ["submit_user"]
ordering = ["create_time"] # ordering = ["create_time"]
# class FilerecordViewSet(CustomModelViewSet): # class FilerecordViewSet(CustomModelViewSet):