handle scans
This commit is contained in:
parent
7d4654ffd1
commit
f2595ea604
|
@ -37,6 +37,9 @@ pylokid funktioniert so:
|
||||||
diese im Lodur am entsprechenden Einsatzrapport angehängt.
|
diese im Lodur am entsprechenden Einsatzrapport angehängt.
|
||||||
* Ist der Einsatz abgeschlossen und das Einsatzprotokoll eingetroffen
|
* Ist der Einsatz abgeschlossen und das Einsatzprotokoll eingetroffen
|
||||||
werden die Informationen im Lodur nachgetragen.
|
werden die Informationen im Lodur nachgetragen.
|
||||||
|
* Wird der von Hand ausgefüllte Einsatzrapport via Scanner per E-Mail
|
||||||
|
an das E-Mail Postfach gesendet (Betreff "Attached Image FXXXXXXXX")
|
||||||
|
wird das PDF in der Cloud und im Lodur gespeichert.
|
||||||
|
|
||||||
Desweiteren wird über Pushover eine Nachricht mit möglichst vielen
|
Desweiteren wird über Pushover eine Nachricht mit möglichst vielen
|
||||||
Informationen publiziert.
|
Informationen publiziert.
|
||||||
|
|
|
@ -9,7 +9,7 @@ import email
|
||||||
import email.parser
|
import email.parser
|
||||||
import imaplib
|
import imaplib
|
||||||
|
|
||||||
_EMAIL_SUBJECTS = '(OR SUBJECT "Einsatzausdruck_FW" SUBJECT "Einsatzprotokoll" UNSEEN)'
|
_EMAIL_SUBJECTS = '(OR OR SUBJECT "Einsatzausdruck_FW" SUBJECT "Einsatzprotokoll" SUBJECT "Attached Image" UNSEEN)'
|
||||||
|
|
||||||
class EmailHandling:
|
class EmailHandling:
|
||||||
""" Email handling """
|
""" Email handling """
|
||||||
|
@ -32,7 +32,7 @@ class EmailHandling:
|
||||||
def search_emails(self):
|
def search_emails(self):
|
||||||
""" searches for emails matching the configured subject """
|
""" searches for emails matching the configured subject """
|
||||||
|
|
||||||
self.logger.info('Searching for messages matching the subject')
|
self.logger.info('Searching for messages matching: %s', _EMAIL_SUBJECTS)
|
||||||
try:
|
try:
|
||||||
typ, msg_ids = self.imap.search(
|
typ, msg_ids = self.imap.search(
|
||||||
None,
|
None,
|
||||||
|
@ -102,7 +102,8 @@ class EmailHandling:
|
||||||
def parse_subject(self, subject):
|
def parse_subject(self, subject):
|
||||||
""" extract f id and type from subject """
|
""" extract f id and type from subject """
|
||||||
|
|
||||||
parsed = re.search('(.*): (F[0-9].*)', subject)
|
# This regex matches the subjects filtered already in IMAP search
|
||||||
|
parsed = re.search('([a-zA-Z]* ?[a-zA-Z]*):? ?(F[0-9].*)?', subject)
|
||||||
f_type = parsed.group(1)
|
f_type = parsed.group(1)
|
||||||
f_id = parsed.group(2)
|
f_id = parsed.group(2)
|
||||||
|
|
||||||
|
|
|
@ -176,7 +176,7 @@ class Lodur:
|
||||||
def einsatzrapport_alarmdepesche(self, f_id, file_path, webdav_client):
|
def einsatzrapport_alarmdepesche(self, f_id, file_path, webdav_client):
|
||||||
""" Upload a file to Alarmdepesche """
|
""" Upload a file to Alarmdepesche """
|
||||||
|
|
||||||
self.logger.info('[%s] Submitting Alarmdepesche to Lodur', f_id)
|
self.logger.info('[%s] Submitting File to Lodur "Alarmdepesche"', f_id)
|
||||||
|
|
||||||
# Login to lodur
|
# Login to lodur
|
||||||
self.login()
|
self.login()
|
||||||
|
@ -193,7 +193,7 @@ class Lodur:
|
||||||
|
|
||||||
# Submit the form
|
# Submit the form
|
||||||
self.browser.submit_selected()
|
self.browser.submit_selected()
|
||||||
self.logger.info('[%s] Alarmdepesche submitted', f_id)
|
self.logger.info('[%s] File uploaded', f_id)
|
||||||
|
|
||||||
def submit_form_einsatzrapport(self, lodur_data):
|
def submit_form_einsatzrapport(self, lodur_data):
|
||||||
""" Form in module 36 - Einsatzrapport """
|
""" Form in module 36 - Einsatzrapport """
|
||||||
|
|
|
@ -34,7 +34,11 @@ class WebDav:
|
||||||
""" uploads a file to webdav - checks for existence before doing so """
|
""" uploads a file to webdav - checks for existence before doing so """
|
||||||
|
|
||||||
# upload with webdav
|
# upload with webdav
|
||||||
remote_upload_dir = self.webdav_basedir + "/" + str(datetime.now().year) + "/" + f_id
|
if f_id == None:
|
||||||
|
remote_upload_dir = self.webdav_basedir + "/Inbox"
|
||||||
|
else:
|
||||||
|
remote_upload_dir = self.webdav_basedir + "/" + str(datetime.now().year) + "/" + f_id
|
||||||
|
|
||||||
self.logger.info('[%s] Uploading file to WebDAV "%s"', f_id, remote_upload_dir)
|
self.logger.info('[%s] Uploading file to WebDAV "%s"', f_id, remote_upload_dir)
|
||||||
|
|
||||||
# create directory if not yet there
|
# create directory if not yet there
|
||||||
|
|
26
main.py
26
main.py
|
@ -34,7 +34,7 @@ LODUR_BASE_URL = os.getenv("LODUR_BASE_URL")
|
||||||
HEARTBEAT_URL = os.getenv("HEARTBEAT_URL")
|
HEARTBEAT_URL = os.getenv("HEARTBEAT_URL")
|
||||||
PUSHOVER_API_TOKEN = os.getenv("PUSHOVER_API_TOKEN")
|
PUSHOVER_API_TOKEN = os.getenv("PUSHOVER_API_TOKEN")
|
||||||
PUSHOVER_USER_KEY = os.getenv("PUSHOVER_USER_KEY")
|
PUSHOVER_USER_KEY = os.getenv("PUSHOVER_USER_KEY")
|
||||||
PYLOKID_VERSION = "2.0.0"
|
PYLOKID_VERSION = "2.1.0"
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
""" main """
|
""" main """
|
||||||
|
@ -92,6 +92,8 @@ def main():
|
||||||
for subject in attachments:
|
for subject in attachments:
|
||||||
f_type, f_id = imap_client.parse_subject(subject)
|
f_type, f_id = imap_client.parse_subject(subject)
|
||||||
file_name = attachments[subject]
|
file_name = attachments[subject]
|
||||||
|
|
||||||
|
# Upload file to cloud
|
||||||
webdav_client.upload(file_name, f_id)
|
webdav_client.upload(file_name, f_id)
|
||||||
|
|
||||||
# Take actions - depending on the type
|
# Take actions - depending on the type
|
||||||
|
@ -191,6 +193,28 @@ def main():
|
||||||
f_id
|
f_id
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# This is a scan from the Depot printer
|
||||||
|
elif f_type == 'Attached Image':
|
||||||
|
logger.info('[%s] Processing type %s', f_id, f_type)
|
||||||
|
|
||||||
|
# Attach scan in Lodur if f_id is available
|
||||||
|
if f_id != None:
|
||||||
|
lodur_data = webdav_client.get_lodur_data(f_id)
|
||||||
|
if lodur_data:
|
||||||
|
# Upload scan to Lodur
|
||||||
|
lodur_client.einsatzrapport_alarmdepesche(
|
||||||
|
f_id,
|
||||||
|
os.path.join(TMP_DIR, file_name),
|
||||||
|
webdav_client,
|
||||||
|
)
|
||||||
|
|
||||||
|
logger.info(
|
||||||
|
'[%s] Publishing message on Pushover', f_id
|
||||||
|
)
|
||||||
|
pushover.send_message(
|
||||||
|
"Scan {} wurde bearbeitet und in Cloud geladen".format(f_id),
|
||||||
|
title="Feuerwehr Scan bearbeitet",
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
logger.error('[%s] Unknown type: %s', f_id, f_type)
|
logger.error('[%s] Unknown type: %s', f_id, f_type)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue