d0c 10 months ago
parent
commit
eddebd3192

+ 1 - 0
start.sh

@@ -4,4 +4,5 @@ source bin/activate
 pip install -r requirements.txt
 docker compose up -d
 python manage.py makemigrations && python manage.py migrate
+python manage.py fetchphones
 python manage.py runserver

+ 2 - 0
suitablephones/management/commands/fetchphones.py

@@ -66,6 +66,7 @@ class Command(BaseCommand):
         Device.objects.all().delete()
         Bluetooth.objects.all().delete()
         Camera.objects.all().delete()
+        Screen.objects.all().delete()
         update_repo()
         devicesdir = settings.LINEAGEWIKI + "/_data/devices/"
  #       import pdb; pdb.set_trace()
@@ -113,6 +114,7 @@ class Command(BaseCommand):
                         elif key == "storage":
                             if str(value) == "None":
                                 value = None
+                            setattr(dev, key, value)
                         elif key == "screen":
                             if type(value) is list:
                                 for s in value:

+ 4 - 3
suitablephones/models.py

@@ -24,11 +24,12 @@ class Camera(models.Model):
                
 class Screen(models.Model):
     size = models.CharField(max_length=500, null=True)
-    size_mm = models.DecimalField(max_digits=5, decimal_places=1)
-    size_in = models.DecimalField(max_digits=5, decimal_places=1)
+    size_mm = models.DecimalField(max_digits=5, decimal_places=2)
+    size_in = models.DecimalField(max_digits=5, decimal_places=2)
     resolution = models.CharField(max_length=100)
     density = models.CharField(max_length=100)
     technology = models.CharField(max_length=100)
+    refresh_rate = models.IntegerField(null=True)
     
     def __str__(self):
         return f"{str(self.size_in)} - {str(self.density)} - {str(self.technology)}"
@@ -64,7 +65,7 @@ class Device(models.Model):
     screen  = models.ManyToManyField(Screen) 
     #sdcard  =   models.JSONField(default=dict) # dict or str{1}
     soc  = models.CharField(max_length=1000)
-    storage  = models.CharField(max_length=100, blank=True)
+    storage  = models.CharField(max_length=100, null=True)
     tree  = models.CharField(max_length=100)
     device_type  = models.CharField(max_length=100)
     uses_twrp = models.BooleanField(null=True)

+ 6 - 3
suitablephones/views.py

@@ -30,7 +30,7 @@ class SingleDeviceViewSet(viewsets.ModelViewSet):
 # ViewSets define the view behavior.
 class DeviceViewSet(viewsets.ModelViewSet):
     queryset = Device.objects.all()
-    serializer_class = DeviceSerializerShort
+    serializer_class = DeviceSerializer
 
     #http://url/api/devices?megapixel=3
     def get_queryset(self):
@@ -40,9 +40,10 @@ class DeviceViewSet(viewsets.ModelViewSet):
         resolution = self.request.query_params.get('resolution')
         screen_type = self.request.query_params.get('screen_type')
         soc = self.request.query_params.get('soc')
-        short_view = self.request.query_params.get('short_view')
-        #maintainers = self.request.query_params.getlist('maintainers')
+        storage = self.request.query_params.get('storage')
         version = self.request.query_params.get('version')
+        #maintainers = self.request.query_params.getlist('maintainers')
+        short_view = self.request.query_params.get('short_view')
         if name:
             self.queryset = self.queryset.filter(name__icontains=name)
         if megapixel:
@@ -55,6 +56,8 @@ class DeviceViewSet(viewsets.ModelViewSet):
             self.queryset = self.queryset.filter(screen__technology__icontains=screen_type)
         if soc:
             self.queryset = self.queryset.filter(soc__icontains=soc)
+        if storage:
+            self.queryset = self.queryset.filter(storage__icontains=storage)
         if version:
             self.queryset = self.queryset.filter(versions__icontains=version)