models.py 2.9 KB
from django.db import models
from usercenter.models import User

PROJECT_TYPE = (
		(1, u"市场容量小于300万美金"),
		(2, u"市场容量大于等于300万美金"),
	)


class Auditor(models.Model):
	# user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="aud", verbose_name="审批人员")
	user = models.ForeignKey(
		User,
		on_delete=models.CASCADE,
		related_name="aud",
		verbose_name="审批人员")
	leader = models.ForeignKey(
		'self',
		on_delete=models.CASCADE,
		related_name="p",
		null=True,
		blank=True,
		verbose_name="上级领导")
	type = models.PositiveSmallIntegerField(default=1, choices=PROJECT_TYPE, verbose_name="项目类型")
	order = models.PositiveSmallIntegerField(default=0, null=True, blank=True, verbose_name="排序")

	def __str__(self):
		return self.user.username

	class Meta:
		ordering = ('order', )


class Project(models.Model):

	category = models.CharField(max_length=100, default="", verbose_name="产品类目")
	model_type = models.CharField(max_length=50, default="", verbose_name="产品型号")
	market_share_analysis = models.TextField(default="", verbose_name="产品市场占有率分析")
	context_analysis = models.TextField(default="", verbose_name="产品场景分析")
	attachments = models.CharField(max_length=800, default="", verbose_name="附件地址")
	first_orders = models.PositiveIntegerField(default=0, verbose_name="首单数量")
	orders_estimate = models.CharField(default="", max_length=255, verbose_name="月销量预估")
	auditor = models.ManyToManyField(Auditor, related_name="project_auditor", blank=True, verbose_name="审核人员")
	is_done = models.BooleanField(default=False, blank=True, verbose_name="是否完成")
	type = models.PositiveSmallIntegerField(default=1, choices=PROJECT_TYPE, verbose_name="项目类型")
	is_pass = models.BooleanField(null=True, blank=True, verbose_name="是否通过")
	create_time = models.DateTimeField(auto_now_add=True)
	creator = models.ForeignKey(User, related_name="project_creator", on_delete=models.CASCADE, verbose_name="创建人员")

	def __str__(self):
		return self.category + '-' + self.model_type

	class Meta:
		ordering = ('is_done',)


class Result(models.Model):
	ACCEPT_CHOICES = (
		('accept', '通过'),
		('reject', '否决')
	)

	auditor = models.ForeignKey(Auditor, on_delete=models.CASCADE, related_name="result_auditor", verbose_name="审核人员")
	project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name="result_project", verbose_name="审核项目")
	is_accept = models.CharField(max_length=10, null=True, choices=ACCEPT_CHOICES, verbose_name="审核项目")
	memo = models.CharField(max_length=300, blank=True, default="", verbose_name="审核结果陈述")
	create_time = models.DateTimeField(auto_now_add=True)

	def __str__(self):
		return str(self.project.model_type) + '-' + str(self.is_accept)

	class Meta:
		ordering = ('pk', )