Compare commits

...
This repository has been archived on 2019-10-12. You can view files and clone it, but cannot push or open issues or pull requests.

9 Commits

34 changed files with 1052 additions and 232 deletions

View File

@ -1,7 +1,7 @@
FROM alpine:3.9
ADD ["requirements.txt", "/requirements.txt"]
RUN apk upgrade --update && \
apk add --update python3 build-base openldap-dev python3-dev py3-psycopg2 && \
apk add --update python3 build-base openldap-dev python3-dev py3-psycopg2 gettext && \
pip3 install -r /requirements.txt && rm /requirements.txt
WORKDIR /lama
EXPOSE 80

View File

@ -1,7 +1,7 @@
FROM alpine:3.9
ADD ["requirements.txt", "/requirements.txt"]
RUN apk upgrade --update && \
apk add --update python3 build-base openldap-dev python3-dev py3-psycopg2 && \
apk add --update python3 build-base openldap-dev python3-dev py3-psycopg2 gettext && \
pip3 install -r /requirements.txt && rm /requirements.txt
WORKDIR /lama
EXPOSE 80

View File

@ -8,13 +8,13 @@ from django.contrib.auth.models import Group, User
from django.core.exceptions import ObjectDoesNotExist
from django.db import IntegrityError
from django.shortcuts import render, redirect, HttpResponse
from datetime import datetime, timedelta
from account_helper.models import Realm
from account_manager.utils.mail_utils import realm_send_mail
from .forms import RealmAddForm, RealmUpdateForm
from .models import LdapGroup, LdapUser
from ldap import LDAPError
from django.utils.translation import gettext as _
logger = logging.getLogger(__name__)
@ -50,8 +50,8 @@ def realm_list(request):
return redirect('user-detail', realm.id, user.dn)
except ObjectDoesNotExist as err:
logger.info('Anmeldung fehlgeschlagen', err)
return HttpResponse("Invalid login. Please try again.")
logger.info('Login failed', err)
return HttpResponse(_('InvalidLogin'))
elif len(realms) == 1:
return redirect('realm-detail', realms[0].id)
else:

View File

@ -13,6 +13,7 @@ https://docs.djangoproject.com/en/2.1/ref/settings/
import os
import ldap
from django_auth_ldap.config import LDAPSearch, GroupOfNamesType
from django.utils.translation import ugettext_lazy as _
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DOMAIN = os.environ['DOMAIN']
@ -37,6 +38,7 @@ INSTALLED_APPS = [
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
@ -113,19 +115,6 @@ AUTH_PASSWORD_VALIDATORS = [
},
]
# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/
@ -190,6 +179,30 @@ LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = 'realm-home'
PASSWORD_RESET_TIMEOUT_DAYS = 3
########################################################################################################################
# Languages Config #
########################################################################################################################
# Internationalization
# https://docs.djangoproject.com/en/2.1/topics/i18n/
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
LANGUAGES = (
('en', _('English')),
('de', _('Deutsch')),
('de-fr', _('Deutsch'))
)
USE_L10N = True
LANGUAGE_CODE = 'de'
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
########################################################################################################################
# Logging Config #
########################################################################################################################

View File

