1 Star 0 Fork 141

xa0931/CloudComputing20060519-520

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
models.py 12.74 KB
一键复制 编辑 原始数据 按行查看 历史
陆敬祥 提交于 2年前 . 2020033160 陆敬祥
# -*- coding: utf-8 -*-
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from shortuuidfield import ShortUUIDField
from utils.basemodels import CreateUpdateMixin, MediaMixin
class CompetitionKindInfo(CreateUpdateMixin):
"""比赛类别信息类"""
IT_ISSUE = 0
EDUCATION = 1
CULTURE = 2
GENERAL = 3
INTERVIEW = 4
REAR = 5
GEO = 6
SPORT = 7
KIND_TYPES = (
(IT_ISSUE, u'技术类'),
(EDUCATION, u'教育类'),
(CULTURE, u'文化类'),
(GENERAL, u'常识类'),
(GEO, u'地理类'),
(SPORT, u'体育类'),
(INTERVIEW, u'面试题')
)
kind_id = ShortUUIDField(_(u'比赛id'), max_length=32, blank=True, null=True, help_text=u'比赛类别唯一标识', db_index=True)
account_id = models.CharField(_(u'出题账户id'), max_length=32, blank=True, null=True, help_text=u'商家账户唯一标识', db_index=True)
app_id = models.CharField(_(u'应用id'), max_length=32, blank=True, null=True, help_text=u'应用唯一标识', db_index=True)
bank_id = models.CharField(_(u'题库id'), max_length=32, blank=True, null=True, help_text=u'题库唯一标识', db_index=True)
kind_type = models.IntegerField(_(u'比赛类型'), default=IT_ISSUE, choices=KIND_TYPES, help_text=u'比赛类型')
kind_name = models.CharField(_(u'比赛名称'), max_length=32, blank=True, null=True, help_text=u'竞赛类别名称')
sponsor_name = models.CharField(_(u'赞助商名称'), max_length=60, blank=True, null=True, help_text=u'赞助商名称')
total_score = models.IntegerField(_(u'总分数'), default=0, help_text=u'总分数')
question_num = models.IntegerField(_(u'题目个数'), default=0, help_text=u'出题数量')
# 周期相关
cop_startat = models.DateTimeField(_(u'比赛开始时间'), default=timezone.now, help_text=_(u'比赛开始时间'))
period_time = models.IntegerField(_(u'答题时间'), default=60, help_text=u'答题时间(min)')
cop_finishat = models.DateTimeField(_(u'比赛结束时间'), blank=True, null=True, help_text=_(u'比赛结束时间'))
# 参与相关
total_partin_num = models.IntegerField(_(u'total_partin_num'), default=0, help_text=u'总参与人数')
class Meta:
verbose_name = _(u'比赛类别信息')
verbose_name_plural = _(u'比赛类别信息')
def __unicode__(self):
return str(self.pk)
@property
def data(self):
return {
'account_id': self.account_id,
'app_id': self.app_id,
'kind_id': self.kind_id,
'kind_type': self.kind_type,
'kind_name': self.kind_name,
'total_score': self.total_score,
'question_num': self.question_num,
'total_partin_num': self.total_partin_num,
'cop_startat': self.cop_startat,
'cop_finishat': self.cop_finishat,
'period_time': self.period_time,
'sponsor_name': self.sponsor_name,
}
class BankInfo(CreateUpdateMixin):
"""
题库信息类
"""
IT_ISSUE = 0
EDUCATION = 1
CULTURE = 2
GENERAL = 3
INTERVIEW = 4
REAR = 5
GEO = 6
SPORT = 7
BANK_TYPES = (
(IT_ISSUE, u'技术类'),
(EDUCATION, u'教育类'),
(CULTURE, u'文化类'),
(GENERAL, u'常识类'),
(GEO, u'地理类'),
(SPORT, u'体育类'),
(INTERVIEW, u'面试题')
)
bank_id = ShortUUIDField(_(u'题库id'), max_length=32, blank=True, null=True, help_text=u'题库唯一标识', db_index=True)
uid = models.CharField(_(u'用户id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
account_id = models.CharField(_(u'商家id'), max_length=32, blank=True, null=True, help_text=u'商家账户唯一标识', db_index=True)
bank_name = models.CharField(_(u'题库名称'), max_length=40, blank=True, null=True, help_text=u'题库名称')
choice_num = models.IntegerField(_(u'选择题数'), default=0, help_text=u'选择题数')
fillinblank_num = models.IntegerField(_(u'填空题数'), default=0, help_text=u'填空题数')
bank_type = models.IntegerField(_(u'题库类型'), default=IT_ISSUE, choices=BANK_TYPES, help_text=u'题库类型')
kind_num = models.IntegerField(_(u'比赛使用次数'), default=0, help_text=u'比赛使用次数')
partin_num = models.IntegerField(_(u'总答题人数'), default=0, help_text=u'总答题人数')
class Meta:
verbose_name = _(u'题库')
verbose_name_plural = _(u'题库')
def __unicode__(self):
return str(self.pk)
@property
def total_question_num(self):
return self.choice_num + self.fillinblank_num
@property
def data(self):
return {
'bank_id': self.bank_id,
'bank_name': self.bank_name,
'choice_num': self.choice_num,
'fillinblank_num': self.fillinblank_num,
'bank_type': dict(self.BANK_TYPES)[self.bank_type],
'kind_num': self.kind_num,
'partin_num': self.partin_num,
'total_question_num': self.total_question_num
}
class ChoiceInfo(CreateUpdateMixin, MediaMixin):
"""
选择题信息类
"""
QUESTION_TYPE = 'choice'
TXT = 1
IMG = 2
AUDIO = 3
CONTENT_TYPE = (
(TXT, u'文本'),
(IMG, u'图片'),
(AUDIO, u'音频'),
)
bank_id = models.CharField(_(u'题库id'), max_length=32, blank=True, null=True, help_text=u'题库唯一标识', db_index=True)
ctype = models.IntegerField(_(u'题目类型'), choices=CONTENT_TYPE, default=TXT, help_text=u'题目类型')
question = models.CharField(_(u'问题'), max_length=255, blank=True, null=True, help_text=u'题目')
answer = models.CharField(_(u'答案'), max_length=255, blank=True, null=True, help_text=u'答案')
item1 = models.CharField(_(u'选项1'), max_length=255, blank=True, null=True, help_text=u'选项一')
item2 = models.CharField(_(u'选项2'), max_length=255, blank=True, null=True, help_text=u'选项二')
item3 = models.CharField(_(u'选项3'), max_length=255, blank=True, null=True, help_text=u'选项三')
item4 = models.CharField(_(u'选项4'), max_length=255, blank=True, null=True, help_text=u'选项四')
nandu = models.FloatField(_(u'难度'), max_length=255, blank=True, null=True, help_text=u'难度')
source = models.CharField(_(u'出处'), max_length=255, blank=True, null=True, help_text=u'出处')
class Meta:
verbose_name = _(u'选择题')
verbose_name_plural = _(u'选择题')
@property
def __unicode__(self):
return str(self.pk)
@property
def items(self):
tmp = []
if self.item1:
tmp.append(self.item1)
if self.item2:
tmp.append(self.item2)
if self.item3:
tmp.append(self.item3)
if self.item4:
tmp.append(self.item4)
return tmp
@property
def data_without_answer(self):
return {
'pk': self.pk,
'qtype': self.QUESTION_TYPE,
'bank_id': self.bank_id,
'ctype': self.ctype,
'question': self.question,
'items': self.items,
'source': self.source,
'nandu':self.nandu,
'media': self.media,
}
@property
def data(self):
return {
'pk': self.pk,
'qtype': self.QUESTION_TYPE,
'bank_id': self.bank_id,
'ctype': self.ctype,
'question': self.question,
'answer': self.answer,
'items': self.items,
'source': self.source,
'media': self.media,
}
class FillInBlankInfo(CreateUpdateMixin, MediaMixin):
"""
填空题信息类
"""
QUESTION_TYPE = 'fillinblank'
TXT = 1
IMG = 2
AUDIO = 3
CONTENT_TYPE = (
(TXT, u'文本'),
(IMG, u'图片'),
(AUDIO, u'音频'),
)
bank_id = models.CharField(_(u'题库id'), max_length=32, blank=True, null=True, help_text=u'题库唯一标识', db_index=True)
ctype = models.IntegerField(_(u'题目类型'), choices=CONTENT_TYPE, default=TXT, help_text=u'题目类型')
question = models.CharField(_(u'问题'), max_length=255, blank=True, null=True, help_text=u'题目')
answer = models.CharField(_(u'答案'), max_length=255, blank=True, null=True, help_text=u'答案')
nandu = models.FloatField(_(u'难度'), max_length=255, blank=True, null=True, help_text=u'难度')
source = models.CharField(_(u'出处'), max_length=255, blank=True, null=True, help_text=u'出处')
class Meta:
verbose_name = _(u'填空题')
verbose_name_plural = _(u'填空题')
def __unicode__(self):
return str(self.pk)
@property
def data_without_answer(self):
return {
'pk': self.pk,
'bank_id': self.bank_id,
'ctype': self.ctype,
'question': self.question,
'qtype': self.QUESTION_TYPE,
'source': self.source,
'nandu':self.nandu
}
@property
def data(self):
return {
'pk': self.pk,
'bank_id': self.bank_id,
'ctype': self.ctype,
'question': self.question,
'qtype': self.QUESTION_TYPE,
'answer': self.answer,
'source': self.source
}
class CompetitionQAInfo(CreateUpdateMixin):
"""答题记录信息类"""
UNCOMPLETED = 0
COMPLETED = 1
OVERTIME = 2
STATUS_CHOICES = (
(UNCOMPLETED, u'未完成'),
(COMPLETED, u'已完成'),
(OVERTIME, u'超时')
)
status = models.IntegerField(_(u'答题状态'), choices=STATUS_CHOICES, default=0, help_text=u'答题状态')
kind_id = models.CharField(_(u'比赛id'), max_length=32, blank=True, null=True, help_text=u'比赛类别唯一标识', db_index=True)
qa_id = ShortUUIDField(_(u'问题id'), max_length=32, blank=True, null=True, help_text=u'QA 唯一标识', db_index=True)
uid = models.CharField(_(u'用户id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
# 问题答案相关
qsrecord = models.TextField(_('问题记录'), max_length=10000, blank=True, null=True, help_text=u'问题记录')
asrecord = models.TextField(_('答案记录'), max_length=10000, blank=True, null=True, help_text=u'答案记录')
aslogrecord = models.TextField(_('答案提交记录'), max_length=10000, blank=True, null=True, help_text=u'答案提交记录')
# 耗费时间相关
started_stamp = models.BigIntegerField(_(u'开始时间戳'), default=0, help_text=u'开始时间戳(毫秒)')
finished_stamp = models.BigIntegerField(_(u'结束时间戳'), default=0, help_text=u'结束时间戳(毫秒)')
expend_time = models.IntegerField(_(u'耗时'), default=0, help_text=u'耗费时间(毫秒)')
started = models.BooleanField(_(u'已开始'), default=False, help_text=u'是否开始', db_index=True)
finished = models.BooleanField(_(u'已结束'), default=False, help_text=u'是否结束', db_index=True)
# 得分相关
correct_num = models.IntegerField(_(u'正确数'), default=0, help_text=u'答对数量')
incorrect_num = models.IntegerField(_(u'错误数'), default=0, help_text=u'答错数量')
correct_list = models.CharField(_(u'正确答案列表'), max_length=10000, blank=True, null=True, help_text=u'正确答案列表')
wrong_list = models.CharField(_(u'错误答案列表'), max_length=10000, blank=True, null=True, help_text=u'错误答案列表')
total_num = models.IntegerField(_(u'总数'), default=0, help_text=u'总共数量')
score = models.FloatField(_(u'得分'), default=0, help_text=u'分数')
pingjunnandu =models.FloatField(_(u'难度'), default=0, help_text=u'平均难度')
class Meta:
verbose_name = _(u'比赛问题记录')
verbose_name_plural = _(u'比赛问题记录')
def __unicode__(self):
return str(self.pk)
@property
def data(self):
return {
'qa_id': self.qa_id,
'kind_id': self.kind_id,
'uid': self.uid,
}
@property
def detail(self):
return {
'status': self.status,
'qa_id': self.qa_id,
'qs': self.qsrecord,
'as': self.asrecord,
'aslog': self.aslogrecord,
'total_num': self.total_num,
'correct_num': self.correct_num,
'incorrect_num': self.incorrect_num,
'correct_list': self.correct_list,
'wrong_list': self.wrong_list,
'nandu':self.pingjunnandu,
'score': self.score,
'time': self.expend_time / 1000.000,
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xa0931/cloud-computing20060519-520.git
git@gitee.com:xa0931/cloud-computing20060519-520.git
xa0931
cloud-computing20060519-520
CloudComputing20060519-520
master

搜索帮助