PyScada-DatasourceExample/pyscada/datasourceexample/apps.py
2026-01-27 17:22:01 +01:00

49 lines
1.7 KiB
Python
Executable File

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
from django.apps import AppConfig
from django.utils.translation import gettext_lazy as _
from django.db.utils import ProgrammingError, OperationalError
from . import __app_name__
import logging
logger = logging.getLogger(__name__)
class PyScadaDataSourceExampleConfig(AppConfig):
name = "pyscada." + __app_name__.lower()
verbose_name = _("PyScada " + __app_name__)
path = os.path.dirname(os.path.realpath(__file__))
default_auto_field = "django.db.models.AutoField"
def pyscada_app_init(self):
logger.debug(f"{__app_name__} init app")
try:
from pyscada.models import DataSourceModel, DataSource
from .models import LoggingRandomDataSourceExample
dsm, _ = DataSourceModel.objects.update_or_create(
inline_model_name="LoggingRandomDataSourceExample",
defaults={
"name": "Logging random data source example",
"can_add": True,
"can_change": True,
"can_select": True,
},
)
if not LoggingRandomDataSourceExample.objects.count():
if DataSource.objects.filter(datasource_model=dsm).count() < 2:
ds, _ = DataSource.objects.get_or_create(datasource_model=dsm)
else:
ds = DataSource.objects.filter(datasource_model=dsm).first()
ldse, _ = LoggingRandomDataSourceExample.objects.get_or_create(
datasource=ds
)
except ProgrammingError:
pass
except OperationalError:
pass