models.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from django.contrib.postgres.fields import ArrayField
  2. from django.db import models
  3. class Bluetooth(models.Model):
  4. spec = models.CharField(max_length=100)
  5. profiles = models.CharField(max_length=100, blank=True, null=True)
  6. def __str__(self):
  7. return f"{self.spec} - {self.profiles}"
  8. class Camera(models.Model):
  9. # class FLASHES(models.TextChoices):
  10. # LED = 'L', 'Led'
  11. # DUAL_LED = 'DL', 'Double Led'
  12. flash = models.CharField(max_length=100)
  13. megapixel = models.DecimalField(max_digits=5, decimal_places=1)
  14. info = models.CharField(max_length=100, null=True)
  15. def __str__(self):
  16. return f"{self.flash} - {str(self.megapixel)} - {self.info}"
  17. class Screen(models.Model):
  18. size = models.CharField(max_length=500, null=True)
  19. size_mm = models.DecimalField(max_digits=5, decimal_places=2)
  20. size_in = models.DecimalField(max_digits=5, decimal_places=2)
  21. resolution = models.CharField(max_length=100)
  22. density = models.CharField(max_length=100)
  23. technology = models.CharField(max_length=100)
  24. refresh_rate = models.IntegerField(null=True)
  25. def __str__(self):
  26. return f"{str(self.size_in)} - {str(self.density)} - {str(self.technology)}"
  27. class Device(models.Model):
  28. #architecture = models.JSONField(default=dict)
  29. #battery = models.JSONField(default=dict)
  30. #before_install = models.JSONField(default=dict, null=True) # dict or str
  31. bluetooth = models.ForeignKey(Bluetooth, on_delete=models.CASCADE, null=True)
  32. cameras = models.ManyToManyField(Camera)
  33. codename = models.CharField(max_length=100)
  34. cpu = models.CharField(max_length=100)
  35. cpu_cores = models.CharField(max_length=100)
  36. cpu_freq = models.CharField(max_length=1000)
  37. current_branch = models.FloatField(default=None, null=True)
  38. custom_recovery_link = models.URLField(max_length=200, null=True)
  39. download_boot = models.CharField(max_length=1000)
  40. #dimensions = models.JSONField(default=dict, null=True)
  41. gpu = models.CharField(max_length=100)
  42. image = models.CharField(max_length=100)
  43. install_method = models.CharField(max_length=100)
  44. is_ab_device = models.BooleanField(null=True)
  45. kernel = models.CharField(max_length=100)
  46. maintainers = ArrayField(models.CharField(max_length=100), default=None, null=True)
  47. device_models = ArrayField(models.CharField(max_length=100), default=None, null=True)
  48. name = models.CharField(max_length=100)
  49. #network = ArrayField(models.CharField(max_length=100, default=None, blank=True, null=True), default=None, blank=True, null=True)
  50. peripherals = ArrayField(models.CharField(max_length=100, blank=True, null=True), default=None, blank=True, null=True)
  51. ram = models.CharField(max_length=100)
  52. recovery_boot = models.CharField(max_length=1000)
  53. recovery_reboot = models.CharField(max_length=100)
  54. release = models.CharField(max_length=100, null=True)
  55. screen = models.ManyToManyField(Screen)
  56. #sdcard = models.JSONField(default=dict) # dict or str{1}
  57. soc = models.CharField(max_length=1000)
  58. storage = models.CharField(max_length=100, null=True)
  59. tree = models.CharField(max_length=100)
  60. device_type = models.CharField(max_length=100)
  61. uses_twrp = models.BooleanField(null=True)
  62. vendor = models.CharField(max_length=100)
  63. vendor_short = models.CharField(max_length=100)
  64. versions = ArrayField(models.FloatField(default=None), default=None, null=True)
  65. wifi = models.CharField(max_length=200, null=True)
  66. def __str__(self):
  67. return 'Device: ' + self.name + ' - ' + self.codename