@ -1,11 +1,16 @@
from django.templatetags.static import static
from django.utils.translation import gettext, ngettext
from django.urls import reverse
from django.utils import translation
from jinja2 import Environment
def environment(**options):
options['extensions'] = ['jinja2.ext.i18n']
env = Environment(**options)
env.install_gettext_translations(translation)
# env.install_gettext_callables(gettext=gettext, ngettext=ngettext, newstyle=True)
env.globals.update({
'static': static,
'url': reverse,

View File

@ -0,0 +1,406 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-18 01:19+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: account_manager/main_views.py:54
msgid "InvalidLogin"
msgstr ""
#: account_manager/views/user_views.py:37
msgid ""
"Der angefragte Nutzer gehört einem anderen Bereich an. Nutzer können nur von "
"dem Bereich bearbeitet werden, in dem sie erstellt wurden."
msgstr ""
#: core/docker_settings.py:196
msgid "English"
msgstr ""
#: core/docker_settings.py:197 core/docker_settings.py:198
msgid "Deutsch"
msgstr ""
#: templates/admin/list_user.jinja2:8
msgid "DjangoKnownUsers"
msgstr ""
#: templates/admin/list_user.jinja2:9
msgid "DjangoAdminPages"
msgstr ""
#: templates/admin/list_user.jinja2:12
msgid "SuperAdminInfo"
msgstr ""
#: templates/admin/list_user.jinja2:18 templates/macros/utils_macros.jinja2:28
#: templates/macros/utils_macros.jinja2:77
#: templates/macros/utils_macros.jinja2:138
#: templates/realm/realm_user_multiple_delete.jinja2:23
#: templates/realm/realm_user_multiple_delete_confirm.jinja2:11
msgid "Search"
msgstr ""
#: templates/admin/list_user.jinja2:23
msgid "SuperAdmin"
msgstr ""
#: templates/admin/list_user.jinja2:24 templates/macros/form_macros.jinja2:309
#: templates/macros/utils_macros.jinja2:33
msgid "Username"
msgstr ""
#: templates/admin/list_user.jinja2:25 templates/macros/form_macros.jinja2:310
#: templates/macros/utils_macros.jinja2:34
#: templates/realm/realm_detailed.jinja2:28
#: templates/user/realm_user_detail.jinja2:32
msgid "Email"
msgstr ""
#: templates/admin/list_user.jinja2:26 templates/macros/form_macros.jinja2:311
#: templates/macros/utils_macros.jinja2:35
#: templates/user/realm_user_detail.jinja2:30
msgid "FirstName"
msgstr ""
#: templates/admin/list_user.jinja2:27 templates/macros/form_macros.jinja2:312
#: templates/macros/utils_macros.jinja2:36
#: templates/user/realm_user_detail.jinja2:31
msgid "LastName"
msgstr ""
#. Translators: The Application Name: default LAMa
#: templates/base.jinja2:33
msgid "AppName"
msgstr ""
#. Translators: Logout button
#: templates/base.jinja2:40
msgid "Logout"
msgstr ""
#. Translators: Login Button
#: templates/base.jinja2:43
msgid "Login"
msgstr ""
#. Translators: About link title
#: templates/base.jinja2:58 templates/base_admin.jinja2:50
msgid "About"
msgstr ""
#: templates/base_admin.jinja2:10
msgid "DjangoAdminArea"
msgstr ""
#: templates/base_admin.jinja2:14 templates/realm/realm_home.jinja2:6
msgid "Realms"
msgstr ""
#: templates/base_admin.jinja2:24
msgid "RealmOverview"
msgstr ""
#: templates/base_admin.jinja2:27 templates/realm/realm_detailed.jinja2:5
msgid "Realm"
msgstr ""
#: templates/base_admin.jinja2:31
msgid "RealmInformation"
msgstr ""
#: templates/base_admin.jinja2:34 templates/realm/realm_user.jinja2:5
msgid "User"
msgstr ""
#: templates/base_admin.jinja2:37 templates/realm/realm_groups.jinja2:4
#: templates/user/realm_user_detail.jinja2:37
msgid "Groups"
msgstr ""
#: templates/base_admin.jinja2:46 templates/realm/realm_home.jinja2:11
msgid "RealmAdd"
msgstr ""
#: templates/group/group_add.jinja2:6
msgid "AddGroup"
msgstr ""
#: templates/group/group_add.jinja2:18 templates/group/group_detail.jinja2:35
#: templates/realm/realm_update.jinja2:14
#: templates/user/realm_user_add.jinja2:14
#: templates/user/realm_user_detail.jinja2:97
msgid "Save"
msgstr ""
#: templates/group/group_add.jinja2:20
#: templates/group/group_confirm_delete.jinja2:17
#: templates/group/group_detail.jinja2:37
#: templates/realm/realm_update.jinja2:16
#: templates/realm/realm_user_multiple_delete.jinja2:31
#: templates/realm/realm_user_multiple_delete_confirm.jinja2:19
#: templates/user/realm_user_add.jinja2:16
#: templates/user/realm_user_detail.jinja2:99
#: templates/user/user_confirm_delete.jinja2:25
msgid "Cancel"
msgstr ""
#: templates/group/group_confirm_delete.jinja2:19
#: templates/group/group_detail.jinja2:22
msgid "DeleteGroup"
msgstr ""
#: templates/group/group_detail.jinja2:7
msgid "Group"
msgstr ""
#: templates/group/group_detail.jinja2:9
#: templates/user/realm_user_detail.jinja2:22
msgid "LdapDomain"
msgstr ""
#: templates/group/group_detail.jinja2:12 templates/realm/realm_groups.jinja2:9
msgid "Description"
msgstr ""
#: templates/group/group_detail.jinja2:15
msgid "Members"
msgstr ""
#: templates/group/group_detail.jinja2:19
#: templates/group/group_detail.jinja2:25
msgid "UpdateGroup"
msgstr ""
#: templates/macros/form_macros.jinja2:314
#: templates/macros/utils_macros.jinja2:38
#: templates/user/realm_user_detail.jinja2:54
msgid "LastLogin"
msgstr ""
#: templates/macros/utils_macros.jinja2:37
msgid "Active"
msgstr ""
#: templates/macros/utils_macros.jinja2:39
msgid "DeletionDate"
msgstr ""
#: templates/macros/utils_macros.jinja2:82
msgid "RealmName"
msgstr ""
#: templates/macros/utils_macros.jinja2:83
msgid "LdapBaseDN"
msgstr ""
#: templates/macros/utils_macros.jinja2:84
msgid "MailAddress"
msgstr ""
#: templates/macros/utils_macros.jinja2:85
msgid "AdminGroup"
msgstr ""
#: templates/macros/utils_macros.jinja2:86
msgid "DefaultGroup"
msgstr ""
#: templates/macros/utils_macros.jinja2:87
msgid "UserCount"
msgstr ""
#: templates/macros/utils_macros.jinja2:88
msgid "GroupCount"
msgstr ""
#: templates/permission_denied.jinja2:8
msgid "PermissionDeniedInfo"
msgstr ""
#. Translators: Is the Headline of the create new realm view
#: templates/realm/realm_add.jinja2:10
msgid "CreateNewRealm"
msgstr ""
#. Translators: the submit button text for the create new realm form
#: templates/realm/realm_add.jinja2:16
msgid "CreateRealm"
msgstr ""
#: templates/realm/realm_add_failed.jinja2:5
msgid "AddRealmError"
msgstr ""
#: templates/realm/realm_add_failed.jinja2:7
msgid "AddRealmErrorInfo"
msgstr ""
#: templates/realm/realm_add_failed.jinja2:11
msgid "AddRealmErrorLdapInfo"
msgstr ""
#. Translators: The Application Name: default LAMa
#: templates/realm/realm_confirm_delete.jinja2:7
msgid "RealmDelete"
msgstr ""
#: templates/realm/realm_confirm_delete.jinja2:27
msgid "RealmDeleteCancel"
msgstr ""
#: templates/realm/realm_confirm_delete.jinja2:29
msgid "RealmDeleteAgree"
msgstr ""
#: templates/realm/realm_detailed.jinja2:10
msgid "RealmDetailRemoveRealm"
msgstr ""
#: templates/realm/realm_detailed.jinja2:19
msgid "RealmDetailLdapOU"
msgstr ""
#: templates/realm/realm_detailed.jinja2:20
msgid "RealmDetailUserCount"
msgstr ""
#: templates/realm/realm_detailed.jinja2:25
msgid "RealmDetailRemoveInactiveUser"
msgstr ""
#: templates/realm/realm_detailed.jinja2:30
#: templates/realm/realm_detailed.jinja2:37
#: templates/realm/realm_detailed.jinja2:45
msgid "RealmDetailStillPending"
msgstr ""
#: templates/realm/realm_detailed.jinja2:32
msgid "RealmDetailAdminGroup"
msgstr ""
#: templates/realm/realm_detailed.jinja2:40
msgid "RealmDetailDefaultGroup"
msgstr ""
#: templates/realm/realm_detailed.jinja2:52
msgid "RealmDetailChangeRealmInfo"
msgstr ""
#: templates/realm/realm_detailed.jinja2:56
msgid "RealmDetailTestMail"
msgstr ""
#: templates/realm/realm_groups.jinja2:8
msgid "Name"
msgstr ""
#: templates/realm/realm_groups.jinja2:10
msgid "MemberCount"
msgstr ""
#: templates/realm/realm_groups.jinja2:31
msgid "AddGroups"
msgstr ""
#: templates/realm/realm_user.jinja2:8 templates/user/realm_user_add.jinja2:5
msgid "AddUser"
msgstr ""
#: templates/realm/realm_user.jinja2:10
msgid "RemoveMultipleUser"
msgstr ""
#: templates/realm/realm_user_multiple_delete.jinja2:6
#: templates/realm/realm_user_multiple_delete_confirm.jinja2:5
#: templates/user/realm_user_detail.jinja2:85
#: templates/user/user_confirm_delete.jinja2:27
msgid "DeleteUser"
msgstr ""
#: templates/realm/realm_user_multiple_delete.jinja2:10
msgid "MultipleUserDeleteError"
msgstr ""
#: templates/realm/realm_user_multiple_delete.jinja2:29
#: templates/realm/realm_user_multiple_delete_confirm.jinja2:17
msgid "Execute"
msgstr ""
#: templates/user/realm_user_detail.jinja2:23
msgid "UserDisplayName"
msgstr ""
#: templates/user/realm_user_detail.jinja2:27
msgid "NotGeneratedYet"
msgstr ""
#: templates/user/realm_user_detail.jinja2:33
msgid "Password"
msgstr ""
#: templates/user/realm_user_detail.jinja2:34
msgid "UserPasswordReset"
msgstr ""
#: templates/user/realm_user_detail.jinja2:35
msgid "Phone"
msgstr ""
#: templates/user/realm_user_detail.jinja2:36
msgid "MobilePhone"
msgstr ""
#: templates/user/realm_user_detail.jinja2:47
msgid "NoneGroupAssigned"
msgstr ""
#: templates/user/realm_user_detail.jinja2:51
msgid "AssignGroups"
msgstr ""
#: templates/user/realm_user_detail.jinja2:62
msgid "DeletionProcess"
msgstr ""
#: templates/user/realm_user_detail.jinja2:65
msgid "CancelDeletionProcess"
msgstr ""
#: templates/user/realm_user_detail.jinja2:73
msgid "UpdateUser"
msgstr ""
#: templates/user/realm_user_detail.jinja2:79
msgid "ResendWelcomeMail"
msgstr ""
#: templates/user/realm_user_update_groups.jinja2:6
msgid "UpdateGroupMembership"
msgstr ""
#: templates/user/realm_user_update_groups.jinja2:11
msgid "UserGroupDelete"
msgstr ""
#: templates/user/realm_user_update_groups.jinja2:30
msgid "UserGroupAdd"
msgstr ""
#: templates/user/realm_user_update_groups.jinja2:50
msgid "Done"
msgstr ""

View File

@ -0,0 +1,425 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-18 01:19+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: account_manager/main_views.py:54
msgid "InvalidLogin"
msgstr "Invalid login. Please try again."
#: account_manager/views/user_views.py:37
msgid ""
"Der angefragte Nutzer gehört einem anderen Bereich an. Nutzer können nur von "
"dem Bereich bearbeitet werden, in dem sie erstellt wurden."
msgstr ""
#: core/docker_settings.py:196
msgid "English"
msgstr ""
#: core/docker_settings.py:197 core/docker_settings.py:198
msgid "Deutsch"
msgstr ""
#: templates/admin/list_user.jinja2:8
msgid "DjangoKnownUsers"
msgstr "Django bekannte Nutzer"
#: templates/admin/list_user.jinja2:9
msgid "DjangoAdminPages"
msgstr "Django Adminbereich"
#: templates/admin/list_user.jinja2:12
msgid "SuperAdminInfo"
msgstr ""
"Um einen Nutzer zum Superadmin zu ernennen, klicke auf das Superadmin Icon"
#: templates/admin/list_user.jinja2:18 templates/macros/utils_macros.jinja2:28
#: templates/macros/utils_macros.jinja2:77
#: templates/macros/utils_macros.jinja2:138
#: templates/realm/realm_user_multiple_delete.jinja2:23
#: templates/realm/realm_user_multiple_delete_confirm.jinja2:11
msgid "Search"
msgstr "Suche"
#: templates/admin/list_user.jinja2:23
msgid "SuperAdmin"
msgstr "Superadmin"
#: templates/admin/list_user.jinja2:24 templates/macros/form_macros.jinja2:309
#: templates/macros/utils_macros.jinja2:33
msgid "Username"
msgstr "Nutzername"
#: templates/admin/list_user.jinja2:25 templates/macros/form_macros.jinja2:310
#: templates/macros/utils_macros.jinja2:34
#: templates/realm/realm_detailed.jinja2:28
#: templates/user/realm_user_detail.jinja2:32
msgid "Email"
msgstr "E-Mail"
#: templates/admin/list_user.jinja2:26 templates/macros/form_macros.jinja2:311
#: templates/macros/utils_macros.jinja2:35
#: templates/user/realm_user_detail.jinja2:30
msgid "FirstName"
msgstr "Vorname"
#: templates/admin/list_user.jinja2:27 templates/macros/form_macros.jinja2:312
#: templates/macros/utils_macros.jinja2:36
#: templates/user/realm_user_detail.jinja2:31
msgid "LastName"
msgstr "Nachname"
#. Translators: The Application Name: default LAMa
#: templates/base.jinja2:33
msgid "AppName"
msgstr "LAMa"
#. Translators: Logout button
#: templates/base.jinja2:40
msgid "Logout"
msgstr ""
#. Translators: Login Button
#: templates/base.jinja2:43
msgid "Login"
msgstr ""
#. Translators: About link title
#: templates/base.jinja2:58 templates/base_admin.jinja2:50
msgid "About"
msgstr "Über"
#: templates/base_admin.jinja2:10
msgid "DjangoAdminArea"
msgstr "Django Adminbereich"
#: templates/base_admin.jinja2:14 templates/realm/realm_home.jinja2:6
msgid "Realms"
msgstr "Bereiche"
#: templates/base_admin.jinja2:24
msgid "RealmOverview"
msgstr "Bereichsübersicht"
#: templates/base_admin.jinja2:27 templates/realm/realm_detailed.jinja2:5
msgid "Realm"
msgstr "Bereich"
#: templates/base_admin.jinja2:31
msgid "RealmInformation"
msgstr "Bereichsinformationen"
#: templates/base_admin.jinja2:34 templates/realm/realm_user.jinja2:5
msgid "User"
msgstr "Nutzer"
#: templates/base_admin.jinja2:37 templates/realm/realm_groups.jinja2:4
#: templates/user/realm_user_detail.jinja2:37
msgid "Groups"
msgstr "Gruppen"
#: templates/base_admin.jinja2:46 templates/realm/realm_home.jinja2:11
msgid "RealmAdd"
msgstr "Bereich hinzufügen"
#: templates/group/group_add.jinja2:6
msgid "AddGroup"
msgstr "Gruppe anlegen"
#: templates/group/group_add.jinja2:18 templates/group/group_detail.jinja2:35
#: templates/realm/realm_update.jinja2:14
#: templates/user/realm_user_add.jinja2:14
#: templates/user/realm_user_detail.jinja2:97
msgid "Save"
msgstr "Sichern"
#: templates/group/group_add.jinja2:20
#: templates/group/group_confirm_delete.jinja2:17
#: templates/group/group_detail.jinja2:37
#: templates/realm/realm_update.jinja2:16
#: templates/realm/realm_user_multiple_delete.jinja2:31
#: templates/realm/realm_user_multiple_delete_confirm.jinja2:19
#: templates/user/realm_user_add.jinja2:16
#: templates/user/realm_user_detail.jinja2:99
#: templates/user/user_confirm_delete.jinja2:25
msgid "Cancel"
msgstr "Abbrechen"
#: templates/group/group_confirm_delete.jinja2:19
#: templates/group/group_detail.jinja2:22
msgid "DeleteGroup"
msgstr "Gruppe löschen"
#: templates/group/group_detail.jinja2:7
msgid "Group"
msgstr "Gruppe"
#: templates/group/group_detail.jinja2:9
#: templates/user/realm_user_detail.jinja2:22
msgid "LdapDomain"
msgstr "Ldap Domain"
#: templates/group/group_detail.jinja2:12 templates/realm/realm_groups.jinja2:9
msgid "Description"
msgstr "Beschreibung"
#: templates/group/group_detail.jinja2:15
msgid "Members"
msgstr "Mitglieder"
#: templates/group/group_detail.jinja2:19
#: templates/group/group_detail.jinja2:25
msgid "UpdateGroup"
msgstr "Gruppe bearbeiten"
#: templates/macros/form_macros.jinja2:314
#: templates/macros/utils_macros.jinja2:38
#: templates/user/realm_user_detail.jinja2:54
msgid "LastLogin"
msgstr "Letzter Login"
#: templates/macros/utils_macros.jinja2:37
msgid "Active"
msgstr "Aktiv"
#: templates/macros/utils_macros.jinja2:39
msgid "DeletionDate"
msgstr "Löschdatum"
#: templates/macros/utils_macros.jinja2:82
msgid "RealmName"
msgstr "Bereichsname"
#: templates/macros/utils_macros.jinja2:83
msgid "LdapBaseDN"
msgstr "Ldap Basis DN"
#: templates/macros/utils_macros.jinja2:84
msgid "MailAddress"
msgstr "Mailadresse"
#: templates/macros/utils_macros.jinja2:85
msgid "AdminGroup"
msgstr "Admingruppe"
#: templates/macros/utils_macros.jinja2:86
msgid "DefaultGroup"
msgstr "Defaultgruppe"
#: templates/macros/utils_macros.jinja2:87
msgid "UserCount"
msgstr "Nutzeranzahl"
#: templates/macros/utils_macros.jinja2:88
msgid "GroupCount"
msgstr "Gruppenanzahl"
#: templates/permission_denied.jinja2:8
msgid "PermissionDeniedInfo"
msgstr "Leider hast du keine Rechte :´("
#. Translators: Is the Headline of the create new realm view
#: templates/realm/realm_add.jinja2:10
msgid "CreateNewRealm"
msgstr "Neuen Bereich anlegen"
#. Translators: the submit button text for the create new realm form
#: templates/realm/realm_add.jinja2:16
msgid "CreateRealm"
msgstr "Bereich anlegen"
#: templates/realm/realm_add_failed.jinja2:5
msgid "AddRealmError"
msgstr "Hinzufügen Fehlgeschlagen"
#: templates/realm/realm_add_failed.jinja2:7
msgid "AddRealmErrorInfo"
msgstr "Das hinzufügen des Bereichs ist fehlgeschlagen."
#: templates/realm/realm_add_failed.jinja2:11
msgid "AddRealmErrorLdapInfo"
msgstr "Bitte überprüfe den Ldap base dn, ob dieser auch wirklich existiert."
#. Translators: The Application Name: default LAMa
#: templates/realm/realm_confirm_delete.jinja2:7
msgid "RealmDelete"
msgstr "Löschen des Bereichs"
#: templates/realm/realm_confirm_delete.jinja2:27
msgid "RealmDeleteCancel"
msgstr "Abbrechen"
#: templates/realm/realm_confirm_delete.jinja2:29
msgid "RealmDeleteAgree"
msgstr "Bereich löschen"
#: templates/realm/realm_detailed.jinja2:10
msgid "RealmDetailRemoveRealm"
msgstr "Bereich löschen"
#: templates/realm/realm_detailed.jinja2:19
msgid "RealmDetailLdapOU"
msgstr "LDAP Organisationseinheit"
#: templates/realm/realm_detailed.jinja2:20
msgid "RealmDetailUserCount"
msgstr "Nutzeranzahl (Aktive/Inaktive)"
#: templates/realm/realm_detailed.jinja2:25
msgid "RealmDetailRemoveInactiveUser"
msgstr "Inaktive Nutzer löschen"
#: templates/realm/realm_detailed.jinja2:30
#: templates/realm/realm_detailed.jinja2:37
#: templates/realm/realm_detailed.jinja2:45
msgid "RealmDetailStillPending"
msgstr "Noch ausstehend"
#: templates/realm/realm_detailed.jinja2:32
msgid "RealmDetailAdminGroup"
msgstr "Admin Gruppe"
#: templates/realm/realm_detailed.jinja2:40
msgid "RealmDetailDefaultGroup"
msgstr "Default Gruppe"
#: templates/realm/realm_detailed.jinja2:52
msgid "RealmDetailChangeRealmInfo"
msgstr "Bereichsinformationen anpassen"
#: templates/realm/realm_detailed.jinja2:56
msgid "RealmDetailTestMail"
msgstr "Test Mail senden"
#: templates/realm/realm_groups.jinja2:8
msgid "Name"
msgstr "Name"
#: templates/realm/realm_groups.jinja2:10
msgid "MemberCount"
msgstr "Mitgliederanzahl"
#: templates/realm/realm_groups.jinja2:31
msgid "AddGroups"
msgstr "Gruppen hinzufügen"
#: templates/realm/realm_user.jinja2:8 templates/user/realm_user_add.jinja2:5
msgid "AddUser"
msgstr "Nutzer hinzufügen"
#: templates/realm/realm_user.jinja2:10
msgid "RemoveMultipleUser"
msgstr "Mehrere Nutzer löschen"
#: templates/realm/realm_user_multiple_delete.jinja2:6
#: templates/realm/realm_user_multiple_delete_confirm.jinja2:5
#: templates/user/realm_user_detail.jinja2:85
#: templates/user/user_confirm_delete.jinja2:27
msgid "DeleteUser"
msgstr "Nutzer löschen"
#: templates/realm/realm_user_multiple_delete.jinja2:10
msgid "MultipleUserDeleteError"
msgstr ""
" <h3>Admin User festgestellt</h3><p>Die folgenden Nutzer können nicht "
"gelöscht werden, da Sie noch Mitglieder von ein oder mehreren AdminGruppen "
"sind. Bitte tragen Sie diese vorher aus den Admin Gruppen.</p>"
#: templates/realm/realm_user_multiple_delete.jinja2:29
#: templates/realm/realm_user_multiple_delete_confirm.jinja2:17
msgid "Execute"
msgstr "Ausführen"
#: templates/user/realm_user_detail.jinja2:23
msgid "UserDisplayName"
msgstr "Anzeigename"
#: templates/user/realm_user_detail.jinja2:27
msgid "NotGeneratedYet"
msgstr "Noch nicht generiert"
#: templates/user/realm_user_detail.jinja2:33
msgid "Password"
msgstr "Passwort"
#: templates/user/realm_user_detail.jinja2:34
msgid "UserPasswordReset"
msgstr "Nutzerpasswort zurücksetzen"
#: templates/user/realm_user_detail.jinja2:35
msgid "Phone"
msgstr "Telefon"
#: templates/user/realm_user_detail.jinja2:36
msgid "MobilePhone"
msgstr "Mobiltelefon"
#: templates/user/realm_user_detail.jinja2:47
msgid "NoneGroupAssigned"
msgstr "Keine zugewiesen"
#: templates/user/realm_user_detail.jinja2:51
msgid "AssignGroups"
msgstr "Gruppen zuweisen"
#: templates/user/realm_user_detail.jinja2:62
msgid "DeletionProcess"
msgstr "Löschvorgang"
#: templates/user/realm_user_detail.jinja2:65
msgid "CancelDeletionProcess"
msgstr "Löschvorgang abbrechen"
#: templates/user/realm_user_detail.jinja2:73
msgid "UpdateUser"
msgstr "Nutzer bearbeiten"
#: templates/user/realm_user_detail.jinja2:79
msgid "ResendWelcomeMail"
msgstr "Willkommensmail erneut senden"
#: templates/user/realm_user_update_groups.jinja2:6
msgid "UpdateGroupMembership"
msgstr "Gruppenzuweisung ändern"
#: templates/user/realm_user_update_groups.jinja2:11
msgid "UserGroupDelete"
msgstr "Gruppe entfernen"
#: templates/user/realm_user_update_groups.jinja2:30
msgid "UserGroupAdd"
msgstr "Gruppe hinzufügen"
#: templates/user/realm_user_update_groups.jinja2:50
msgid "Done"
msgstr "Fertig"
#~ msgid "RealmDeleteInformation %(realm)s %(realm_ldap_base_dn)"
#~ msgstr ""
#~ "<p>Achtung! Sie sind gerade dabei den Bereich <span class='text-uppercase "
#~ "font-weight-bold'>%(realm)s</span> zu löschen.</p><p>Falls Sie sich "
#~ "sicher sind, dass Sie diesen Bereich löschen wollen, klicken Sie bitte "
#~ "auf \"Bereich löschen\".<p>Hierdurch werden <strong>Alle</strong> Nutzer "
#~ "und Gruppen gelöscht, die unter der Ldap BasisDN %(realm_ldap_base_dn)s "
#~ "eingetragen sind. Die Ldap Basis DN mit Ihren Organisationseinheiten "
#~ "\"groups\" und \"people\" bleiben bestehen.</p><p>Bitte beachten Sie, "
#~ "dass die Daten der Nutzer, die in den Diensten hochgeladen wurden, "
#~ "weiterhin bestehen bleiben. Diese Daten müssen vom Systemadministrator "
#~ "seperat gelöscht werden. </p><p>Möchten Sie das Löschen der Accountdaten "
#~ "verhindern, klicken Sie auf \"Abbrechen\"</p>"

View File

@ -120,6 +120,10 @@
}
}
.realm-name{
text-transform: uppercase;
}
/* ------------------------------------------------------------------------------------------------------------------ */
/* -- Data Tables -- */
/* ------------------------------------------------------------------------------------------------------------------ */

