# 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={}) class Meta: db_table = "user_profile"