Merge pull request '#55 Celery parcel updating' (#58) from 55_Parcel_calculation_to_background into master

Reviewed-on: SGD-Nord/konova#58
This commit is contained in:
Michel Peltriaux 2022-01-06 15:04:09 +01:00
commit ea4dc636c8
13 changed files with 506 additions and 81 deletions

View File

@ -3,6 +3,14 @@ Konova is the successor of KSP. It's build using the python webframework Django,
the database postgresql and the css library bootstrap as well as the icon package the database postgresql and the css library bootstrap as well as the icon package
fontawesome for a modern look, following best practices from the industry. fontawesome for a modern look, following best practices from the industry.
## Background processes
Konova uses celery for background processing. To start the worker you need to run
```shell
$ celery -A konova worker -l INFO
```
More info can be found [here](https://docs.celeryproject.org/en/stable/getting-started/first-steps-with-celery.html#running-the-celery-worker-server).
Redis must be installed.
## Technical documentation ## Technical documentation
Technical documention is provided in the projects git wiki. Technical documention is provided in the projects git wiki.

View File

@ -15,6 +15,7 @@ from codelist.settings import CODELIST_INTERVENTION_HANDLER_ID, CODELIST_CONSERV
CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_CLASS_ID, CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID, \ CODELIST_COMPENSATION_ACTION_ID, CODELIST_COMPENSATION_ACTION_CLASS_ID, CODELIST_COMPENSATION_ADDITIONAL_TYPE_ID, \
CODELIST_BASE_URL, CODELIST_PROCESS_TYPE_ID CODELIST_BASE_URL, CODELIST_PROCESS_TYPE_ID
from konova.management.commands.setup import BaseKonovaCommand from konova.management.commands.setup import BaseKonovaCommand
from konova.settings import PROXIES
bool_map = { bool_map = {
"true": True, "true": True,
@ -43,7 +44,7 @@ class Command(BaseKonovaCommand):
for list_id in codelist_ids: for list_id in codelist_ids:
_url = CODELIST_BASE_URL + "/" + str(list_id) _url = CODELIST_BASE_URL + "/" + str(list_id)
result = requests.get(url=_url) result = requests.get(url=_url, proxies=PROXIES)
if result.status_code != 200: if result.status_code != 200:
self._write_error("Error on codelist url '{}'".format(_url)) self._write_error("Error on codelist url '{}'".format(_url))

View File

@ -0,0 +1,5 @@
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app
__all__ = ('celery_app',)

25
konova/celery.py Normal file
View File

@ -0,0 +1,25 @@
import os
from celery import Celery
# Set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'konova.settings')
app = Celery('konova')
# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
# should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django apps.
app.autodiscover_tasks()
# Declare redis as broker
app.conf.broker_url = 'redis://localhost:6379/0'
@app.task(bind=True)
def debug_task(self):
print(f'Request: {self.request!r}')

View File

@ -23,6 +23,7 @@ from django.utils.translation import gettext_lazy as _
from konova.contexts import BaseContext from konova.contexts import BaseContext
from konova.models import BaseObject, Geometry, RecordableObjectMixin from konova.models import BaseObject, Geometry, RecordableObjectMixin
from konova.settings import DEFAULT_SRID from konova.settings import DEFAULT_SRID
from konova.tasks import celery_update_parcels
from konova.utils.message_templates import FORM_INVALID from konova.utils.message_templates import FORM_INVALID
from user.models import UserActionLogEntry from user.models import UserActionLogEntry
@ -287,7 +288,7 @@ class SimpleGeomForm(BaseForm):
geometry = self.instance.geometry geometry = self.instance.geometry
geometry.geom = self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID)) geometry.geom = self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID))
geometry.modified = action geometry.modified = action
geometry.update_parcels()
geometry.save() geometry.save()
except LookupError: except LookupError:
# No geometry or linked instance holding a geometry exist --> create a new one! # No geometry or linked instance holding a geometry exist --> create a new one!
@ -295,6 +296,8 @@ class SimpleGeomForm(BaseForm):
geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID)), geom=self.cleaned_data.get("geom", MultiPolygon(srid=DEFAULT_SRID)),
created=action, created=action,
) )
# Start the parcel update procedure in a background process
celery_update_parcels.delay(geometry.id)
return geometry return geometry

View File

@ -14,6 +14,12 @@ from django.utils.translation import gettext_lazy as _
# Load other settings # Load other settings
from konova.sub_settings.django_settings import * from konova.sub_settings.django_settings import *
proxy = "CHANGE_ME"
PROXIES = {
"http": proxy,
"https": proxy,
}
# ALLOWED FILE UPLOAD DEFINITIONS # ALLOWED FILE UPLOAD DEFINITIONS
# Default: Upload into upper folder of code # Default: Upload into upper folder of code
MEDIA_ROOT = BASE_DIR + "/.." MEDIA_ROOT = BASE_DIR + "/.."

14
konova/tasks.py Normal file
View File

@ -0,0 +1,14 @@
from celery import shared_task
from django.core.exceptions import ObjectDoesNotExist
from konova.models import Geometry
@shared_task
def celery_update_parcels(geometry_id: str):
try:
geom = Geometry.objects.get(id=geometry_id)
geom.parcels.clear()
geom.update_parcels()
except ObjectDoesNotExist:
return

View File

@ -3,6 +3,13 @@
<h3>{% trans 'Spatial reference' %}</h3> <h3>{% trans 'Spatial reference' %}</h3>
</div> </div>
<div class="table-container w-100 scroll-300"> <div class="table-container w-100 scroll-300">
{% if parcels|length == 0 %}
<article class="alert alert-info">
{% blocktrans %}
If the geometry is not empty, the parcels are currently recalculated. Please refresh this page in a few moments.
{% endblocktrans %}
</article>
{% else %}
<table class="table table-hover"> <table class="table table-hover">
<thead> <thead>
<tr> <tr>
@ -26,4 +33,5 @@
</tbody> </tbody>
</table> </table>
{% endif %}
</div> </div>

View File

