srg/monthplan/management/commands/00_watchdog.py
2024-04-26 12:43:00 +03:00

77 lines
2.2 KiB
Python

from django.core.management.base import BaseCommand, CommandError
from django.contrib.auth.models import User
from django.core import mail
from django.template.loader import render_to_string
from django.utils.html import strip_tags
from django.core.mail import send_mail
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from watchdog.events import PatternMatchingEventHandler
class MyHandler(PatternMatchingEventHandler):
patterns = ["*gyro.fits",]
def process(self, event):
"""
event.event_type
'modified' | 'created' | 'moved' | 'deleted'
event.is_directory
True | False
event.src_path
path/to/observed/file
"""
# the file will be processed there
if not event.event_type == 'created':
return
print("Reading {} ty[e: {}".format(event.src_path, event.event_type))
#if not 'L1b' in event.src_path:
# return
users = User.objects.filter(groups__name='srg-artxc-survey')
to_emails=[]
for user in users:
to_emails.append(user.email)
print (event.src_path, event.event_type) # print now only for degug
count=1
subject = "New SRG data"
html_message = render_to_string('monthplan/data_loaded_email.html', {'event':event, 'count':count})
plain_message = strip_tags(html_message)
from_email = 'Roman Krivonos <krivonos@cosmos.ru>'
mail.send_mail(subject, plain_message, from_email, ['krivonos@cosmos.ru','kate@cosmos.ru',], html_message=html_message)
def on_modified(self, event):
self.process(event)
def on_created(self, event):
self.process(event)
class EventHandler(FileSystemEventHandler):
def on_created(self, event):
print (event)
class Command(BaseCommand):
help = 'Initiates data base'
def handle(self, *args, **options):
path = "/srg/work/oper/data/2020/"
observer = Observer()
observer.schedule(MyHandler(), path, recursive=True)
observer.start()
try:
while True:
time.sleep(10)
except KeyboardInterrupt:
observer.stop()
observer.join()