|
# -*- coding: utf-8 -*-
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django_models_ext import BaseModelMixin
from jsonfield import JSONField
from shortuuidfield import ShortUUIDField
from api.wx_views import get_course_field_limit_scene_qrcode_url
class BranchCampusInfo(BaseModelMixin):
campus_id = ShortUUIDField(_('campus_id'), max_length=32, blank=True, null=True, help_text='分院唯一标识', db_index=True, unique=True)
campus_name = models.CharField(_('campus_name'), max_length=255, blank=True, null=True, help_text='分院名称')
class Meta:
verbose_name = _('分院信息')
verbose_name_plural = _('分院信息')
def __unicode__(self):
return '%d' % self.pk
@property
def data(self):
return {
'campus_id': self.campus_id,
'campus_name': self.campus_name,
}
class BranchCampusAdministratorInfo(BaseModelMixin):
PENDING = 0
ACTIVATED = 1
DISABLED = 2
DELETED = 3
USER_STATUS_TUPLE = (
(PENDING, '待审核'),
(ACTIVATED, '已激活'),
(DISABLED, '已禁用'),
(DELETED, '已删除'),
)
admin_id = ShortUUIDField(_('admin_id'), max_length=32, blank=True, null=True, help_text='管理员唯一标识', db_index=True, unique=True)
campus_id = models.CharField(_('campus_id'), max_length=32, blank=True, null=True, help_text='分院唯一标识', db_index=True)
campus_name = models.CharField(_('campus_name'), max_length=255, blank=True, null=True, help_text='分院名称')
name = models.CharField(_('name'), max_length=255, blank=True, null=True, help_text='管理员姓名')
phone = models.CharField(_('phone'), max_length=11, blank=True, null=True, help_text='管理员电话', db_index=True)
password = models.CharField(_(u'password'), max_length=255, blank=True, null=True, help_text=u'管理员密码')
encryption = models.CharField(_(u'encryption'), max_length=255, blank=True, null=True, help_text=u'管理员密码')
user_status = models.IntegerField(_('user_status'), choices=USER_STATUS_TUPLE, default=PENDING, help_text='管理员状态', db_index=True)
class Meta:
verbose_name = _(u'分院管理员信息')
verbose_name_plural = _(u'分院管理员信息')
def __unicode__(self):
return '%d' % self.pk
@property
def data(self):
return {
'admin_id': self.admin_id,
'campus_id': self.campus_id,
'campus_name': self.campus_name,
'name': self.name,
'phone': self.phone,
'user_status': self.user_status,
}
class CourseInfo(BaseModelMixin):
course_id = ShortUUIDField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True, unique=True)
course_name = models.CharField(_('course_name'), max_length=255, blank=True, null=True, help_text='课程名称')
authorities = JSONField(_('authorities'), default=[], blank=True, null=True, help_text='课程权限列表')
class Meta:
verbose_name = _('课程信息')
verbose_name_plural = _('课程信息')
def __unicode__(self):
return '%d' % self.pk
@property
def all_fields(self):
fields = CourseRegisterFieldInfo.objects.filter(course_id=self.course_id, status=True)
return [field.data for field in fields]
@property
def data(self):
return {
'course_id': self.course_id,
'course_name': self.course_name,
'authorities': self.authorities,
'fields': self.all_fields,
}
class CourseRegisterFieldPoolInfo(BaseModelMixin):
INPUT = 'input'
SELECT = 'select'
FILE = 'file'
FIELD_TYPE_TUPLE = (
(INPUT, 'input'),
(SELECT, 'select'),
(FILE, 'file'),
)
# {
# "type": "input", # input, select, file
# "name": "",
# "options": ["男", "女"], # type=select
# }
field_type = models.CharField(_('field_type'), max_length=8, choices=FIELD_TYPE_TUPLE, default=INPUT, help_text='字段类型')
field_name = models.CharField(_('field_name'), max_length=32, blank=True, null=True, help_text='字段名称')
field_options = JSONField(_('field_options'), default=[], blank=True, null=True, help_text='字段选择')
class Meta:
verbose_name = _('课程报名字段池信息')
verbose_name_plural = _('课程报名字段池信息')
def __unicode__(self):
return '%d' % self.pk
@property
def data(self):
return {
'type': self.field_type,
'name': self.field_name,
'options': self.field_options,
}
class CourseRegisterFieldInfo(BaseModelMixin):
field_id = ShortUUIDField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True, unique=True)
course_id = models.CharField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True)
course_name = models.CharField(_('course_name'), max_length=255, blank=True, null=True, help_text='课程名称')
# {
# "type": "input", # input, select, file
# "name": "",
# "options": ["男", "女"], # type=select
# }
fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段列表')
limit_scene_qrcode_url = models.CharField(_('limit_scene_qrcode_url'), max_length=255, blank=True, null=True, help_text='字段二维码')
class Meta:
verbose_name = _('课程报名字段信息')
verbose_name_plural = _('课程报名字段信息')
def __unicode__(self):
return '%d' % self.pk
@property
def data(self):
return {
'field_id': self.field_id,
'course_id': self.course_id,
'course_name': self.course_name,
'fields': self.fields,
}
def qrcodedata(self, admin_id):
qrcode_url = get_course_field_limit_scene_qrcode_url('{}:{}'.format(self.field_id, admin_id))
return {
'field_id': self.field_id,
'course_id': self.course_id,
'course_name': self.course_name,
'fields': self.fields,
'qrcode_url': qrcode_url,
}
class CourseRegisterInfo(BaseModelMixin):
user_id = models.CharField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识', db_index=True)
course_id = models.CharField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True)
course_name = models.CharField(_('course_name'), max_length=255, blank=True, null=True, help_text='课程名称')
field_id = models.CharField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True)
fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段信息')
class Meta:
verbose_name = _('课程报名信息')
verbose_name_plural = _('课程报名信息')
unique_together = (
('user_id', 'course_id', 'field_id'),
)
def __unicode__(self):
return '%d' % self.pk
@property
def data(self):
return {
'field_id': self.field_id,
'course_id': self.course_id,
'course_name': self.course_name,
'fields': self.fields,
}
class UserCourseRegisterInfo(BaseModelMixin):
user_id = models.CharField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识', db_index=True)
course_id = models.CharField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True)
course_name = models.CharField(_('course_name'), max_length=255, blank=True, null=True, help_text='课程名称')
# {
# 'field_id': '',
# 'fields': []
# }
fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段信息')
class Meta:
verbose_name = _('用户课程报名信息')
verbose_name_plural = _('用户课程报名信息')
unique_together = (
('user_id', 'course_id'),
)
def __unicode__(self):
return '%d' % self.pk
@property
def data(self):
return {
'user_id': self.user_id,
'fields': self.fields,
}
|