models.py 2.6 KB

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