Guest User

Untitled

a guest
Jan 29th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.81 KB | None | 0 0
  1. from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  2. from django.contrib.auth.models import PermissionsMixin
  3. from django.utils import timezone
  4. from model_utils.managers import InheritanceManager
  5. from django.db import models
  6. from django.utils.translation import ugettext_lazy as _
  7.  
  8.  
  9. class UserManager(BaseUserManager, InheritanceManager):
  10. def create_user(self, email=None, password=None, **extra_fields):
  11. now = timezone.now()
  12. email = self.normalize_email(email)
  13. u = User(email=email, last_login=now,
  14. **extra_fields)
  15. u.set_password(password)
  16. u.save(using=self._db)
  17. return u
  18.  
  19. def create_superuser(self, email, password, **extra_fields):
  20. u = self.create_user(email, password, **extra_fields)
  21. u.is_superuser = True
  22. u.is_admin = True
  23. u.is_staff = True
  24. u.save(using=self._db)
  25. return u
  26.  
  27.  
  28. def user_directory_path(instance, filename):
  29. # file will be uploaded to MEDIA_ROOT/username/<filename>
  30. return 'user_{0}/{1}'.format(instance.username, filename)
  31.  
  32.  
  33. class User(AbstractBaseUser, PermissionsMixin):
  34. def get_full_name(self):
  35. return str(self.username)
  36.  
  37. def get_short_name(self):
  38. return str(self.username)
  39.  
  40. email = models.EmailField(unique=True)
  41. objects = UserManager()
  42.  
  43. account_choices = (
  44. ('PRO', 'Provider'),
  45. ('CON', 'Consumer'),
  46. )
  47. account_type = models.CharField(max_length=3, choices=account_choices)
  48. image = models.ImageField(upload_to=user_directory_path, height_field=None, width_field=None, max_length=100,
  49. null=True,
  50. blank=True)
  51. address = models.CharField(max_length=100)
  52. description = models.TextField(max_length=1000, blank=True)
  53. city = models.CharField(max_length=200)
  54. phone_number = models.CharField(max_length=200)
  55. website = models.URLField(blank=True, null=True)
  56. username = models.CharField(_('Username'), blank=True, max_length=50)
  57.  
  58. is_active = models.BooleanField(_('Active'), default=True)
  59. groups = models.ManyToManyField(blank=True,
  60. help_text='The groups this hospital belongs to. '
  61. 'An hospital will get all permissions granted to '
  62. 'each of their groups.', related_name='hospital_set',
  63. related_query_name='hospital', to='auth.Group', verbose_name='groups')
  64. is_logged_in = models.BooleanField(_('Logged In'), default=False)
  65. has_configured_account = models.BooleanField(_('Has Configured Account'), default=False)
  66. first_name = models.CharField(_('First Name'), max_length=200, blank=True)
  67. last_name = models.CharField(_('Last Name'), max_length=200, blank=True)
  68. bank_account_name = models.CharField(_('Bank Account Name'), max_length=400, blank=True)
  69. bank_name = models.CharField(_('Bank Name'), max_length=500, blank=True)
  70. bank_account_number = models.CharField(_('Account Number'), max_length=30, blank=True)
  71.  
  72. def __unicode__(self):
  73. return self.username
  74.  
  75. USERNAME_FIELD = 'email'
  76. REQUIRED_FIELD = ['account_type']
  77.  
  78. @property
  79. def image_url(self):
  80. if self.image and hasattr(self.image, 'url'):
  81. return self.image.url
  82.  
  83.  
  84. class Worker(models.Model):
  85. user = models.ForeignKey(User, on_delete=models.CASCADE)
  86. is_superuser = models.BooleanField(_('Superuser'), default=False)
  87. is_admin = models.BooleanField(_('Admin'), default=False)
  88. is_staff = models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.',
  89. verbose_name='staff status')
  90.  
  91.  
  92. class Admin(models.Model):
  93. user = models.ForeignKey(User, on_delete=models.CASCADE)
  94. is_superuser = models.BooleanField(_('Superuser'), default=False)
  95. is_admin = models.BooleanField(_('Admin'), default=False)
  96. is_staff = models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.',
  97. verbose_name='staff status')
  98.  
  99.  
  100. class NormalUser(models.Model):
  101. user = models.ForeignKey(User, on_delete=models.CASCADE)
  102. is_superuser = models.BooleanField(_('Superuser'), default=False)
  103. is_admin = models.BooleanField(_('Admin'), default=False)
  104. is_staff = models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.',
  105. verbose_name='staff status')
  106.  
  107.  
  108. class Attendance(models.Model):
  109. user = models.ForeignKey(NormalUser, on_delete=models.CASCADE)
  110. datetime = models.DateTimeField(default=timezone.now)
  111. presence = models.BooleanField(default=False)
  112. entry_time = models.TimeField(default=timezone.now)
  113. exit_time = models.TimeField(default=timezone.now)
Add Comment
Please, Sign In to add comment