1
0

models.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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_id = models.IntegerField(blank=False, editable=False)
  31. date = models.DateField(blank=False)
  32. project = models.ForeignKey(Project, on_delete=models.CASCADE, blank=True)
  33. time_worked = models.CharField(max_length=4, default=0, blank=False)
  34. note = models.TextField(blank=True)
  35. class Message(models.Model):
  36. message = models.TextField(blank=False)
  37. expire_date = models.DateTimeField(blank=False)
  38. recipient = models.ForeignKey(User, on_delete=models.CASCADE, blank=False)
  39. def __str__(self):
  40. return "%s" % (self.message,)