@ -11,7 +11,7 @@ import requests
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from konova.settings import SSO_SERVER_BASE, SSO_PUBLIC_KEY from konova.settings import SSO_SERVER_BASE, SSO_PUBLIC_KEY, PROXIES
from konova.sub_settings.context_settings import BASE_TITLE_SHORT from konova.sub_settings.context_settings import BASE_TITLE_SHORT
@ -52,7 +52,8 @@ class Messenger:
requests.post( requests.post(
self.server_url, self.server_url,
data=data, data=data,
headers=headers headers=headers,
proxies=PROXIES
) )
def send_object_checked(self, obj_identifier: str, performing_user: User, detail_view_url: str = ""): def send_object_checked(self, obj_identifier: str, performing_user: User, detail_view_url: str = ""):

View File

@ -12,7 +12,7 @@ import xmltodict
from django.contrib.gis.db.models.functions import AsGML, Transform from django.contrib.gis.db.models.functions import AsGML, Transform
from requests.auth import HTTPDigestAuth from requests.auth import HTTPDigestAuth
from konova.settings import DEFAULT_SRID_RLP, PARCEL_WFS_USER, PARCEL_WFS_PW from konova.settings import DEFAULT_SRID_RLP, PARCEL_WFS_USER, PARCEL_WFS_PW, PROXIES
class AbstractWFSFetcher: class AbstractWFSFetcher:
@ -148,7 +148,8 @@ class ParcelWFSFetcher(AbstractWFSFetcher):
response = requests.post( response = requests.post(
url=self.base_url, url=self.base_url,
data=post_body, data=post_body,
auth=self.auth_digest_obj auth=self.auth_digest_obj,
proxies=PROXIES,
) )
content = response.content.decode("utf-8") content = response.content.decode("utf-8")

Binary file not shown.

View File

