mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2024-09-21 16:33:22 +00:00
42922c622d
* dev: (27 commits) 统一get参数格式 修改一些错误 这个是刚才api地方的,忘了add上了 修改较多,涉及到小组管理员对比赛的管理,小组管理员可以看到他管理的小组的其他管理员创建的比赛,但看不到别人的题目,但是可以从前台看到比赛的题目,可以在比赛开始前测试题目 修改小组列表模板,适应数据库的修改 添加提升小组管理员的api,调整小组管理权限的认证方式 修改后台小组管理功能添加设为管理员按钮,方便添加多管理员 修改group的models添加小组管理员的多对多字段,把原来的管理员字段重命名为创建者 修改学校判断和自动统一队形的方法 统一格式 注释掉了用户主页里还没有后端配套的submission部分,添加学校显示,修复了settings里codeforces用户名无法编辑的问题,原来是html里边拼错了 统一userprofile字段的处理方式,都判断是否为none,修复typo 修改settings中语言为新版本的'zh-hans' 针对添加学号字段对页面的一些修改,注册是学校为青岛大学则显示学号字段,在user settings页面显示学号,并提供修改 在UserProfile中添加学号字段 吧if 。。。or...改成 if in 修改错误 验证小组邀请赛密码 contest list 添加小组邀请赛和私有小组赛 添加小组邀请赛 ...
77 lines
2.6 KiB
Python
77 lines
2.6 KiB
Python
# coding=utf-8
|
||
from django.db import models
|
||
from django.contrib.auth.models import AbstractBaseUser
|
||
|
||
from jsonfield import JSONField
|
||
|
||
|
||
class AdminGroup(models.Model):
|
||
pass
|
||
|
||
|
||
class UserManager(models.Manager):
|
||
use_in_migrations = True
|
||
|
||
def get_by_natural_key(self, username):
|
||
return self.get(**{self.model.USERNAME_FIELD: username})
|
||
|
||
|
||
REGULAR_USER = 0
|
||
ADMIN = 1
|
||
SUPER_ADMIN = 2
|
||
|
||
|
||
class User(AbstractBaseUser):
|
||
# 用户名
|
||
username = models.CharField(max_length=30, unique=True)
|
||
# 真实姓名
|
||
real_name = models.CharField(max_length=30, blank=True, null=True)
|
||
# 用户邮箱
|
||
email = models.EmailField(max_length=254, blank=True, null=True)
|
||
# 用户注册时间
|
||
create_time = models.DateTimeField(auto_now_add=True, null=True)
|
||
# 0代表不是管理员 1是普通管理员 2是超级管理员
|
||
admin_type = models.IntegerField(default=0)
|
||
# JSON字典用来表示该用户的问题的解决状态 1为ac,2为正在进行
|
||
problems_status = JSONField(default={})
|
||
# 找回密码用的token
|
||
reset_password_token = models.CharField(max_length=40, blank=True, null=True)
|
||
# token 生成时间
|
||
reset_password_token_create_time = models.DateTimeField(blank=True, null=True)
|
||
# 论坛授权token
|
||
auth_token = models.CharField(max_length=40, blank=True, null=True)
|
||
|
||
USERNAME_FIELD = 'username'
|
||
REQUIRED_FIELDS = []
|
||
|
||
objects = UserManager()
|
||
|
||
class Meta:
|
||
db_table = "user"
|
||
|
||
|
||
def _random_avatar():
|
||
import random
|
||
return "/static/img/avatar/avatar-" + str(random.randint(1, 20)) + ".png"
|
||
|
||
|
||
class UserProfile(models.Model):
|
||
user = models.OneToOneField(User)
|
||
avatar = models.CharField(max_length=50, default=_random_avatar)
|
||
blog = models.URLField(blank=True, null=True)
|
||
mood = models.CharField(max_length=200, blank=True, null=True)
|
||
hduoj_username = models.CharField(max_length=30, blank=True, null=True)
|
||
bestcoder_username = models.CharField(max_length=30, blank=True, null=True)
|
||
codeforces_username = models.CharField(max_length=30, blank=True, null=True)
|
||
rank = models.IntegerField(default=65535)
|
||
accepted_number = models.IntegerField(default=0)
|
||
submissions_number = models.IntegerField(default=0)
|
||
# JSON字典用来表示该用户的问题的解决状态 1为ac,2为正在进行
|
||
problems_status = JSONField(default={})
|
||
phone_number = models.CharField(max_length=15, blank=True, null=True)
|
||
school = models.CharField(max_length=200, blank=True, null=True)
|
||
student_id = models.CharField(max_length=15, blank=True, null=True)
|
||
|
||
class Meta:
|
||
db_table = "user_profile"
|