mirror of
https://github.com/seriousm4x/UpSnap.git
synced 2026-07-22 13:33:39 -04:00
52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
import os
|
|
|
|
from django.contrib.auth.models import User
|
|
from django_celery_beat.models import IntervalSchedule, PeriodicTask, PeriodicTasks
|
|
|
|
from wol.models import Settings, Websocket
|
|
|
|
# create superuser
|
|
if os.getenv("DJANGO_SUPERUSER_USER") and os.getenv("DJANGO_SUPERUSER_PASSWORD"):
|
|
if not User.objects.filter(username=os.getenv("DJANGO_SUPERUSER_USER")).exists():
|
|
User.objects.create_superuser(os.getenv("DJANGO_SUPERUSER_USER"), password=os.getenv("DJANGO_SUPERUSER_PASSWORD"))
|
|
else:
|
|
print('Django user exists')
|
|
|
|
# reset visitors
|
|
[i.delete() for i in Websocket.objects.all()]
|
|
Websocket.objects.create(visitors=0)
|
|
|
|
# ping interval
|
|
if os.environ.get("PING_INTERVAL"):
|
|
if int(os.environ.get("PING_INTERVAL")) < 5:
|
|
print("Ping interval lower than 5 seconds is not recommended. Please use an interval of 5 seconds or higher. Automatically set to 5 seconds.")
|
|
ping_interval = 5
|
|
else:
|
|
ping_interval = int(os.environ.get("PING_INTERVAL"))
|
|
else:
|
|
ping_interval = 5
|
|
Settings.objects.update_or_create(
|
|
id=1,
|
|
defaults={
|
|
"interval": ping_interval
|
|
}
|
|
)
|
|
|
|
# register device ping task
|
|
schedule, created = IntervalSchedule.objects.get_or_create(
|
|
every=ping_interval,
|
|
period=IntervalSchedule.SECONDS,
|
|
)
|
|
if created:
|
|
PeriodicTask.objects.create(
|
|
interval=schedule,
|
|
name="Ping all devices",
|
|
task="wol.tasks.ping_all_devices"
|
|
)
|
|
|
|
# reset last run to fix time zone changes
|
|
# https://django-celery-beat.readthedocs.io/en/latest/#important-warning-about-time-zones
|
|
PeriodicTask.objects.update(last_run_at=None)
|
|
for task in PeriodicTask.objects.all():
|
|
PeriodicTasks.changed(task)
|