class Task(models.Model): Id = ShortUUIDField(unique=True, primary_key=True, blank=False, editable=False) Property = models.ForeignKey(Property, blank=True, on_delete=models.DO_NOTHING) Value = models.CharField(max_length=50) CreatedOn = models.DateTimeField(auto_now_add=True) ModifiedOn = models.DateTimeField(auto_now_add=True) _Parser = None class Meta: ordering = ['-ModifiedOn'] def save(self, *args, **kwargs): if not self.Id: self.CreatedOn = timezone.now() self.ModifiedOn = timezone.now() return super(Task, self).save(*args, **kwargs) def __str__(self): return u'Set {0} to {1}'.format(self.Property, self.Value) def __unicode__(self): return u'Set {0} to {1}'.format(self.Property, self.Value)
class Control(models.Model): Id = ShortUUIDField(unique=True, primary_key=True, blank=False, editable=False) Name = models.CharField(max_length=50) Tasks = models.ManyToManyField(Task, blank=True) Conditions = models.ManyToManyField(Condition, blank=True) CreatedOn = models.DateTimeField(auto_now_add=True) ModifiedOn = models.DateTimeField(auto_now_add=True) class Meta: ordering = ['-ModifiedOn'] def save(self, *args, **kwargs): if not self.Id: self.CreatedOn = timezone.now() self.ModifiedOn = timezone.now() return super(Control, self).save(*args, **kwargs) def __str__(self): return "Task " + self.Name def __unicode__(self): return "Task " + self.Name
class User(AbstractBaseUser, PermissionsMixin): uid = ShortUUIDField(primary_key=True) telephone = models.CharField(max_length=11) email = models.EmailField(unique=True) username = models.CharField(max_length=100) nickname = models.CharField(max_length=100, default="") is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) access_part = models.CharField(max_length=200) data_joined = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class ModBox(models.Model): """配置槽模型类""" id = ShortUUIDField(primary_key=True) modboxs = JSONField() type = models.CharField(max_length=20, null=False) wfuser = models.ForeignKey( 'wfusers.WfUser', on_delete=models.CASCADE, to_field='email', db_column='wfuser_email', null=False ) warframe = models.ForeignKey( 'warframes.Warframe', on_delete=models.CASCADE, to_field='name', db_column='warframe_name', null=True ) weapon = models.ForeignKey( 'weapons.Weapon', on_delete=models.CASCADE, to_field='name', db_column='weapon_name', null=True ) share_time = models.DateTimeField(auto_now_add=True) def __str__(self): if self.warframe_id: return '{}:--{}'.format(self.wfuser_id, self.warframe_id) elif self.weapon_id: return '{}:--{}'.format(self.wfuser_id, self.weapon_id) else: return '{}:--Null'.format(self.wfuser_id) class Meta: ordering = ['-share_time']
class User(AbstractBaseUser, PermissionsMixin): # 我们不使用默认的自增长的主键 # 使用UUID/shortuuid pip3 install django-shortuuidfield uid = ShortUUIDField(primary_key=True) telephone = models.CharField(max_length=11, unique=True) email = models.EmailField(unique=True, null=True) username = models.CharField(max_length=100) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) data_joined = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'telephone' # telephone username password REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class Interface(models.Model): Id = ShortUUIDField(unique=True, primary_key=True, blank=False, editable=False) Name = models.CharField(max_length=50) Editor = models.ForeignKey(Property, null=True, related_name="editor", on_delete=models.DO_NOTHING) Monitor = models.ForeignKey(Property, null=True, on_delete=models.DO_NOTHING) CreatedOn = models.DateTimeField(auto_now_add=True) ModifiedOn = models.DateTimeField(auto_now_add=True) class Meta: ordering = ['-ModifiedOn'] def save(self, *args, **kwargs): if not self.Id: self.CreatedOn = timezone.now() self.ModifiedOn = timezone.now() return super(Interface, self).save(*args, **kwargs) def __str__(self): return "Interface " + self.Name def __unicode__(self): return "Interface " + self.Name
class User(AbstractBaseUser, PermissionsMixin): #主键不使用自增的 101 102 103 104 # shortuuid pip install django-shortuuidfield uid = ShortUUIDField(primary_key=True) telephone = models.CharField(max_length=11, unique=True) email = models.EmailField(null=True, unique=True) username = models.CharField(max_length=100, unique=True) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) date_joined = models.DateTimeField(auto_now_add=True) EMAIL_FIELD = 'email' USERNAME_FIELD = 'telephone' REQUIRED_FIELDS = ['username'] objects = UserManager() def get_full_name(self): return self.username def get_black_user(self): return self.objects.filter(is_active=False)
class Task(models.Model): # under category uuid = ShortUUIDField(unique=True) category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='category') title = models.CharField(max_length=100) description = HTMLField(blank=True, default=None) pdf_file = models.FileField( upload_to=upload_location, validators=[FileExtensionValidator(allowed_extensions=['pdf'])]) status = models.IntegerField(choices=STATUS, default=0) start_date = models.DateTimeField(verbose_name='start_date') last_date = models.DateTimeField(verbose_name='last_date', blank=True, null=True) is_github = models.BooleanField( default=False, verbose_name= 'If you want the participant to provide a GitHub link please select this', ) def __str__(self): return self.category.title + "--->" + self.title
class MTUser(AbstractBaseUser, PermissionsMixin): uid = ShortUUIDField(primary_key=True, verbose_name="用户主键表") telephone = models.CharField(unique=True, max_length=11, verbose_name="手机号") email = models.EmailField(max_length=100, verbose_name="邮箱", blank=True) username = models.CharField(unique=False, max_length=100, verbose_name="用户名") avatar = models.CharField(max_length=200, verbose_name="头像链接") date_joined = models.DateTimeField(auto_now_add=True, verbose_name="加入时间") is_active = models.BooleanField(default=True, verbose_name="是否可用") is_staff = models.BooleanField(default=False, verbose_name="是否为员工") is_merchant = models.BooleanField(default=False, verbose_name="是否为商家") USERNAME_FIELD = 'telephone' REQUIRED_FIELDS = ['username'] EMAIL_FIELDS = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class User(AbstractBaseUser, PermissionsMixin): # 用shortuuid当做主键 # shortuuidfield uid = ShortUUIDField(primary_key=True) telephone = models.CharField(max_length=11, unique=True) # password = models.CharField(max_length=200) email = models.EmailField(unique=True, null=True) username = models.CharField(max_length=200) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) data_joined = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'telephone' # 唯一验证字段 REQUIRED_FIELDS = ['username'] # 创建超级用户 EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class User(AbstractBaseUser, PermissionsMixin): # 使用shortuuid uid = ShortUUIDField(primary_key=True) #shotuuid,主键 telephone = models.CharField(max_length=11, unique=True) #手机号 password = models.CharField(max_length=200) #密码 email = models.EmailField(unique=True, null=True) #电子邮箱 username = models.CharField(max_length=100) #用户名 is_active = models.BooleanField(default=True) #账户是否有效 is_staff = models.BooleanField(default=False) #是否为员工,是员工可登陆后台 data_joined = models.DateTimeField(auto_now_add=True) #注册时间 USERNAME_FIELD = 'telephone' # telephone,username,password REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class User(AbstractBaseUser, PermissionsMixin): # 使用shortuuid # 需要第三方包 shortuuidfield # pip install django-shortuuidfield uid = ShortUUIDField(primary_key=True) telephone = models.CharField(max_length=11, unique=True) username = models.CharField(max_length=100) email = models.EmailField(unique=True) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) date_joined = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'telephone' # 验证时username代表的字段是telephone REQUIRED_FIELDS = ['username'] # 创建超级用户的时候,需要额外键入值的字段,默认还包括USERNAME_FIELD定义的字段和password EMAIL_FIELD = 'email' objects = UserManager() # 注意写法 def get_full_name(self): return self.username def get_short_name(self): return self.username
class User(AbstractBaseUser, PermissionsMixin): """用户数据模型""" uid = ShortUUIDField(primary_key=True) username = models.CharField(max_length=20) email = models.EmailField(unique=True, null=True, blank=True) telephone = models.CharField(max_length=11, unique=True) date_time = models.DateTimeField(auto_now_add=True, null=True, blank=True) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) is_superuser = models.BooleanField(default=False) USERNAME_FIELD = 'telephone' REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class User(AbstractBaseUser, PermissionsMixin): #主鍵不選用自增長的id 防止到了101 之後 沒數據 #選擇uuid uuid 太長佔據空間 所有選擇 shortuuid uid = ShortUUIDField(primary_key=True) telephone = models.CharField(max_length=11, unique=True) email = models.EmailField(unique=True, null=True) username = models.CharField(max_length=100) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) data_joined = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'telephone' #雖然下面只有一個username 但是默認會驗證 username telephone password REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class User(AbstractBaseUser, PermissionsMixin): uid = ShortUUIDField(primary_key=True) telephone = models.CharField( max_length=11, unique=True, validators=[validators.RegexValidator(r'1[3456789]\d{9}')]) email = models.EmailField(unique=True, null=True) username = models.CharField(max_length=100) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) data_joined = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'telephone' REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class AssignmentProgress(models.Model): assignment = models.ForeignKey(Assignment, related_name='assignment_progress') uuid = ShortUUIDField(unique=True) completed_lessons = models.ManyToManyField( Lesson, related_name='assignment_progress_completed_lessons') updated_on = models.DateTimeField(auto_now=True) # assigned_on = assignment.start_on start_on = models.DateTimeField( blank=True, null=True) # 1st lesson has been requested by student completed_on = models.DateTimeField(blank=True, null=True) delayed_on = models.DateTimeField( blank=True, null=True) # Assignment completed but after due_on datetime student = models.ForeignKey(Profile, related_name='as_students_assignment_progress') objects = AssignmentProgressManager() class Meta: ordering = ['-start_on'] unique_together = (("assignment", "student"), ) # one progress per user and assignment
class BaseModel(models.Model): """ Base model for possibly every other model. """ # the library does produce unique hash, but just in case idx = ShortUUIDField(unique=True) created_on = models.DateTimeField(default=timezone.now) modified_on = models.DateTimeField(auto_now=True) is_obsolete = models.BooleanField(default=False) def update(self, **kwargs): for attr, value in kwargs.items(): setattr(self, attr, value) self.save() return self @classmethod def new(cls, **kwargs): return cls.objects.create(**kwargs) @classmethod def flush(cls, force_delete=True, **kwargs): if force_delete: return cls.objects.filter(**kwargs).delete() else: return cls.objects.filter(**kwargs).update(is_obsolete=True) def delete(self, force_delete=True, **kwargs): if force_delete: super(BaseModel, self).delete(**kwargs) else: self.update(is_obsolete=True) return self class Meta: abstract = True
class BusinessAppInfo(CreateUpdateMixin): """ 应用信息类 """ account_id = models.CharField(_(u'出题账户id'), max_length=32, help_text=u'出题账户唯一标识', db_index=True) # APP 配置信息 app_id = ShortUUIDField(_(u'应用id'), max_length=32, help_text=u'应用唯一标识', db_index=True) app_name = models.CharField(_(u'应用名'), max_length=40, blank=True, null=True, help_text=u'应用名') app_description = models.TextField(_(u'应用描述'), 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(self): return { 'app_id': self.app_id, 'app_name': self.app_name, 'account_id': self.account_id, }
class User(AbstractBaseUser, PermissionsMixin): """ 用户模型 """ # pip install django-shortuuidfield # 使用uuid做为主键 uid = ShortUUIDField(primary_key=True) telephone = models.CharField(max_length=11, unique=True) email = models.EmailField(unique=True, verbose_name='邮箱', null=True) username = models.CharField(max_length=100) is_active = models.BooleanField(default=True, verbose_name='是否可用') is_staff = models.BooleanField(default=False) add_time = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'telephone' REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class PayinfoOrder(models.Model): uid = ShortUUIDField(primary_key=True, verbose_name='主键') payinfo = models.ForeignKey('Payinfo', on_delete=models.PROTECT, verbose_name='付费资讯') buyer = models.ForeignKey('xfzauth.User', on_delete=models.PROTECT, verbose_name='用户') amount = models.DecimalField(max_digits=11, decimal_places=2, default=0, verbose_name='订单金额') pub_time = models.DateTimeField(auto_now_add=True, verbose_name='订单生成时间') istype = models.SmallIntegerField( verbose_name='支付类型', default=0, choices=((0, '未知'), (1, '支付宝'), (2, '微信'))) status = models.SmallIntegerField( verbose_name='订单状态', default=1, choices=((1, '未支付'), (2, '支付成功'))) updated_time = models.DateTimeField(auto_now=True, verbose_name='最近修改时间') is_deleted = models.BooleanField(default=False, verbose_name='是否已删除') def __str__(self): return f'{self.payinfo} - {self.buyer}' class Meta: verbose_name = '付费资讯订单表' verbose_name_plural = verbose_name
class User(AbstractBaseUser, PermissionsMixin): uid = ShortUUIDField(primary_key=True, verbose_name='主键') telephone = models.CharField(max_length=11, unique=True, verbose_name='手机号') email = models.EmailField(unique=True, null=True, verbose_name='邮箱') username = models.CharField(max_length=30, verbose_name='用户名') is_active = models.BooleanField(default=True, verbose_name='是否有效账号') is_staff = models.BooleanField(default=False, verbose_name='是否员工账号') last_update = models.DateTimeField(auto_now=True, verbose_name='最近修改时间') date_joined = models.DateTimeField(auto_now_add=True, verbose_name='账号创建时间') USERNAME_FIELD = 'telephone' REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class Account(models.Model): # polje unikatni id uuid = ShortUUIDField(unique=True) # polje ime, dozvoljena duzina 80 znakova name = models.CharField(max_length=80) # polje description, nije obavezno za ispuniti desc = models.TextField(blank=True) address_one = models.CharField(max_length=100) address_two = models.CharField(max_length=100, blank=True) city = models.CharField(max_length=50) state = models.CharField(max_length=2) phone = models.CharField(max_length=20) # polje owner veze se na usera,uzima id iz usera owner = models.ForeignKey(User) # polje za kreiranje datuma created_on = models.DateField(auto_now_add=True) # Obicna klasa definira ponasanje objekta,Meta klasa definira ponasanje klase class Meta: # ime DB tablice gdje su spremljeni podatci iz klase Account verbose_name_plural = 'accounts' # Instanc metoda koja uvijek vraca string zapis , self oznacava objekt na kojeg se instanca vrsi def __str__(self): # vraca owner i name polje iz klase Account return "{} {}".format(self.owner, self.name) # Instanc metoda koja daje uredeni URL zapis za neki objekt def get_absolute_url(self): return reverse('account_detail', args=(self.uuid,)) def get_update_url(self): return reverse('account_update', args=(self.uuid,)) def get_delete_url(self): return reverse('account_delete', args=(self.uuid,))
def upload_view(request, user_id): user = User.objects.get(std_id=user_id) file = request.FILES.get('file') filename = request.POST.get('filename') fuid = ShortUUIDField() year = int(request.POST.get('year')) department = request.POST.get('dept') fileurl = MEDIA_ROOT + fuid + filename.split(".")[-1] f = open(fileurl, 'wb') for i in file.chunks(): f.write(i) resource = Resource.create(uid=fuid, title=filename, is_valid=True, year=year, department=department, absurl=fileurl, upload_user=user) # 不知道怎么获取当前用户 user.upload_history = user.upload_history + ',' + fuid resource.save() # 再把该文件的tag和resource连接起来 return HttpResponse('上传成功!')
class Transmitter(models.Model): """Model for antennas transponders.""" uuid = ShortUUIDField(db_index=True) description = models.TextField() alive = models.BooleanField(default=True) uplink_low = models.PositiveIntegerField(blank=True, null=True) uplink_high = models.PositiveIntegerField(blank=True, null=True) downlink_low = models.PositiveIntegerField(blank=True, null=True) downlink_high = models.PositiveIntegerField(blank=True, null=True) mode = models.ForeignKey(Mode, related_name='transmitters', blank=True, null=True, on_delete=models.SET_NULL) invert = models.BooleanField(default=False) baud = models.FloatField(validators=[MinValueValidator(0)], null=True, blank=True) satellite = models.ForeignKey(Satellite, related_name='transmitters', null=True) def __unicode__(self): return self.description
class User(AbstractBaseUser, PermissionsMixin): uid = ShortUUIDField(primary_key=True) username = models.CharField(max_length=18, verbose_name='用户名') telephone = models.CharField(max_length=11, unique=True, verbose_name='手机号码') email = models.EmailField(unique=True, verbose_name='邮箱', null=True) is_active = models.BooleanField(default=True, verbose_name='是否为激活用户') is_staff = models.BooleanField(default=False, verbose_name='是否为员工') create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') # 以telephone 作为验证 USERNAME_FIELD = 'telephone' # 创建超级用户需要的字段 REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class User(AbstractBaseUser,PermissionsMixin): #不使用默认自增长组件 #uuid、shortuuid uid = ShortUUIDField(primary_key=True,) telephone = models.CharField(max_length=11,unique=True) email = models.EmailField(unique=True,null=True) username = models.CharField(max_length=100) is_active = models.BooleanField(default=True) #是否是公司员工 is_staff = models.BooleanField(default=False) date_joined = models.DateTimeField(auto_now_add=True) #创建superuser后会提示输入 USERNAME_FIELD = 'telephone' REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username
class WeChatTemplateMessageSendLogInfo(BaseModelMixin): send_id = ShortUUIDField(_(u'send_id'), max_length=32, help_text=u'发送唯一标识', db_index=True, unique=True) request_id = models.CharField(_(u'request_id'), max_length=32, blank=True, null=True, help_text=u'请求唯一标识', db_index=True) wepush_id = models.CharField(_(u'wepush_id'), max_length=32, help_text=u'模板唯一标识', db_index=True) openid = models.CharField(_(u'openid'), max_length=255, blank=True, null=True, help_text=u'接受者Openid', db_index=True) send_msgres = models.TextField(_(u'send_msgres'), blank=True, null=True, help_text=u'发送回执') send_status = models.BooleanField(_(u'send_status'), default=True, help_text=u'发送状态') class Meta: verbose_name = _(u'wechattemplatemessagesendloginfo') verbose_name_plural = _(u'wechattemplatemessagesendloginfo') def __unicode__(self): return unicode(self.pk)
class User(AbstractUser): uuid = ShortUUIDField(primary_key=True) def save(self, *args, **kwargs): super(User, self).save(*args, **kwargs) try: UserCo2.objects.get(user=self) except UserCo2.DoesNotExist: self.create_userco2() try: UserToken.objects.get(user=self) except UserToken.DoesNotExist: self.create_usertoken() def create_userco2(self): userco2 = UserCo2(user=self) userco2.save() def create_usertoken(self): usertoken = UserToken(user=self) usertoken.save() def __str__(self): return self.email
class Communication(models.Model): uuid = ShortUUIDField(unique=True) subject = models.CharField(max_length=50) notes = models.TextField() kind = models.PositiveSmallIntegerField(choices=TYPE_LIST) date = models.DateField() owner = models.ForeignKey(User) account = models.ForeignKey(Account) created_on = models.DateField(auto_now_add=True) class Meta: verbose_name_plural = 'communications' def __str__(self): return u"%s" % self.subject def get_absolute_url(self): return reverse('comm:comm_detail', args=[self.uuid]) def get_update_url(self): return reverse('comm:comm_update', args=[self.uuid]) def get_delete_url(self): return reverse('comm:comm_delete', args=[self.id])
class User(AbstractBaseUser, PermissionsMixin): # 暂时不使用自增长的主键,容易被别人抓住造假 # 因此采用uuid/shortuuid字段 # 需要安装shortuuid uid = ShortUUIDField(primary_key=True) telephone = models.CharField(max_length=11, unique=True) # password = models.CharField(max_length=200) email = models.EmailField(unique=True) username = models.CharField(max_length=100) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) data_joined = models.DateTimeField(auto_now_add=True) USERNAME_FIELD = 'telephone' # telephone username password REQUIRED_FIELDS = ['username'] EMAIL_FIELD = 'email' objects = UserManager() def get_full_name(self): return self.username def get_short_name(self): return self.username