Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.74 KB | None | 0 0
  1. from django.contrib.auth.models import User
  2. from django.db import models
  3. from django.contrib.auth.models import (
  4. BaseUserManager, AbstractBaseUser
  5. )
  6.  
  7. class UserManager(BaseUserManager):
  8.  
  9. def create_user(self, email, password=None):
  10. """
  11. Creates and saves a User with the given email and password.
  12. """
  13. if not email:
  14. raise ValueError('Users must have an email address')
  15.  
  16. user = self.model(
  17. email=self.normalize_email(email),
  18. )
  19.  
  20. user.set_password(password)
  21. user.save(using=self._db)
  22. return user
  23.  
  24. def create_staffuser(self, email, password):
  25. """
  26. Creates and saves a staff user with the given email and password.
  27. """
  28. user = self.create_user(
  29. email,
  30. password=password,
  31. )
  32. user.staff = True
  33. user.save(using=self._db)
  34. return user
  35.  
  36. def create_superuser(self, email, password):
  37. """
  38. Creates and saves a superuser with the given email and password.
  39. """
  40. user = self.create_user(
  41. email,
  42. password=password,
  43. )
  44. user.staff = True
  45. user.admin = True
  46. user.save(using=self._db)
  47. return user
  48.  
  49. class Company(models.Model):
  50. company_name = models.CharField(max_length=255, default='')
  51. primary_contact = models.CharField(max_length=255, default='')
  52. USERNAME_FIELD = 'company_name'
  53. class Meta:
  54. db_table = 'companies'
  55. verbose_name = 'Company'
  56. verbose_name_plural = 'Companies'
  57.  
  58. def __str__(self):
  59. return self.company_name
  60.  
  61. class User(AbstractBaseUser):
  62. email = models.EmailField(
  63. verbose_name='email address',
  64. max_length=255,
  65. unique=True,
  66. )
  67. first_name = models.CharField(max_length=255, default='')
  68. last_name = models.CharField(max_length=255, default='')
  69. active = models.BooleanField(default=True)
  70. staff = models.BooleanField(default=False) # a admin user; non super-user
  71. admin = models.BooleanField(default=False,verbose_name='Fox admin?') # a superuser
  72. company = models.ForeignKey(Company, on_delete=models.CASCADE, default=0, related_name='company')
  73. # notice the absence of a "Password field", that's built in.
  74.  
  75. USERNAME_FIELD = 'email'
  76. REQUIRED_FIELDS = [] # Email & Password are required by default.
  77.  
  78. def get_full_name(self):
  79. # The user is identified by their email address
  80. return self.email
  81.  
  82. def get_short_name(self):
  83. # The user is identified by their email address
  84. return self.email
  85.  
  86. def __str__(self): # __unicode__ on Python 2
  87. return self.email
  88.  
  89. def has_perm(self, perm, obj=None):
  90. "Does the user have a specific permission?"
  91. # Simplest possible answer: Yes, always
  92. return True
  93.  
  94. def has_module_perms(self, app_label):
  95. "Does the user have permissions to view the app `app_label`?"
  96. # Simplest possible answer: Yes, always
  97. return True
  98.  
  99. @property
  100. def is_staff(self):
  101. "Is the user a member of staff?"
  102. return self.staff
  103.  
  104. @property
  105. def is_admin(self):
  106. "Is the user a admin member?"
  107. return self.admin
  108.  
  109. @property
  110. def is_active(self):
  111. "Is the user active?"
  112. return self.active
  113.  
  114. objects = UserManager()
  115.  
  116.  
  117.  
  118.  
  119. # class UserProfile(models.Model):
  120. # STATUS = (
  121. # ('Full-time', 'Full-time'),
  122. # ('Part-time', 'Part-time'),
  123. # ('Volunteer', 'Volunteer')
  124. # )
  125. #
  126. # # user = models.OneToOneField(User, default=0, on_delete=models.CASCADE, related_name='profile')
  127. # phone = models.IntegerField(default=0)
  128. # title = models.CharField(max_length=255, default='')
  129. # status = models.CharField(max_length=255, default='', choices=STATUS)
  130. # company = models.ForeignKey(Company, on_delete=models.CASCADE, default=0, related_name='company')
  131. #
  132. # class Meta:
  133. # db_table = 'user_profile'
  134. # verbose_name = 'User Profile'
  135. # verbose_name_plural = 'Users Profile'
  136. #
  137. # def __str__(self):
  138. # return '{fname} {lname} profile'.format(fname=self.user.first_name, lname=self.user.last_name)
  139.  
  140. class Staff(models.Model):
  141. STATUS = (
  142. ('Full-time', 'Full-time'),
  143. ('Part-time', 'Part-time'),
  144. ('Volunteer', 'Volunteer')
  145. )
  146.  
  147. first_name = models.CharField(max_length=255)
  148. last_name = models.CharField(max_length=255)
  149. email = models.EmailField()
  150. title = models.CharField(max_length=255)
  151. status = models.CharField(max_length=255, default='', choices=STATUS)
  152. phone = models.CharField(max_length=255)
  153. lat = models.FloatField()
  154. long = models.FloatField()
  155. company = models.ForeignKey(Company, on_delete=models.DO_NOTHING, default=0)
  156.  
  157. class Meta:
  158. db_table = 'staff'
  159. verbose_name = 'Staff Member'
  160. verbose_name_plural = 'Staff Members'
  161.  
  162. def __str__(self):
  163. return self.first_name
  164.  
  165. class Positions(models.Model):
  166. position_name = models.CharField(max_length=255)
  167. company = models.ForeignKey(Company, on_delete=models.DO_NOTHING, default=0)
  168. hidden = models.BooleanField(default=False)
  169.  
  170. class Meta:
  171. db_table = 'positions'
  172. verbose_name = 'Position'
  173. verbose_name_plural = 'Positions'
  174.  
  175.  
  176. class Needs(models.Model):
  177. company = models.ForeignKey(Company, on_delete=models.CASCADE, default=0)
  178. day = models.DateField()
  179. position = models.CharField(max_length=255, default='')
  180. skill_level = models.IntegerField(default=0)
  181. from_field = models.TimeField(db_column='from')
  182. to = models.TimeField()
  183. quantity = models.IntegerField(default=0)
  184.  
  185. class Meta:
  186. db_table = 'company_needs'
  187. verbose_name = 'Need'
  188. verbose_name_plural = 'Needs'
  189.  
  190. # class GeneralPreferences(models.Model):
  191. # PREFERENCES = (
  192. # ('Not a priority', 0),
  193. # ('Low priority', 2),
  194. # ('Medium priority', 5),
  195. # ('High priority', 7),
  196. # ('Must meet priority', 10)
  197. # )
  198. #
  199. # user = models.ForeignKey(User, default=0, on_delete=models.CASCADE)
  200. # day_off_preferences = models.CharField(max_length=100, choices=PREFERENCES, default='')
  201. # skill_set_preferences = models.CharField(max_length=100, choices=PREFERENCES, default='')
  202. # position_preferences = models.CharField(max_length=100, choices=PREFERENCES, default='')
  203. # shift_preferences = models.CharField(max_length=100, choices=PREFERENCES, default='')
  204. #
  205. # class Meta:
  206. # db_table = 'general_preferences'
  207. # verbose_name = 'General Preference'
  208. # verbose_name_plural = 'General Preferences'
  209. #
  210. #
  211. # class WeeklyTargets(models.Model):
  212. # user = models.ForeignKey(User, default=0, on_delete=models.CASCADE)
  213. # days_working = models.IntegerField(default=0)
  214. # hours_working = models.IntegerField(default=0)
  215. #
  216. # class Meta:
  217. # db_table = 'weekly_targets'
  218. # verbose_name = 'Weekly Target'
  219. # verbose_name_plural = 'Weekly Targets'
  220. #
  221. #
  222. # class HoursPerWeek(models.Model):
  223. # maximum_hours = models.IntegerField(default=0)
  224. # target_hours = models.IntegerField(default=0)
  225. # minimum_hours = models.IntegerField(default=0)
  226. #
  227. # class Meta:
  228. # db_table = 'hours_per_week'
  229. # verbose_name = 'Hours Per Week'
  230. # verbose_name_plural = 'Hours Per Week'
  231. #
  232. #
  233. # class HoursPerDay(models.Model):
  234. # maximum_hours = models.IntegerField(default=0)
  235. # target_hours = models.IntegerField(default=0)
  236. # minimum_hours = models.IntegerField(default=0)
  237. #
  238. # class Meta:
  239. # db_table = 'hours_per_day'
  240. # verbose_name = 'Hours Per Day'
  241. # verbose_name_plural = 'Hours Per Day'
  242. #
  243. #
  244. # class HoursInRow(models.Model):
  245. # maximum_hours = models.IntegerField(default=0)
  246. # target_hours = models.IntegerField(default=0)
  247. # minimum_hours = models.IntegerField(default=0)
  248. #
  249. # class Meta:
  250. # db_table = 'hours_in_row'
  251. # verbose_name = 'Hours In a Row'
  252. # verbose_name_plural = 'Hours In a Row'
  253. #
  254. #
  255. # class FullTimeEmployee(models.Model):
  256. # user = models.ForeignKey(User, default=0, on_delete=models.CASCADE)
  257. # hours_per_week = models.ManyToManyField(HoursPerWeek, default=0)
  258. # hours_per_day = models.ManyToManyField(HoursPerDay, default=0)
  259. # hours_in_row = models.ManyToManyField(HoursInRow, default=0)
  260. # time_off = models.IntegerField(default=0)
  261. #
  262. # class Meta:
  263. # db_table = 'full_time_employee'
  264. # verbose_name = 'Full Time Employee'
  265. # verbose_name_plural = 'Full Time Employees'
  266. #
  267. #
  268. # class PartTimeEmployee(models.Model):
  269. # user = models.ForeignKey(User, default=0, on_delete=models.CASCADE)
  270. # hours_per_week = models.ManyToManyField(HoursPerWeek, default=0)
  271. # hours_per_day = models.ManyToManyField(HoursPerDay, default=0)
  272. # hours_in_row = models.ManyToManyField(HoursInRow, default=0)
  273. # time_off = models.IntegerField(default=0)
  274. #
  275. # class Meta:
  276. # db_table = 'part_time_employee'
  277. # verbose_name = 'Part Time Employee'
  278. # verbose_name_plural = 'Part Time Employees'
  279. #
  280. #
  281. # class VolunteerStaff(models.Model):
  282. # user = models.ForeignKey(User, default=0, on_delete=models.CASCADE)
  283. # hours_per_week = models.ManyToManyField(HoursPerWeek, default=0)
  284. # hours_per_day = models.ManyToManyField(HoursPerDay, default=0)
  285. # hours_in_row = models.ManyToManyField(HoursInRow, default=0)
  286. # time_off = models.IntegerField(default=0)
  287. #
  288. # class Meta:
  289. # db_table = 'volunteer_staff'
  290. # verbose_name = 'Volunteer Staff'
  291. # verbose_name_plural = 'Volunteers Staff'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement