Share intervention settings
* extends share link form to share settings form * adds list of users with access to the intervention * adds logic for removing these users * enhances translations
This commit is contained in:
parent
394ce15c3f
commit
221f7dfb79
@ -238,6 +238,7 @@ class ShareInterventionForm(BaseModalForm):
|
|||||||
url = forms.CharField(
|
url = forms.CharField(
|
||||||
label=_("Share link"),
|
label=_("Share link"),
|
||||||
label_suffix="",
|
label_suffix="",
|
||||||
|
help_text=_("Send this link to users who you want to have writing access on the data"),
|
||||||
required=False,
|
required=False,
|
||||||
widget=TextToClipboardInput(
|
widget=TextToClipboardInput(
|
||||||
attrs={
|
attrs={
|
||||||
@ -245,18 +246,38 @@ class ShareInterventionForm(BaseModalForm):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
users = forms.MultipleChoiceField(
|
||||||
|
label=_("Shared with"),
|
||||||
|
label_suffix="",
|
||||||
|
required=True,
|
||||||
|
help_text=_("Remove check to remove access for this user"),
|
||||||
|
widget=forms.CheckboxSelectMultiple(
|
||||||
|
attrs={
|
||||||
|
"class": "list-unstyled",
|
||||||
|
}
|
||||||
|
),
|
||||||
|
choices=[]
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.form_title = _("Share")
|
self.form_title = _("Share")
|
||||||
self.form_caption = _("Send this link to users who you want to have writing access on the data.")
|
self.form_caption = _("Share settings for {}").format(self.instance.identifier)
|
||||||
self.template = "modal/modal_form.html"
|
self.template = "modal/modal_form.html"
|
||||||
self.render_submit = False
|
|
||||||
|
|
||||||
# Make sure an access_token is set
|
# Make sure an access_token is set
|
||||||
if self.instance.access_token is None:
|
if self.instance.access_token is None:
|
||||||
self.instance.generate_access_token()
|
self.instance.generate_access_token()
|
||||||
|
|
||||||
|
self._init_fields()
|
||||||
|
|
||||||
|
def _init_fields(self):
|
||||||
|
""" Wraps initializing of fields
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
|
"""
|
||||||
|
# Initialize share_link field
|
||||||
self.share_link = self.request.build_absolute_uri(
|
self.share_link = self.request.build_absolute_uri(
|
||||||
reverse("intervention:share", args=(self.instance.id, self.instance.access_token,))
|
reverse("intervention:share", args=(self.instance.id, self.instance.access_token,))
|
||||||
)
|
)
|
||||||
@ -264,3 +285,23 @@ class ShareInterventionForm(BaseModalForm):
|
|||||||
"url",
|
"url",
|
||||||
self.share_link
|
self.share_link
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Initialize users field
|
||||||
|
users = self.instance.users.all()
|
||||||
|
choices = []
|
||||||
|
for n in users:
|
||||||
|
choices.append(
|
||||||
|
(n.id, n.username)
|
||||||
|
)
|
||||||
|
self.fields["users"].choices = choices
|
||||||
|
u_ids = list(users.values_list("id", flat=True))
|
||||||
|
self.initialize_form_field(
|
||||||
|
"users",
|
||||||
|
u_ids
|
||||||
|
)
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
accessing_users = User.objects.filter(
|
||||||
|
id__in=self.cleaned_data["users"]
|
||||||
|
)
|
||||||
|
self.instance.users.set(accessing_users)
|
||||||
|
@ -254,12 +254,21 @@ def create_share_view(request: HttpRequest, id: str):
|
|||||||
user = request.user
|
user = request.user
|
||||||
intervention = get_object_or_404(Intervention, id=id)
|
intervention = get_object_or_404(Intervention, id=id)
|
||||||
form = ShareInterventionForm(request.POST or None, instance=intervention, request=request)
|
form = ShareInterventionForm(request.POST or None, instance=intervention, request=request)
|
||||||
if request.method != "GET":
|
if request.method == "POST":
|
||||||
|
if form.is_valid():
|
||||||
|
form.save()
|
||||||
|
messages.info(
|
||||||
|
request,
|
||||||
|
_("Share settings updated")
|
||||||
|
)
|
||||||
|
return redirect(request.META.get("HTTP_REFERER", "home"))
|
||||||
|
elif request.method == "GET":
|
||||||
|
context = {
|
||||||
|
"form": form,
|
||||||
|
}
|
||||||
|
context = BaseContext(request, context).context
|
||||||
|
return render(request, form.template, context)
|
||||||
|
else:
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
context = {
|
|
||||||
"form": form,
|
|
||||||
}
|
|
||||||
context = BaseContext(request, context).context
|
|
||||||
return render(request, form.template, context)
|
|
||||||
|
|
||||||
|
|
||||||
|
Binary file not shown.
@ -13,7 +13,7 @@ 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: 2021-07-30 14:26+0200\n"
|
"POT-Creation-Date: 2021-07-30 15:00+0200\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"
|
||||||
@ -251,16 +251,27 @@ msgstr "Eingriff bearbeiten"
|
|||||||
msgid "Share link"
|
msgid "Share link"
|
||||||
msgstr "Freigabelink"
|
msgstr "Freigabelink"
|
||||||
|
|
||||||
#: intervention/forms.py:251
|
#: intervention/forms.py:241
|
||||||
|
msgid "Send this link to users who you want to have writing access on the data"
|
||||||
|
msgstr ""
|
||||||
|
"Andere Nutzer erhalten über diesen Link Zugriff auf die Daten"
|
||||||
|
|
||||||
|
#: intervention/forms.py:250
|
||||||
|
msgid "Shared with"
|
||||||
|
msgstr "Freigegeben für"
|
||||||
|
|
||||||
|
#: intervention/forms.py:253
|
||||||
|
msgid "Remove check to remove access for this user"
|
||||||
|
msgstr "Wählen Sie die Nutzer ab, die keinen Zugriff mehr haben sollen"
|
||||||
|
|
||||||
|
#: intervention/forms.py:264
|
||||||
#: intervention/templates/intervention/detail/view.html:27
|
#: intervention/templates/intervention/detail/view.html:27
|
||||||
msgid "Share"
|
msgid "Share"
|
||||||
msgstr "Freigabe"
|
msgstr "Freigabe"
|
||||||
|
|
||||||
#: intervention/forms.py:252
|
#: intervention/forms.py:265
|
||||||
msgid ""
|
msgid "Share settings for {}"
|
||||||
"Send this link to users who you want to have writing access on the data."
|
msgstr "Freigabe Einstellungen für {}"
|
||||||
msgstr ""
|
|
||||||
"Senden Sie diesen Link an andere KSP Nutzer, damit sie Schreibrechte auf diese Daten erhalten."
|
|
||||||
|
|
||||||
#: intervention/tables.py:70
|
#: intervention/tables.py:70
|
||||||
msgid "Interventions"
|
msgid "Interventions"
|
||||||
@ -390,14 +401,6 @@ msgstr "Zuletzt bearbeitet"
|
|||||||
msgid "No geometry added, yet."
|
msgid "No geometry added, yet."
|
||||||
msgstr "Keine Geometrie vorhanden"
|
msgstr "Keine Geometrie vorhanden"
|
||||||
|
|
||||||
#: intervention/templates/intervention/text-to-clipboard-input.html:6
|
|
||||||
msgid "Copy to clipboard"
|
|
||||||
msgstr "In Zwischenablage kopieren"
|
|
||||||
|
|
||||||
#: intervention/templates/intervention/text-to-clipboard-input.html:16
|
|
||||||
msgid "Copied to clipboard"
|
|
||||||
msgstr "In Zwischenablage kopiert"
|
|
||||||
|
|
||||||
#: intervention/views.py:62
|
#: intervention/views.py:62
|
||||||
msgid "Intervention {} added"
|
msgid "Intervention {} added"
|
||||||
msgstr "Eingriff {} hinzugefügt"
|
msgstr "Eingriff {} hinzugefügt"
|
||||||
@ -436,6 +439,10 @@ msgstr "{} ist nun für Sie freigegeben"
|
|||||||
msgid "Share link invalid"
|
msgid "Share link invalid"
|
||||||
msgstr "Freigabelink ungültig"
|
msgstr "Freigabelink ungültig"
|
||||||
|
|
||||||
|
#: intervention/views.py:262
|
||||||
|
msgid "Share settings updated"
|
||||||
|
msgstr "Freigabe Einstellungen aktualisiert"
|
||||||
|
|
||||||
#: konova/decorators.py:29
|
#: konova/decorators.py:29
|
||||||
msgid "You need to be staff to perform this action!"
|
msgid "You need to be staff to perform this action!"
|
||||||
msgstr "Hierfür müssen Sie Mitarbeiter sein!"
|
msgstr "Hierfür müssen Sie Mitarbeiter sein!"
|
||||||
@ -509,6 +516,14 @@ msgstr "Wenn meine freigegebenen Daten gelöscht wurden"
|
|||||||
msgid "On registered data edited"
|
msgid "On registered data edited"
|
||||||
msgstr "Wenn meine freigegebenen Daten bearbeitet wurden"
|
msgstr "Wenn meine freigegebenen Daten bearbeitet wurden"
|
||||||
|
|
||||||
|
#: konova/templates/konova/custom_widgets/text-to-clipboard-input.html:6
|
||||||
|
msgid "Copy to clipboard"
|
||||||
|
msgstr "In Zwischenablage kopieren"
|
||||||
|
|
||||||
|
#: konova/templates/konova/custom_widgets/text-to-clipboard-input.html:16
|
||||||
|
msgid "Copied to clipboard"
|
||||||
|
msgstr "In Zwischenablage kopiert"
|
||||||
|
|
||||||
#: konova/templates/konova/home.html:23 konova/templates/konova/home.html:61
|
#: konova/templates/konova/home.html:23 konova/templates/konova/home.html:61
|
||||||
#: konova/templates/konova/home.html:100
|
#: konova/templates/konova/home.html:100
|
||||||
msgid "Total"
|
msgid "Total"
|
||||||
|
Loading…
Reference in New Issue
Block a user