workaround content-type issue
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details

This commit is contained in:
Tobias Brunner 2021-02-13 20:27:41 +01:00
parent 1b9c895f02
commit 1e0b8d3af9
4 changed files with 26 additions and 3 deletions

View File

@ -1,3 +1,4 @@
## ----------- Step 1
FROM docker.io/python:3.9 AS base
# Install pdftotext
@ -10,6 +11,7 @@ ENV HOME=/app
WORKDIR ${HOME}
## ----------- Step 2
FROM base AS builder
ENV PATH=${PATH}:${HOME}/.poetry/bin
@ -30,12 +32,22 @@ COPY . ./
RUN poetry build --format wheel
## ----------- Step 3
FROM builder AS installer
COPY --from=builder \
/app/dist /app/dist
RUN pip install /app/dist/pylokid-*-py3-none-any.whl
COPY hack/patches/*.patch /tmp
# The ugliest possible way to workaround https://github.com/MechanicalSoup/MechanicalSoup/issues/356
# For some unknown reasons Lodur now wants "Content-Type: application/pdf" set in the multipart
# data section. And as I couln't figure out yet how to do that in MechanicalSoup and I only upload PDFs
# I just patch it to hardcode it. YOLO
RUN patch -p0 /usr/local/lib/python3.9/site-packages/mechanicalsoup/browser.py < /tmp/mechsoup-browser-content-type.patch
## ----------- Step 4
FROM base AS runtime
COPY --from=installer \

View File

@ -0,0 +1,11 @@
--- /usr/local/lib/python3.9/site-packages/mechanicalsoup/browser.py.orig 2021-02-13 20:16:45.799025505 +0100
+++ /usr/local/lib/python3.9/site-packages/mechanicalsoup/browser.py 2021-02-13 15:29:10.244575346 +0100
@@ -201,7 +201,7 @@
# If value is the empty string, we still pass it
# for consistency with browsers (see
# https://github.com/MechanicalSoup/MechanicalSoup/issues/250).
- files[name] = (filename, content)
+ files[name] = (filename, content, 'application/pdf')
else:
data.append((name, value))

View File

@ -190,7 +190,7 @@ class Lodur:
def einsatzrapport_alarmdepesche(self, f_id, file_path, webdav_client):
""" Upload a file to Alarmdepesche """
self.logger.info('[%s] Submitting File to Lodur "Alarmdepesche"', f_id)
self.logger.info('[%s] Submitting file %s to Lodur "Alarmdepesche"', f_id, file_path)
# Login to lodur
self.login()
@ -199,7 +199,7 @@ class Lodur:
lodur_id = webdav_client.get_lodur_data(f_id)['event_id']
# Prepare the form
self.browser.open(self.url + '?modul=36&what=828&event=' + lodur_id)
self.browser.open('{}?modul=36&event={}&what=828'.format(self.url,lodur_id ))
frm_alarmdepesche = self.browser.select_form('#frm_alarmdepesche')
# Fill in form data

View File

@ -34,7 +34,7 @@ LODUR_BASE_URL = os.getenv("LODUR_BASE_URL")
HEARTBEAT_URL = os.getenv("HEARTBEAT_URL")
PUSHOVER_API_TOKEN = os.getenv("PUSHOVER_API_TOKEN")
PUSHOVER_USER_KEY = os.getenv("PUSHOVER_USER_KEY")
PYLOKID_VERSION = "2.1.2"
PYLOKID_VERSION = "2.2.0"
def main():
""" main """