diff --git a/rdmo/accounts/admin.py b/rdmo/accounts/admin.py index 9c4fea9afe..1cfede8540 100644 --- a/rdmo/accounts/admin.py +++ b/rdmo/accounts/admin.py @@ -28,7 +28,7 @@ class RoleAdmin(admin.ModelAdmin): search_fields = ('user__username', 'user__email') list_filter = ('member', 'manager', 'editor', 'reviewer') - list_display = ('user', 'members', 'managers', 'editors', 'reviewers') + list_display = ('user', 'email', 'members', 'managers', 'editors', 'reviewers') def get_queryset(self, request): return Role.objects.prefetch_related( @@ -43,6 +43,9 @@ def render_all_sites_or_join(obj, field_name: str) -> str: return 'all Sites' return ', '.join([site.domain for site in getattr(obj, field_name).all()]) + def email(self, obj): + return obj.user.email + def members(self, obj): return self.render_all_sites_or_join(obj, 'member') diff --git a/rdmo/core/templates/core/upload_form.html b/rdmo/core/templates/core/upload_form.html index 4c7b89b458..c686739e8b 100644 --- a/rdmo/core/templates/core/upload_form.html +++ b/rdmo/core/templates/core/upload_form.html @@ -9,7 +9,7 @@
- +

{% trans "Select file" %}

diff --git a/rdmo/locale/de/LC_MESSAGES/django.mo b/rdmo/locale/de/LC_MESSAGES/django.mo index 9fdc03bb45..f9caf3b61c 100644 Binary files a/rdmo/locale/de/LC_MESSAGES/django.mo and b/rdmo/locale/de/LC_MESSAGES/django.mo differ diff --git a/rdmo/locale/de/LC_MESSAGES/django.po b/rdmo/locale/de/LC_MESSAGES/django.po index 85a56ab896..91221f83b1 100644 --- a/rdmo/locale/de/LC_MESSAGES/django.po +++ b/rdmo/locale/de/LC_MESSAGES/django.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: RDMO\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-09-22 12:31+0200\n" -"PO-Revision-Date: 2023-09-22 12:31+0200\n" +"PO-Revision-Date: 2023-10-16 13:11+0200\n" "Last-Translator: Jochen Klar \n" "Language-Team: RDMO \n" "Language: de\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 2.4.2\n" #: accounts/apps.py:7 msgid "Accounts" @@ -359,11 +359,11 @@ msgstr "Bestätigen" #: accounts/templates/account/email_confirm.html:29 #, python-format msgid "" -"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." +"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" -"Dieser Bestätigungs-Link ist abgelaufen oder ungültig. Bitte fordern sie eine neue Betätigungs-E-Mail an." +"Dieser Bestätigungs-Link ist abgelaufen oder ungültig. Bitte fordern sie eine neue Betätigungs-E-Mail an." #: accounts/templates/account/login.html:6 #: accounts/templates/account/login_form.html:23 @@ -380,17 +380,17 @@ msgstr "Mit Shibboleth einloggen" #: accounts/templates/account/login_form_account.html:7 #, python-format msgid "" -"If you have not created an account yet, then please sign up first." +"If you have not created an account yet, then please sign up first." msgstr "" -"Falls Sie noch kein Benutzerkonto haben, registrieren Sie sich bitte zunächst." +"Falls Sie noch kein Benutzerkonto haben, registrieren Sie sich bitte zunächst." #: accounts/templates/account/login_form_account.html:14 #, python-format msgid "" -"If you forgot your password and want to reset it, click here." +"If you forgot your password and want to reset it, click here." msgstr "" "Falls Sie Ihr Passwort vergessen haben und es zurücksetzen wollen, klicken " "Sie bitte hier." @@ -520,8 +520,8 @@ msgstr "Neues Benutzerkonto erstellen" msgid "" "Already have an account? Then please sign in." msgstr "" -"Falls Sie schon eine Benutzerkonto haben können Sie sich hier anmelden." +"Falls Sie schon eine Benutzerkonto haben können Sie sich hier anmelden." #: accounts/templates/account/signup.html:34 #: accounts/templates/socialaccount/signup.html:33 @@ -601,8 +601,8 @@ msgid "" "Note: you can still change your e-" "mail address." msgstr "" -"Hinweis: Sie können immer noch Ihre E-Mail Adresse ändern." +"Hinweis: Sie können immer noch Ihre E-Mail Adresse ändern." #: accounts/templates/profile/profile_remove_closed.html:6 #: accounts/templates/profile/profile_remove_failed.html:6 @@ -728,12 +728,12 @@ msgstr "Anmeldung abgebrochen" #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " -"accounts. If this was a mistake, please proceed to sign in." +"accounts. If this was a mistake, please proceed to sign in." msgstr "" "Sie haben sich entschieden, die Anmeldung mit einem externen Konto " -"abzubrechen. Falls dies versehentlich geschehen ist, könne Sie hier fortsetzen." +"abzubrechen. Falls dies versehentlich geschehen ist, könne Sie hier fortsetzen." #: accounts/templates/socialaccount/signup.html:9 #, python-format @@ -2337,11 +2337,11 @@ msgstr "Sehr geehrte Damen und Herren," #: projects/templates/projects/issue_send_message.txt:3 #, python-format msgid "" -"The following task was identified in the project \"%(project_title)s\" " -"<%(project_url)s>:" +"The following task was identified in the project \"%(project_title)s\" <" +"%(project_url)s>:" msgstr "" -"Die folgende Aufgabe wurde im Projekt \"%(project_title)s\" " -"<%(project_url)s> identifiziert:" +"Die folgende Aufgabe wurde im Projekt \"%(project_title)s\" <" +"%(project_url)s> identifiziert:" #: projects/templates/projects/issue_send_message.txt:13 #, python-format @@ -2366,8 +2366,8 @@ msgid "" "You are about to remove the user %(user)s from the project " "%(title)s." msgstr "" -"Sie sind dabei den User %(user)s aus dem Projekt " -"%(title)s zu entfernen." +"Sie sind dabei den User %(user)s aus dem Projekt " +"%(title)s zu entfernen." #: projects/templates/projects/membership_form.html:9 #: projects/templates/projects/membership_form.html:11 @@ -2614,14 +2614,14 @@ msgstr "Antworten anzeigen" #: projects/templates/projects/project_detail_sidebar.html:57 #: projects/templates/projects/project_form.html:23 msgid "Update project tasks" -msgstr "Projekt Aufgaben bearbeiten" +msgstr "Projektaufgaben bearbeiten" #: projects/templates/projects/project_detail_sidebar.html:62 #: projects/templates/projects/project_detail_views.html:23 #: projects/templates/projects/project_detail_views.html:50 #: projects/templates/projects/project_form.html:31 msgid "Update project views" -msgstr "Projekt Ansichten bearbeiten" +msgstr "Projektansichten bearbeiten" #: projects/templates/projects/project_detail_sidebar.html:87 #: projects/templates/projects/project_detail_snapshots.html:25 @@ -2958,11 +2958,11 @@ msgstr "" #: projects/templates/projects/project_questions_navigation_help.html:14 msgid "" -"Entries with might be skipped based on your input." +"Entries with might be skipped based on your input." msgstr "" -"Einträge mit können aufgrund Ihrer Eingabe übersprungen werden." +"Einträge mit können aufgrund Ihrer Eingabe übersprungen werden." #: projects/templates/projects/project_questions_overview.html:14 #: projects/templates/projects/site_projects.html:52 @@ -2987,9 +2987,9 @@ msgid "" msgstr "" "Warnung: In der Datenbank sind mehrere Antworten vorhanden. Dies kann " "aufgrund eines technischen Problems in der Vergangenheit geschehen. Sie " -"können unerwünschte Antworten über das Feld \"Eintrag entfernen\" () entfernen. Bitte kontaktieren Sie den Support, " -"wenn das Problem weiterhin besteht." +"können unerwünschte Antworten über das Feld \"Eintrag entfernen\" () entfernen. Bitte kontaktieren Sie den Support, wenn " +"das Problem weiterhin besteht." #: projects/templates/projects/project_questions_questionset_head.html:34 #, python-format diff --git a/rdmo/management/assets/js/components/common/Forms.js b/rdmo/management/assets/js/components/common/Forms.js index 80a7c7a0d5..2ce5080020 100644 --- a/rdmo/management/assets/js/components/common/Forms.js +++ b/rdmo/management/assets/js/components/common/Forms.js @@ -13,7 +13,7 @@ const UploadForm = ({ onSubmit }) => { return (
- setFile(event.target.files[0])} /> + setFile(event.target.files[0])} accept=".xml"/>