@ -11,15 +11,15 @@
#: intervention/forms/forms.py:52 intervention/forms/forms.py:154 #: intervention/forms/forms.py:52 intervention/forms/forms.py:154
#: intervention/forms/forms.py:166 intervention/forms/modalForms.py:125 #: intervention/forms/forms.py:166 intervention/forms/modalForms.py:125
#: intervention/forms/modalForms.py:138 intervention/forms/modalForms.py:151 #: intervention/forms/modalForms.py:138 intervention/forms/modalForms.py:151
#: konova/forms.py:139 konova/forms.py:240 konova/forms.py:309 #: konova/forms.py:140 konova/forms.py:241 konova/forms.py:312
#: konova/forms.py:336 konova/forms.py:346 konova/forms.py:359 #: konova/forms.py:339 konova/forms.py:349 konova/forms.py:362
#: konova/forms.py:371 konova/forms.py:389 user/forms.py:38 #: konova/forms.py:374 konova/forms.py:392 user/forms.py:38
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-01-05 14:04+0100\n" "POT-Creation-Date: 2022-01-06 12:04+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -40,7 +40,7 @@ msgstr "Bis"
#: analysis/forms.py:47 compensation/forms/forms.py:77 #: analysis/forms.py:47 compensation/forms/forms.py:77
#: compensation/templates/compensation/detail/eco_account/view.html:58 #: compensation/templates/compensation/detail/eco_account/view.html:58
#: compensation/templates/compensation/report/eco_account/report.html:16 #: compensation/templates/compensation/report/eco_account/report.html:16
#: compensation/utils/quality.py:100 ema/templates/ema/detail/view.html:42 #: compensation/utils/quality.py:100 ema/templates/ema/detail/view.html:49
#: ema/templates/ema/report/report.html:16 ema/utils/quality.py:26 #: ema/templates/ema/report/report.html:16 ema/utils/quality.py:26
#: intervention/forms/forms.py:100 #: intervention/forms/forms.py:100
#: intervention/templates/intervention/detail/view.html:56 #: intervention/templates/intervention/detail/view.html:56
@ -68,7 +68,7 @@ msgstr "Bericht generieren"
msgid "Select a timespan and the desired conservation office" msgid "Select a timespan and the desired conservation office"
msgstr "Wählen Sie die Zeitspanne und die gewünschte Eintragungsstelle" msgstr "Wählen Sie die Zeitspanne und die gewünschte Eintragungsstelle"
#: analysis/forms.py:69 konova/forms.py:187 #: analysis/forms.py:69 konova/forms.py:188
msgid "Continue" msgid "Continue"
msgstr "Weiter" msgstr "Weiter"
@ -149,7 +149,7 @@ msgstr "Geprüft"
#: compensation/templates/compensation/detail/compensation/view.html:77 #: compensation/templates/compensation/detail/compensation/view.html:77
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31 #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:31
#: compensation/templates/compensation/detail/eco_account/view.html:44 #: compensation/templates/compensation/detail/eco_account/view.html:44
#: ema/tables.py:38 ema/templates/ema/detail/view.html:28 #: ema/tables.py:38 ema/templates/ema/detail/view.html:35
#: intervention/tables.py:39 #: intervention/tables.py:39
#: intervention/templates/intervention/detail/view.html:82 #: intervention/templates/intervention/detail/view.html:82
#: user/models/user_action.py:20 #: user/models/user_action.py:20
@ -322,14 +322,14 @@ msgstr "Automatisch generiert"
#: compensation/templates/compensation/report/compensation/report.html:12 #: compensation/templates/compensation/report/compensation/report.html:12
#: compensation/templates/compensation/report/eco_account/report.html:12 #: compensation/templates/compensation/report/eco_account/report.html:12
#: ema/tables.py:33 ema/templates/ema/detail/includes/documents.html:28 #: ema/tables.py:33 ema/templates/ema/detail/includes/documents.html:28
#: ema/templates/ema/detail/view.html:24 #: ema/templates/ema/detail/view.html:31
#: ema/templates/ema/report/report.html:12 intervention/forms/forms.py:38 #: ema/templates/ema/report/report.html:12 intervention/forms/forms.py:38
#: intervention/tables.py:28 #: intervention/tables.py:28
#: intervention/templates/intervention/detail/includes/compensations.html:33 #: intervention/templates/intervention/detail/includes/compensations.html:33
#: intervention/templates/intervention/detail/includes/documents.html:28 #: intervention/templates/intervention/detail/includes/documents.html:28
#: intervention/templates/intervention/detail/view.html:31 #: intervention/templates/intervention/detail/view.html:31
#: intervention/templates/intervention/report/report.html:12 #: intervention/templates/intervention/report/report.html:12
#: konova/forms.py:335 #: konova/forms.py:338
msgid "Title" msgid "Title"
msgstr "Bezeichnung" msgstr "Bezeichnung"
@ -356,7 +356,7 @@ msgstr "Kompensation XY; Flur ABC"
#: intervention/templates/intervention/detail/includes/documents.html:31 #: intervention/templates/intervention/detail/includes/documents.html:31
#: intervention/templates/intervention/detail/includes/payments.html:34 #: intervention/templates/intervention/detail/includes/payments.html:34
#: intervention/templates/intervention/detail/includes/revocation.html:38 #: intervention/templates/intervention/detail/includes/revocation.html:38
#: konova/forms.py:370 konova/templates/konova/includes/comment_card.html:16 #: konova/forms.py:373 konova/templates/konova/includes/comment_card.html:16
msgid "Comment" msgid "Comment"
msgstr "Kommentar" msgstr "Kommentar"
@ -367,7 +367,7 @@ msgstr "Zusätzlicher Kommentar"
#: compensation/forms/forms.py:93 #: compensation/forms/forms.py:93
#: compensation/templates/compensation/detail/eco_account/view.html:62 #: compensation/templates/compensation/detail/eco_account/view.html:62
#: compensation/templates/compensation/report/eco_account/report.html:20 #: compensation/templates/compensation/report/eco_account/report.html:20
#: compensation/utils/quality.py:102 ema/templates/ema/detail/view.html:46 #: compensation/utils/quality.py:102 ema/templates/ema/detail/view.html:53
#: ema/templates/ema/report/report.html:20 ema/utils/quality.py:28 #: ema/templates/ema/report/report.html:20 ema/utils/quality.py:28
#: intervention/forms/forms.py:128 #: intervention/forms/forms.py:128
#: intervention/templates/intervention/detail/view.html:60 #: intervention/templates/intervention/detail/view.html:60
@ -472,7 +472,7 @@ msgstr "Zahlung wird an diesem Datum erwartet"
#: compensation/forms/modalForms.py:62 compensation/forms/modalForms.py:239 #: compensation/forms/modalForms.py:62 compensation/forms/modalForms.py:239
#: compensation/forms/modalForms.py:317 intervention/forms/modalForms.py:152 #: compensation/forms/modalForms.py:317 intervention/forms/modalForms.py:152
#: konova/forms.py:372 #: konova/forms.py:375
msgid "Additional comment, maximum {} letters" msgid "Additional comment, maximum {} letters"
msgstr "Zusätzlicher Kommentar, maximal {} Zeichen" msgstr "Zusätzlicher Kommentar, maximal {} Zeichen"
@ -504,7 +504,7 @@ msgstr "Neuer Zustand"
msgid "Insert data for the new state" msgid "Insert data for the new state"
msgstr "Geben Sie die Daten des neuen Zustandes ein" msgstr "Geben Sie die Daten des neuen Zustandes ein"
#: compensation/forms/modalForms.py:155 konova/forms.py:189 #: compensation/forms/modalForms.py:155 konova/forms.py:190
msgid "Object removed" msgid "Object removed"
msgstr "Objekt entfernt" msgstr "Objekt entfernt"
@ -660,7 +660,7 @@ msgstr "Am {} von {} geprüft worden"
#: compensation/templates/compensation/detail/compensation/view.html:80 #: compensation/templates/compensation/detail/compensation/view.html:80
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:56 #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:56
#: compensation/templates/compensation/detail/eco_account/view.html:47 #: compensation/templates/compensation/detail/eco_account/view.html:47
#: ema/tables.py:101 ema/templates/ema/detail/view.html:31 #: ema/tables.py:101 ema/templates/ema/detail/view.html:38
#: intervention/tables.py:131 #: intervention/tables.py:131
#: intervention/templates/intervention/detail/view.html:85 #: intervention/templates/intervention/detail/view.html:85
msgid "Not recorded yet" msgid "Not recorded yet"
@ -793,7 +793,7 @@ msgstr "Dokumente"
#: compensation/templates/compensation/detail/eco_account/includes/documents.html:14 #: compensation/templates/compensation/detail/eco_account/includes/documents.html:14
#: ema/templates/ema/detail/includes/documents.html:14 #: ema/templates/ema/detail/includes/documents.html:14
#: intervention/templates/intervention/detail/includes/documents.html:14 #: intervention/templates/intervention/detail/includes/documents.html:14
#: konova/forms.py:388 #: konova/forms.py:391
msgid "Add new document" msgid "Add new document"
msgstr "Neues Dokument hinzufügen" msgstr "Neues Dokument hinzufügen"
@ -889,7 +889,7 @@ msgstr "Geprüft am "
#: compensation/templates/compensation/detail/compensation/view.html:84 #: compensation/templates/compensation/detail/compensation/view.html:84
#: compensation/templates/compensation/detail/eco_account/includes/deductions.html:54 #: compensation/templates/compensation/detail/eco_account/includes/deductions.html:54
#: compensation/templates/compensation/detail/eco_account/view.html:51 #: compensation/templates/compensation/detail/eco_account/view.html:51
#: ema/templates/ema/detail/view.html:35 #: ema/templates/ema/detail/view.html:42
#: intervention/templates/intervention/detail/view.html:75 #: intervention/templates/intervention/detail/view.html:75
#: intervention/templates/intervention/detail/view.html:89 #: intervention/templates/intervention/detail/view.html:89
msgid "by" msgid "by"
@ -897,7 +897,7 @@ msgstr "von"
#: compensation/templates/compensation/detail/compensation/view.html:84 #: compensation/templates/compensation/detail/compensation/view.html:84
#: compensation/templates/compensation/detail/eco_account/view.html:51 #: compensation/templates/compensation/detail/eco_account/view.html:51
#: ema/templates/ema/detail/view.html:35 #: ema/templates/ema/detail/view.html:42
#: intervention/templates/intervention/detail/view.html:89 #: intervention/templates/intervention/detail/view.html:89
msgid "Recorded on " msgid "Recorded on "
msgstr "Verzeichnet am" msgstr "Verzeichnet am"
@ -906,7 +906,7 @@ msgstr "Verzeichnet am"
#: compensation/templates/compensation/detail/eco_account/view.html:74 #: compensation/templates/compensation/detail/eco_account/view.html:74
#: compensation/templates/compensation/report/compensation/report.html:24 #: compensation/templates/compensation/report/compensation/report.html:24
#: compensation/templates/compensation/report/eco_account/report.html:41 #: compensation/templates/compensation/report/eco_account/report.html:41
#: ema/templates/ema/detail/view.html:54 #: ema/templates/ema/detail/view.html:61
#: ema/templates/ema/report/report.html:28 #: ema/templates/ema/report/report.html:28
#: intervention/templates/intervention/detail/view.html:108 #: intervention/templates/intervention/detail/view.html:108
#: intervention/templates/intervention/report/report.html:91 #: intervention/templates/intervention/report/report.html:91
@ -915,7 +915,7 @@ msgstr "Zuletzt bearbeitet"
#: compensation/templates/compensation/detail/compensation/view.html:99 #: compensation/templates/compensation/detail/compensation/view.html:99
#: compensation/templates/compensation/detail/eco_account/view.html:82 #: compensation/templates/compensation/detail/eco_account/view.html:82
#: ema/templates/ema/detail/view.html:69 intervention/forms/modalForms.py:52 #: ema/templates/ema/detail/view.html:76 intervention/forms/modalForms.py:52
#: intervention/templates/intervention/detail/view.html:116 #: intervention/templates/intervention/detail/view.html:116
msgid "Shared with" msgid "Shared with"
msgstr "Freigegeben für" msgstr "Freigegeben für"
@ -976,8 +976,8 @@ msgstr "Keine Flächenmenge für Abbuchungen eingegeben. Bitte bearbeiten."
#: compensation/templates/compensation/detail/eco_account/view.html:61 #: compensation/templates/compensation/detail/eco_account/view.html:61
#: compensation/templates/compensation/detail/eco_account/view.html:65 #: compensation/templates/compensation/detail/eco_account/view.html:65
#: compensation/templates/compensation/detail/eco_account/view.html:69 #: compensation/templates/compensation/detail/eco_account/view.html:69
#: ema/templates/ema/detail/view.html:41 ema/templates/ema/detail/view.html:45 #: ema/templates/ema/detail/view.html:48 ema/templates/ema/detail/view.html:52
#: ema/templates/ema/detail/view.html:49 #: ema/templates/ema/detail/view.html:56
#: intervention/templates/intervention/detail/view.html:30 #: intervention/templates/intervention/detail/view.html:30
#: intervention/templates/intervention/detail/view.html:34 #: intervention/templates/intervention/detail/view.html:34
#: intervention/templates/intervention/detail/view.html:38 #: intervention/templates/intervention/detail/view.html:38
@ -993,7 +993,7 @@ msgstr "fehlt"
#: compensation/templates/compensation/detail/eco_account/view.html:70 #: compensation/templates/compensation/detail/eco_account/view.html:70
#: compensation/templates/compensation/report/eco_account/report.html:24 #: compensation/templates/compensation/report/eco_account/report.html:24
#: ema/templates/ema/detail/view.html:50 #: ema/templates/ema/detail/view.html:57
#: ema/templates/ema/report/report.html:24 #: ema/templates/ema/report/report.html:24
msgid "Action handler" msgid "Action handler"
msgstr "Maßnahmenträger" msgstr "Maßnahmenträger"
@ -1005,17 +1005,17 @@ msgstr "Maßnahmenträger"
msgid "Report" msgid "Report"
msgstr "Bericht" msgstr "Bericht"
#: compensation/templates/compensation/report/compensation/report.html:42 #: compensation/templates/compensation/report/compensation/report.html:45
#: compensation/templates/compensation/report/eco_account/report.html:59 #: compensation/templates/compensation/report/eco_account/report.html:62
#: ema/templates/ema/report/report.html:46 #: ema/templates/ema/report/report.html:49
#: intervention/templates/intervention/report/report.html:105 #: intervention/templates/intervention/report/report.html:108
msgid "Open in browser" msgid "Open in browser"
msgstr "Im Browser öffnen" msgstr "Im Browser öffnen"
#: compensation/templates/compensation/report/compensation/report.html:46 #: compensation/templates/compensation/report/compensation/report.html:49
#: compensation/templates/compensation/report/eco_account/report.html:63 #: compensation/templates/compensation/report/eco_account/report.html:66
#: ema/templates/ema/report/report.html:50 #: ema/templates/ema/report/report.html:53
#: intervention/templates/intervention/report/report.html:109 #: intervention/templates/intervention/report/report.html:112
msgid "View in LANIS" msgid "View in LANIS"
msgstr "In LANIS öffnen" msgstr "In LANIS öffnen"
@ -1057,7 +1057,7 @@ msgid "Compensation {} edited"
msgstr "Kompensation {} bearbeitet" msgstr "Kompensation {} bearbeitet"
#: compensation/views/compensation.py:230 compensation/views/eco_account.py:309 #: compensation/views/compensation.py:230 compensation/views/eco_account.py:309
#: ema/views.py:181 intervention/views.py:477 #: ema/views.py:183 intervention/views.py:477
msgid "Log" msgid "Log"
msgstr "Log" msgstr "Log"
@ -1066,32 +1066,32 @@ msgid "Compensation removed"
msgstr "Kompensation entfernt" msgstr "Kompensation entfernt"
#: compensation/views/compensation.py:274 compensation/views/eco_account.py:461 #: compensation/views/compensation.py:274 compensation/views/eco_account.py:461
#: ema/views.py:348 intervention/views.py:129 #: ema/views.py:350 intervention/views.py:129
msgid "Document added" msgid "Document added"
msgstr "Dokument hinzugefügt" msgstr "Dokument hinzugefügt"
#: compensation/views/compensation.py:343 compensation/views/eco_account.py:355 #: compensation/views/compensation.py:343 compensation/views/eco_account.py:355
#: ema/views.py:286 #: ema/views.py:288
msgid "State added" msgid "State added"
msgstr "Zustand hinzugefügt" msgstr "Zustand hinzugefügt"
#: compensation/views/compensation.py:364 compensation/views/eco_account.py:376 #: compensation/views/compensation.py:364 compensation/views/eco_account.py:376
#: ema/views.py:307 #: ema/views.py:309
msgid "Action added" msgid "Action added"
msgstr "Maßnahme hinzugefügt" msgstr "Maßnahme hinzugefügt"
#: compensation/views/compensation.py:385 compensation/views/eco_account.py:441 #: compensation/views/compensation.py:385 compensation/views/eco_account.py:441
#: ema/views.py:328 #: ema/views.py:330
msgid "Deadline added" msgid "Deadline added"
msgstr "Frist/Termin hinzugefügt" msgstr "Frist/Termin hinzugefügt"
#: compensation/views/compensation.py:407 compensation/views/eco_account.py:398 #: compensation/views/compensation.py:407 compensation/views/eco_account.py:398
#: ema/views.py:418 #: ema/views.py:420
msgid "State removed" msgid "State removed"
msgstr "Zustand gelöscht" msgstr "Zustand gelöscht"
#: compensation/views/compensation.py:429 compensation/views/eco_account.py:420 #: compensation/views/compensation.py:429 compensation/views/eco_account.py:420
#: ema/views.py:440 #: ema/views.py:442
msgid "Action removed" msgid "Action removed"
msgstr "Maßnahme entfernt" msgstr "Maßnahme entfernt"
@ -1111,12 +1111,12 @@ msgstr "Ökokonto entfernt"
msgid "Deduction removed" msgid "Deduction removed"
msgstr "Abbuchung entfernt" msgstr "Abbuchung entfernt"
#: compensation/views/eco_account.py:330 ema/views.py:261 #: compensation/views/eco_account.py:330 ema/views.py:263
#: intervention/views.py:519 #: intervention/views.py:519
msgid "{} unrecorded" msgid "{} unrecorded"
msgstr "{} entzeichnet" msgstr "{} entzeichnet"
#: compensation/views/eco_account.py:330 ema/views.py:261 #: compensation/views/eco_account.py:330 ema/views.py:263
#: intervention/views.py:519 #: intervention/views.py:519
msgid "{} recorded" msgid "{} recorded"
msgstr "{} verzeichnet" msgstr "{} verzeichnet"
@ -1125,22 +1125,22 @@ msgstr "{} verzeichnet"
msgid "Deduction added" msgid "Deduction added"
msgstr "Abbuchung hinzugefügt" msgstr "Abbuchung hinzugefügt"
#: compensation/views/eco_account.py:614 ema/views.py:516 #: compensation/views/eco_account.py:616 ema/views.py:520
#: intervention/views.py:375 #: intervention/views.py:375
msgid "{} has already been shared with you" msgid "{} has already been shared with you"
msgstr "{} wurde bereits für Sie freigegeben" msgstr "{} wurde bereits für Sie freigegeben"
#: compensation/views/eco_account.py:619 ema/views.py:521 #: compensation/views/eco_account.py:621 ema/views.py:525
#: intervention/views.py:380 #: intervention/views.py:380
msgid "{} has been shared with you" msgid "{} has been shared with you"
msgstr "{} ist nun für Sie freigegeben" msgstr "{} ist nun für Sie freigegeben"
#: compensation/views/eco_account.py:626 ema/views.py:528 #: compensation/views/eco_account.py:628 ema/views.py:532
#: intervention/views.py:387 #: intervention/views.py:387
msgid "Share link invalid" msgid "Share link invalid"
msgstr "Freigabelink ungültig" msgstr "Freigabelink ungültig"
#: compensation/views/eco_account.py:649 ema/views.py:551 #: compensation/views/eco_account.py:651 ema/views.py:555
#: intervention/views.py:410 #: intervention/views.py:410
msgid "Share settings updated" msgid "Share settings updated"
msgstr "Freigabe Einstellungen aktualisiert" msgstr "Freigabe Einstellungen aktualisiert"
@ -1177,7 +1177,7 @@ msgstr ""
msgid "EMA" msgid "EMA"
msgstr "" msgstr ""
#: ema/templates/ema/detail/view.html:12 #: ema/templates/ema/detail/view.html:19
msgid "Payment funded compensation" msgid "Payment funded compensation"
msgstr "Ersatzzahlungsmaßnahme" msgstr "Ersatzzahlungsmaßnahme"
@ -1185,11 +1185,11 @@ msgstr "Ersatzzahlungsmaßnahme"
msgid "EMA {} added" msgid "EMA {} added"
msgstr "EMA {} hinzugefügt" msgstr "EMA {} hinzugefügt"
#: ema/views.py:210 #: ema/views.py:212
msgid "EMA {} edited" msgid "EMA {} edited"
msgstr "EMA {} bearbeitet" msgstr "EMA {} bearbeitet"
#: ema/views.py:242 #: ema/views.py:244
msgid "EMA removed" msgid "EMA removed"
msgstr "EMA entfernt" msgstr "EMA entfernt"
@ -1333,7 +1333,7 @@ msgstr "Kompensationen und Zahlungen geprüft"
msgid "Run check" msgid "Run check"
msgstr "Prüfung vornehmen" msgstr "Prüfung vornehmen"
#: intervention/forms/modalForms.py:196 konova/forms.py:454 #: intervention/forms/modalForms.py:196 konova/forms.py:457
msgid "" msgid ""
"I, {} {}, confirm that all necessary control steps have been performed by " "I, {} {}, confirm that all necessary control steps have been performed by "
"myself." "myself."
@ -1517,81 +1517,81 @@ msgstr ""
"somit nichts eingeben, bearbeiten oder sonstige Aktionen ausführen. " "somit nichts eingeben, bearbeiten oder sonstige Aktionen ausführen. "
"Kontaktieren Sie bitte einen Administrator. +++" "Kontaktieren Sie bitte einen Administrator. +++"
#: konova/forms.py:36 templates/form/collapsable/form.html:62 #: konova/forms.py:37 templates/form/collapsable/form.html:62
msgid "Save" msgid "Save"
msgstr "Speichern" msgstr "Speichern"
#: konova/forms.py:68 #: konova/forms.py:69
msgid "Not editable" msgid "Not editable"
msgstr "Nicht editierbar" msgstr "Nicht editierbar"
#: konova/forms.py:138 konova/forms.py:308 #: konova/forms.py:139 konova/forms.py:311
msgid "Confirm" msgid "Confirm"
msgstr "Bestätige" msgstr "Bestätige"
#: konova/forms.py:150 konova/forms.py:317 #: konova/forms.py:151 konova/forms.py:320
msgid "Remove" msgid "Remove"
msgstr "Löschen" msgstr "Löschen"
#: konova/forms.py:152 #: konova/forms.py:153
msgid "You are about to remove {} {}" msgid "You are about to remove {} {}"
msgstr "Sie sind dabei {} {} zu löschen" msgstr "Sie sind dabei {} {} zu löschen"
#: konova/forms.py:239 konova/utils/quality.py:44 konova/utils/quality.py:46 #: konova/forms.py:240 konova/utils/quality.py:44 konova/utils/quality.py:46
#: templates/form/collapsable/form.html:45 #: templates/form/collapsable/form.html:45
msgid "Geometry" msgid "Geometry"
msgstr "Geometrie" msgstr "Geometrie"
#: konova/forms.py:318 #: konova/forms.py:321
msgid "Are you sure?" msgid "Are you sure?"
msgstr "Sind Sie sicher?" msgstr "Sind Sie sicher?"
#: konova/forms.py:345 #: konova/forms.py:348
msgid "Created on" msgid "Created on"
msgstr "Erstellt" msgstr "Erstellt"
#: konova/forms.py:347 #: konova/forms.py:350
msgid "When has this file been created? Important for photos." msgid "When has this file been created? Important for photos."
msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?" msgstr "Wann wurde diese Datei erstellt oder das Foto aufgenommen?"
#: konova/forms.py:358 #: konova/forms.py:361
#: venv/lib/python3.7/site-packages/django/db/models/fields/files.py:231 #: venv/lib/python3.7/site-packages/django/db/models/fields/files.py:231
msgid "File" msgid "File"
msgstr "Datei" msgstr "Datei"
#: konova/forms.py:360 #: konova/forms.py:363
msgid "Allowed formats: pdf, jpg, png. Max size 15 MB." msgid "Allowed formats: pdf, jpg, png. Max size 15 MB."
msgstr "Formate: pdf, jpg, png. Maximal 15 MB." msgstr "Formate: pdf, jpg, png. Maximal 15 MB."
#: konova/forms.py:406 #: konova/forms.py:409
msgid "Unsupported file type" msgid "Unsupported file type"
msgstr "Dateiformat nicht unterstützt" msgstr "Dateiformat nicht unterstützt"
#: konova/forms.py:413 #: konova/forms.py:416
msgid "File too large" msgid "File too large"
msgstr "Datei zu groß" msgstr "Datei zu groß"
#: konova/forms.py:422 #: konova/forms.py:425
msgid "Added document" msgid "Added document"
msgstr "Dokument hinzugefügt" msgstr "Dokument hinzugefügt"
#: konova/forms.py:445 #: konova/forms.py:448
msgid "Confirm record" msgid "Confirm record"
msgstr "Verzeichnen bestätigen" msgstr "Verzeichnen bestätigen"
#: konova/forms.py:453 #: konova/forms.py:456
msgid "Record data" msgid "Record data"
msgstr "Daten verzeichnen" msgstr "Daten verzeichnen"
#: konova/forms.py:460 #: konova/forms.py:463
msgid "Confirm unrecord" msgid "Confirm unrecord"
msgstr "Entzeichnen bestätigen" msgstr "Entzeichnen bestätigen"
#: konova/forms.py:461 #: konova/forms.py:464
msgid "Unrecord data" msgid "Unrecord data"
msgstr "Daten entzeichnen" msgstr "Daten entzeichnen"
#: konova/forms.py:462 #: konova/forms.py:465
msgid "I, {} {}, confirm that this data must be unrecorded." msgid "I, {} {}, confirm that this data must be unrecorded."
msgstr "" msgstr ""
"Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen." "Ich, {} {}, bestätige, dass diese Daten wieder entzeichnet werden müssen."
@ -1667,23 +1667,35 @@ msgstr "Abbuchen"
msgid "Spatial reference" msgid "Spatial reference"
msgstr "Raumreferenz" msgstr "Raumreferenz"
#: konova/templates/konova/includes/parcels.html:9 #: konova/templates/konova/includes/parcels.html:8
msgid ""
"\n"
" If the geometry is not empty, the parcels are currently "
"recalculated. Please refresh this page in a few moments.\n"
" "
msgstr ""
"\n"
"Falls die Geometrie nicht leer ist, werden die Flurstücke aktuell berechnet. "
"Bitte laden Sie diese Seite in ein paar Augenblicken erneut... \n"
" "
#: konova/templates/konova/includes/parcels.html:16
msgid "Kreis" msgid "Kreis"
msgstr "Kreis" msgstr "Kreis"
#: konova/templates/konova/includes/parcels.html:10 #: konova/templates/konova/includes/parcels.html:17
msgid "Gemarkung" msgid "Gemarkung"
msgstr "Gemarkung" msgstr "Gemarkung"
#: konova/templates/konova/includes/parcels.html:11 #: konova/templates/konova/includes/parcels.html:18
msgid "Parcel" msgid "Parcel"
msgstr "Flur" msgstr "Flur"
#: konova/templates/konova/includes/parcels.html:12 #: konova/templates/konova/includes/parcels.html:19
msgid "Parcel counter" msgid "Parcel counter"
msgstr "Flurstückzähler" msgstr "Flurstückzähler"
#: konova/templates/konova/includes/parcels.html:13 #: konova/templates/konova/includes/parcels.html:20
msgid "Parcel number" msgid "Parcel number"
msgstr "Flurstücknenner" msgstr "Flurstücknenner"
@ -1769,15 +1781,15 @@ msgstr "Maßnahme hinzufügen"
msgid "Geometry conflict detected with {}" msgid "Geometry conflict detected with {}"
msgstr "Geometriekonflikt mit folgenden Einträgen erkannt: {}" msgstr "Geometriekonflikt mit folgenden Einträgen erkannt: {}"
#: konova/utils/messenger.py:69 #: konova/utils/messenger.py:70
msgid "{} checked" msgid "{} checked"
msgstr "{} geprüft" msgstr "{} geprüft"
#: konova/utils/messenger.py:71 #: konova/utils/messenger.py:72
msgid "<a href=\"{}\">Check it out</a>" msgid "<a href=\"{}\">Check it out</a>"
msgstr "<a href=\"{}\">Schauen Sie rein</a>" msgstr "<a href=\"{}\">Schauen Sie rein</a>"
#: konova/utils/messenger.py:72 #: konova/utils/messenger.py:73
msgid "{} has been checked successfully by user {}! {}" msgid "{} has been checked successfully by user {}! {}"
msgstr "{} wurde erfolgreich vom Nutzer {} geprüft! {}" msgstr "{} wurde erfolgreich vom Nutzer {} geprüft! {}"
@ -2051,6 +2063,315 @@ msgstr "Benachrichtigungen bearbeitet"
msgid "close" msgid "close"
msgstr "Schließen" msgstr "Schließen"
#: venv/lib/python3.7/site-packages/click/_termui_impl.py:496
#, python-brace-format
msgid "{editor}: Editing failed"
msgstr ""
#: venv/lib/python3.7/site-packages/click/_termui_impl.py:500
#, python-brace-format
msgid "{editor}: Editing failed: {e}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/_unicodefun.py:20
msgid ""
"Click will abort further execution because Python was configured to use "
"ASCII as encoding for the environment. Consult https://click.palletsprojects."
"com/unicode-support/ for mitigation steps."
msgstr ""
#: venv/lib/python3.7/site-packages/click/_unicodefun.py:56
msgid ""
"Additional information: on this system no suitable UTF-8 locales were "
"discovered. This most likely requires resolving by reconfiguring the locale "
"system."
msgstr ""
#: venv/lib/python3.7/site-packages/click/_unicodefun.py:65
msgid ""
"This system supports the C.UTF-8 locale which is recommended. You might be "
"able to resolve your issue by exporting the following environment variables:"
msgstr ""
#: venv/lib/python3.7/site-packages/click/_unicodefun.py:75
#, python-brace-format
msgid ""
"This system lists some UTF-8 supporting locales that you can pick from. The "
"following suitable locales were discovered: {locales}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/_unicodefun.py:93
msgid ""
"Click discovered that you exported a UTF-8 locale but the locale system "
"could not pick up from it because it does not exist. The exported locale is "
"{locale!r} but it is not supported."
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:1095
msgid "Aborted!"
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:1279
#: venv/lib/python3.7/site-packages/click/decorators.py:434
msgid "Show this message and exit."
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:1308
#: venv/lib/python3.7/site-packages/click/core.py:1334
#, python-brace-format
msgid "(Deprecated) {text}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:1351
msgid "Options"
msgstr "Optionen"
#: venv/lib/python3.7/site-packages/click/core.py:1375
#, python-brace-format
msgid "Got unexpected extra argument ({args})"
msgid_plural "Got unexpected extra arguments ({args})"
msgstr[0] ""
msgstr[1] ""
#: venv/lib/python3.7/site-packages/click/core.py:1390
msgid "DeprecationWarning: The command {name!r} is deprecated."
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:1607
msgid "Commands"
msgstr "Befehle"
#: venv/lib/python3.7/site-packages/click/core.py:1639
msgid "Missing command."
msgstr "Befehl fehlt"
#: venv/lib/python3.7/site-packages/click/core.py:1717
msgid "No such command {name!r}."
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:2258
msgid "Value must be an iterable."
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:2278
#, python-brace-format
msgid "Takes {nargs} values but 1 was given."
msgid_plural "Takes {nargs} values but {len} were given."
msgstr[0] ""
msgstr[1] ""
#: venv/lib/python3.7/site-packages/click/core.py:2701
#, python-brace-format
msgid "env var: {var}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:2724
msgid "(dynamic)"
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:2735
#, python-brace-format
msgid "default: {default}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/core.py:2748
msgid "required"
msgstr ""
#: venv/lib/python3.7/site-packages/click/decorators.py:339
#, python-format
msgid "%(prog)s, version %(version)s"
msgstr ""
#: venv/lib/python3.7/site-packages/click/decorators.py:403
msgid "Show the version and exit."
msgstr ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:43
#: venv/lib/python3.7/site-packages/click/exceptions.py:79
#, python-brace-format
msgid "Error: {message}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:71
#, python-brace-format
msgid "Try '{command} {option}' for help."
msgstr ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:120
#, python-brace-format
msgid "Invalid value: {message}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:122
#, python-brace-format
msgid "Invalid value for {param_hint}: {message}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:178
msgid "Missing argument"
msgstr "Argument fehlt"
#: venv/lib/python3.7/site-packages/click/exceptions.py:180
msgid "Missing option"
msgstr "Option fehlt"
#: venv/lib/python3.7/site-packages/click/exceptions.py:182
msgid "Missing parameter"
msgstr "Parameter fehlt"
#: venv/lib/python3.7/site-packages/click/exceptions.py:184
#, python-brace-format
msgid "Missing {param_type}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:191
#, python-brace-format
msgid "Missing parameter: {param_name}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:211
#, python-brace-format
msgid "No such option: {name}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:223
#, python-brace-format
msgid "Did you mean {possibility}?"
msgid_plural "(Possible options: {possibilities})"
msgstr[0] ""
msgstr[1] ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:261
msgid "unknown error"
msgstr ""
#: venv/lib/python3.7/site-packages/click/exceptions.py:268
msgid "Could not open file {filename!r}: {message}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/parser.py:231
msgid "Argument {name!r} takes {nargs} values."
msgstr ""
#: venv/lib/python3.7/site-packages/click/parser.py:413
msgid "Option {name!r} does not take a value."
msgstr ""
#: venv/lib/python3.7/site-packages/click/parser.py:474
msgid "Option {name!r} requires an argument."
msgid_plural "Option {name!r} requires {nargs} arguments."
msgstr[0] ""
msgstr[1] ""
#: venv/lib/python3.7/site-packages/click/shell_completion.py:316
msgid "Shell completion is not supported for Bash versions older than 4.4."
msgstr ""
#: venv/lib/python3.7/site-packages/click/shell_completion.py:322
msgid "Couldn't detect Bash version, shell completion is not supported."
msgstr ""
#: venv/lib/python3.7/site-packages/click/termui.py:161
msgid "Repeat for confirmation"
msgstr ""
#: venv/lib/python3.7/site-packages/click/termui.py:178
msgid "Error: The value you entered was invalid."
msgstr ""
#: venv/lib/python3.7/site-packages/click/termui.py:180
#, python-brace-format
msgid "Error: {e.message}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/termui.py:191
msgid "Error: The two entered values do not match."
msgstr ""
#: venv/lib/python3.7/site-packages/click/termui.py:247
msgid "Error: invalid input"
msgstr ""
#: venv/lib/python3.7/site-packages/click/termui.py:798
msgid "Press any key to continue..."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:258
#, python-brace-format
msgid ""
"Choose from:\n"
"\t{choices}"
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:290
msgid "{value!r} is not {choice}."
msgid_plural "{value!r} is not one of {choices}."
msgstr[0] ""
msgstr[1] ""
#: venv/lib/python3.7/site-packages/click/types.py:380
msgid "{value!r} does not match the format {format}."
msgid_plural "{value!r} does not match the formats {formats}."
msgstr[0] ""
msgstr[1] ""
#: venv/lib/python3.7/site-packages/click/types.py:402
msgid "{value!r} is not a valid {number_type}."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:458
#, python-brace-format
msgid "{value} is not in the range {range}."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:599
msgid "{value!r} is not a valid boolean."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:623
msgid "{value!r} is not a valid UUID."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:801
msgid "file"
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:803
msgid "directory"
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:805
msgid "path"
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:851
msgid "{name} {filename!r} does not exist."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:860
msgid "{name} {filename!r} is a file."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:868
msgid "{name} {filename!r} is a directory."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:876
msgid "{name} {filename!r} is not writable."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:884
msgid "{name} {filename!r} is not readable."
msgstr ""
#: venv/lib/python3.7/site-packages/click/types.py:951
#, python-brace-format
msgid "{len_type} values are required, but {len_value} was given."
msgid_plural "{len_type} values are required, but {len_value} were given."
msgstr[0] ""
msgstr[1] ""
#: venv/lib/python3.7/site-packages/django/contrib/messages/apps.py:7 #: venv/lib/python3.7/site-packages/django/contrib/messages/apps.py:7
msgid "Messages" msgid "Messages"
msgstr "Nachrichten" msgstr "Nachrichten"
@ -3224,6 +3545,21 @@ msgstr ""
msgid "A fontawesome icon field" msgid "A fontawesome icon field"
msgstr "" msgstr ""
#: venv/lib/python3.7/site-packages/kombu/transport/qpid.py:1310
#, python-format
msgid "Attempting to connect to qpid with SASL mechanism %s"
msgstr ""
#: venv/lib/python3.7/site-packages/kombu/transport/qpid.py:1315
#, python-format
msgid "Connected to qpid with SASL mechanism %s"
msgstr ""
#: venv/lib/python3.7/site-packages/kombu/transport/qpid.py:1333
#, python-format
msgid "Unable to connect to qpid with SASL mechanism %s"
msgstr ""
#~ msgid "No file given!" #~ msgid "No file given!"
#~ msgstr "Keine Datei angegeben!" #~ msgstr "Keine Datei angegeben!"

