|
@@ -4,10 +4,39 @@ import yaml
|
|
|
from django.conf import settings
|
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
|
|
|
|
-from suitablephones.models import Bluetooth, Camera, Device
|
|
|
+from suitablephones.models import Bluetooth, Camera, Device, Screen
|
|
|
|
|
|
+import subprocess
|
|
|
import logging
|
|
|
|
|
|
+
|
|
|
+def update_repo():
|
|
|
+ devicesdir = settings.LINEAGEWIKI
|
|
|
+ pull_status = subprocess.run(["git", "pull"], cwd=devicesdir)
|
|
|
+ if pull_status.returncode != 0:
|
|
|
+ logging.error("Error pulling repo")
|
|
|
+
|
|
|
+def set_screen(args):
|
|
|
+ #if type(args)
|
|
|
+ screen = Screen.objects.filter(**args)
|
|
|
+ if not screen.exists():
|
|
|
+ screen = Screen()
|
|
|
+ for subkey, subvalue in args.items():
|
|
|
+ if subkey == 'size':
|
|
|
+ size_mm = subvalue.split(' ')[0]
|
|
|
+ setattr(screen, 'size_mm', size_mm)
|
|
|
+ size_inch = subvalue.split(' ')[2].replace('(', '')
|
|
|
+ setattr(screen, 'size_in', size_inch)
|
|
|
+ setattr(screen, subkey, subvalue)
|
|
|
+ #elif subkey == 'technology':
|
|
|
+ # setattr(screen, 'type', subvalue)
|
|
|
+ setattr(screen, subkey, subvalue)
|
|
|
+ screen.save()
|
|
|
+ else:
|
|
|
+ screen = screen.get()
|
|
|
+ return screen
|
|
|
+
|
|
|
+
|
|
|
def set_camera(args):
|
|
|
cam = Camera.objects.filter(**args)
|
|
|
if not cam.exists():
|
|
@@ -36,12 +65,14 @@ class Command(BaseCommand):
|
|
|
Device.objects.all().delete()
|
|
|
Bluetooth.objects.all().delete()
|
|
|
Camera.objects.all().delete()
|
|
|
+ update_repo()
|
|
|
devicesdir = settings.LINEAGEWIKI + "/_data/devices/"
|
|
|
# import pdb; pdb.set_trace()
|
|
|
for filename in os.listdir(devicesdir):
|
|
|
dev = Device()
|
|
|
cameras = []
|
|
|
bluetooth = {}
|
|
|
+ screen = []
|
|
|
peripherals = []
|
|
|
|
|
|
with open(os.path.join(devicesdir, filename), "r") as stream:
|
|
@@ -84,6 +115,13 @@ class Command(BaseCommand):
|
|
|
elif key == "storage":
|
|
|
if str(value) == "None":
|
|
|
value = None
|
|
|
+ elif key == "screen":
|
|
|
+ if type(value) is list:
|
|
|
+ for s in value:
|
|
|
+ for k,v in s.items():
|
|
|
+ screen.append(set_screen(v))
|
|
|
+ elif type(value) is dict:
|
|
|
+ screen.append(set_screen(value))
|
|
|
else:
|
|
|
setattr(dev, key, value)
|
|
|
except yaml.YAMLError as exc:
|