DJango休息框架中的员工休假类型条件

wsxa1bj1  于 2022-11-18  发布在  Go
关注(0)|答案(2)|浏览(187)

我正在django rest framework中开发Hrms应用程序。我已经创建了员工详细信息模块,接下来是休假管理系统。实际上我的公司政策有不同的休假政策,比如cl,sl,ml,compo off,并且不知道在序列化器或视图中的什么地方写逻辑?因为是新手,我觉得有些困难。另外,当员工申请休假时,应该向T.L.申请,然后HR和经理应该可以看到。T.L.会给予许可,这一切都应该在申请和电子邮件流程中进行。如何在rest api中进行申请和批准,以及如何使用django rest api发送邮件?有人能指导我吗?如果员工选择Cl,他得到了总共12个cl,他可以每月一次,cl可以结转到3个假期,之后它将到期,那么sl意味着每季度2个可用假期,然后半天假期,这里的逻辑是什么,我应该如何进行?
类LeaveType(模型.模型):

Leave_type = (
    ('CL', 'Casual Leave'),
   ('SL', 'Sick Leave'),
   ('ML', 'Medical Leave'),
    ('Comp Off', 'Compensation'),
    ('L.O.P', 'Loss of Pay')
 )

Leave_Choice = (
    ('Full Day', 'Full Day Leave'),
    ('Fore Noon', 'Fore Noon Only'),
   ('After Noon', 'After Noon Only'),

Status_choices = (
   ('Approved', 'Approved'),
     ('Rejected', 'Rejected'),
    ('Pending', 'Pending'),

leave_type = models.CharField(max_length=50, choices=Leave_type)
status = models.CharField(max_length=50, choices=Status_choices, default='Pending')
leave_choice = models.CharField(max_length=50, choices=Leave_Choice, default='Full Day')

 if leave_type == 'CL':

   total_leave_per_year = 12
   monthly_leave_applicable = 1
   carry_forawrd_monthly_leave = 3

elif leave_type == 'SL':

   Quarterly_days_applicable = 2
   annual_leave_applicable = 8
t3psigkw

t3psigkw1#

所以如果你想要逻辑这是你可以怎么做
使您的第一个API在用户请假时允许在数据库中创建新记录,并且状态必须为待定,您还应该允许分配一些用户类型,如团队负责人或人力资源。
因此,首先我们将代码设置为
您将需要user作为表中的外键。

LeaveType.objects.create(leave_type="Full_day",status="pending", leave_choice="Cl", assogned_to="some user from foreign key")

第二步是我们的情况,只有特定的人可以看到休假.
为此,你需要照顾django权限假设我们有3个用户类型在您的系统中,如人力资源,团队领导和项目经理在您的用户模型。
因此,您需要编写自定义权限类。
您可以通过rest_framework导入权限来完成此操作

class CanViewLeavePermission(permissions.BasePermission):

    def has_permission(self, request, view):
        # check if user is team lead or not 
        return bool(request.user.is_team_lead)

现在,我们可以将上述类与权限类列表合并到视图中

class UpdateLeaveRequestView(UpdateAPIView):
     permisson_class =[IsAuthenticated,CanViewLeavePermission]

在此之后,您只需要用户id,我的意思是,我们将创建逻辑来更新我们的API,因为id将作为URL中的slug,我们可以使用URL中的主键查询LeaveType模型,并发送电子邮件和更新状态,还可以分配给下一个人,如果已更新待定休假,则允许某种级别的验证。
希望你能理解!

vojdkbi0

vojdkbi02#

为休假创建一个单独的应用程序,作为外键字段链接到主雇员。然后声明休假模型,并根据序列化程序中的条件,允许或不允许雇员申请休假。通过权限,您可以控制视图的只读或读/写部分。要发送电子邮件,请查看文档:https://docs.djangoproject.com/en/4.1/topics/email/

相关问题