View File

@ -3,7 +3,8 @@
<div class="col-12 ">
<div class="row justify-content-center justify-content-sm-center">
<div class="col-12 col-sm-8 col-md-7 col-lg-6 col-xl-5 bg-white text-dark text-center p-3 mt-5">
<p>Diese App wurde mit viel <i style="color: #DC143C;" class="fas fa-spin fa-heart"></i> von Micheal
{# TODO: Translation #}
<p>Diese App wurde mit viel <i style="color: #DC143C;" class="fas fa-spin fa-heart"></i> von Michael
Götz entwickelt.</p>
<br>
<h2>Icons</h2>

View File

@ -5,26 +5,26 @@
{% block admin_content %}
<div class="row">
<div class="col-12">
<h2>Django bekannte Nutzer
<small><a href="/admin" class="float-right h5">Django Admin Seiten</a></small>
<h2>{{ _('DjangoKnownUsers') }}
<small><a href="/admin" class="float-right h5">{{ _('DjangoAdminPages') }}</a></small>
</h2>
{{ mutils.get_warning_box(extra_errors) }}
<div class="alert alert-info">Um einen Nutzer zum Superadmin zu ernennen, klicke auf das Superadmin Icon
<div class="alert alert-info">{{ _('SuperAdminInfo') }}
</div>
<div class="table-search-field form-group w-25 float-right">
<input type="text"
class="form-control"
id="data-table-search-input">
<label for="data-table-search-input">Suche</label>
<label for="data-table-search-input">{{ _('Search') }}</label>
</div>
<table class="table table-hover table-striped table-inverse table-bordered data-table">
<thead>
<tr>
<th scope="col">Superadmin</th>
<th scope="col">Nutzername</th>
<th scope="col">E-Mail</th>
<th scope="col">Vorname</th>
<th scope="col">Nachname</th>
<th scope="col">{{ _('SuperAdmin') }}</th>
<th scope="col">{{ _('Username') }}</th>
<th scope="col">{{ _('Email') }}</th>
<th scope="col">{{ _('FirstName') }}</th>
<th scope="col">{{ _('LastName') }}</th>
</tr>
</thead>
<tbody>

View File

@ -1,4 +1,3 @@
{#{% load static %}#}
{# ===== HTML ===== #}
<!DOCTYPE html>
<html lang="en" dir="ltr">
@ -30,15 +29,18 @@
<a class="navbar-brand" href="{{ url('realm-home') }}">
<img src="{{ static('images/lama.svg') }}" width="30" height="30" class="d-inline-block align-top"
alt="">
LAMa
{# Translators: The Application Name: default LAMa #}
{{ _('AppName') }}
</a>
{% if request.user.is_authenticated %}
<span class="navbar-text">
Hi <a href="{{ url('realm-home') }}?show_user=True">{{ request.user.username }}</a>!
<a href="{{ url('logout') }}?next=/">Logout <i class="fas fa-sign-out-alt"></i></a>
{# Translators: Logout button #}
<a href="{{ url('logout') }}?next=/">{{ _('Logout') }} <i class="fas fa-sign-out-alt"></i></a>
{% else %}
<a href="{{ url('login') }}"><i class="fas fa-sign-in-alt"></i> Login</a>
{# Translators: Login Button #}
<a href="{{ url('login') }}"><i class="fas fa-sign-in-alt"></i> {{ _('Login') }}</a>
{% endif %}
</span>
</nav>
@ -47,12 +49,13 @@
{% block content %}{% endblock %}
{% endblock %}
{% if not realms and not realm and not request.user.is_superuser%}
{% if not realms and not realm and not request.user.is_superuser %}
<footer class="bg-light footer mt-auto py-3 text-center">
<div class="container">
<span class="text-muted">
<a href="{{ url('about') }}">Über</a>
{# Translators: About link title #}
<a href="{{ url('about') }}">{{ _('About') }}</a>
</span>
</div>
</footer>

View File

@ -7,11 +7,11 @@
{% if request.user.is_superuser %}
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action bg-light"
href="{{ url('django-additional-admin-list') }}"><i class="fas fa-crown"></i> Django Adminbereich</a>
href="{{ url('django-additional-admin-list') }}"><i class="fas fa-crown"></i> {{ _('DjangoAdminArea') }}</a>
</div>
{% endif %}
{% if realms %}
<h2 class="sidebar-heading">Bereiche</h2>
<h2 class="sidebar-heading">{{ _('Realms') }}</h2>
<div class="list-group list-group-flush">
{% for realm_item in realms %}
<a href="{{ url('realm-detail', args=[realm_item.id]) }}"
@ -21,20 +21,20 @@
{% else %}
<div class="list-group-flush">
<a href="{{ url('realm-home') }}" class="list-group-item list-group-item-action bg-light">
<i class="fas fa-list"></i> Bereichsübersicht</a>
<i class="fas fa-list"></i> {{ _('RealmOverview') }}</a>
</div>
{% if realm %}
<h2 class="sidebar-heading">Bereich {{ realm.name }}</h2>
<h2 class="sidebar-heading">{{ _('Realm') }} <span class="text-uppercase">{{ realm.name }}</span></h2>
<div class="list-group list-group-flush">
<a href="{{ url('realm-detail', args=[realm.id]) }}"
class="list-group-item list-group-item-action bg-light"><i class="fas fa-cogs"></i>
Bereichsinformationen</a>
{{ _('RealmInformation') }}</a>
<a href="{{ url('realm-user-list', args=[realm.id]) }}"
class="list-group-item list-group-item-action bg-light"><i class="fas fa-users"></i>
Nutzer</a>
{{ _('User') }}</a>
<a href="{{ url('realm-group-list', args=[realm.id]) }}"
class="list-group-item list-group-item-action bg-light"><i class="fas fa-user-friends"></i>
Gruppen</a>
{{ _('Groups') }}</a>
</div>
{% endif %}
{% endif %}
@ -43,11 +43,11 @@
<div class="list-group-item bg-light border-0"></div>
<a href="{{ url('realm-add') }}"
class="list-group-item list-group-item-action bg-light"><i class="fas fa-plus-square"></i>
Bereich hinufügen</a>
{{ _('RealmAdd') }}</a>
</div>
{% endif %}
<div class="sidebar-bottom list-group-flush border-top">
<a href="{{ url('about') }}" class="list-group-item list-group-item-action bg-light">Über</a>
<a href="{{ url('about') }}" class="list-group-item list-group-item-action bg-light">{{ _('About') }}</a>
</div>
</div>

View File

@ -3,7 +3,7 @@
{% import 'macros/utils_macros.jinja2' as uform %}
{% block detail_content %}
<h2>Gruppe anlegen</h2>
<h2>{{ _('AddGroup') }}</h2>
{% if extra_error %}
<div class="alert alert-warning">{{ extra_error }}</div>
{% endif %}
@ -15,9 +15,9 @@
{{ uform.get_data_table_search_field() }}
{{ mform.user_select_table_input(users, field=form.members) }}
<div class="d-flex mt-4">
<button type="submit" class="btn btn-primary mr-auto p-2">Speichern</button>
<button type="submit" class="btn btn-primary mr-auto p-2">{{ _('Save') }}</button>
<a href="{{ url('realm-group-list', args = [realm.id]) }}"
class="btn btn-secondary p-2">Abbrechen</a>
class="btn btn-secondary p-2">{{ _('Cancel') }}</a>
</div>
</form>
{% endblock %}

View File

@ -4,6 +4,7 @@
<div class="row justify-content-center justify-content-sm-center">
<div class="col-12 col-sm-8 col-md-7 col-lg-5 col-xl-4 bg-white text-dark p-3 mt-5">
<div class="alert alert-warning" role="alert">
{# TODO: Add translation #}
<p>Achtung! Sie sind gerade dabei die Gruppe <strong>{{ group.name }}</strong> aus dem
Bereich <strong>{{ realm.name }}</strong> zu löschen.
</p>
@ -13,9 +14,9 @@
</div>
<div class="d-flex">
<a href="{{ url('realm-group-detail', args = [realm.id, group.dn]) }}"
class="btn btn-secondary mr-auto p-2">Abbrechen</a>
class="btn btn-secondary mr-auto p-2">{{ _('Cancel') }}</a>
<a href="{{ url('realm-group-delete', args = [realm.id, group.dn]) }}"
class="btn btn-danger p-2">Gruppe löschen</a>
class="btn btn-danger p-2">{{ _('DeleteGroup') }}</a>
</div>
</div>
</div>

View File

@ -4,23 +4,25 @@
{% block detail_content %}
{% if not form %}
<h3>Gruppe {{ group.name }}</h3>
<h3>{{ _('Group') }} {{ group.name }}</h3>
<ul class="list-group list-group-flush w-100 mb-3">
<li class="list-group-item">Ldap Domain: {{ group.dn }}</li>
<li class="list-group-item">{{ _('LdapDomain') }}: {{ group.dn }}</li>
{% if group.description %}
<li class="list-group-item">Beschreibung: {{ group.description }}</li>
<li class="list-group-item">{{ _('Description') }}: {{ group.description }}</li>
{% endif %}
</ul>
<h3>Mitglieder</h3>
<h3>{{ _('Members') }}</h3>
{{ mutils.get_user_table(realm, users) }}
<div class="d-flex mt-3">
<a href="{{ url('realm-group-update', args = [realm.id, group.dn]) }}" class="btn btn-primary mr-auto p-2">
<i class="fas fa-pen-square"></i> Gruppe bearbeiten</a>
<i class="fas fa-pen-square"></i> {{ _('UpdateGroup') }}</a>
<a href="{{ url('realm-group-delete-confirm', args = [realm.id, group.dn]) }}" class="btn btn-danger p-2"><i
class="fas fa-trash"></i> <span class="d-sm-none d-md-inline-block">Gruppe löschen</span></a>
class="fas fa-trash"></i> <span
class="d-sm-none d-md-inline-block">{{ _('DeleteGroup') }}</span></a>
</div>
{% else %}
<h3>{{ _('UpdateGroup') }} {{ group.name }}</h3>
{{ mutils.get_warning_box(extra_error) }}
<form method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
@ -30,9 +32,9 @@
{{ mutils.get_data_table_search_field() }}
{{ mform.user_select_table_input(users, field=form.members) }}
<div class="d-flex mt-4">
<button type="submit" class="btn btn-primary mr-auto p-2">Speichern</button>
<button type="submit" class="btn btn-primary mr-auto p-2">{{ _('Save') }}</button>
<a href="{{ url('realm-group-detail', args = [realm.id, group.dn]) }}"
class="btn btn-secondary p-2">Abbrechen</a>
class="btn btn-secondary p-2">{{ _('Cancel') }}</a>
</div>
</form>
{% endif %}

View File

@ -299,16 +299,19 @@
id="delete-all-checkbox"
>
<label class="
{% if checkbox_label_classes %}{{ checkbox_label_classes }}{% else %}table-checkbox-control-label table-checkbox-control-label-add{% endif %}"
for="delete-all-checkbox"></label>
{% if checkbox_label_classes %}
{{ checkbox_label_classes }}
{% else %}
table-checkbox-control-label table-checkbox-control-label-add
{% endif %}" for="delete-all-checkbox"></label>
{% endif %}
</th>
<th scope="col">Nutzername</th>
<th scope="col">E-Mail</th>
<th scope="col">Vorname</th>
<th scope="col">Nachname</th>
<th scope="col">{{ _('Username') }}</th>
<th scope="col">{{ _('Email') }}</th>
<th scope="col">{{ _('FirstName') }}</th>
<th scope="col">{{ _('LastName') }}</th>
{% if show_lastlogin %}
<th scope="col">Letzter Login</th>
<th scope="col">{{ _('LastLogin') }}</th>
{% endif %}
</tr>
</thead>
@ -325,27 +328,11 @@
{% if field and field.value() and user.username in field.value() %}checked{% endif %}
>
<label class="
{% if checkbox_label_classes %}{{ checkbox_label_classes }}{% else %}table-checkbox-control-label table-checkbox-control-label-add{% endif %}"
for="{{ user.username }}_{{ loop.index }}">
{% if checkbox_label_classes %}
{{ checkbox_label_classes }}
{% else %}
table-checkbox-control-label table-checkbox-control-label-add
{% endif %}" for="{{ user.username }}_{{ loop.index }}">
</label>
</td>
<td>{{ user.username }}</td>

View File

@ -25,18 +25,18 @@
<input type="text"
class="form-control"
id="data-table-search-input">
<label for="data-table-search-input">Suche</label>
<label for="data-table-search-input">{{ _('Search') }}</label>
</div>
<table class="table table-hover table-striped table-inverse table-bordered data-table">
<thead>
<tr>
<th scope="col">Nutzername</th>
<th scope="col">E-Mail</th>
<th scope="col">Vorname</th>
<th scope="col">Nachname</th>
<th scope="col">Aktiv</th>
<th scope="col">Letzer Login</th>
<th scope="col">Löschdatum</th>
<th scope="col">{{ _('Username') }}</th>
<th scope="col">{{ _('Email') }}</th>
<th scope="col">{{ _('FirstName') }}</th>
<th scope="col">{{ _('LastName') }}</th>
<th scope="col">{{ _('Active') }}</th>
<th scope="col">{{ _('LastLogin') }}</th>
<th scope="col">{{ _('DeletionDate') }}</th>
</tr>
</thead>
<tbody>
@ -74,18 +74,18 @@
<input type="text"
class="form-control"
id="data-table-search-input">
<label for="data-table-search-input">Suche</label>
<label for="data-table-search-input">{{ _('Search') }}</label>
</div>
<table class="table table-hover table-striped table-inverse table-bordered data-table text-center">
<thead>
<tr>
<th scope="col">Bereichsname</th>
<th scope="col">Ldap Basis DN</th>
<th scope="col">Mailadresse</th>
<th scope="col">Admingruppe</th>
<th scope="col">Defaultgruppe</th>
<th scope="col">Nutzeranzahl</th>
<th scope="col">Gruppenanzahl</th>
<th scope="col">{{ _('RealmName') }}</th>
<th scope="col">{{ _('LdapBaseDN') }}</th>
<th scope="col">{{ _('MailAddress') }}</th>
<th scope="col">{{ _('AdminGroup') }}</th>
<th scope="col">{{ _('DefaultGroup') }}</th>
<th scope="col">{{ _('UserCount') }}</th>
<th scope="col">{{ _('GroupCount') }}</th>
</tr>
</thead>
<tbody>
@ -119,7 +119,6 @@
<td>{{ realm_wrapper.user_count }}</td>
<td>{{ realm_wrapper.group_count }}</td>
</tr>
{% endfor %}
</tbody>
</table>
@ -136,7 +135,7 @@
<input type="text"
class="form-control"
id="{{ input_id }}">
<label for="{{ input_id }}">Suche</label>
<label for="{{ input_id }}">{{ _('Search') }}</label>
</div>
{% endmacro %}

View File

@ -5,7 +5,7 @@
<div class="col-12 ">
<div class="row justify-content-center justify-content-sm-center">
<div class="col-12 col-sm-8 col-md-7 col-lg-5 col-xl-4 bg-white text-dark text-center p-3 mt-5">
<p>Leider hast du keine Rechte :´(</p>
<p>{{ _('PermissionDeniedInfo') }}</p>
{{ mutils.get_warning_box(extra_errors) }}
<a href="{{ url('realm-home') }}">Zurück zur Startseite</a>
</div>

View File

@ -6,12 +6,14 @@
<div class="row justify-content-center justify-content-sm-center">
<div class="col-12 col-sm-8 col-md-8 col-lg-6 col-xl-5 bg-white text-dark p-3 mt-5">
{% if request.user.is_superuser %}
<h2>Neuen Bereich anlegen</h2>
{# Translators: Is the Headline of the create new realm view #}
<h2>{{ _('CreateNewRealm') }}</h2>
<form method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ mform.text_input(form.name) }}
{{ mform.text_input(form.ldap_base_dn) }}
<button type="submit" class="btn btn-primary btn-block">Anlegen</button>
{# Translators: the submit button text for the create new realm form#}
<button type="submit" class="btn btn-primary btn-block">{{ _('CreateRealm') }}</button>
</form>
{% endif %}
</div>

View File

@ -2,13 +2,13 @@
{% block admin_content %}
<div class="row ">
<div class="col-12 p-3">
<h1>Fehler {{ realm_name }}</h1>
<h1>{{ _('AddRealmError') }} <span class="realm-name">{{ realm_name }}</span></h1>
<div class="alert alert-danger">
<p>Das hinzufügen des Bereichs ist fehlgeschlagen.</p>
<p>{{ _('AddRealmErrorInfo') }}</p>
{% if error %}
<p>{{ error }}</p>
{% else %}
<p>Bitte überprüfe den Ldap base dn, ob dieser auch wirklich existiert.</p>
<p>{{ _('AddRealmErrorLdapInfo') }}</p>
{% endif %}
</div>
</div>

View File

@ -3,15 +3,19 @@
<div class="col-12 ">
<div class="row justify-content-center justify-content-sm-center">
<div class="col-12 col-sm-8 col-md-7 col-lg-5 col-xl-4 bg-white text-dark p-3 mt-5">
<h1>Löschen des Bereichs
{# Translators: The Application Name: default LAMa #}
<h1>{{ _('RealmDelete') }}
<span class="text-uppercase font-weight-bold">{{ realm.name }}</span></h1>
<div class="alert alert-warning" role="alert">
{# Translators: The Application Name: default LAMa #}
{# {{ gettext('RealmDeleteInformation %(realm)s %(realm_ldap_base_dn)')|safe|format(realm=realm, realm_ldap_base_dn=realm.ldap_base_dn) }}#}
<p>Achtung! Sie sind gerade dabei den Bereich <span
class="text-uppercase font-weight-bold">{{ realm.name }}</span> zu löschen.</p>
class="text-uppercase font-weight-bold">{{ realm }}</span> zu löschen.</p>
<p>Falls Sie sich sicher sind, dass Sie diesen Bereich löschen wollen, klicken Sie bitte auf
"Bereich löschen".
<p>Hierdurch werden <strong>Alle</strong> Nutzer und Gruppen gelöscht, die unter der Ldap Basis
DN {{ realm.ldap_base_dn }} eingetragen sind. Die Ldap Basis DN mit Ihren Organisationseinheiten
DN {{ realm.ldap_base_dn }} eingetragen sind. Die Ldap Basis DN mit Ihren
Organisationseinheiten
"groups" und "people" bleiben bestehen.</p>
<p>Bitte beachten Sie, dass die Daten der Nutzer, die in den
Diensten hochgeladen wurden, weiterhin bestehen bleiben. Diese Daten müssen vom
@ -20,9 +24,9 @@
</div>
<div class="d-flex">
<a href="{{ url('realm-detail', args = [realm.id]) }}"
class="btn btn-secondary mr-auto p-2">Abbrechen</a>
class="btn btn-secondary mr-auto p-2"> {{ _('RealmDeleteCancel') }}</a>
<a href="{{ url('realm-delete', args = [realm.id]) }}"
class="btn btn-danger p-2">Bereich löschen</a>
class="btn btn-danger p-2"> {{ _('RealmDeleteAgree') }}</a>
</div>
</div>
</div>

View File

@ -1,11 +0,0 @@
{% extends 'realm/realm_detailed.jinja2' %}
{% block realm_form %}
<h2>Email Account erstellen oder updaten</h2>
{% if form %}
<form method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ form.as_p()|safe }}
<button type="submit">Speichern</button>
</form>
{% endif %}
{% endblock %}

View File

@ -2,83 +2,62 @@
{% block admin_content %}
<div class="row ">
<div class="col-12 p-3">
<h1>Bereich <span style="text-transform: uppercase">{{ realm.name }}</span>
<h1> {{ _('Realm') }} <span style="text-transform: uppercase">{{ realm.name }}</span>
<small>
{% if request.user.is_superuser %}
<a href="{{ url('realm-delete-confirm', args=[realm.id]) }}"
class="h5 realm-delete-link"><i class="fas fa-dumpster"></i> <span
class="d-none d-md-inline-block">Bereich löschen</span></a>
class="d-none d-md-inline-block"> {{ _('RealmDetailRemoveRealm') }}</span></a>
{% endif %}
</small>
</h1>
{% if notice %}
<p style="color: green">{{ notice }}</p>
{% endif %}
{% if error %}
<p style="color: darkred">{{ error }}</p>
{% endif %}
{% if notice %}<p style="color: green">{{ notice }}</p>{% endif %}
{% if error %}<p style="color: darkred">{{ error }}</p>{% endif %}
{% block detail_content %}
<ul class="list-group list-group-flush w-100">
<li class="list-group-item">LDAP Organisationseinheit: {{ realm.ldap_base_dn }}</li>
<li class="list-group-item">Nutzeranzahl (Aktive/Inaktive): {{ users_count }}
<li class="list-group-item"> {{ _('RealmDetailLdapOU') }}: {{ realm.ldap_base_dn }}</li>
<li class="list-group-item"> {{ _('RealmDetailUserCount') }}: {{ users_count }}
({{ users_count-inactive_user_count }}/{{ inactive_user_count }})
<a
href="{{ url('realm-multiple-user-delete-inactive', args=[realm.id]) }}"
class="float-right">
Inaktive Nutzer löschen
{{ _('RealmDetailRemoveInactiveUser') }}
</a>
</li>
{% if realm.email %}
<li class="list-group-item">Email: {{ realm.email }}</li>
{% else %}
<li class="list-group-item">Email: <span class="text-danger">Noch ausstehend</span></li>
{% endif %}
<li class="list-group-item">{{ _('Email') }}:
{% if realm.email %}{{ realm.email }}{% else %}
<span class="text-danger">{{ _('RealmDetailStillPending') }}</span>{% endif %}
</li>
<li class="list-group-item">{{ _('RealmDetailAdminGroup') }}:
{% if realm.admin_group %}
<li class="list-group-item">Admin Gruppe: <a
href="{{ url('realm-group-detail', args=[realm.id, ldap_admin_group.dn]) }}"
class="badge badge-primary p-2">
{{ realm.admin_group }}</a></li>
<a href="{{ url('realm-group-detail', args=[realm.id, ldap_admin_group.dn]) }}"
class="badge badge-primary p-2">{{ realm.admin_group }}</a>
{% else %}
<li class="list-group-item">Admin Gruppe: <span class="text-warning">Noch ausstehend</span></li>
<span class="text-warning">{{ _('RealmDetailStillPending') }}</span>
{% endif %}
</li>
<li class="list-group-item">{{ _('RealmDetailDefaultGroup') }}:
{% if realm.default_group %}
<li class="list-group-item">Default Gruppe: <a
href="{{ url('realm-group-detail', args=[realm.id, ldap_default_group.dn]) }}"
class="badge badge-secondary p-2">
{{ realm.default_group }}</a>
</li>
<a href="{{ url('realm-group-detail', args=[realm.id, ldap_default_group.dn]) }}"
class="badge badge-secondary p-2">{{ realm.default_group }}</a>
{% else %}
<li class="list-group-item">Default Gruppe: <span class="text-warning">Noch ausstehend</span>
</li>
<span class="text-warning">{{ _('RealmDetailStillPending') }}</span>
{% endif %}
</li>
</ul>
<div class="d-flex mt-3">
{% if request.user.is_superuser %}
<a href="{{ url('realm-update', args=[realm.id]) }}" class="btn btn-primary mr-auto p-2"><i
class="fas fa-info-circle"></i> Bereichsinformationen
anpassen</a>
class="fas fa-info-circle"></i> {{ _('RealmDetailChangeRealmInfo') }}</a>
{% if realm.email %}
<a href="{{ url('realm-mail-test', args=[realm.id]) }}" class="btn btn-secondary p-2"><i
class="fas fa-paper-plane"></i> Test Mail</a>
class="fas fa-paper-plane"></i> {{ _('RealmDetailTestMail') }}</a>
{% endif %}
{% endif %}
</div>
{% block realm_form %}
{% endblock %}
{% endblock %}
{# <h2><a href="{{ url('realm-user-add', args=[realm.id]) }}">Nutzer hinzufügen</a></h2>#}
{# {% block user_content %}#}
{# <h2><a href="{{ url('realm-user-list', args=[realm.id]) }}">Nutzer</a></h2>#}
{# {% endblock %}#}
{# <h2><a href="{{ url('realm-group-add', args=[realm.id]) }}">Gruppen hinzufügen</a></h2>#}
{# {% block groups_content %}#}
{# <h2><a href="{{ url('realm-group-list', args=[realm.id]) }}">Gruppen</a></h2>#}
{# {% endblock %}#}
{# {% block extra_content %}#}
{# {% endblock %}#}
</div>
</div>
{% endblock %}

View File

@ -1,13 +1,13 @@
{% extends 'realm/realm_detailed.jinja2' %}
{% block detail_content %}
<h3>Gruppen</h3>
<h3>{{ _('Groups') }}</h3>
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Ldap Domain</th>
<th scope="col">Mitgliederanzahl</th>
<th scope="col">{{ _('Name') }}</th>
<th scope="col">{{ _('Description') }}</th>
<th scope="col">{{ _('MemberCount') }}</th>
</tr>
</thead>
<tbody>
@ -19,12 +19,14 @@
title="{{ group.description }}"
>{{ group.name }}</a>
</td>
<td>{{ group.dn }}</td>
<td data-toggle="tooltip"
data-placement="right"
title="{{ group.description }}">{{ group.description|truncate(100) }}</td>
<td>{{ group.members|length }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="{{ url('realm-group-add', args=[realm.id]) }}" class="btn btn-primary"><i class="far fa-plus-square"></i>
Gruppen hinzufügen</a>
{{ _('AddGroups') }}</a>
{% endblock %}

View File

@ -3,12 +3,12 @@
{% import 'macros/utils_macros.jinja2' as mutils %}
{% block admin_content %}
<h2>Bereiche</h2>
<h2>{{ _('Realms') }}</h2>
{{ mutils.get_realm_table(realm_wrappers) }}
{% if request.user.is_superuser %}
<div class="row justify-content-center justify-content-sm-center">
<div class="col-12 col-sm-8 col-md-8 col-lg-6 col-xl-5 bg-white text-dark p-3 mt-5">
<a href="{{ url('realm-add') }}" class="btn btn-primary w-100">Bereich hinzufügen</a>
<a href="{{ url('realm-add') }}" class="btn btn-primary w-100">{{ _('RealmAdd') }}</a>
</div>
</div>
{% endif %}

View File

@ -11,9 +11,9 @@
{{ mform.select_input(form.admin_group) }}
{{ mform.select_input(form.default_group) }}
<div class="d-flex mt-4">
<button type="submit" class="btn btn-primary mr-auto p-2">Speichern</button>
<button type="submit" class="btn btn-primary mr-auto p-2">{{ _('Save') }}</button>
<a href="{{ url('realm-detail', args = [realm.id]) }}"
class="btn btn-secondary p-2">Abbrechen</a>
class="btn btn-secondary p-2">{{ _('Cancel') }}</a>
</div>
</form>
{% endif %}

View File

@ -2,11 +2,10 @@
{% import 'macros/utils_macros.jinja2' as mutils %}
{% block detail_content %}
<h2>Nutzer </h2>
<h2>{{ _('User') }}</h2>
{{ mutils.get_user_table(realm, realm_user) }}
<a href="{{ url('realm-user-add', args=[realm.id]) }}" class="btn btn-primary"><i class="fas fa-user-plus"></i>
Nutzer hinzufügen</a>
{{ _('AddUser') }}</a>
<a href="{{ url('realm-multiple-user-delete-confirm', args=[realm.id]) }}" class="btn btn-danger float-right"><i
class="fas fa-trash"></i> Mehrere Nutzer
Löschen</a>
class="fas fa-trash"></i> {{ _('RemoveMultipleUser') }}</a>
{% endblock %}

View File

@ -3,13 +3,11 @@
{% import 'macros/utils_macros.jinja2' as mutils %}
{% block detail_content %}
<h2>Nutzer löschen</h2>
<h2>{{ _('DeleteUser') }}</h2>
{{ mutils.get_warning_box(extra_errors) }}
{% if blocked_users %}
<div class="alert alert-warning">
<h3>Admin User festgestellt</h3>
<p>Die folgenden Nutzer können nicht gelöscht werden, da Sie noch Mitglieder von ein oder mehreren Admin
Gruppen sind. Bitte tragen Sie diese vorher aus den Admin Gruppen.</p>
{{ _('MultipleUserDeleteError')|safe }}
<ul>
{% for blocked_user in blocked_users %}
<li>{{ blocked_user.username }}</li>
@ -22,15 +20,15 @@
class="form-control"
placeholder="Personen Suche"
id="data-table-search-input">
<label for="data-table-search-input">Suche</label>
<label for="data-table-search-input">{{ _('Search') }}Suche</label>
</div>
<form action="{{ url('realm-multiple-user-delete', args=[realm.id]) }}" method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ mform.user_select_table_input(users=[], deletable_users=deletable_users, blocked_users=blocked_users, name="ldap_users",css_classes='',show_lastlogin=True, checkbox_label_classes='table-checkbox-control-label') }}
<div class="d-flex mt-4">
<button type="submit" class="btn btn-danger mr-auto p-2">Ausführen</button>
<button type="submit" class="btn btn-danger mr-auto p-2">{{ _('Execute') }}</button>
<a href="{{ url('realm-user-list', args = [realm.id]) }}"
class="btn btn-secondary p-2">Abbrechen</a>
class="btn btn-secondary p-2">{{ _('Cancel') }}</a>
</div>
</form>
{% endblock %}

View File

@ -2,21 +2,21 @@
{% import 'macros/form_macros.jinja2' as mform %}
{% block detail_content %}
<h2>Nutzer löschen</h2>
<h2>{{ _('DeleteUser') }}</h2>
<div class="form-group w-25 float-right">
<input type="text"
class="form-control"
placeholder="Personen Suche"
id="data-table-search-input">
<label for="data-table-search-input">Suche</label>
<label for="data-table-search-input">{{ _('Search') }}</label>
</div>
<form action="{{ url('realm-multiple-user-delete-confirm', args=[realm.id]) }}" method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ mform.user_select_table_input(users, name="ldap_users",css_classes='',show_lastlogin=True, checkbox_label_classes='table-checkbox-control-label') }}
<div class="d-flex mt-4">
<button type="submit" class="btn btn-danger mr-auto p-2">Ausführen</button>
<button type="submit" class="btn btn-danger mr-auto p-2">{{ _('Execute') }}</button>
<a href="{{ url('realm-user-list', args = [realm.id]) }}"
class="btn btn-secondary p-2">Abbrechen</a>
class="btn btn-secondary p-2">{{ _('Cancel') }}</a>
</div>
</form>
{% endblock %}

View File

@ -5,6 +5,7 @@
<div class="col-12 col-sm-8 col-md-7 col-lg-5 col-xl-4 bg-white text-dark p-3 mt-5">
<div class="alert alert-info" role="alert">
<p>
{# TODO: Translation #}
Ihr Account im Bereich {{ realm.name }} und Ihre Gruppenzugehörigkeiten wurden erfolgreich
gelöscht.
</p>

View File

@ -2,19 +2,18 @@
{% import 'macros/form_macros.jinja2' as mform %}
{% block detail_content %}
<h2>Nutzer anlegen</h2>
<h2>{{ _('AddUser') }}</h2>
{% if extra_error %}
<div class="alert alert-warning">{{ extra_error }}</div>
{% endif %}
<form action="{{ url('realm-user-add', args=[realm.id]) }}" method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{# {{ form.as_p() }}#}
{{ mform.text_input(form.username) }}
{{ mform.email_input(form.email) }}
<div class="d-flex mt-4">
<button type="submit" class="btn btn-primary mr-auto p-2">Speichern</button>
<button type="submit" class="btn btn-primary mr-auto p-2">{{ _('Save') }}</button>
<a href="{{ url('realm-user-list', args = [realm.id]) }}"
class="btn btn-secondary p-2">Abbrechen</a>
class="btn btn-secondary p-2">{{ _('Cancel') }}</a>
</div>
</form>
{% endblock %}

View File

@ -5,6 +5,7 @@
{% if user.user %}
{% if user.deleted_user.deletion_date %}
<h3 class="text-danger">{{ user.user.username }}
{# TODO: translate #}
<small>Nutzer wird vorraussichtlich am {{ user.deleted_user.deletion_date.strftime('%d.%m.%Y') }}
gelöscht
</small>
@ -18,23 +19,22 @@
{% endif %}
{% if not form %}
<ul class="list-group list-group-flush w-100">
<li class="list-group-item">Ldap Domain: {{ user.user.dn }}</li>
<li class="list-group-item"> Anzeigename:
<li class="list-group-item">{{ _('LdapDomain') }}: {{ user.user.dn }}</li>
<li class="list-group-item">{{ _('UserDisplayName') }}
{% if user.user.display_name %}
{{ user.user.display_name }}
{% else %}
<span class="text-warning"> Noch nicht generiert </span>
<span class="text-warning"> {{ _('NotGeneratedYet') }}</span>
{% endif %}
</li>
<li class="list-group-item">Vorname: {{ user.user.first_name }}</li>
<li class="list-group-item">Nachname: {{ user.user.last_name }}</li>
<li class="list-group-item">Email: {{ user.user.email }}</li>
<li class="list-group-item">Passwort: <a
href="{{ url('realm-user-password-reset', args = [realm.id, user.user.dn]) }}" class="float-right">Nutzerpasswort
zurücksetzen</a></li>
<li class="list-group-item">Telefon: {{ user.user.phone }}</li>
<li class="list-group-item">Mobiltelefon: {{ user.user.mobile_phone }}</li>
<li class="list-group-item">Gruppen:
<li class="list-group-item">{{ _('FirstName') }}: {{ user.user.first_name }}</li>
<li class="list-group-item">{{ _('LastName') }}: {{ user.user.last_name }}</li>
<li class="list-group-item">{{ _('Email') }}: {{ user.user.email }}</li>
<li class="list-group-item">{{ _('Password') }}: <a
href="{{ url('realm-user-password-reset', args = [realm.id, user.user.dn]) }}" class="float-right">{{ _('UserPasswordReset') }}</a></li>
<li class="list-group-item">{{ _('Phone') }}: {{ user.user.phone }}</li>
<li class="list-group-item">{{ _('MobilePhone') }}: {{ user.user.mobile_phone }}</li>
<li class="list-group-item">{{ _('Groups') }}:
{% if groups %}
{% for group in groups %}
<a href="{{ url('realm-group-detail', args=[realm.id, group.dn]) }}"
@ -44,14 +44,14 @@
class="badge badge-secondary p-1">{{ group.name }}</a>
{% endfor %}
{% else %}
<span class="text-warning">Keine zugewiesen</span>
<span class="text-warning">{{ _('NoneGroupAssigned') }}</span>
{% endif %}
{% if not user.deleted_user.deletion_date %}
<a href="{{ url('realm-user-group-update', args=[realm.id, user.user.dn]) }}" class="float-right">
Gruppen zuweisen</a>
{{ _('AssignGroups') }}</a>
{% endif %}
</li>
<li class="list-group-item">Zuletzt eingeloggt:
<li class="list-group-item">{{ _('LastLogin') }}:
{% if user.user.last_login %}
{{ user.user.last_login.strftime('%d.%m.%Y') }}
{% else %}
@ -59,10 +59,10 @@
{% endif %}</li>
{% if user.deleted_user.deletion_date %}
<li class="list-group-item text-danger">
Löschvorgang: {{ user.deleted_user.deletion_date.strftime('%d.%m.%Y') }}
{{ _('DeletionProcess') }}: {{ user.deleted_user.deletion_date.strftime('%d.%m.%Y') }}
<a href="{{ url('realm-user-delete-cancel', args=[realm.id, user.user.dn]) }}"
class="float-right">
Löschvorgang abbrechen</a>
{{ _('CancelDeletionProcess') }}</a>
</li>
{% endif %}
</ul>
@ -70,19 +70,19 @@
{% if not user.deleted_user.deletion_date %}
<a href="{{ url('realm-user-update', args = [realm.id, user.user.dn]) }}"
class="btn btn-primary mr-auto p-2">
<i class="fas fa-user-cog"></i> Nutzer bearbeiten
<i class="fas fa-user-cog"></i> {{ _('UpdateUser') }}
</a>
{% if not user.user.last_login %}
<a href="{{ url('realm-user-resend-welcome-mail', args = [realm.id, user.user.dn]) }}"
class="btn btn-secondary p-2 mr-2">
<i class="fas fa-paper-plane"></i> Wilkommensmail erneut senden
<i class="fas fa-paper-plane"></i> {{ _('ResendWelcomeMail') }}
</a>
{% endif %}
<a href="{{ url('realm-user-delete-confirm', args = [realm.id, user.user.dn]) }}"
class="btn btn-danger p-2">
<i class="fas fa-trash"></i> Nutzer löschen
<i class="fas fa-trash"></i> {{ _('DeleteUser') }}
</a>
{% endif %}
</div>
@ -94,9 +94,9 @@
{{ mform.text_input(form.first_name) }}
{{ mform.text_input(form.last_name) }}
<div class="d-flex mt-4">
<button type="submit" class="btn btn-primary mr-auto p-2">Speichern</button>
<button type="submit" class="btn btn-primary mr-auto p-2">{{ _('Save') }}</button>
<a href="{{ url('realm-user-detail', args = [realm.id, user.dn]) }}"
class="btn btn-secondary p-2">Abbrechen</a>
class="btn btn-secondary p-2">{{ _('Cancel') }}</a>
</div>
</form>
{% endif %}

View File

@ -3,12 +3,12 @@
{% import 'macros/utils_macros.jinja2' as mutils %}
{% block detail_content %}
<h3><span class="text-uppercase">{{ user.username }}</span> - Gruppenzuweisung ändern</h3>
<h3><span class="text-uppercase">{{ user.username }}</span> - {{ _('UpdateGroupMembership') }}</h3>
{{ mutils.get_warning_box(extra_error) }}
<div class="row">
<div class="col-6">
<form method="post" action="{{ url('realm-user-group-update-delete', args = [realm.id, user.dn]) }}">
<button type="submit" class="btn btn-warning w-100 mb-2"><i class="fas fa-minus-square"></i> Entfernen
<button type="submit" class="btn btn-warning w-100 mb-2"><i class="fas fa-minus-square"></i> {{ _('UserGroupDelete') }}
</button>
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
<ul>
@ -27,7 +27,7 @@
</div>
<div class="col-6">
<form method="post" action="{{ url('realm-user-group-update-add', args = [realm.id, user.dn]) }}">
<button type="submit" class="btn btn-success w-100 mb-2"><i class="fas fa-plus-square"></i> Hinzufügen
<button type="submit" class="btn btn-success w-100 mb-2"><i class="fas fa-plus-square"></i> {{ _('UserGroupAdd') }}
</button>
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
<ul>
@ -47,6 +47,6 @@
</div>
<div class="mt-4">
<a href="{{ url('realm-user-detail', args = [realm.id, user.dn]) }}"
class="btn btn-primary p-2 float-right w-25">Fertig</a>
class="btn btn-primary p-2 float-right w-25">{{ _('Done') }}</a>
</div>
{% endblock %}

View File

@ -7,6 +7,7 @@
<div class="row justify-content-center justify-content-sm-center">
<div class="col-12 col-sm-8 col-md-7 col-lg-5 col-xl-4 bg-white text-dark p-3 mt-5">
<div class="alert alert-warning" role="alert">
{# TODO: Translation #}
<p><strong>Achtung!</strong> Sie sind gerade dabei den Account von <strong>{{ user.username }}</strong> zu schließen.
</p>
<p>Falls Sie sich sicher sind, dass Sie diesen Nutzer löschen wollen, klicken Sie bitte auf "Nutzer
@ -21,9 +22,9 @@
</div>
<div class="d-flex">
<a href="{{ url(cancel_link.name, args = cancel_link.args) }}"
class="btn btn-secondary mr-auto p-2">Abbrechen</a>
class="btn btn-secondary mr-auto p-2">{{ _('Cancel') }}</a>
<a href="{{ url(deletion_link.name, args = deletion_link.args) }}"
class="btn btn-danger p-2">Nutzer löschen</a>
class="btn btn-danger p-2">{{ _('DeleteUser') }}</a>
</div>
</div>
</div>