models.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from django.db import models
  2. from django.contrib.auth.models import User as NormalUser
  3. import secrets
  4. # Create your models here.
  5. # from model import *
  6. class User(models.Model):
  7. user_id = models.CharField(max_length=30, unique=True)
  8. _social = models.CharField(max_length=30, default="none")
  9. created_at = models.DateTimeField(auto_now_add=True)
  10. updated_at = models.DateTimeField(auto_now=True)
  11. def getUser(user_model):
  12. user = None
  13. if isinstance(user_model, NormalUser):
  14. try:
  15. object = User.objects.get(user_id = 'normal_'+ user_model.username)
  16. return object
  17. except Exception as e:
  18. user = User()
  19. user.user_id = 'normal_' + user_model.username
  20. user.social = 'normal'
  21. user.save()
  22. return user
  23. return user
  24. def __str__(self):
  25. return self.user_id
  26. class UserActivity(models.Model):
  27. user = models.ForeignKey(User, on_delete=models.CASCADE)
  28. activity = models.CharField(max_length=30)
  29. created_at = models.DateTimeField(auto_now_add=True)
  30. def __str__(self):
  31. return "{0}:{1}".format(self.user, self.created_at)
  32. class ProductType(models.Model):
  33. is_packaging_material = models.BooleanField(default=False)
  34. icon = models.CharField(max_length=30)
  35. deleted = models.BooleanField(default=False)
  36. name = models.CharField(max_length=30)
  37. def getAll(language):
  38. objects = ProductType.objects.all()
  39. [object.get_with_locale(language) for object in objects]
  40. return objects
  41. def get_with_locale(self, language):
  42. try:
  43. self.title = ProductTypeTranslation.objects.get(word_id=self.id, language=language.id ).translation
  44. except:
  45. self.title = ProductTypeTranslation.objects.get(word_id=self.id, language=1 ).translation
  46. return self
  47. def __str__(self):
  48. return self.name
  49. class ProductTypeTranslation(models.Model):
  50. word_id = models.ForeignKey(ProductType, on_delete=models.CASCADE)
  51. language = models.ForeignKey('language.Language', on_delete=models.CASCADE)
  52. translation = models.CharField(max_length=40)
  53. def __str__(self):
  54. return str(self.word_id) + '-' + str(self.language)
  55. class EAN_Code(models.Model):
  56. #product_type = models.ForeignKey(ProductType, on_delete=models.CASCADE)
  57. user = models.ForeignKey(User, on_delete=models.CASCADE)
  58. deleted = models.BooleanField(default=False)
  59. barcode = models.CharField(max_length=50)
  60. class Product(models.Model):
  61. name = models.CharField(max_length=30)
  62. packaging_material = models.ForeignKey(ProductType, related_name='materials', on_delete=models.CASCADE)
  63. EAN_code = models.ForeignKey(EAN_Code, related_name='products', on_delete=models.CASCADE)
  64. weight = models.CharField(max_length=20)
  65. length = models.FloatField()
  66. width = models.FloatField()
  67. height = models.FloatField()
  68. is_generic = models.BooleanField()
  69. deleted = models.BooleanField(default=False)
  70. user = models.ForeignKey(User, on_delete=models.CASCADE)
  71. created_at = models.DateTimeField(auto_now_add=True)
  72. updated_at = models.DateTimeField(auto_now=True)
  73. product_type = models.ForeignKey('scanapp.ProductType', on_delete=models.CASCADE)
  74. def __str__(self):
  75. return self.name
  76. class ProductPicture(models.Model):
  77. product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='pictures')
  78. name = models.CharField(max_length=30)
  79. image = models.FileField(upload_to='image/')
  80. user = models.ForeignKey(User, on_delete=models.CASCADE)
  81. created_at = models.DateTimeField(auto_now_add=True)
  82. updated_at = models.DateTimeField(auto_now=True)
  83. def get_url(self):
  84. return '/' + self.image.url
  85. def __str__(self):
  86. return str(self.product) + "_picture"
  87. class ProductTypeHier(models.Model):
  88. parent = models.ForeignKey(ProductType, on_delete=models.CASCADE, related_name='parent')
  89. child = models.ForeignKey(ProductType, on_delete=models.CASCADE)
  90. def __str__(self):
  91. return str(self.parent) + ' - ' + str(self.child)
  92. class BOM(models.Model):
  93. product = models.ForeignKey(Product, on_delete=models.CASCADE)
  94. product_type = models.ForeignKey(ProductType, on_delete=models.CASCADE)
  95. weight = models.CharField(max_length=30)
  96. user = models.ForeignKey(User, on_delete=models.CASCADE)
  97. created_at = models.DateTimeField(auto_now_add=True)
  98. updated_at = models.DateTimeField(auto_now=True)
  99. def __str__(self):
  100. return str(self.product) + '-bom'