View File

@ -1,7 +1,16 @@
amqp==5.0.9
asgiref==3.3.1 asgiref==3.3.1
beautifulsoup4==4.9.3 beautifulsoup4==4.9.3
billiard==3.6.4.0
cached-property==1.5.2
celery==5.2.3
certifi==2020.11.8 certifi==2020.11.8
chardet==3.0.4 chardet==3.0.4
click==8.0.3
click-didyoumean==0.3.0
click-plugins==1.1.1
click-repl==0.2.0
Deprecated==1.2.13
Django==3.1.3 Django==3.1.3
django-autocomplete-light==3.8.2 django-autocomplete-light==3.8.2
django-bootstrap-modal-forms==2.2.0 django-bootstrap-modal-forms==2.2.0
@ -15,19 +24,27 @@ et-xmlfile==1.1.0
idna==2.10 idna==2.10
importlib-metadata==2.1.1 importlib-metadata==2.1.1
itsdangerous==0.24 itsdangerous==0.24
kombu==5.2.3
openpyxl==3.0.9 openpyxl==3.0.9
OWSLib==0.25.0 OWSLib==0.25.0
packaging==21.3
prompt-toolkit==3.0.24
psycopg2-binary==2.9.1 psycopg2-binary==2.9.1
pyparsing==3.0.6
pyproj==3.2.1 pyproj==3.2.1
python-dateutil==2.8.2 python-dateutil==2.8.2
pytz==2020.4 pytz==2021.3
PyYAML==6.0 PyYAML==6.0
qrcode==7.3.1 qrcode==7.3.1
redis==4.1.0
requests==2.25.0 requests==2.25.0
six==1.15.0 six==1.15.0
soupsieve==2.2.1 soupsieve==2.2.1
sqlparse==0.4.1 sqlparse==0.4.1
urllib3==1.26.2 urllib3==1.26.2
vine==5.0.0
wcwidth==0.2.5
webservices==0.7 webservices==0.7
wrapt==1.13.3
xmltodict==0.12.0 xmltodict==0.12.0
zipp==3.4.1 zipp==3.4.1