endoreg-db 0.3.8__py3-none-any.whl → 0.3.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of endoreg-db might be problematic. Click here for more details.
- endoreg_db/data/__init__.py +4 -0
- endoreg_db/data/agl_service/data.yaml +9 -0
- endoreg_db/data/log_type/data.yaml +57 -0
- endoreg_db/data/network_device/data.yaml +6 -0
- endoreg_db/management/commands/load_base_db_data.py +4 -0
- endoreg_db/management/commands/load_logging_data.py +39 -0
- endoreg_db/management/commands/load_network_data.py +11 -3
- endoreg_db/migrations/0069_delete_networkdevicetypemanager_networkdevice_online.py +21 -0
- endoreg_db/migrations/0070_logtype_alter_rawpdffile_file_networkdevicelogentry_and_more.py +71 -0
- endoreg_db/migrations/0071_aglservicelogentry.py +33 -0
- endoreg_db/migrations/0072_alter_rawpdffile_file.py +20 -0
- endoreg_db/models/__init__.py +1 -0
- endoreg_db/models/logging/__init__.py +4 -0
- endoreg_db/models/logging/agl_service.py +15 -0
- endoreg_db/models/logging/base.py +22 -0
- endoreg_db/models/logging/log_type.py +23 -0
- endoreg_db/models/logging/network_device.py +16 -0
- endoreg_db/models/network/__init__.py +2 -1
- endoreg_db/models/network/agl_service.py +38 -0
- endoreg_db/models/network/network_device.py +27 -1
- {endoreg_db-0.3.8.dist-info → endoreg_db-0.3.9.dist-info}/METADATA +1 -1
- {endoreg_db-0.3.8.dist-info → endoreg_db-0.3.9.dist-info}/RECORD +24 -11
- {endoreg_db-0.3.8.dist-info → endoreg_db-0.3.9.dist-info}/LICENSE +0 -0
- {endoreg_db-0.3.8.dist-info → endoreg_db-0.3.9.dist-info}/WHEEL +0 -0
endoreg_db/data/__init__.py
CHANGED
|
@@ -55,6 +55,10 @@ CASE_TEMPLATE_RULE_VALUE_TYPE_DATA_DIR = CASE_TEMPLATE_BASE_DIR / "rule_value_ty
|
|
|
55
55
|
# NETWORK
|
|
56
56
|
NETWORK_DEVICE_DATA_DIR = DATA_DIR / "network_device"
|
|
57
57
|
NETWORK_DEVICE_TYPE_DATA_DIR = DATA_DIR / "network_device_type"
|
|
58
|
+
AGL_SERVICE_DATA_DIR = DATA_DIR / "agl_service"
|
|
59
|
+
|
|
60
|
+
# LOGS
|
|
61
|
+
LOG_TYPE_DATA_DIR = DATA_DIR / "log_type"
|
|
58
62
|
|
|
59
63
|
# To Do
|
|
60
64
|
LAB_VALUE_DATA_DIR = DATA_DIR / "lab_value"
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
- model: endoreg_db.log_type
|
|
2
|
+
fields:
|
|
3
|
+
name: 'service-alive'
|
|
4
|
+
description: 'Data log type'
|
|
5
|
+
|
|
6
|
+
- model: endoreg_db.log_type
|
|
7
|
+
fields:
|
|
8
|
+
name: 'service-error'
|
|
9
|
+
description: 'Data log type'
|
|
10
|
+
|
|
11
|
+
- model: endoreg_db.log_type
|
|
12
|
+
fields:
|
|
13
|
+
name: 'service-info'
|
|
14
|
+
description: 'Data log type'
|
|
15
|
+
|
|
16
|
+
- model: endoreg_db.log_type
|
|
17
|
+
fields:
|
|
18
|
+
name: 'service-warning'
|
|
19
|
+
description: 'Data log type'
|
|
20
|
+
|
|
21
|
+
- model: endoreg_db.log_type
|
|
22
|
+
fields:
|
|
23
|
+
name: 'service-status'
|
|
24
|
+
description: 'Data log type'
|
|
25
|
+
|
|
26
|
+
- model: endoreg_db.log_type
|
|
27
|
+
fields:
|
|
28
|
+
name: 'service-task'
|
|
29
|
+
description: 'Data log type'
|
|
30
|
+
|
|
31
|
+
- model: endoreg_db.log_type
|
|
32
|
+
fields:
|
|
33
|
+
name: 'device-alive'
|
|
34
|
+
description: 'Data log type'
|
|
35
|
+
|
|
36
|
+
- model: endoreg_db.log_type
|
|
37
|
+
fields:
|
|
38
|
+
name: 'device-error'
|
|
39
|
+
description: 'Data log type'
|
|
40
|
+
|
|
41
|
+
# device-status
|
|
42
|
+
- model: endoreg_db.log_type
|
|
43
|
+
fields:
|
|
44
|
+
name: 'device-status'
|
|
45
|
+
description: 'Data log type'
|
|
46
|
+
|
|
47
|
+
# device-task
|
|
48
|
+
- model: endoreg_db.log_type
|
|
49
|
+
fields:
|
|
50
|
+
name: 'device-task'
|
|
51
|
+
description: 'Data log type'
|
|
52
|
+
|
|
53
|
+
# device-info
|
|
54
|
+
- model: endoreg_db.log_type
|
|
55
|
+
fields:
|
|
56
|
+
name: 'device-info'
|
|
57
|
+
description: 'Data log type'
|
|
@@ -20,6 +20,10 @@ class Command(BaseCommand):
|
|
|
20
20
|
self.stdout.write(self.style.SUCCESS("Running load_network_data..."))
|
|
21
21
|
call_command('load_network_data', verbose=verbose)
|
|
22
22
|
|
|
23
|
+
# Run the load_logging_data command
|
|
24
|
+
self.stdout.write(self.style.SUCCESS("Running load_logging_data..."))
|
|
25
|
+
call_command('load_logging_data', verbose=verbose)
|
|
26
|
+
|
|
23
27
|
# Run the load_profession_data command
|
|
24
28
|
self.stdout.write(self.style.SUCCESS("Running load_profession_data..."))
|
|
25
29
|
call_command('load_profession_data', verbose=verbose)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from django.core.management.base import BaseCommand
|
|
2
|
+
from endoreg_db.models import LogType as MODEL_0
|
|
3
|
+
from ...utils import load_model_data_from_yaml
|
|
4
|
+
from ...data import LOG_TYPE_DATA_DIR as SOURCE_DIR
|
|
5
|
+
|
|
6
|
+
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
7
|
+
MODEL_0.__name__,
|
|
8
|
+
]
|
|
9
|
+
|
|
10
|
+
IMPORT_METADATA = {
|
|
11
|
+
MODEL_0.__name__: {
|
|
12
|
+
"dir": SOURCE_DIR, # e.g. "interventions"
|
|
13
|
+
"model": MODEL_0, # e.g. Intervention
|
|
14
|
+
"foreign_keys": [], # e.g. ["intervention_types"]
|
|
15
|
+
"foreign_key_models": [] # e.g. [InterventionType]
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
class Command(BaseCommand):
|
|
20
|
+
help = """Load all .yaml files in the data/intervention directory
|
|
21
|
+
into the Intervention and InterventionType model"""
|
|
22
|
+
|
|
23
|
+
def add_arguments(self, parser):
|
|
24
|
+
parser.add_argument(
|
|
25
|
+
'--verbose',
|
|
26
|
+
action='store_true',
|
|
27
|
+
help='Display verbose output',
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
def handle(self, *args, **options):
|
|
31
|
+
verbose = options['verbose']
|
|
32
|
+
for model_name in IMPORT_MODELS:
|
|
33
|
+
_metadata = IMPORT_METADATA[model_name]
|
|
34
|
+
load_model_data_from_yaml(
|
|
35
|
+
self,
|
|
36
|
+
model_name,
|
|
37
|
+
_metadata,
|
|
38
|
+
verbose
|
|
39
|
+
)
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
from django.core.management.base import BaseCommand
|
|
2
|
-
from endoreg_db.models import NetworkDevice, NetworkDeviceType
|
|
2
|
+
from endoreg_db.models import NetworkDevice, NetworkDeviceType, AglService
|
|
3
3
|
from ...utils import load_model_data_from_yaml
|
|
4
|
-
from ...data import NETWORK_DEVICE_DATA_DIR, NETWORK_DEVICE_TYPE_DATA_DIR
|
|
4
|
+
from ...data import NETWORK_DEVICE_DATA_DIR, NETWORK_DEVICE_TYPE_DATA_DIR, AGL_SERVICE_DATA_DIR
|
|
5
5
|
|
|
6
6
|
MODEL_0 = NetworkDeviceType
|
|
7
7
|
MODEL_1 = NetworkDevice
|
|
8
|
+
MODEL_2 = AglService
|
|
8
9
|
|
|
9
10
|
IMPORT_MODELS = [ # string as model key, serves as key in IMPORT_METADATA
|
|
10
11
|
MODEL_0.__name__,
|
|
11
|
-
MODEL_1.__name__
|
|
12
|
+
MODEL_1.__name__,
|
|
13
|
+
MODEL_2.__name__,
|
|
12
14
|
]
|
|
13
15
|
|
|
14
16
|
IMPORT_METADATA = {
|
|
@@ -23,6 +25,12 @@ IMPORT_METADATA = {
|
|
|
23
25
|
"model": MODEL_1, # e.g. Intervention
|
|
24
26
|
"foreign_keys": ["device_type"], # e.g. ["intervention_types"]
|
|
25
27
|
"foreign_key_models": [NetworkDeviceType] # e.g. [InterventionType]
|
|
28
|
+
},
|
|
29
|
+
MODEL_2.__name__: {
|
|
30
|
+
"dir": AGL_SERVICE_DATA_DIR, # e.g. "interventions"
|
|
31
|
+
"model": MODEL_2, # e.g. Intervention
|
|
32
|
+
"foreign_keys": ["devices"], # e.g. ["intervention_types"]
|
|
33
|
+
"foreign_key_models": [NetworkDevice] # e.g. [InterventionType]
|
|
26
34
|
}
|
|
27
35
|
}
|
|
28
36
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Generated by Django 4.2.15 on 2024-08-10 16:31
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('endoreg_db', '0068_networkdevicetype_networkdevicetypemanager_and_more'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.DeleteModel(
|
|
14
|
+
name='NetworkDeviceTypeManager',
|
|
15
|
+
),
|
|
16
|
+
migrations.AddField(
|
|
17
|
+
model_name='networkdevice',
|
|
18
|
+
name='online',
|
|
19
|
+
field=models.BooleanField(default=False),
|
|
20
|
+
),
|
|
21
|
+
]
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Generated by Django 4.2.15 on 2024-08-11 19:16
|
|
2
|
+
|
|
3
|
+
from django.conf import settings
|
|
4
|
+
import django.core.files.storage
|
|
5
|
+
import django.core.validators
|
|
6
|
+
from django.db import migrations, models
|
|
7
|
+
import django.db.models.deletion
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Migration(migrations.Migration):
|
|
11
|
+
|
|
12
|
+
dependencies = [
|
|
13
|
+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
14
|
+
('endoreg_db', '0069_delete_networkdevicetypemanager_networkdevice_online'),
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
operations = [
|
|
18
|
+
migrations.CreateModel(
|
|
19
|
+
name='LogType',
|
|
20
|
+
fields=[
|
|
21
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
22
|
+
('name', models.CharField(max_length=255)),
|
|
23
|
+
('description', models.CharField(max_length=255)),
|
|
24
|
+
('created', models.DateTimeField(auto_now_add=True)),
|
|
25
|
+
('updated', models.DateTimeField(auto_now=True)),
|
|
26
|
+
],
|
|
27
|
+
options={
|
|
28
|
+
'ordering': ['name'],
|
|
29
|
+
},
|
|
30
|
+
),
|
|
31
|
+
migrations.AlterField(
|
|
32
|
+
model_name='rawpdffile',
|
|
33
|
+
name='file',
|
|
34
|
+
field=models.FileField(storage=django.core.files.storage.FileSystemStorage(location='/home/agl-admin/agl-monitor/agl_monitor/agl_monitor/erc_data/raw_pdf'), upload_to='raw_pdf/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf'])]),
|
|
35
|
+
),
|
|
36
|
+
migrations.CreateModel(
|
|
37
|
+
name='NetworkDeviceLogEntry',
|
|
38
|
+
fields=[
|
|
39
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
40
|
+
('timestamp', models.DateTimeField(auto_now_add=True)),
|
|
41
|
+
('ip_address', models.GenericIPAddressField(blank=True, null=True)),
|
|
42
|
+
('user_agent', models.CharField(blank=True, max_length=256, null=True)),
|
|
43
|
+
('message', models.TextField()),
|
|
44
|
+
('json_content', models.JSONField(blank=True, null=True)),
|
|
45
|
+
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.networkdevice')),
|
|
46
|
+
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
|
|
47
|
+
],
|
|
48
|
+
options={
|
|
49
|
+
'verbose_name': 'Network Device Log Entry',
|
|
50
|
+
'verbose_name_plural': 'Network Device Log Entries',
|
|
51
|
+
},
|
|
52
|
+
),
|
|
53
|
+
migrations.CreateModel(
|
|
54
|
+
name='AglService',
|
|
55
|
+
fields=[
|
|
56
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
57
|
+
('name', models.CharField(max_length=255)),
|
|
58
|
+
('description', models.CharField(max_length=255)),
|
|
59
|
+
('online', models.BooleanField(default=False)),
|
|
60
|
+
('created', models.DateTimeField(auto_now_add=True)),
|
|
61
|
+
('updated', models.DateTimeField(auto_now=True)),
|
|
62
|
+
('port', models.IntegerField(blank=True, null=True)),
|
|
63
|
+
('protocol', models.CharField(blank=True, max_length=255, null=True)),
|
|
64
|
+
('url', models.URLField(blank=True, null=True)),
|
|
65
|
+
('devices', models.ManyToManyField(related_name='services', to='endoreg_db.networkdevice')),
|
|
66
|
+
],
|
|
67
|
+
options={
|
|
68
|
+
'ordering': ['name'],
|
|
69
|
+
},
|
|
70
|
+
),
|
|
71
|
+
]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Generated by Django 4.2.15 on 2024-08-11 19:19
|
|
2
|
+
|
|
3
|
+
from django.conf import settings
|
|
4
|
+
from django.db import migrations, models
|
|
5
|
+
import django.db.models.deletion
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
12
|
+
('endoreg_db', '0070_logtype_alter_rawpdffile_file_networkdevicelogentry_and_more'),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
operations = [
|
|
16
|
+
migrations.CreateModel(
|
|
17
|
+
name='AglServiceLogEntry',
|
|
18
|
+
fields=[
|
|
19
|
+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
20
|
+
('timestamp', models.DateTimeField(auto_now_add=True)),
|
|
21
|
+
('ip_address', models.GenericIPAddressField(blank=True, null=True)),
|
|
22
|
+
('user_agent', models.CharField(blank=True, max_length=256, null=True)),
|
|
23
|
+
('message', models.TextField()),
|
|
24
|
+
('json_content', models.JSONField(blank=True, null=True)),
|
|
25
|
+
('service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='endoreg_db.aglservice')),
|
|
26
|
+
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
|
|
27
|
+
],
|
|
28
|
+
options={
|
|
29
|
+
'verbose_name': 'AGL Service Log Entry',
|
|
30
|
+
'verbose_name_plural': 'AGL Service Log Entries',
|
|
31
|
+
},
|
|
32
|
+
),
|
|
33
|
+
]
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Generated by Django 4.2.15 on 2024-08-11 19:52
|
|
2
|
+
|
|
3
|
+
import django.core.files.storage
|
|
4
|
+
import django.core.validators
|
|
5
|
+
from django.db import migrations, models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
('endoreg_db', '0071_aglservicelogentry'),
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
operations = [
|
|
15
|
+
migrations.AlterField(
|
|
16
|
+
model_name='rawpdffile',
|
|
17
|
+
name='file',
|
|
18
|
+
field=models.FileField(storage=django.core.files.storage.FileSystemStorage(location='/mnt/hdd-sensitive/Pseudo/import/pdf'), upload_to='raw_pdf/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf'])]),
|
|
19
|
+
),
|
|
20
|
+
]
|
endoreg_db/models/__init__.py
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
from .base import AbstractLogEntry
|
|
3
|
+
|
|
4
|
+
class AglServiceLogEntry(AbstractLogEntry):
|
|
5
|
+
"""
|
|
6
|
+
Model for log entries related to AGL services.
|
|
7
|
+
"""
|
|
8
|
+
service = models.ForeignKey("AglService", on_delete=models.CASCADE)
|
|
9
|
+
|
|
10
|
+
class Meta:
|
|
11
|
+
verbose_name = "AGL Service Log Entry"
|
|
12
|
+
verbose_name_plural = "AGL Service Log Entries"
|
|
13
|
+
|
|
14
|
+
def __str__(self):
|
|
15
|
+
return f"{self.timestamp} - {self.user} - {self.ip_address} - {self.service} - {self.message}"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# django model for logging, first define an abstract base model
|
|
2
|
+
from django.db import models
|
|
3
|
+
from django.conf import settings
|
|
4
|
+
|
|
5
|
+
class AbstractLogEntry(models.Model):
|
|
6
|
+
"""
|
|
7
|
+
Abstract base model for log entries.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
class Meta:
|
|
11
|
+
abstract = True
|
|
12
|
+
|
|
13
|
+
timestamp = models.DateTimeField(auto_now_add=True)
|
|
14
|
+
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, blank=True)
|
|
15
|
+
ip_address = models.GenericIPAddressField(null=True, blank=True)
|
|
16
|
+
user_agent = models.CharField(max_length=256, null=True, blank=True)
|
|
17
|
+
message = models.TextField()
|
|
18
|
+
json_content = models.JSONField(null=True, blank=True)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def __str__(self):
|
|
22
|
+
return f"{self.timestamp} - {self.user} - {self.ip_address} - {self.message}"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
class LogTypeManager(models.Manager):
|
|
4
|
+
# Custom manager for LogType; defines name as natural key
|
|
5
|
+
def get_by_natural_key(self, name):
|
|
6
|
+
return self.get(name=name)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class LogType(models.Model):
|
|
10
|
+
name = models.CharField(max_length=255)
|
|
11
|
+
description = models.CharField(max_length=255)
|
|
12
|
+
created = models.DateTimeField(auto_now_add=True)
|
|
13
|
+
updated = models.DateTimeField(auto_now=True)
|
|
14
|
+
objects = LogTypeManager()
|
|
15
|
+
|
|
16
|
+
def __str__(self):
|
|
17
|
+
return self.name
|
|
18
|
+
|
|
19
|
+
class Meta:
|
|
20
|
+
ordering = ['name']
|
|
21
|
+
|
|
22
|
+
def natural_key(self):
|
|
23
|
+
return (self.name,)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
from .base import AbstractLogEntry
|
|
3
|
+
|
|
4
|
+
class NetworkDeviceLogEntry(AbstractLogEntry):
|
|
5
|
+
"""
|
|
6
|
+
Model for log entries related to network devices.
|
|
7
|
+
"""
|
|
8
|
+
device = models.ForeignKey("NetworkDevice", on_delete=models.CASCADE)
|
|
9
|
+
|
|
10
|
+
class Meta:
|
|
11
|
+
verbose_name = "Network Device Log Entry"
|
|
12
|
+
verbose_name_plural = "Network Device Log Entries"
|
|
13
|
+
|
|
14
|
+
def __str__(self):
|
|
15
|
+
return f"{self.timestamp} - {self.user} - {self.ip_address} - {self.device} - {self.message}"
|
|
16
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from django.db import models
|
|
2
|
+
|
|
3
|
+
class AglServiceManager(models.Manager):
|
|
4
|
+
# Custom manager for AglService; defines name as natural key
|
|
5
|
+
def get_by_natural_key(self, name):
|
|
6
|
+
return self.get(name=name)
|
|
7
|
+
|
|
8
|
+
class AglService(models.Model):
|
|
9
|
+
name = models.CharField(max_length=255)
|
|
10
|
+
description = models.CharField(max_length=255)
|
|
11
|
+
online = models.BooleanField(default=False)
|
|
12
|
+
created = models.DateTimeField(auto_now_add=True)
|
|
13
|
+
updated = models.DateTimeField(auto_now=True)
|
|
14
|
+
objects = AglServiceManager()
|
|
15
|
+
devices = models.ManyToManyField("NetworkDevice", related_name="services")
|
|
16
|
+
port = models.IntegerField(blank=True, null=True)
|
|
17
|
+
protocol = models.CharField(max_length=255, blank=True, null=True)
|
|
18
|
+
url = models.URLField(blank=True, null=True)
|
|
19
|
+
|
|
20
|
+
def alive_log(self, user, ip_address, user_agent):
|
|
21
|
+
from ..logging import AglServiceLogEntry
|
|
22
|
+
AglServiceLogEntry.objects.create(
|
|
23
|
+
user=user,
|
|
24
|
+
ip_address=ip_address,
|
|
25
|
+
user_agent=user_agent,
|
|
26
|
+
message=f"Service {self.name} is alive.",
|
|
27
|
+
service=self
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
def __str__(self):
|
|
31
|
+
return self.name
|
|
32
|
+
|
|
33
|
+
class Meta:
|
|
34
|
+
ordering = ['name']
|
|
35
|
+
|
|
36
|
+
def natural_key(self):
|
|
37
|
+
return (self.name,)
|
|
38
|
+
|
|
@@ -12,6 +12,7 @@ class NetworkDevice(models.Model):
|
|
|
12
12
|
ip = models.GenericIPAddressField(blank=True, null=True)
|
|
13
13
|
description = models.CharField(max_length=255)
|
|
14
14
|
device_type = models.ForeignKey("NetworkDeviceType", on_delete=models.CASCADE)
|
|
15
|
+
online = models.BooleanField(default=False)
|
|
15
16
|
created = models.DateTimeField(auto_now_add=True)
|
|
16
17
|
updated = models.DateTimeField(auto_now=True)
|
|
17
18
|
objects = NetworkDeviceManager()
|
|
@@ -24,4 +25,29 @@ class NetworkDevice(models.Model):
|
|
|
24
25
|
ordering = ['name']
|
|
25
26
|
|
|
26
27
|
def natural_key(self):
|
|
27
|
-
return (self.name,)
|
|
28
|
+
return (self.name,)
|
|
29
|
+
|
|
30
|
+
def ping(self):
|
|
31
|
+
target_ip = self.ip
|
|
32
|
+
|
|
33
|
+
# Import the required module
|
|
34
|
+
import subprocess
|
|
35
|
+
|
|
36
|
+
# Define the command
|
|
37
|
+
command = ['ping', '-c', '1', target_ip]
|
|
38
|
+
|
|
39
|
+
# Run the command
|
|
40
|
+
process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
41
|
+
|
|
42
|
+
# Wait for the process to terminate
|
|
43
|
+
process.wait()
|
|
44
|
+
|
|
45
|
+
# Check the return code
|
|
46
|
+
return_code = process.returncode
|
|
47
|
+
|
|
48
|
+
# Return True if the return code is 0, False otherwise
|
|
49
|
+
self.online = return_code == 0
|
|
50
|
+
self.save()
|
|
51
|
+
return self.online
|
|
52
|
+
|
|
53
|
+
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
endoreg_db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
endoreg_db/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
|
|
3
3
|
endoreg_db/apps.py,sha256=zYb2_RiEGIsLS6_OMWzCxcTHSNkF28CqF4xcd_6NHUg,151
|
|
4
|
-
endoreg_db/data/__init__.py,sha256
|
|
4
|
+
endoreg_db/data/__init__.py,sha256=-6UJyklMfLgrqrs_dqGAkNoBPLGB5wmq2LcA0A4yRXw,3220
|
|
5
5
|
endoreg_db/data/active_model/data.yaml,sha256=G7PvKmGDm_Gt6Tzf99s18b5vlE5qWruvClzlcINqDQE,86
|
|
6
|
+
endoreg_db/data/agl_service/data.yaml,sha256=HfuoV9MT-rWcwO5jhH2Y7nb8vr5VXE23akAHfz1tzUI,210
|
|
6
7
|
endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml,sha256=H3kTALJ_6GJrY-4EYemeTCaa81NkyI-8LcNJFuEp5zs,4100
|
|
7
8
|
endoreg_db/data/case_template/rule/01_patient-set-age.yaml,sha256=lXfgKtirkQMHfAQtp9y9mojNnYx2KskGvdK-C1GEmtc,281
|
|
8
9
|
endoreg_db/data/case_template/rule/01_patient-set-gender.yaml,sha256=mZqygZ7lhjfSOO9M2m-ax1hmH2ztSXLsJwMEqJnj7e4,300
|
|
@@ -60,6 +61,7 @@ endoreg_db/data/lab_value/renal_function.yaml,sha256=HS5oWQ_31mkahABKMvNjhmfspiQ
|
|
|
60
61
|
endoreg_db/data/label/label/data.yaml,sha256=fwBiybtizA_hSGJWWCWNfKoHncy4s5ObxhKfjm9xEb8,1274
|
|
61
62
|
endoreg_db/data/label/label-set/data.yaml,sha256=wpAxOPbpZzZWLM95yjoKXhhjMk6mOKcGQdoLtcDXCZ4,339
|
|
62
63
|
endoreg_db/data/label/label-type/data.yaml,sha256=vffKYpTae_gu63_wza6LONs5ys4pna1EbrUUO6CafQs,136
|
|
64
|
+
endoreg_db/data/log_type/data.yaml,sha256=nZeua8KwnrVGupl-B74PjsUenANSmUwCVkEzdtrTGAQ,1126
|
|
63
65
|
endoreg_db/data/material/material.yaml,sha256=GUY0l4DSm1OQtgExNbTMqAuUMPvUBlTvNWvrtJKhXiY,2035
|
|
64
66
|
endoreg_db/data/medication/anticoagulation.yaml,sha256=NfAXuD9hQqHE2knWl51JGJnyjJvh_I1xRxaF8VS5-Us,1635
|
|
65
67
|
endoreg_db/data/medication/tah.yaml,sha256=UDuY9tn9e8806KdZ3AL1LooGPdxqoPHNz6IX38yk-6g,1701
|
|
@@ -71,7 +73,7 @@ endoreg_db/data/medication_schedule/apixaban.yaml,sha256=TjmoBu4ian9ZwiSN5qBKtiv
|
|
|
71
73
|
endoreg_db/data/medication_schedule/ass.yaml,sha256=ECiHbQcahbZP9B8IDOYRB6vHKj3yl7cBY9QasIHJ7sM,295
|
|
72
74
|
endoreg_db/data/medication_schedule/enoxaparin.yaml,sha256=lI8WfFBspEXhTxnTEfyq1a_VBKbdNAcj34PIF2_X3cQ,653
|
|
73
75
|
endoreg_db/data/model_type/data.yaml,sha256=vCMMo8wiI5uL2zrQROmgsHq1GrC8IdagGIgNdQunUeQ,149
|
|
74
|
-
endoreg_db/data/network_device/data.yaml,sha256=
|
|
76
|
+
endoreg_db/data/network_device/data.yaml,sha256=Vg5H49ZrJn7l9qo4Lq2rOwzI6ly9RR3JPIkcN1cmNyE,498
|
|
75
77
|
endoreg_db/data/network_device_type/data.yaml,sha256=a052EXWgo3m_8DrzJ4tYGUybc8qC6xdRCBgswiSK38M,152
|
|
76
78
|
endoreg_db/data/patient_lab_sample_type/generic.yaml,sha256=nbtummOrGUeBkM7sVpqq48txkC-bmxn4_h40oS4VloY,162
|
|
77
79
|
endoreg_db/data/pdf_type/data.yaml,sha256=0eMCb3-j2_zY0NkyIFFM7H9658kILpd5mt_OgrXxs64,990
|
|
@@ -112,7 +114,7 @@ endoreg_db/management/commands/import_legacy_images.py,sha256=IcBmihG9rvqC37XgMg
|
|
|
112
114
|
endoreg_db/management/commands/import_legacy_videos.py,sha256=OHFTNb53RtznRyVay88vo83fkfafTiwTgUMieI70NX4,2732
|
|
113
115
|
endoreg_db/management/commands/load_active_model_data.py,sha256=NpWIksrVQIyrd-ZhI_B_34NFbLJI1_vhwuN6gXc8hgQ,1337
|
|
114
116
|
endoreg_db/management/commands/load_ai_model_data.py,sha256=rjC-yK8NNr0a0TDqvGHufI27ANQYTWDkWlSEWRkubGY,1329
|
|
115
|
-
endoreg_db/management/commands/load_base_db_data.py,sha256=
|
|
117
|
+
endoreg_db/management/commands/load_base_db_data.py,sha256=Jrtbt7UzFEahMiqeA4goVgShRK9XkyPOgqljjHSZN_I,6475
|
|
116
118
|
endoreg_db/management/commands/load_center_data.py,sha256=Ra7BikibHJF4Ks72WNGwJqtbIw-9MieCxKlZG_RUA-s,1339
|
|
117
119
|
endoreg_db/management/commands/load_disease_classification_choices_data.py,sha256=zSwNVmI56myFtOBUxV9kD_-4NKh0Z4nWuvFN3RSSulU,1361
|
|
118
120
|
endoreg_db/management/commands/load_disease_classification_data.py,sha256=B0sIgDq35e8Js3cqBCpRBoDuKRoDy7YvPbaZ4jjJS2I,1305
|
|
@@ -128,12 +130,13 @@ endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py,sha256=rjW
|
|
|
128
130
|
endoreg_db/management/commands/load_information_source.py,sha256=3sL906AMa7FGO3bgrNbfJlptrEwv925n-X_XB4PDZ_Q,1347
|
|
129
131
|
endoreg_db/management/commands/load_lab_value_data.py,sha256=NC3wCo7cnd7l1uyVa7LQzsYXTLVTIuGnRu8z5pgzrck,1609
|
|
130
132
|
endoreg_db/management/commands/load_label_data.py,sha256=0vSBzBweO-M7mjXJotg4q_W7gbcaBoilrnA9e7dyp8o,2217
|
|
133
|
+
endoreg_db/management/commands/load_logging_data.py,sha256=1GWVQFh-tVWGZjSlvqcqkG2ByClJjOqU-GLwgh3TEnE,1222
|
|
131
134
|
endoreg_db/management/commands/load_medication_data.py,sha256=8x-tLE7UrZDcrVFEKHUWe8EWFhJbXju6PANjxYWon6U,1262
|
|
132
135
|
endoreg_db/management/commands/load_medication_indication_data.py,sha256=lR3zJdTjtKeVmXUrb3AyAcTwyutUteppfD-GbkgXRG0,1783
|
|
133
136
|
endoreg_db/management/commands/load_medication_indication_type_data.py,sha256=CJ3zyFv7DnTuhBfG6TAdU9uZ0c2aHd31Y33g3X-SYVA,1282
|
|
134
137
|
endoreg_db/management/commands/load_medication_intake_time_data.py,sha256=Qln3plozYsADcS0gKLdnLzAjbVLxC6N9h3ja-pS5CiI,1270
|
|
135
138
|
endoreg_db/management/commands/load_medication_schedule_data.py,sha256=UTnCGF2gFUsdDb76cYrntaHGFazz4tUWg9ulF8bOVKY,1514
|
|
136
|
-
endoreg_db/management/commands/load_network_data.py,sha256=
|
|
139
|
+
endoreg_db/management/commands/load_network_data.py,sha256=zg8Kt0Qv1ocgRG3pUlweJhNIF2JCMtAFEh-kZb0SiX8,1991
|
|
137
140
|
endoreg_db/management/commands/load_pdf_type_data.py,sha256=sJeGI1M4Xwkagi7rModwUJH3MuQckZXdOkHekoAvRAw,1650
|
|
138
141
|
endoreg_db/management/commands/load_profession_data.py,sha256=oF3OF7zRqxA-SVpMW6e7LJ3MSfEc5Hoz1XlcvcFACRg,1321
|
|
139
142
|
endoreg_db/management/commands/load_report_reader_flag.py,sha256=pvqRgtcjaYTgx2Ce7HYnNzsUB48yJe9lXTk-lzfJUPI,1371
|
|
@@ -209,8 +212,12 @@ endoreg_db/migrations/0065_rename__date_value_distribution_casetemplaterule_date
|
|
|
209
212
|
endoreg_db/migrations/0066_alter_patientlabvalue_patient_and_more.py,sha256=XEn9XBxJhh0mNDj8htiLUcViyGMLOkew2UmbbMExeC4,1240
|
|
210
213
|
endoreg_db/migrations/0067_alter_medicationindication_indication_type.py,sha256=HcMRzp-G1bOl2y_aKTU1GMk85bX1sTO-XMeLNG4MzmE,577
|
|
211
214
|
endoreg_db/migrations/0068_networkdevicetype_networkdevicetypemanager_and_more.py,sha256=XlASc_hxZbtrljxxiP-V49C-sVR_710J1qSf3sX3eYg,2439
|
|
215
|
+
endoreg_db/migrations/0069_delete_networkdevicetypemanager_networkdevice_online.py,sha256=AGtnpgd1T6Q7UoKSGsb5ETXvYEYzMklMZnctnBXEh5Y,519
|
|
216
|
+
endoreg_db/migrations/0070_logtype_alter_rawpdffile_file_networkdevicelogentry_and_more.py,sha256=zN0qELi6iDJz8wPKPWj8QK8SV6AIcC326Q_7IFrUuiI,3416
|
|
217
|
+
endoreg_db/migrations/0071_aglservicelogentry.py,sha256=ZIO3niIExRWXYnAcNJdrm-Rj-qLEhId_ScD0360HTyw,1442
|
|
218
|
+
endoreg_db/migrations/0072_alter_rawpdffile_file.py,sha256=7LjAiwZbEW2tbFRC5ndTrWYV5PZzij6RK49S_dwVqjU,652
|
|
212
219
|
endoreg_db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
213
|
-
endoreg_db/models/__init__.py,sha256=
|
|
220
|
+
endoreg_db/models/__init__.py,sha256=wc1ZyDUNb-sKMZ4P7x_PAb0WtzDhYAq8y19AV8rC7dQ,1552
|
|
214
221
|
endoreg_db/models/ai_model/__init__.py,sha256=rh5npLRGml5iiRocx359gsaA82pGJTW7wdVAfnbZP6w,106
|
|
215
222
|
endoreg_db/models/ai_model/active_model.py,sha256=r7SE3yg54kbjfOkk0Ei0rgs_Wo3ikx88rcEELqvRzGc,343
|
|
216
223
|
endoreg_db/models/ai_model/model_meta.py,sha256=YyYW8dScpAceHePnbrnRpgVBYDByi9x7u5Ydh03OJuo,869
|
|
@@ -268,10 +275,16 @@ endoreg_db/models/laboratory/__init__.py,sha256=UQb4RDHqgMfSvO7UBGi_TzI1wUV3QMtL
|
|
|
268
275
|
endoreg_db/models/laboratory/lab_value.py,sha256=9X39Wqh1zHghEabUS5yPI3r9a3AKKUcrozwNg32LUag,4097
|
|
269
276
|
endoreg_db/models/legacy_data/__init__.py,sha256=J0ewe30Y2qCxCUPktcFOm2WOEz2fQnwrgfZ93FRcnio,115
|
|
270
277
|
endoreg_db/models/legacy_data/image.py,sha256=mKQed6AIJL2XauPB2GevHX6NXaR8gphundI9_IC9Hpc,1622
|
|
278
|
+
endoreg_db/models/logging/__init__.py,sha256=GDsBf4AbhGeyUITBb9teTlTLhzU1A0GYoqQH59XNrMg,158
|
|
279
|
+
endoreg_db/models/logging/agl_service.py,sha256=DQdoGNGPHEbTpm_D4v87p3eRmlFOh9Ilee952ItN_O8,495
|
|
280
|
+
endoreg_db/models/logging/base.py,sha256=39pKcV65Gru4ssZ3xb8T2IJ-ou8cjCGqn1efGuHzoRM,773
|
|
281
|
+
endoreg_db/models/logging/log_type.py,sha256=o_52ZzBBDE9CDgSeBmZJcNBoFyCDxo9HzeSANnOHrj0,636
|
|
282
|
+
endoreg_db/models/logging/network_device.py,sha256=UdcAk8PFJxjFCTZTfEChyI3iu1wcv7xiMiha9FlhHQg,509
|
|
271
283
|
endoreg_db/models/medication/__init__.py,sha256=69K9Iy3zEqJSd0zS_ZS9WKbvGQIgmOJm1PCpPI_vwOg,25
|
|
272
284
|
endoreg_db/models/medication/medication.py,sha256=tPXBnrGVkmyvfhjJQGcD4Jq2TkYeHl8nNLvGuVisBiI,4939
|
|
273
|
-
endoreg_db/models/network/__init__.py,sha256=
|
|
274
|
-
endoreg_db/models/network/
|
|
285
|
+
endoreg_db/models/network/__init__.py,sha256=lxRpaWeVxKdZDL9Hj45_rAemPs6Y2gM-f_PjmY19nOA,128
|
|
286
|
+
endoreg_db/models/network/agl_service.py,sha256=mS_0jDm4ovww9O-Nz0U8kVOoBK-MGrLnmv4NnFTUtrA,1275
|
|
287
|
+
endoreg_db/models/network/network_device.py,sha256=p2zY4vENy6ZwKVeoTP5yHYvCHmFKopvyCaBTzux1NEI,1586
|
|
275
288
|
endoreg_db/models/network/network_device_type.py,sha256=LHGVGkF0LRH8VmAJHE0If5H3c8HC5wtP0-GZY7r02TU,728
|
|
276
289
|
endoreg_db/models/other/__init__.py,sha256=HDlNBuS98uIvxpw3sww-hiyulG871TzulFRrLO0C8ec,158
|
|
277
290
|
endoreg_db/models/other/distribution.py,sha256=OLMELIpP9xQa4BkiLZoBbEoxzLmOponZh_LYro6g4DM,8404
|
|
@@ -361,7 +374,7 @@ endoreg_db/utils/ocr.py,sha256=jkdT1bl-LSCjZ2PvxlX1AG2TmhdMclayxUPrdZWs7UE,7322
|
|
|
361
374
|
endoreg_db/utils/uuid.py,sha256=T4HXqYtKwXFqE5kPyvlgWHyllBBF6LL6N48nl9TpwBk,53
|
|
362
375
|
endoreg_db/utils/video_metadata.py,sha256=HDyXxAeNQOK3cGzQ06xosmObzEnJBARuKjwz9vmmRIM,2613
|
|
363
376
|
endoreg_db/views.py,sha256=xc1IQHrsij7j33TUbo-_oewy3vs03pw_etpBWaMYJl0,63
|
|
364
|
-
endoreg_db-0.3.
|
|
365
|
-
endoreg_db-0.3.
|
|
366
|
-
endoreg_db-0.3.
|
|
367
|
-
endoreg_db-0.3.
|
|
377
|
+
endoreg_db-0.3.9.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
378
|
+
endoreg_db-0.3.9.dist-info/METADATA,sha256=oIhjtGe_1AZ2EkQUj1j50Lx66j2gWAuQcltuOFet6Us,1054
|
|
379
|
+
endoreg_db-0.3.9.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
380
|
+
endoreg_db-0.3.9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|