1
0

models.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from django.db import models
  2. from hashlib import sha256
  3. import datetime
  4. levels = (
  5. ('1', 'Standard User'),
  6. ('2', 'Supervisor'),
  7. ('3', 'Administrator')
  8. )
  9. class User(models.Model):
  10. status = models.BooleanField(default=True, blank=True)
  11. first_name = models.CharField(max_length=255, default="", blank=False)
  12. last_name = models.CharField(max_length=255, default="", blank=False)
  13. pin = models.CharField(max_length=255, null=False, blank=False, unique=True)
  14. level = models.CharField(max_length=255, blank=False, default="1", choices=levels)
  15. def save(self, *args, **kwargs):
  16. # Compare old vs new
  17. if self.pk:
  18. obj = User.objects.values('pin').get(pk=self.pk)
  19. if obj['pin'] != self.pin:
  20. self.pin = sha256(self.pin.encode('utf-8')).hexdigest()
  21. super(User, self).save(*args, **kwargs)
  22. def __str__(self):
  23. return "%s, %s (Enabled: %s)" % (self.last_name, self.first_name, self.status)
  24. class Project(models.Model):
  25. name = models.CharField(blank=False, max_length=50, default="")
  26. description = models.TextField()
  27. def __str__(self):
  28. return "%s" % (self.name,)
  29. class Entry(models.Model):
  30. user = models.ForeignKey(User, on_delete=models.DO_NOTHING, default=None, null=True)
  31. date = models.DateField(blank=False)
  32. project = models.ForeignKey(Project, on_delete=models.CASCADE, blank=True, null=True)
  33. hours = models.CharField(max_length=2, default=0, blank=False)
  34. minutes = models.CharField(max_length=4, default=0, blank=False)
  35. def __str__(self):
  36. return "%s, %s %s" % (self.date, self.user.last_name, self.user.first_name)
  37. class Meta:
  38. verbose_name_plural = "Time Entries"
  39. class EntryNote(models.Model):
  40. entry = models.ForeignKey(Entry, on_delete=models.CASCADE)
  41. note = models.TextField(blank=False)
  42. def __str__(self):
  43. return "%s %s, %s - %s" % (self.entry.date, self.entry.user.last_name, self.entry.user.first_name, self.note)
  44. class Meta:
  45. verbose_name_plural = "Time Entry Notes"
  46. class Message(models.Model):
  47. message = models.TextField(blank=False)
  48. expire_date = models.DateTimeField(blank=False)
  49. recipient = models.ForeignKey(User, on_delete=models.CASCADE, blank=False)
  50. def __str__(self):
  51. return "%s" % (self.message,)
  52. class Setting(models.Model):
  53. setting = models.CharField(max_length=255, blank=False, default="")
  54. value = models.CharField(max_length=255, blank=False, default="")
  55. def __str__(self):
  56. return "%s" % (self.setting,)