Source code for apps.core.management.commands.seed
from django.core.management.base import BaseCommand
from apps.core.models.physical_unit import PhysicalUnit
from apps.core.models.area import Area
from apps.core.models.device import Device
from apps.core.models.device_type import DeviceType
from apps.core.models.device_type_sensor import DeviceTypeSensor
from apps.core.models.sensor import SensorEnum, Sensor
from django.contrib.auth.models import User
[docs]class Command(BaseCommand):
[docs] def handle(self, *args, **options):
self.stdout.write('Seeding:')
run_seed(self)
[docs]def run_seed(mode):
## add admin user - change this in production
# mode.stdout.write('Creating admin...')
# admin_name = 'admin'
# admin_password = '7NF5ZWUgrRPLfsMs'
# user = User.objects.create_user(username=admin_name, password=admin_password, is_superuser=True)
# user.save()
# mode.stdout.write('Done')
# add physical units
mode.stdout.write('Creating physical units..')
unit_names = ['pocet','C', '%', 'uroven kvality']
for name in unit_names:
ph_unit = PhysicalUnit(unit_name = name)
ph_unit.save()
mode.stdout.write('Done')
# add area
mode.stdout.write('Creating area...')
area_office_name = 'poschodie_1'
area_image = open('/home/app/backend-api/apps/core/management/commands/seed_documents/base64_1_poschodie.txt','r').read()
area_1 = Area(office_name=area_office_name, image=area_image)
area_1.save()
mode.stdout.write('Done')
# add device_type
mode.stdout.write('Creating device_type [ESP32, Raspberry Pi]...')
dev_type_name_1 = 'ESP32'
dev_type_version_1 = 'esp_version'
dev_type_description_1 = 'esp_description'
dev_type_name_2 = 'Raspberry Pi'
dev_type_version_2 = 'raspberry_pi_version'
dev_type_description_2 = 'raspberry_pi_description#'
device_type_1 = DeviceType(type_name=dev_type_name_1, default_version=dev_type_version_1, description=dev_type_description_1)
device_type_2 = DeviceType(type_name=dev_type_name_2, default_version=dev_type_version_2, description=dev_type_description_2)
device_type_1.save()
device_type_2.save()
mode.stdout.write('Done')
# add device
mode.stdout.write('Creating device [ESP_32]...')
dev_battery_state = 100
dev_version = '1'
dev_title = 'ESP_32'
dev_ip_address = '192.168.100.1'
device_1 = Device(type=device_type_1, battery_state=dev_battery_state, version=dev_version, title=dev_title, ip_address=dev_ip_address, area=area_1)
device_1.save()
mode.stdout.write('Done')
#add sensor
mode.stdout.write('Creating sensors [Temperature x 2, Humidity x 2, Occupancy x 2, AirQuality x 1]... ')
sen_physical_unit_1 = PhysicalUnit.objects.get(unit_name='C')
sen_physical_unit_2 = PhysicalUnit.objects.get(unit_name='%')
sen_physical_unit_3 = PhysicalUnit.objects.get(unit_name='uroven kvality')
sen_physical_unit_4 = PhysicalUnit.objects.get(unit_name='pocet')
sensor_1 = Sensor(physical_unit=sen_physical_unit_1, sensor_type=SensorEnum.TEMP, device=device_1)
sensor_2 = Sensor(physical_unit=sen_physical_unit_1, sensor_type=SensorEnum.TEMP, device=device_1)
sensor_3 = Sensor(physical_unit=sen_physical_unit_2, sensor_type=SensorEnum.HUM, device=device_1)
sensor_4 = Sensor(physical_unit=sen_physical_unit_2, sensor_type=SensorEnum.HUM, device=device_1)
sensor_5 = Sensor(physical_unit=sen_physical_unit_4, sensor_type=SensorEnum.PPL_COUNTER, device=device_1)
sensor_6 = Sensor(physical_unit=sen_physical_unit_4, sensor_type=SensorEnum.PPL_COUNTER, device=device_1)
sensor_7 = Sensor(physical_unit=sen_physical_unit_3, sensor_type=SensorEnum.AIR, device=device_1)
sensor_1.save()
sensor_2.save()
sensor_3.save()
sensor_4.save()
sensor_5.save()
sensor_6.save()
sensor_7.save()
mode.stdout.write('Done')
# QUERY to delete seed except admin
# delete from core_sensor where id is not null; delete from core_physicalunit where id is not null; DELETE FROM core_device where created_at BETWEEN NOW() - INTERVAL '24 HOURS' AND NOW() ;DELETE from core_devicetype where created_at BETWEEN now() - INTERVAL '24 HOURS' AND NOW(); DELETE from core_area where created_at BETWEEN now() - INTERVAL '24 HOURS' AND NOW();