You've already forked opc-backend
33 lines
1.6 KiB
Python
33 lines
1.6 KiB
Python
|
|
import uuid
|
||
|
|
from django.db import models
|
||
|
|
|
||
|
|
class CertStatus(models.TextChoices):
|
||
|
|
PENDING = 'PENDING', '待审核'
|
||
|
|
APPROVED = 'APPROVED', '已通过'
|
||
|
|
REJECTED = 'REJECTED', '已驳回'
|
||
|
|
|
||
|
|
class OpcCertification(models.Model):
|
||
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||
|
|
user = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='opc_certifications')
|
||
|
|
real_name = models.CharField(max_length=64)
|
||
|
|
id_card = models.TextField(null=True, blank=True)
|
||
|
|
skills = models.JSONField(default=list)
|
||
|
|
experience = models.TextField(null=True, blank=True)
|
||
|
|
resume_url = models.CharField(max_length=512, null=True, blank=True)
|
||
|
|
attachments = models.JSONField(default=list)
|
||
|
|
status = models.CharField(max_length=16, choices=CertStatus.choices, default=CertStatus.PENDING)
|
||
|
|
reject_reason = models.TextField(null=True, blank=True)
|
||
|
|
reviewer = models.ForeignKey('users.User', on_delete=models.SET_NULL, null=True, blank=True, related_name='reviewed_certifications')
|
||
|
|
reviewed_at = models.DateTimeField(null=True, blank=True)
|
||
|
|
rating = models.SmallIntegerField(null=True, blank=True)
|
||
|
|
rating_tags = models.JSONField(default=list)
|
||
|
|
rating_note = models.TextField(null=True, blank=True)
|
||
|
|
rated_by = models.ForeignKey('users.User', on_delete=models.SET_NULL, null=True, blank=True, related_name='rated_certifications')
|
||
|
|
rated_at = models.DateTimeField(null=True, blank=True)
|
||
|
|
version = models.SmallIntegerField(default=1)
|
||
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
||
|
|
updated_at = models.DateTimeField(auto_now=True)
|
||
|
|
|
||
|
|
class Meta:
|
||
|
|
db_table = 'opc_certifications'
|