日历数据
This commit is contained in:
parent
847986027a
commit
074a53f45f
|
@ -1,16 +1,26 @@
|
|||
from django_filters import rest_framework as filters
|
||||
from apps.hrm.models import ClockRecord, Employee
|
||||
from apps.hrm.models import ClockRecord, Employee, NotWorkRemark
|
||||
from utils.mixins import DynamicFieldsFilterMixin
|
||||
|
||||
class ClockRecordFilterSet(filters.FilterSet):
|
||||
create_time_start = filters.DateFilter(field_name="create_time", lookup_expr='gte')
|
||||
create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte')
|
||||
year = filters.DateFilter(field_name="create_time_date__year")
|
||||
month = filters.DateFilter(field_name="create_time_date__month")
|
||||
class Meta:
|
||||
model = ClockRecord
|
||||
fields = ['create_by', 'create_time_start', 'create_time_end']
|
||||
fields = ['create_by', 'create_time_start', 'create_time_end', 'year', 'month']
|
||||
|
||||
class EmployeeFilterSet(DynamicFieldsFilterMixin, filters.FilterSet):
|
||||
|
||||
class Meta:
|
||||
model = Employee
|
||||
fields = ['job_state']
|
||||
fields = ['job_state']
|
||||
|
||||
|
||||
class NotWorkRemarkFilterSet(filters.FilterSet):
|
||||
year = filters.DateFilter(field_name="not_work_date__year")
|
||||
month = filters.DateFilter(field_name="not_work_date__month")
|
||||
class Meta:
|
||||
model = NotWorkRemark
|
||||
fields = ['year', 'month', 'user']
|
|
@ -0,0 +1,32 @@
|
|||
# Generated by Django 3.2.9 on 2022-02-22 03:12
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('hrm', '0007_auto_20220218_0843'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='notworkremark',
|
||||
name='day',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='notworkremark',
|
||||
name='month',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='notworkremark',
|
||||
name='year',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='notworkremark',
|
||||
name='not_work_date',
|
||||
field=models.DateField(default=django.utils.timezone.now, verbose_name='未打卡日期'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -44,9 +44,7 @@ class NotWorkRemark(CommonAModel):
|
|||
"""
|
||||
离岗说明
|
||||
"""
|
||||
year = models.PositiveSmallIntegerField('年', default=2022)
|
||||
month = models.PositiveSmallIntegerField('月', default=2)
|
||||
day = models.PositiveSmallIntegerField('日', default=1)
|
||||
not_work_date = models.DateField('未打卡日期')
|
||||
user = models.ForeignKey(User, verbose_name='用户', on_delete=models.CASCADE)
|
||||
remark = models.CharField('未打卡说明', null=True, blank=True, max_length=200)
|
||||
|
||||
|
@ -58,4 +56,6 @@ class ClockRecord(CommonADModel):
|
|||
type_choice = (
|
||||
(ClOCK_WORK1, '上班打卡'),
|
||||
)
|
||||
type = models.PositiveSmallIntegerField('打卡类型', choices=type_choice, default=ClOCK_WORK1)
|
||||
type = models.PositiveSmallIntegerField('打卡类型', choices=type_choice, default=ClOCK_WORK1)
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ from rest_framework.serializers import ModelSerializer
|
|||
from rest_framework import serializers
|
||||
|
||||
from utils.mixins import DynamicFieldsSerializerMixin
|
||||
from .models import ClockRecord, Employee
|
||||
from .models import ClockRecord, Employee, NotWorkRemark
|
||||
from apps.system.serializers import OrganizationSimpleSerializer, UserListSerializer, UserSimpleSerializer
|
||||
from django.db.models.query import Prefetch
|
||||
|
||||
|
@ -30,3 +30,8 @@ class ClockRecordListSerializer(serializers.ModelSerializer):
|
|||
class Meta:
|
||||
model = ClockRecord
|
||||
fields = '__all__'
|
||||
|
||||
class NotWorkRemarkListSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = NotWorkRemark
|
||||
fields = '__all__'
|
|
@ -1,12 +1,13 @@
|
|||
from django.db.models import base
|
||||
from rest_framework import urlpatterns
|
||||
from apps.hrm.views import ClockRecordViewSet, EmployeeViewSet, FaceLogin
|
||||
from apps.hrm.views import ClockRecordViewSet, EmployeeViewSet, FaceLogin, NotWorkRemarkViewSet
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register('employee', EmployeeViewSet, basename='employee')
|
||||
router.register('clock_record', ClockRecordViewSet, basename='clock_record')
|
||||
router.register('not_work_remark', NotWorkRemarkViewSet, basename='not_work_reamrk')
|
||||
urlpatterns = [
|
||||
path('facelogin/', FaceLogin.as_view()),
|
||||
path('', include(router.urls)),
|
||||
|
|
|
@ -5,12 +5,12 @@ from django.utils import timezone
|
|||
from rest_framework.response import Response
|
||||
from rest_framework.viewsets import ModelViewSet, GenericViewSet
|
||||
from rest_framework.mixins import UpdateModelMixin, RetrieveModelMixin, CreateModelMixin, ListModelMixin
|
||||
from apps.hrm.filters import ClockRecordFilterSet, EmployeeFilterSet
|
||||
from apps.hrm.filters import ClockRecordFilterSet, EmployeeFilterSet, NotWorkRemarkFilterSet
|
||||
from apps.hrm.services import HRMService
|
||||
from apps.hrm.tasks import update_all_user_facedata_cache
|
||||
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
||||
from apps.hrm.models import ClockRecord, Employee, NotWorkRemark
|
||||
from apps.hrm.serializers import ClockRecordListSerializer, EmployeeNotWorkRemarkSerializer, EmployeeSerializer, FaceClockCreateSerializer, FaceLoginSerializer
|
||||
from apps.hrm.serializers import ClockRecordListSerializer, EmployeeNotWorkRemarkSerializer, EmployeeSerializer, FaceClockCreateSerializer, FaceLoginSerializer, NotWorkRemarkListSerializer
|
||||
|
||||
|
||||
|
||||
|
@ -67,16 +67,12 @@ class EmployeeViewSet(CreateUpdateModelAMixin, OptimizationMixin, UpdateModelMix
|
|||
remark = request.data.get('not_work_remark', '')
|
||||
obj.not_work_remark = remark
|
||||
obj.save()
|
||||
now_local = timezone.localtime()
|
||||
now = timezone.now()
|
||||
instance, created = NotWorkRemark.objects.get_or_create(
|
||||
year = now_local.year,
|
||||
month = now_local.month,
|
||||
day = now_local.day,
|
||||
notwork_date = now.date(),
|
||||
user = obj.user,
|
||||
defaults={
|
||||
"year":now_local.year,
|
||||
"month":now_local.month,
|
||||
"day":now_local.day,
|
||||
"notwork_date":now.date(),
|
||||
"user":obj.user,
|
||||
"remark":remark,
|
||||
"create_by":request.user,
|
||||
|
@ -134,7 +130,15 @@ class ClockRecordViewSet(CreateModelMixin, ListModelMixin, GenericViewSet):
|
|||
return Response('非打卡时间范围', status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
|
||||
class NotWorkRemarkViewSet(ListModelMixin, GenericViewSet):
|
||||
"""
|
||||
离岗说明
|
||||
"""
|
||||
perms_map = {'get':'*'}
|
||||
queryset = NotWorkRemark.objects.select_related('user').all()
|
||||
serializer_class = NotWorkRemarkListSerializer
|
||||
filterset_class = NotWorkRemarkFilterSet
|
||||
ordering = ['-pk']
|
||||
|
||||
|
||||
import base64
|
||||
|
|
Loading…
Reference in New Issue