class FlowEngine(models.Model): """審批流引擎""" name = models.CharField(max_length=128, verbose_name="審批流名稱") def __str__(self): return self.name class Meta: verbose_name = "工作流引擎" verbose_name_plural = verbose_name class FlowNode(models.Model): """審批流引擎節點""" name = models.CharField(max_length=128) flow = models.ForeignKey("FlowEngine") node_order = models.SmallIntegerField() approval_role = models.ForeignKey("Role") def __str__(self): return self.name class Meta: verbose_name = "工作流節點" verbose_name_plural = verbose_name class VMTemplate(models.Model): name = models.CharField(max_length=128) os = models.CharField(max_length=128) class Service(models.Model): """服務目錄""" name = models.CharField(max_length=128) template = models.ForeignKey("VMTemplate") flow = models.ForeignKey("FlowEngine") def __str__(self): return self.name class Meta: verbose_name = "服務目錄" verbose_name_plural = verbose_name class ServiceRequest(models.Model): name = models.CharField(max_length=128) template = models.ForeignKey("VMTemplate") ip = models.GenericIPAddressField() cpu = models.SmallIntegerField() memory = models.IntegerField() disk = models.IntegerField() owner = models.ForeignKey("MyUser") type_choices = ( (0, "虛擬機申請"), (1, "虛擬機修改"), (2, "虛擬機刪除"), ) type = models.SmallIntegerField(choices=type_choices, default=0, verbose_name="類型") request_status_choices = ( (0, "審批中"), (1, "已審批"), (2, "拒絕"), (3, "創建中"), (4, "已創建"), ) request_status = models.SmallIntegerField(choices=request_status_choices, default=0, verbose_name="狀態") class RequestFlow(models.Model): request = models.ForeignKey("ServiceRequest") approval_user = models.ForeignKey("MyUser") approval_status_choices = ( (0, "等待"), (1, "審批中"), (2, "同意"), (3, "拒絕"), ) approval_status = models.SmallIntegerField(choices=approval_status_choices, default=0) order = models.SmallIntegerField()
class Role(models.Model):
name = models.CharField(max_length=128, verbose_name="角色名稱")
permission_level = models.SmallIntegerField()
def __str__(self):
return self.name
class Meta:
verbose_name = "角色"
verbose_name_plural = verbose_name