models.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #!/usr/bin/env python
  2. #-*- coding: utf-8 -*-
  3. from django.db import models
  4. from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
  5. from swyzxwb_photovote.common.DataConvert import UniqueID
  6. # Create your models here.
  7. class PermissionList(models.Model):
  8. name = models.CharField(max_length=64)
  9. url = models.CharField(max_length=255)
  10. def __unicode__(self):
  11. return '%s(%s)' %(self.name,self.url)
  12. class RoleList(models.Model):
  13. name = models.CharField(max_length=64)
  14. permission = models.ManyToManyField(PermissionList,null=True,blank=True)
  15. def __unicode__(self):
  16. return self.name
  17. class UserManager(BaseUserManager):
  18. def create_user(self,sid,classid,username,password=None):
  19. if sid==None:
  20. raise ValueError('Users must have an student id!')
  21. if classid==None:
  22. raise ValueError('Users must have an class id!')
  23. user = self.model(
  24. sid = sid,
  25. classid = classid,
  26. username = username,
  27. importid = UniqueID()
  28. )
  29. user.set_password(password)
  30. user.save(using=self._db)
  31. return user
  32. def create_superuser(self,sid,classid,username,password):
  33. user = self.create_user(
  34. username = username,
  35. password = password,
  36. classid=classid,
  37. sid=sid,
  38. importid = UniqueID()
  39. )
  40. user.is_active = True
  41. user.is_superuser = True
  42. user.save(using=self._db)
  43. return user
  44. class GroupList(models.Model):
  45. name = models.CharField(max_length=64)
  46. classid = models.IntegerField(db_index=True,unique=True)
  47. #users = models.ManyToManyField(User,null=True,blank=True)
  48. def __unicode__(self):
  49. return self.name
  50. class GroupListList(models.Model):
  51. classid = models.ManyToManyField(GroupList,null=True,blank=True)
  52. class User(AbstractBaseUser):
  53. username = models.CharField(max_length=40, unique=True, db_index=True)
  54. sid = models.IntegerField(unique=True, db_index=True)
  55. classid = models.ForeignKey(GroupList,null=True,blank=True)
  56. email = models.EmailField(max_length=255, null=True ,blank=True)
  57. is_active = models.BooleanField(default=False)
  58. is_superuser = models.BooleanField(default=False)
  59. nickname = models.CharField(max_length=64, null=True)
  60. sex = models.CharField(max_length=2, null=True)
  61. role = models.ForeignKey(RoleList,null=True,blank=True)
  62. birthday = models.DateField(null=True,blank=True)
  63. importid = models.IntegerField(unique=False)
  64. objects = UserManager()
  65. USERNAME_FIELD = 'username'
  66. REQUIRED_FIELDS = ['sid','classid','importid']
  67. def has_perm(self,perm,obj=None):
  68. if self.is_active and self.is_superuser:
  69. return True