{file ? file.name : gettext('Select file')}

diff --git a/rdmo/projects/imports.py b/rdmo/projects/imports.py index 3b20736a4e..d8fb08f5b2 100644 --- a/rdmo/projects/imports.py +++ b/rdmo/projects/imports.py @@ -28,6 +28,7 @@ class Import(Plugin): + accept = None upload = True def __init__(self, *args, **kwargs): @@ -88,6 +89,8 @@ def get_view(self, view_uri): class RDMOXMLImport(Import): + accept = '.xml' + def check(self): file_type, encoding = mimetypes.guess_type(self.file_name) if file_type == 'application/xml' or file_type == 'text/xml': diff --git a/rdmo/projects/utils.py b/rdmo/projects/utils.py index 94b57e0793..8a964f7334 100644 --- a/rdmo/projects/utils.py +++ b/rdmo/projects/utils.py @@ -7,6 +7,7 @@ from django.urls import reverse from rdmo.core.mail import send_mail +from rdmo.core.plugins import get_plugins logger = logging.getLogger(__name__) @@ -173,3 +174,13 @@ def set_context_querystring_with_filter_and_page(context: dict) -> dict: del querystring['page'] context['querystring'] = querystring.urlencode() return context + + +def get_upload_accept(): + accept = set() + for import_plugin in get_plugins('PROJECT_IMPORTS').values(): + if import_plugin.accept: + accept.add(import_plugin.accept) + else: + return None + return ','.join(accept) diff --git a/rdmo/projects/views/project.py b/rdmo/projects/views/project.py index aa243b1609..d6324a8164 100644 --- a/rdmo/projects/views/project.py +++ b/rdmo/projects/views/project.py @@ -27,7 +27,7 @@ from ..filters import ProjectFilter from ..models import Integration, Invite, Membership, Project, Value -from ..utils import set_context_querystring_with_filter_and_page +from ..utils import get_upload_accept, set_context_querystring_with_filter_and_page logger = logging.getLogger(__name__) @@ -71,6 +71,7 @@ def get_context_data(self, **kwargs): context['invites'] = Invite.objects.filter(user=self.request.user) context['is_site_manager'] = is_site_manager(self.request.user) context['number_of_filtered_projects'] = context["filter"].qs.count() + context['upload_accept'] = get_upload_accept() context = set_context_querystring_with_filter_and_page(context) return context @@ -161,6 +162,7 @@ def get_context_data(self, **kwargs): context['snapshots'] = project.snapshots.all() context['invites'] = project.invites.all() context['membership'] = Membership.objects.filter(project=project, user=self.request.user).first() + context['upload_accept'] = get_upload_accept() return context