Compare commits
8 Commits
4879eec69e
...
5462abd0d7
Author | SHA1 | Date |
---|---|---|
Jorge Pastor | 5462abd0d7 | |
Jorge Pastor | c5c7d2d6d3 | |
Jorge Pastor | 51f61b2a30 | |
Jorge Pastor | 9f8e6ce9b8 | |
Jorge Pastor | e5c046c3af | |
Jorge Pastor | 228ee30d6e | |
Jorge Pastor | ecd273bcc3 | |
Jorge Pastor | b346d5403b |
|
@ -2,12 +2,19 @@ from django import forms
|
|||
from django.contrib.auth.forms import AuthenticationForm
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from orchestra.utils.python import random_ascii
|
||||
from django.forms.widgets import HiddenInput
|
||||
|
||||
from django.contrib.auth.hashers import make_password
|
||||
|
||||
from orchestra.forms.widgets import SpanWidget
|
||||
from orchestra.forms import widgets
|
||||
from django.utils.safestring import mark_safe
|
||||
|
||||
from orchestra.contrib.domains.models import Domain, Record
|
||||
from orchestra.contrib.mailboxes.models import Address, Mailbox
|
||||
from orchestra.contrib.systemusers.models import WebappUsers, SystemUser
|
||||
from orchestra.contrib.saas.models import SaaS
|
||||
from orchestra.contrib.musician.validators import ValidateZoneMixin
|
||||
|
||||
from . import api
|
||||
|
|
Binary file not shown.
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-08-06 09:39+0000\n"
|
||||
"POT-Creation-Date: 2024-11-08 10:19+0000\n"
|
||||
"PO-Revision-Date: 2021-11-25 12:53+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
|
@ -30,19 +30,19 @@ msgstr "No trobem cap objecte que coincideixi amb la teva consulta"
|
|||
msgid "No mailbox found matching the query"
|
||||
msgstr "No trobem cap bústia que coincideixi amb la teva consulta"
|
||||
|
||||
#: forms.py:35 forms.py:104
|
||||
#: forms.py:42 forms.py:111
|
||||
msgid "The two password fields didn’t match."
|
||||
msgstr "Les contrasenyes introduïdes no coincideixen."
|
||||
|
||||
#: forms.py:38 forms.py:108
|
||||
#: forms.py:45 forms.py:115
|
||||
msgid "Password"
|
||||
msgstr "Contrasenya"
|
||||
|
||||
#: forms.py:43 forms.py:113
|
||||
#: forms.py:50 forms.py:120
|
||||
msgid "Password confirmation"
|
||||
msgstr "Confirma la contrasenya"
|
||||
|
||||
#: forms.py:46 forms.py:116
|
||||
#: forms.py:53 forms.py:123
|
||||
msgid "Enter the same password as before, for verification."
|
||||
msgstr "Introdueix la mateixa contrasenya per verificar-la."
|
||||
|
||||
|
@ -56,13 +56,14 @@ msgid "Mailing lists"
|
|||
msgstr "Llistes de correu"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: mixins.py:17 views.py:68
|
||||
#: mixins.py:17 views.py:119
|
||||
msgid "Dashboard"
|
||||
msgstr "Panell de gestió"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: mixins.py:18 templates/musician/dashboard.html:89
|
||||
#: templates/musician/dashboard.html:90 views.py:202
|
||||
#: mixins.py:18 templates/musician/dashboard.html:106
|
||||
#: templates/musician/dashboard.html:107
|
||||
#: templates/musician/websites/website_detail.html:17 views.py:259
|
||||
msgid "Domains"
|
||||
msgstr "Dominis"
|
||||
|
||||
|
@ -71,28 +72,33 @@ msgid "Mails"
|
|||
msgstr "Correus"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: mixins.py:21 models.py:146 views.py:542
|
||||
#: mixins.py:21 models.py:146 views.py:599
|
||||
msgid "Databases"
|
||||
msgstr "Bases de dades"
|
||||
|
||||
msgid "Database"
|
||||
msgstr "Bases de dades"
|
||||
|
||||
#: mixins.py:22
|
||||
msgid "SaaS"
|
||||
msgstr "SaaS"
|
||||
|
||||
#: mixins.py:23
|
||||
msgid "Nextcloud"
|
||||
msgstr "Nextcloud"
|
||||
|
||||
#: mixins.py:24
|
||||
msgid "Community WP"
|
||||
msgstr "WP Comunitari"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: mixins.py:23 websites/views.py:24
|
||||
#: mixins.py:25 websites/views.py:24
|
||||
msgid "Websites"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: mixins.py:24 webapps/views.py:25
|
||||
#: mixins.py:26 webapps/views.py:25
|
||||
msgid "Webapps"
|
||||
msgstr ""
|
||||
|
||||
#: mixins.py:25
|
||||
#: mixins.py:27
|
||||
msgid "Users"
|
||||
msgstr "Usuaris"
|
||||
|
||||
|
@ -101,7 +107,7 @@ msgid "Description details for databases page."
|
|||
msgstr "Consulta la configuració de les teves bases de dades."
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: models.py:234 views.py:342
|
||||
#: models.py:234 views.py:399
|
||||
msgid "Mail addresses"
|
||||
msgstr "Adreces de correu"
|
||||
|
||||
|
@ -135,6 +141,58 @@ msgstr ""
|
|||
"Si tens algun servei SaaS (Software as a Service) contractat, aquí trobaràs "
|
||||
"els seus detalls de configuració."
|
||||
|
||||
#: saas/forms.py:16
|
||||
msgid "Site URL"
|
||||
msgstr ""
|
||||
|
||||
#: saas/forms.py:50
|
||||
msgid ""
|
||||
"ID of this blog used by WordPress, the only attribute that doesn't change."
|
||||
msgstr ""
|
||||
"ID d'aquest blog utilitzat per WordPress, l'únic atribut que no canvia."
|
||||
|
||||
#: saas/forms.py:51 templates/musician/address_list.html:25
|
||||
msgid "Email"
|
||||
msgstr "Correu electrònic"
|
||||
|
||||
#: saas/forms.py:52
|
||||
msgid ""
|
||||
"A new user will be created if the above email address is not in the database."
|
||||
"<br>The username and password will be mailed to this email address."
|
||||
msgstr ""
|
||||
"Es crearà un nou usuari si l'adreça de correu electrònic anterior no és a la base de dades."
|
||||
"<br>El nom d'usuari i la contrasenya s'enviaran a aquesta adreça de correu electrònic."
|
||||
|
||||
#: saas/forms.py:89
|
||||
#, python-format
|
||||
msgid "Suggestion: %s"
|
||||
msgstr "Suggerimet: %s"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: saas/views.py:24 saas/views.py:38 templates/musician/domain_list.html:51
|
||||
msgid "Software as a Service"
|
||||
msgstr "Software as a Service"
|
||||
|
||||
#: saas/views.py:25
|
||||
msgid "Nextcloud Service"
|
||||
msgstr "Servei Nextcloud"
|
||||
|
||||
#: saas/views.py:26
|
||||
msgid "Members can manage their Nextcloud users in this section."
|
||||
msgstr "Els socis/ies poden gestionar els seus usuaris de Nextcloud en aquesta secció."
|
||||
|
||||
#: saas/views.py:39
|
||||
msgid "Community WordPress"
|
||||
msgstr "WordPress comunitari"
|
||||
|
||||
#: saas/views.py:40
|
||||
msgid ""
|
||||
"Pangea's multisite WordPress service. Members can have their WordPress on "
|
||||
"this community WordPress hosted and maintained by Pangea."
|
||||
msgstr ""
|
||||
"Servei de Wordpress multisite de Pangea. "
|
||||
"Els socis/ies poden tenir el seu WP en aquest WP comunitari alltijat i mantigut per Pangea."
|
||||
|
||||
#: templates/auth/login.html:59
|
||||
msgid "Log in"
|
||||
msgstr "Accedeix"
|
||||
|
@ -166,6 +224,7 @@ msgstr ""
|
|||
#: templates/musician/mailbox_check_delete.html:11
|
||||
#: templates/musician/mailing_check_delete.html:8
|
||||
#: templates/musician/record_check_delete.html:9
|
||||
#: templates/musician/saas_check_delete.html:8
|
||||
#: templates/musician/webapps/webappoption_check_delete.html:9
|
||||
#: templates/musician/websites/websiteoption_check_delete.html:13
|
||||
msgid "WARNING: This action cannot be undone."
|
||||
|
@ -178,8 +237,12 @@ msgstr "AVÍS: Aquesta acció es irreversible."
|
|||
#: templates/musician/mailbox_form.html:20
|
||||
#: templates/musician/mailing_check_delete.html:9
|
||||
#: templates/musician/mailinglist_form.html:30
|
||||
#: templates/musician/nextcloud_change_password.html:11
|
||||
#: templates/musician/record_check_delete.html:11
|
||||
#: templates/musician/record_form.html:16
|
||||
#: templates/musician/saas_check_delete.html:9
|
||||
#: templates/musician/saas_nextcloud_form.html:30
|
||||
#: templates/musician/saas_wordpress_form.html:31
|
||||
#: templates/musician/systemuser_change_password.html:11
|
||||
#: templates/musician/webapps/webapp_form.html:11
|
||||
#: templates/musician/webapps/webapp_option_form.html:18
|
||||
|
@ -199,6 +262,9 @@ msgstr "Cancel·lar"
|
|||
#: templates/musician/mailinglist_form.html:34
|
||||
#: templates/musician/record_check_delete.html:10
|
||||
#: templates/musician/record_form.html:20
|
||||
#: templates/musician/saas_check_delete.html:10
|
||||
#: templates/musician/saas_nextcloud_form.html:35
|
||||
#: templates/musician/saas_wordpress_form.html:35
|
||||
#: templates/musician/webapps/webapp_form.html:15
|
||||
#: templates/musician/webapps/webappoption_check_delete.html:10
|
||||
#: templates/musician/websites/websiteoption_check_delete.html:14
|
||||
|
@ -209,7 +275,10 @@ msgstr "Esborrar"
|
|||
#: templates/musician/mailbox_change_password.html:12
|
||||
#: templates/musician/mailbox_form.html:21
|
||||
#: templates/musician/mailinglist_form.html:31
|
||||
#: templates/musician/nextcloud_change_password.html:12
|
||||
#: templates/musician/record_form.html:17
|
||||
#: templates/musician/saas_nextcloud_form.html:31
|
||||
#: templates/musician/saas_wordpress_form.html:32
|
||||
#: templates/musician/systemuser_change_password.html:12
|
||||
#: templates/musician/webapps/webapp_form.html:12
|
||||
#: templates/musician/webapps/webapp_option_form.html:19
|
||||
|
@ -229,17 +298,13 @@ msgstr "Filtrat"
|
|||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: templates/musician/address_list.html:25
|
||||
msgid "Email"
|
||||
msgstr "Correu electrònic"
|
||||
|
||||
#: templates/musician/address_list.html:26
|
||||
msgid "Domain"
|
||||
msgstr "Domini"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: templates/musician/address_list.html:27 templates/musician/mail_base.html:22
|
||||
#: views.py:428
|
||||
#: views.py:485
|
||||
msgid "Mailboxes"
|
||||
msgstr "Bústies de correu"
|
||||
|
||||
|
@ -261,7 +326,7 @@ msgstr "Perfil"
|
|||
|
||||
#. Translators: This message appears on the page title
|
||||
#: templates/musician/base.html:71 templates/musician/billing.html:6
|
||||
#: views.py:300
|
||||
#: views.py:357
|
||||
msgid "Billing"
|
||||
msgstr "Factures"
|
||||
|
||||
|
@ -287,8 +352,10 @@ msgstr "Data de la factura"
|
|||
|
||||
#: templates/musician/billing.html:21 templates/musician/database_list.html:22
|
||||
#: templates/musician/domain_detail.html:38
|
||||
#: templates/musician/webapps/webapp_detail.html:94
|
||||
#: templates/musician/webapps/webapp_detail.html:17
|
||||
#: templates/musician/webapps/webapp_detail.html:96
|
||||
#: templates/musician/webapps/webapp_list.html:26
|
||||
#: templates/musician/websites/website_list.html:72
|
||||
msgid "Type"
|
||||
msgstr "Tipus"
|
||||
|
||||
|
@ -322,11 +389,14 @@ msgid "Show history"
|
|||
msgstr "Mostrar historial"
|
||||
|
||||
#: templates/musician/database_list.html:21
|
||||
#: templates/musician/mailbox_list.html:30 templates/musician/saas_list.html:19
|
||||
#: templates/musician/mailbox_list.html:30
|
||||
#: templates/musician/mailinglist_list.html:24
|
||||
#: templates/musician/saas_list.html:19
|
||||
#: templates/musician/saas_nextcloud_list.html:13
|
||||
#: templates/musician/saas_wordpress_list.html:13
|
||||
#: templates/musician/webapps/webapp_list.html:25
|
||||
#: templates/musician/websites/website_detail.html:77
|
||||
#: templates/musician/websites/website_list.html:20
|
||||
#: templates/musician/mailinglist_list.html:24
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
|
@ -347,13 +417,17 @@ msgstr "Obre el gestor de bases de dades"
|
|||
#. Translators: database page when there isn't any database.
|
||||
#. Translators: saas page when there isn't any saas.
|
||||
#: templates/musician/database_list.html:58
|
||||
#: templates/musician/saas_list.html:53
|
||||
#: templates/musician/saas_list.html:60
|
||||
#: templates/musician/saas_nextcloud_list.html:48
|
||||
#: templates/musician/saas_wordpress_list.html:48
|
||||
msgid "Ooops! Looks like there is nothing here!"
|
||||
msgstr "Mmmh, sembla que aquí no hi ha res!"
|
||||
|
||||
#: templates/musician/domain_detail.html:5
|
||||
#: templates/musician/mailinglist_form.html:16
|
||||
#: templates/musician/record_form.html:5
|
||||
#: templates/musician/saas_nextcloud_form.html:16
|
||||
#: templates/musician/saas_wordpress_form.html:16
|
||||
#: templates/musician/webapps/webapp_detail.html:5
|
||||
#: templates/musician/webapps/webapp_option_form.html:7
|
||||
#: templates/musician/websites/website_create_option_form.html:7
|
||||
|
@ -393,7 +467,7 @@ msgstr ""
|
|||
" "
|
||||
|
||||
#: templates/musician/domain_detail.html:39
|
||||
#: templates/musician/webapps/webapp_detail.html:95
|
||||
#: templates/musician/webapps/webapp_detail.html:97
|
||||
#: templates/musician/websites/website_detail.html:78
|
||||
msgid "Value"
|
||||
msgstr "Valor"
|
||||
|
@ -439,11 +513,6 @@ msgstr "adreces de correu creades"
|
|||
msgid "Mail list"
|
||||
msgstr "Llista de correu"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: templates/musician/domain_list.html:51 views.py:565
|
||||
msgid "Software as a Service"
|
||||
msgstr "Software as a Service"
|
||||
|
||||
#: templates/musician/domain_list.html:53
|
||||
msgid "Nothing installed"
|
||||
msgstr "No tens res instal·lat"
|
||||
|
@ -497,6 +566,8 @@ msgstr "Adreces de correu"
|
|||
|
||||
#: templates/musician/mailbox_change_password.html:5
|
||||
#: templates/musician/mailbox_form.html:24
|
||||
#: templates/musician/nextcloud_change_password.html:5
|
||||
#: templates/musician/saas_nextcloud_form.html:34
|
||||
#: templates/musician/systemuser_change_password.html:5
|
||||
#: templates/musician/webapps/webappuser_change_password.html:5
|
||||
msgid "Change password"
|
||||
|
@ -559,9 +630,11 @@ msgstr "Actualitzar llista"
|
|||
msgid "Create list"
|
||||
msgstr "Crear llista"
|
||||
|
||||
#: templates/musician/websites/website_list.html:23
|
||||
#: templates/musician/saas_list.html:20
|
||||
#: templates/musician/mailinglist_list.html:25
|
||||
#: templates/musician/saas_list.html:20
|
||||
#: templates/musician/saas_nextcloud_list.html:14
|
||||
#: templates/musician/saas_wordpress_list.html:14
|
||||
#: templates/musician/websites/website_list.html:23
|
||||
msgid "Status"
|
||||
msgstr "Estat"
|
||||
|
||||
|
@ -625,7 +698,15 @@ msgstr "Actualitza la contrasenya a"
|
|||
msgid "Add record to"
|
||||
msgstr "Afegir registre a"
|
||||
|
||||
#: templates/musician/saas_check_delete.html:7
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure that you want remove the list:"
|
||||
msgid "Are you sure that you want remove the SaaS:"
|
||||
msgstr "Estàs segur/a que vols esborrar la següent llista:"
|
||||
|
||||
#: templates/musician/saas_list.html:21
|
||||
#: templates/musician/saas_nextcloud_list.html:15
|
||||
#: templates/musician/saas_wordpress_list.html:15
|
||||
msgid "Service"
|
||||
msgstr "Servei"
|
||||
|
||||
|
@ -633,14 +714,35 @@ msgstr "Servei"
|
|||
msgid "Service info"
|
||||
msgstr "Informació del servei"
|
||||
|
||||
#: templates/musician/saas_list.html:30
|
||||
#: templates/musician/saas_list.html:31
|
||||
#: templates/musician/saas_nextcloud_list.html:24
|
||||
#: templates/musician/saas_wordpress_list.html:24
|
||||
msgid "Installed on"
|
||||
msgstr "Instal·lat a"
|
||||
|
||||
#: templates/musician/saas_list.html:37 templates/musician/saas_list.html:39
|
||||
#: templates/musician/saas_list.html:38 templates/musician/saas_list.html:40
|
||||
#: templates/musician/saas_nextcloud_list.html:31
|
||||
#: templates/musician/saas_nextcloud_list.html:33
|
||||
#: templates/musician/saas_wordpress_list.html:31
|
||||
#: templates/musician/saas_wordpress_list.html:33
|
||||
msgid "Open service admin panel"
|
||||
msgstr "Obre el panell d’administració del servei"
|
||||
|
||||
#: templates/musician/saas_list.html:69
|
||||
msgid "New SaaS"
|
||||
msgstr "Nou SaaS"
|
||||
|
||||
#: templates/musician/saas_nextcloud_form.html:20
|
||||
#: templates/musician/saas_wordpress_form.html:20
|
||||
msgid "Update SaaS"
|
||||
msgstr "Actualitzar SaaS"
|
||||
|
||||
#: templates/musician/saas_nextcloud_form.html:22
|
||||
#: templates/musician/saas_wordpress_form.html:22
|
||||
|
||||
msgid "Create SaaS"
|
||||
msgstr "Crear SaaS"
|
||||
|
||||
#: templates/musician/systemuser_list.html:6
|
||||
msgid ""
|
||||
"The main user is your system's main user on each server. You'll be able to "
|
||||
|
@ -648,12 +750,13 @@ msgid ""
|
|||
"but you'll never be able to edit content on a website."
|
||||
msgstr ""
|
||||
"L'usuari principal existeix en cada servidor web. Podrà veure els registres "
|
||||
"dels seus llocs web a (/home/account/logs) i tot el contingut web (/home/account/webapps/*), "
|
||||
"però mai podrà editar el contingut en un lloc web."
|
||||
"dels seus llocs web a (/home/account/logs) i tot el contingut web (/home/"
|
||||
"account/webapps/*), però mai podrà editar el contingut en un lloc web."
|
||||
|
||||
#: templates/musician/systemuser_list.html:7
|
||||
msgid "This user only has write permissions in their own directory."
|
||||
msgstr "Aquest usuari només té permisos d'escriptura en el seu propi directori."
|
||||
msgstr ""
|
||||
"Aquest usuari només té permisos d'escriptura en el seu propi directori."
|
||||
|
||||
#: templates/musician/systemuser_list.html:18
|
||||
#: templates/musician/webapps/webappuser_list.html:15
|
||||
|
@ -661,6 +764,7 @@ msgid "Username"
|
|||
msgstr "Nom d’usuari/a"
|
||||
|
||||
#: templates/musician/systemuser_list.html:19
|
||||
#: templates/musician/webapps/webapp_detail.html:47
|
||||
#: templates/musician/webapps/webappuser_list.html:16
|
||||
#: templates/musician/websites/website_detail.html:49
|
||||
msgid "Path"
|
||||
|
@ -674,23 +778,23 @@ msgstr "Usuari Principal"
|
|||
msgid "SFTP Users"
|
||||
msgstr "Usuaris SFTP"
|
||||
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:72
|
||||
msgid ""
|
||||
"\n"
|
||||
" Initial database and App admin password. <br>\n"
|
||||
" Subsequent changes to the admin password will not be reflected.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Contrasenya inicial de la base de dades i de l'administrador de l'aplicació. <br>"
|
||||
"Els canvis posteriors a la contrasenya de l'administrador no es reflectiran.\n"
|
||||
" "
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:7
|
||||
msgid "WebApp Options for"
|
||||
msgstr "Opcions WebApp per"
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:13
|
||||
#: templates/musician/webapps/webapp_list.html:29
|
||||
#: templates/musician/webapps/webappuser_list.html:17
|
||||
#: templates/musician/websites/website_detail.html:13
|
||||
#: templates/musician/websites/website_list.html:22
|
||||
msgid "Server"
|
||||
msgstr "Servidor"
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:27
|
||||
#: templates/musician/websites/website_list.html:82
|
||||
msgid "SFTP user"
|
||||
msgstr "Usuari SFTP"
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:58
|
||||
msgid "Database:"
|
||||
msgstr "Bases de dades"
|
||||
|
@ -703,26 +807,37 @@ msgstr "Usuari DB"
|
|||
msgid "Password:"
|
||||
msgstr "Contrasenya"
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:80
|
||||
#: templates/musician/webapps/webapp_detail.html:72
|
||||
msgid ""
|
||||
"\n"
|
||||
" Initial database and App admin password. <br>\n"
|
||||
" Subsequent changes to the admin password will not be reflected.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Contrasenya inicial de la base de dades i de l'administrador de l'aplicació. "
|
||||
"<br>Els canvis posteriors a la contrasenya de l'administrador no es "
|
||||
"reflectiran.\n"
|
||||
" "
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:82
|
||||
msgid "PHP settings"
|
||||
msgstr "Configuració PHP"
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:85
|
||||
#: templates/musician/webapps/webapp_detail.html:87
|
||||
msgid "PHP settings page description."
|
||||
msgstr "Consulta aquí la teva configuració DNS."
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:117
|
||||
msgid "This WebApp has PHP options by default, create one if you need it."
|
||||
msgstr "Aquesta WebApp té les opcions PHP per defecte; crea'n una nova si la necessites."
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:119
|
||||
msgid "This WebApp has PHP options by default, create one if you need it."
|
||||
msgstr ""
|
||||
"Aquesta WebApp té les opcions PHP per defecte; crea'n una nova si la "
|
||||
"necessites."
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:121
|
||||
msgid "Add new option"
|
||||
msgstr "Afegir nova Opcio"
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:27
|
||||
msgid "SFTP user"
|
||||
msgstr "Usuari SFTP"
|
||||
|
||||
#: templates/musician/webapps/webapp_list.html:27
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
@ -731,12 +846,6 @@ msgstr ""
|
|||
msgid "SFTP User"
|
||||
msgstr "Usuari SFTP"
|
||||
|
||||
#: templates/musician/webapps/webapp_list.html:29
|
||||
#: templates/musician/webapps/webappuser_list.html:17
|
||||
#: templates/musician/websites/website_list.html:22
|
||||
msgid "Server"
|
||||
msgstr "Servidor"
|
||||
|
||||
#: templates/musician/webapps/webapp_option_form.html:10
|
||||
msgid "Update Option of"
|
||||
msgstr "Actualitza Opcions per"
|
||||
|
@ -755,6 +864,14 @@ msgstr "Estàs segur/a que vols esborrar la següent opció?"
|
|||
msgid "WebSite Options for"
|
||||
msgstr "Opcions de WebSite per"
|
||||
|
||||
#: templates/musician/websites/website_detail.html:25
|
||||
msgid "active"
|
||||
msgstr "actiu"
|
||||
|
||||
#: templates/musician/websites/website_detail.html:32
|
||||
msgid "Protocol"
|
||||
msgstr ""
|
||||
|
||||
#: templates/musician/websites/website_detail.html:37
|
||||
msgid "Edit options"
|
||||
msgstr "Editar opcions"
|
||||
|
@ -801,51 +918,58 @@ msgstr "Actualitzar Opció de WebSite"
|
|||
msgid "Url"
|
||||
msgstr ""
|
||||
|
||||
#: templates/musician/websites/website_list.html:89
|
||||
#, fuzzy
|
||||
#| msgid "SFTP user"
|
||||
msgid "FTP user"
|
||||
msgstr "Usuari SFTP"
|
||||
|
||||
#: validators.py:28
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%s: Hosts can not have underscore character '_', consider providing a SRV, "
|
||||
"CNAME or TXT record."
|
||||
msgstr ""
|
||||
"%s: Els hosts no poden tenir el caràcter d'èmfasi '_'. Considera proporcionar un registre SRV, CNAME o TXT."
|
||||
"%s: Els hosts no poden tenir el caràcter d'èmfasi '_'. Considera "
|
||||
"proporcionar un registre SRV, CNAME o TXT."
|
||||
|
||||
#: views.py:200 views.py:202 views.py:229
|
||||
#: views.py:199 views.py:201 views.py:236
|
||||
msgid "available"
|
||||
msgstr "disponibles"
|
||||
|
||||
#: views.py:182
|
||||
#: views.py:239
|
||||
msgid "Account"
|
||||
msgstr "Compte"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:227
|
||||
#: views.py:284
|
||||
msgid "User profile"
|
||||
msgstr "El teu perfil"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:314
|
||||
#: views.py:371
|
||||
msgid "Download bill"
|
||||
msgstr "Descarrega la factura"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:573
|
||||
#: views.py:620
|
||||
msgid "Domain details"
|
||||
msgstr "Detalls del domini"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:629
|
||||
#: views.py:676
|
||||
msgid "Login"
|
||||
msgstr "Accés"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:700
|
||||
#: views.py:747
|
||||
msgid "Webapp users"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:718
|
||||
#: views.py:765
|
||||
msgid "Main users"
|
||||
msgstr ""
|
||||
msgstr "Usuari principal"
|
||||
|
||||
#: webapps/forms.py:62
|
||||
msgid "This option already exist."
|
||||
|
@ -856,15 +980,16 @@ msgid ""
|
|||
"A web app is the directory where your website is stored. Through SFTP, you "
|
||||
"can access this directory and upload/edit/delete files."
|
||||
msgstr ""
|
||||
"Una WebApp és el directori on es desa el teu WebSite. "
|
||||
"A través de SFTP, pots accedir a aquest directori i pujar, editar o eliminar fitxers."
|
||||
"Una WebApp és el directori on es desa el teu WebSite. A través de SFTP, pots "
|
||||
"accedir a aquest directori i pujar, editar o eliminar fitxers."
|
||||
|
||||
#: webapps/views.py:35
|
||||
msgid ""
|
||||
"Each Webapp has its own SFTP user, which is created automatically when the "
|
||||
"Webapp is created."
|
||||
msgstr ""
|
||||
"Cada WebApp té el seu propi usuari SFTP, que es crea automàticament quan es crea l'aplicació web."
|
||||
"Cada WebApp té el seu propi usuari SFTP, que es crea automàticament quan es "
|
||||
"crea l'aplicació web."
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: webapps/views.py:44
|
||||
|
@ -877,7 +1002,8 @@ msgstr "Detalls de cada tipus"
|
|||
msgid ""
|
||||
"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
|
||||
msgstr ""
|
||||
"Mantén premuda la tecla 'Control' o 'Comando' en un Mac per seleccionar més d'un."
|
||||
"Mantén premuda la tecla 'Control' o 'Comando' en un Mac per seleccionar més "
|
||||
"d'un."
|
||||
|
||||
#: websites/forms.py:54
|
||||
msgid "This Path already exists on this Website."
|
||||
|
@ -888,7 +1014,8 @@ msgid ""
|
|||
"A website is the place where a domain is associated with the directory where "
|
||||
"the web files are located. (WebApp)"
|
||||
msgstr ""
|
||||
"Un WebSite és el lloc on es relaciona un domini amb el directori on es troben els fitxers web. (Aplicació web)"
|
||||
"Un WebSite és el lloc on es relaciona un domini amb el directori on es "
|
||||
"troben els fitxers web. (Aplicació web)"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: websites/views.py:42
|
||||
|
@ -897,6 +1024,9 @@ msgstr ""
|
|||
msgid "website details"
|
||||
msgstr "Detalls de cada tipus"
|
||||
|
||||
#~ msgid "Database"
|
||||
#~ msgstr "Bases de dades"
|
||||
|
||||
#, fuzzy
|
||||
#~| msgid "Change password"
|
||||
#~ msgid "Change password for"
|
||||
|
@ -908,9 +1038,6 @@ msgstr "Detalls de cada tipus"
|
|||
#~ msgid "Previous"
|
||||
#~ msgstr "Prèvia"
|
||||
|
||||
#~ msgid "Next"
|
||||
#~ msgstr "Següent"
|
||||
|
||||
#~ msgid "Notifications"
|
||||
#~ msgstr "Notificacions"
|
||||
|
||||
|
@ -928,9 +1055,6 @@ msgstr "Detalls de cada tipus"
|
|||
#~ msgid "No users for this database."
|
||||
#~ msgstr "No hi ha persones usuàries d’aquesta base de dades."
|
||||
|
||||
#~ msgid "active"
|
||||
#~ msgstr "actiu"
|
||||
|
||||
#~ msgid "Traffic"
|
||||
#~ msgstr "Tràfic"
|
||||
|
||||
|
@ -965,14 +1089,14 @@ msgstr "Detalls de cada tipus"
|
|||
#~ msgid "databases created"
|
||||
#~ msgstr "bases de dades creades"
|
||||
|
||||
msgid "size"
|
||||
msgstr "tamany"
|
||||
#~ msgid "size"
|
||||
#~ msgstr "tamany"
|
||||
|
||||
msgid "traffic"
|
||||
msgstr "tránsit"
|
||||
#~ msgid "traffic"
|
||||
#~ msgstr "tránsit"
|
||||
|
||||
msgid "Mailman list traffic"
|
||||
msgstr "Llistes de Mailman"
|
||||
#~ msgid "Mailman list traffic"
|
||||
#~ msgstr "Llistes de Mailman"
|
||||
|
||||
msgid "Mailman list Traffic"
|
||||
msgstr "Llistes de Mailman"
|
||||
#~ msgid "Mailman list Traffic"
|
||||
#~ msgstr "Llistes de Mailman"
|
||||
|
|
Binary file not shown.
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-09-12 10:10+0000\n"
|
||||
"POT-Creation-Date: 2024-11-08 09:37+0000\n"
|
||||
"PO-Revision-Date: 2021-11-25 12:53+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
|
@ -30,19 +30,19 @@ msgstr "No hay objetos que coincidan con tu búsqueda"
|
|||
msgid "No mailbox found matching the query"
|
||||
msgstr "No hay buzones de correo que coincidan con tu búsqueda"
|
||||
|
||||
#: forms.py:35 forms.py:104
|
||||
#: forms.py:42 forms.py:111
|
||||
msgid "The two password fields didn’t match."
|
||||
msgstr "Las contraseñas introducidas no coinciden."
|
||||
|
||||
#: forms.py:38 forms.py:108
|
||||
#: forms.py:45 forms.py:115
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: forms.py:43 forms.py:113
|
||||
#: forms.py:50 forms.py:120
|
||||
msgid "Password confirmation"
|
||||
msgstr "Confirma la contraseña"
|
||||
|
||||
#: forms.py:46 forms.py:116
|
||||
#: forms.py:53 forms.py:123
|
||||
msgid "Enter the same password as before, for verification."
|
||||
msgstr "Introduce la misma contraseña para verificarla"
|
||||
|
||||
|
@ -62,9 +62,9 @@ msgid "Dashboard"
|
|||
msgstr "Panel de gestión"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: mixins.py:18 templates/musician/dashboard.html:101
|
||||
#: templates/musician/dashboard.html:102
|
||||
#: templates/musician/websites/website_detail.html:17 views.py:252
|
||||
#: mixins.py:18 templates/musician/dashboard.html:106
|
||||
#: templates/musician/dashboard.html:107
|
||||
#: templates/musician/websites/website_detail.html:17 views.py:259
|
||||
msgid "Domains"
|
||||
msgstr "Dominios"
|
||||
|
||||
|
@ -73,7 +73,7 @@ msgid "Mails"
|
|||
msgstr "Correos"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: mixins.py:21 models.py:146 views.py:592
|
||||
#: mixins.py:21 models.py:146 views.py:599
|
||||
msgid "Databases"
|
||||
msgstr "Bases de datos"
|
||||
|
||||
|
@ -81,17 +81,25 @@ msgstr "Bases de datos"
|
|||
msgid "SaaS"
|
||||
msgstr "SaaS"
|
||||
|
||||
#: mixins.py:23
|
||||
msgid "Nextcloud"
|
||||
msgstr "Nextcloud"
|
||||
|
||||
#: mixins.py:24
|
||||
msgid "Community WP"
|
||||
msgstr "WP Comunitario"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: mixins.py:23 websites/views.py:24
|
||||
#: mixins.py:25 websites/views.py:24
|
||||
msgid "Websites"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: mixins.py:24 webapps/views.py:25
|
||||
#: mixins.py:26 webapps/views.py:25
|
||||
msgid "Webapps"
|
||||
msgstr ""
|
||||
|
||||
#: mixins.py:25
|
||||
#: mixins.py:27
|
||||
msgid "Users"
|
||||
msgstr "Usuarios"
|
||||
|
||||
|
@ -100,7 +108,7 @@ msgid "Description details for databases page."
|
|||
msgstr "Consulta la configuración de tus bases de datos."
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: models.py:234 views.py:392
|
||||
#: models.py:234 views.py:399
|
||||
msgid "Mail addresses"
|
||||
msgstr "Direcciones de correo"
|
||||
|
||||
|
@ -135,6 +143,58 @@ msgstr ""
|
|||
"Si tienes algún servicio SaaS (Software as a Service) contratado, aquí "
|
||||
"encontrarás sus detalles de configuración."
|
||||
|
||||
#: saas/forms.py:16
|
||||
msgid "Site URL"
|
||||
msgstr ""
|
||||
|
||||
#: saas/forms.py:50
|
||||
msgid ""
|
||||
"ID of this blog used by WordPress, the only attribute that doesn't change."
|
||||
msgstr ""
|
||||
"ID de este blog utilizado por WordPress, el único atributo que no cambia."
|
||||
|
||||
#: saas/forms.py:51 templates/musician/address_list.html:25
|
||||
msgid "Email"
|
||||
msgstr "Correo electrónico"
|
||||
|
||||
#: saas/forms.py:52
|
||||
msgid ""
|
||||
"A new user will be created if the above email address is not in the database."
|
||||
"<br>The username and password will be mailed to this email address."
|
||||
msgstr ""
|
||||
"Se creará un nuevo usuario si la dirección de correo electrónico anterior no está en la base de datos."
|
||||
"<br>El nombre de usuario y la contraseña se enviarán a esta dirección de correo electrónico."
|
||||
|
||||
#: saas/forms.py:89
|
||||
#, python-format
|
||||
msgid "Suggestion: %s"
|
||||
msgstr "Sugerencia: %s"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: saas/views.py:24 saas/views.py:38 templates/musician/domain_list.html:51
|
||||
msgid "Software as a Service"
|
||||
msgstr "Software as a Service"
|
||||
|
||||
#: saas/views.py:25
|
||||
msgid "Nextcloud Service"
|
||||
msgstr "Servicio Nextcloud"
|
||||
|
||||
#: saas/views.py:26
|
||||
msgid "Members can manage their Nextcloud users in this section."
|
||||
msgstr "Los miembros pueden gestionar sus usuarios de Nextcloud en esta sección."
|
||||
|
||||
#: saas/views.py:39
|
||||
msgid "Community WordPress"
|
||||
msgstr "WordPress Comunitario"
|
||||
|
||||
#: saas/views.py:40
|
||||
msgid ""
|
||||
"Pangea's multisite WordPress service. Members can have their WordPress on "
|
||||
"this community WordPress hosted and maintained by Pangea."
|
||||
msgstr ""
|
||||
"Servicio de WordPress multisitio de Pangea. "
|
||||
"Los socios pueden tener su WordPress en este WordPress comunitario alojado y mantenido por Pangea."
|
||||
|
||||
#: templates/auth/login.html:59
|
||||
msgid "Log in"
|
||||
msgstr "Accede"
|
||||
|
@ -167,6 +227,7 @@ msgstr ""
|
|||
#: templates/musician/mailbox_check_delete.html:11
|
||||
#: templates/musician/mailing_check_delete.html:8
|
||||
#: templates/musician/record_check_delete.html:9
|
||||
#: templates/musician/saas_check_delete.html:8
|
||||
#: templates/musician/webapps/webappoption_check_delete.html:9
|
||||
#: templates/musician/websites/websiteoption_check_delete.html:13
|
||||
msgid "WARNING: This action cannot be undone."
|
||||
|
@ -179,8 +240,12 @@ msgstr "AVISO: Esta acción es irreversible."
|
|||
#: templates/musician/mailbox_form.html:20
|
||||
#: templates/musician/mailing_check_delete.html:9
|
||||
#: templates/musician/mailinglist_form.html:30
|
||||
#: templates/musician/nextcloud_change_password.html:11
|
||||
#: templates/musician/record_check_delete.html:11
|
||||
#: templates/musician/record_form.html:16
|
||||
#: templates/musician/saas_check_delete.html:9
|
||||
#: templates/musician/saas_nextcloud_form.html:30
|
||||
#: templates/musician/saas_wordpress_form.html:31
|
||||
#: templates/musician/systemuser_change_password.html:11
|
||||
#: templates/musician/webapps/webapp_form.html:11
|
||||
#: templates/musician/webapps/webapp_option_form.html:18
|
||||
|
@ -200,6 +265,9 @@ msgstr "Cancelar"
|
|||
#: templates/musician/mailinglist_form.html:34
|
||||
#: templates/musician/record_check_delete.html:10
|
||||
#: templates/musician/record_form.html:20
|
||||
#: templates/musician/saas_check_delete.html:10
|
||||
#: templates/musician/saas_nextcloud_form.html:35
|
||||
#: templates/musician/saas_wordpress_form.html:35
|
||||
#: templates/musician/webapps/webapp_form.html:15
|
||||
#: templates/musician/webapps/webappoption_check_delete.html:10
|
||||
#: templates/musician/websites/websiteoption_check_delete.html:14
|
||||
|
@ -210,7 +278,10 @@ msgstr "Borrar"
|
|||
#: templates/musician/mailbox_change_password.html:12
|
||||
#: templates/musician/mailbox_form.html:21
|
||||
#: templates/musician/mailinglist_form.html:31
|
||||
#: templates/musician/nextcloud_change_password.html:12
|
||||
#: templates/musician/record_form.html:17
|
||||
#: templates/musician/saas_nextcloud_form.html:31
|
||||
#: templates/musician/saas_wordpress_form.html:32
|
||||
#: templates/musician/systemuser_change_password.html:12
|
||||
#: templates/musician/webapps/webapp_form.html:12
|
||||
#: templates/musician/webapps/webapp_option_form.html:19
|
||||
|
@ -230,17 +301,13 @@ msgstr "Filtrado"
|
|||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: templates/musician/address_list.html:25
|
||||
msgid "Email"
|
||||
msgstr "Correo electrónico"
|
||||
|
||||
#: templates/musician/address_list.html:26
|
||||
msgid "Domain"
|
||||
msgstr "Dominio"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: templates/musician/address_list.html:27 templates/musician/mail_base.html:22
|
||||
#: views.py:478
|
||||
#: views.py:485
|
||||
msgid "Mailboxes"
|
||||
msgstr "Buzones de correo"
|
||||
|
||||
|
@ -262,7 +329,7 @@ msgstr "Perfil"
|
|||
|
||||
#. Translators: This message appears on the page title
|
||||
#: templates/musician/base.html:71 templates/musician/billing.html:6
|
||||
#: views.py:350
|
||||
#: views.py:357
|
||||
msgid "Billing"
|
||||
msgstr "Facturas"
|
||||
|
||||
|
@ -291,6 +358,7 @@ msgstr "Fecha de la factura"
|
|||
#: templates/musician/webapps/webapp_detail.html:17
|
||||
#: templates/musician/webapps/webapp_detail.html:96
|
||||
#: templates/musician/webapps/webapp_list.html:26
|
||||
#: templates/musician/websites/website_list.html:72
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
|
@ -327,6 +395,8 @@ msgstr "Mostrar historial"
|
|||
#: templates/musician/mailbox_list.html:30
|
||||
#: templates/musician/mailinglist_list.html:24
|
||||
#: templates/musician/saas_list.html:19
|
||||
#: templates/musician/saas_nextcloud_list.html:13
|
||||
#: templates/musician/saas_wordpress_list.html:13
|
||||
#: templates/musician/webapps/webapp_list.html:25
|
||||
#: templates/musician/websites/website_detail.html:77
|
||||
#: templates/musician/websites/website_list.html:20
|
||||
|
@ -350,13 +420,17 @@ msgstr "Abre el gestor de bases de datos"
|
|||
#. Translators: database page when there isn't any database.
|
||||
#. Translators: saas page when there isn't any saas.
|
||||
#: templates/musician/database_list.html:58
|
||||
#: templates/musician/saas_list.html:53
|
||||
#: templates/musician/saas_list.html:60
|
||||
#: templates/musician/saas_nextcloud_list.html:48
|
||||
#: templates/musician/saas_wordpress_list.html:48
|
||||
msgid "Ooops! Looks like there is nothing here!"
|
||||
msgstr "Mmmh… ¡parece que aquí no hay nada!"
|
||||
|
||||
#: templates/musician/domain_detail.html:5
|
||||
#: templates/musician/mailinglist_form.html:16
|
||||
#: templates/musician/record_form.html:5
|
||||
#: templates/musician/saas_nextcloud_form.html:16
|
||||
#: templates/musician/saas_wordpress_form.html:16
|
||||
#: templates/musician/webapps/webapp_detail.html:5
|
||||
#: templates/musician/webapps/webapp_option_form.html:7
|
||||
#: templates/musician/websites/website_create_option_form.html:7
|
||||
|
@ -443,11 +517,6 @@ msgstr "direcciones de correo creadas"
|
|||
msgid "Mail list"
|
||||
msgstr "Lista de correo"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: templates/musician/domain_list.html:51 views.py:615
|
||||
msgid "Software as a Service"
|
||||
msgstr "Software as a Service"
|
||||
|
||||
#: templates/musician/domain_list.html:53
|
||||
msgid "Nothing installed"
|
||||
msgstr "No tienes nada instalado"
|
||||
|
@ -501,6 +570,8 @@ msgstr "Direcciones de correo"
|
|||
|
||||
#: templates/musician/mailbox_change_password.html:5
|
||||
#: templates/musician/mailbox_form.html:24
|
||||
#: templates/musician/nextcloud_change_password.html:5
|
||||
#: templates/musician/saas_nextcloud_form.html:34
|
||||
#: templates/musician/systemuser_change_password.html:5
|
||||
#: templates/musician/webapps/webappuser_change_password.html:5
|
||||
msgid "Change password"
|
||||
|
@ -565,6 +636,8 @@ msgstr "Crear lista"
|
|||
|
||||
#: templates/musician/mailinglist_list.html:25
|
||||
#: templates/musician/saas_list.html:20
|
||||
#: templates/musician/saas_nextcloud_list.html:14
|
||||
#: templates/musician/saas_wordpress_list.html:14
|
||||
#: templates/musician/websites/website_list.html:23
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
@ -631,7 +704,15 @@ msgstr "Actualiza la contraseña"
|
|||
msgid "Add record to"
|
||||
msgstr "Agregar registro a"
|
||||
|
||||
#: templates/musician/saas_check_delete.html:7
|
||||
#, fuzzy
|
||||
#| msgid "Are you sure that you want remove the list:"
|
||||
msgid "Are you sure that you want remove the SaaS:"
|
||||
msgstr "¿Estás seguro/a de que quieres borrar la siguiente lista:"
|
||||
|
||||
#: templates/musician/saas_list.html:21
|
||||
#: templates/musician/saas_nextcloud_list.html:15
|
||||
#: templates/musician/saas_wordpress_list.html:15
|
||||
msgid "Service"
|
||||
msgstr "Servicio"
|
||||
|
||||
|
@ -639,14 +720,34 @@ msgstr "Servicio"
|
|||
msgid "Service info"
|
||||
msgstr "Información del servicio"
|
||||
|
||||
#: templates/musician/saas_list.html:30
|
||||
#: templates/musician/saas_list.html:31
|
||||
#: templates/musician/saas_nextcloud_list.html:24
|
||||
#: templates/musician/saas_wordpress_list.html:24
|
||||
msgid "Installed on"
|
||||
msgstr "Instalado en"
|
||||
|
||||
#: templates/musician/saas_list.html:37 templates/musician/saas_list.html:39
|
||||
#: templates/musician/saas_list.html:38 templates/musician/saas_list.html:40
|
||||
#: templates/musician/saas_nextcloud_list.html:31
|
||||
#: templates/musician/saas_nextcloud_list.html:33
|
||||
#: templates/musician/saas_wordpress_list.html:31
|
||||
#: templates/musician/saas_wordpress_list.html:33
|
||||
msgid "Open service admin panel"
|
||||
msgstr "Abre el panel de administración del servicio"
|
||||
|
||||
#: templates/musician/saas_list.html:69
|
||||
msgid "New SaaS"
|
||||
msgstr "Nuevo SaaS"
|
||||
|
||||
#: templates/musician/saas_nextcloud_form.html:20
|
||||
#: templates/musician/saas_wordpress_form.html:20
|
||||
msgid "Update SaaS"
|
||||
msgstr "Actualizar SaaS"
|
||||
|
||||
#: templates/musician/saas_nextcloud_form.html:22
|
||||
#: templates/musician/saas_wordpress_form.html:22
|
||||
msgid "Create SaaS"
|
||||
msgstr "Crear SaaS"
|
||||
|
||||
#: templates/musician/systemuser_list.html:6
|
||||
msgid ""
|
||||
"The main user is your system's main user on each server. You'll be able to "
|
||||
|
@ -694,6 +795,7 @@ msgid "Server"
|
|||
msgstr "Servidor"
|
||||
|
||||
#: templates/musician/webapps/webapp_detail.html:27
|
||||
#: templates/musician/websites/website_list.html:82
|
||||
msgid "SFTP user"
|
||||
msgstr "Usuario SFTP"
|
||||
|
||||
|
@ -822,6 +924,12 @@ msgstr "Actualizar Opción de WebSite"
|
|||
msgid "Url"
|
||||
msgstr ""
|
||||
|
||||
#: templates/musician/websites/website_list.html:89
|
||||
#, fuzzy
|
||||
#| msgid "SFTP user"
|
||||
msgid "FTP user"
|
||||
msgstr "Usuario SFTP"
|
||||
|
||||
#: validators.py:28
|
||||
#, python-format
|
||||
msgid ""
|
||||
|
@ -831,43 +939,43 @@ msgstr ""
|
|||
"%s: Los hosts no pueden tener el carácter de subrayado '_'. Considere "
|
||||
"proporcionar un registro SRV, CNAME o TXT."
|
||||
|
||||
#: views.py:200 views.py:202 views.py:229
|
||||
#: views.py:199 views.py:201 views.py:236
|
||||
msgid "available"
|
||||
msgstr "disponibles"
|
||||
|
||||
#: views.py:232
|
||||
#: views.py:239
|
||||
msgid "Account"
|
||||
msgstr "Cuenta"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:277
|
||||
#: views.py:284
|
||||
msgid "User profile"
|
||||
msgstr "Tu perfil"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:364
|
||||
#: views.py:371
|
||||
msgid "Download bill"
|
||||
msgstr "Descarga la factura"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:623
|
||||
#: views.py:620
|
||||
msgid "Domain details"
|
||||
msgstr "Detalles del dominio"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:679
|
||||
#: views.py:676
|
||||
msgid "Login"
|
||||
msgstr "Accede"
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:750
|
||||
#: views.py:747
|
||||
msgid "Webapp users"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: This message appears on the page title
|
||||
#: views.py:768
|
||||
#: views.py:765
|
||||
msgid "Main users"
|
||||
msgstr ""
|
||||
msgstr "Usuarios principales"
|
||||
|
||||
#: webapps/forms.py:62
|
||||
msgid "This option already exist."
|
||||
|
@ -920,72 +1028,69 @@ msgstr ""
|
|||
msgid "website details"
|
||||
msgstr "Detalles de cada tipo"
|
||||
|
||||
msgid "Database"
|
||||
msgstr "Bases de datos"
|
||||
#~ msgid "Database"
|
||||
#~ msgstr "Bases de datos"
|
||||
|
||||
msgid "Change password for"
|
||||
msgstr "Cambia la contraseña de"
|
||||
#~ msgid "Change password for"
|
||||
#~ msgstr "Cambia la contraseña de"
|
||||
|
||||
#~ msgid "Domains & websites"
|
||||
#~ msgstr "Dominios y sitios web"
|
||||
|
||||
msgid "Previous"
|
||||
msgstr "Previa"
|
||||
#~ msgid "Previous"
|
||||
#~ msgstr "Previa"
|
||||
|
||||
msgid "Next"
|
||||
msgstr "Siguiente"
|
||||
#~ msgid "Notifications"
|
||||
#~ msgstr "Notificaciones"
|
||||
|
||||
msgid "Notifications"
|
||||
msgstr "Notificaciones"
|
||||
#~ msgid "There is no notifications at this time."
|
||||
#~ msgstr "No tienes ninguna notificación."
|
||||
|
||||
msgid "There is no notifications at this time."
|
||||
msgstr "No tienes ninguna notificación."
|
||||
#~ msgid "Dashboard page description."
|
||||
#~ msgstr ""
|
||||
#~ "Este es tu panel de gestión, desde donde podrás consultar la "
|
||||
#~ "configuración de los servicios que Pangea te ofrece."
|
||||
|
||||
msgid "Dashboard page description."
|
||||
msgstr ""
|
||||
"Este es tu panel de gestión, desde donde podrás consultar la "
|
||||
"configuración de los servicios que Pangea te ofrece."
|
||||
#~ msgid "associated to"
|
||||
#~ msgstr "asociada a"
|
||||
|
||||
msgid "associated to"
|
||||
msgstr "asociada a"
|
||||
#~ msgid "No users for this database."
|
||||
#~ msgstr "No hay usuarias/os de esta base de datos."
|
||||
|
||||
msgid "No users for this database."
|
||||
msgstr "No hay usuarias/os de esta base de datos."
|
||||
#~ msgid "Traffic"
|
||||
#~ msgstr "Tráfico"
|
||||
|
||||
msgid "Traffic"
|
||||
msgstr "Tráfico"
|
||||
#~ msgid "Mailbox usage"
|
||||
#~ msgstr "Uso de espacio en tu buzón de correo"
|
||||
|
||||
msgid "Mailbox usage"
|
||||
msgstr "Uso de espacio en tu buzón de correo"
|
||||
#~ msgid "Address deleted!"
|
||||
#~ msgstr "Has eliminado la dirección de correo"
|
||||
|
||||
msgid "Address deleted!"
|
||||
msgstr "Has eliminado la dirección de correo"
|
||||
#~ msgid "Cannot process your request, please try again later."
|
||||
#~ msgstr ""
|
||||
#~ "Ahora no podemos procesar tu petición, inténtalo de nuevo un poco más "
|
||||
#~ "tarde por favor."
|
||||
|
||||
msgid "Cannot process your request, please try again later."
|
||||
msgstr ""
|
||||
"Ahora no podemos procesar tu petición, inténtalo de nuevo un poco más "
|
||||
"tarde por favor."
|
||||
#~ msgid "Mailbox deleted!"
|
||||
#~ msgstr "Has eliminado el buzón de correo"
|
||||
|
||||
msgid "Mailbox deleted!"
|
||||
msgstr "Has eliminado el buzón de correo"
|
||||
#~ msgid "mail address left"
|
||||
#~ msgstr "direcciones de correo por activar"
|
||||
|
||||
msgid "mail address left"
|
||||
msgstr "direcciones de correo por activar"
|
||||
#~ msgid "Aliases"
|
||||
#~ msgstr "Alias"
|
||||
|
||||
msgid "Aliases"
|
||||
msgstr "Alias"
|
||||
#~ msgid "databases created"
|
||||
#~ msgstr "bases de datos creadas"
|
||||
|
||||
msgid "databases created"
|
||||
msgstr "bases de datos creadas"
|
||||
#~ msgid "size"
|
||||
#~ msgstr "tamaño"
|
||||
|
||||
msgid "size"
|
||||
msgstr "tamaño"
|
||||
#~ msgid "traffic"
|
||||
#~ msgstr "tráfico"
|
||||
|
||||
msgid "traffic"
|
||||
msgstr "tráfico"
|
||||
#~ msgid "Mailman list traffic"
|
||||
#~ msgstr "Listas de Mailman"
|
||||
|
||||
msgid "Mailman list traffic"
|
||||
msgstr "Listas de Mailman"
|
||||
|
||||
msgid "Mailman list Traffic"
|
||||
msgstr "Listas de Mailman"
|
||||
#~ msgid "Mailman list Traffic"
|
||||
#~ msgstr "Listas de Mailman"
|
||||
|
|
|
@ -14,15 +14,17 @@ class CustomContextMixin(ContextMixin):
|
|||
context = super().get_context_data(**kwargs)
|
||||
# generate services menu items
|
||||
services_menu = [
|
||||
{'icon': 'home', 'pattern_name': 'musician:dashboard', 'title': _('Dashboard')},
|
||||
{'icon': 'globe-europe', 'pattern_name': 'musician:domain-list', 'title': _('Domains')},
|
||||
{'icon': 'envelope', 'pattern_name': 'musician:address-list', 'title': _('Mails')},
|
||||
{'icon': 'mail-bulk', 'pattern_name': 'musician:mailing-lists', 'title': _('Mailing lists')},
|
||||
{'icon': 'database', 'pattern_name': 'musician:database-list', 'title': _('Databases')},
|
||||
{'icon': 'fire', 'pattern_name': 'musician:saas-list', 'title': _('SaaS')},
|
||||
{'icon': 'globe', 'pattern_name': 'musician:website-list', 'title': _('Websites')},
|
||||
{'icon': 'folder', 'pattern_name': 'musician:webapp-list', 'title': _('Webapps'), 'indent': True},
|
||||
{'icon': 'user', 'pattern_name': 'musician:systemuser-list', 'title': _('Users'), 'indent': True},
|
||||
{'icon': 'fas fa-home', 'pattern_name': 'musician:dashboard', 'title': _('Dashboard')},
|
||||
{'icon': 'fas fa-globe', 'pattern_name': 'musician:domain-list', 'title': _('Domains')},
|
||||
{'icon': 'fas fa-envelope', 'pattern_name': 'musician:address-list', 'title': _('Mails')},
|
||||
{'icon': 'fas fa-mail-bulk', 'pattern_name': 'musician:mailing-lists', 'title': _('Mailing lists')},
|
||||
{'icon': 'fas fa-database', 'pattern_name': 'musician:database-list', 'title': _('Databases')},
|
||||
{'icon': 'fas fa-fire', 'pattern_name': 'musician:saas-nextcloud-list', 'title': _('SaaS')},
|
||||
{'icon': 'fas fa-cloud', 'pattern_name': 'musician:saas-nextcloud-list', 'title': _('Nextcloud'), 'indent': True},
|
||||
{'icon': 'fab fa-wordpress', 'pattern_name': 'musician:saas-wordpress-list', 'title': _('Community WP'), 'indent': True},
|
||||
{'icon': 'fas fa-globe', 'pattern_name': 'musician:website-list', 'title': _('Websites')},
|
||||
{'icon': 'fas fa-folder', 'pattern_name': 'musician:webapp-list', 'title': _('Webapps'), 'indent': True},
|
||||
{'icon': 'fas fa-user', 'pattern_name': 'musician:systemuser-list', 'title': _('Users'), 'indent': True},
|
||||
]
|
||||
context.update({
|
||||
'services_menu': services_menu,
|
||||
|
|
|
@ -0,0 +1,94 @@
|
|||
from django import forms
|
||||
|
||||
from orchestra.forms.widgets import SpanWidget
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from orchestra.utils.python import random_ascii
|
||||
|
||||
from django.forms.widgets import HiddenInput
|
||||
|
||||
from orchestra.contrib.saas.models import SaaS
|
||||
from orchestra.contrib.musician.forms import ChangePasswordForm
|
||||
|
||||
|
||||
|
||||
class SaasUpdateForm(forms.ModelForm):
|
||||
site_url = forms.CharField(label=_("Site URL"), widget=SpanWidget(), required=False)
|
||||
|
||||
class Meta:
|
||||
model = SaaS
|
||||
fields = ("is_active", "service", "name", "data", "custom_url")
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.user = kwargs.pop('user')
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['name'].widget.attrs['readonly'] = True
|
||||
self.fields['site_url'].widget.attrs['readonly'] = True
|
||||
self.fields['service'].widget = HiddenInput()
|
||||
self.fields['data'].widget = HiddenInput()
|
||||
|
||||
# asignar valor al field site_url
|
||||
site_domain = self.instance.get_site_domain()
|
||||
context = {
|
||||
'site_name': '<site_name>',
|
||||
'name': '<site_name>',
|
||||
}
|
||||
site_domain = site_domain % context
|
||||
if '<site_name>' in site_domain:
|
||||
site_link = site_domain
|
||||
else:
|
||||
site_link = '<a href="http://%s">%s</a>' % (site_domain, site_domain)
|
||||
self.fields['site_url'].widget.display = site_link
|
||||
|
||||
if self.instance:
|
||||
if self.instance.pk:
|
||||
self.fields['data'].required = False
|
||||
|
||||
|
||||
class SaasWordpressUpdateForm(SaasUpdateForm):
|
||||
blog_id = forms.IntegerField(label=("Blog ID"), widget=SpanWidget(), required=False,
|
||||
help_text=_("ID of this blog used by WordPress, the only attribute that doesn't change."))
|
||||
email = forms.EmailField(label=_("Email"),
|
||||
help_text=_("A new user will be created if the above email address is not in the database.<br>"
|
||||
"The username and password will be mailed to this email address."))
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
# self.user = kwargs.pop('user')
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields['email'].widget.attrs['readonly'] = True
|
||||
self.fields['blog_id'].widget.attrs['readonly'] = True
|
||||
|
||||
|
||||
self.fields["is_active"].widget = HiddenInput()
|
||||
self.fields["custom_url"].widget.attrs['readonly'] = True
|
||||
|
||||
admin_url = 'http://%s/wp-admin/' % self.instance.get_site_domain()
|
||||
help_text = 'Admin URL: <a href="{0}">{0}</a>'.format(admin_url)
|
||||
self.fields['site_url'].help_text = mark_safe(help_text)
|
||||
|
||||
if self.instance:
|
||||
for field in self.declared_fields:
|
||||
initial = self.fields[field].initial
|
||||
self.fields[field].initial = self.instance.data.get(field, initial)
|
||||
|
||||
|
||||
class SaasNextcloudUpdateForm(SaasUpdateForm):
|
||||
def __init__(self, *args, **kwargs):
|
||||
# self.user = kwargs.pop('user')
|
||||
super().__init__(*args, **kwargs)
|
||||
self.fields["custom_url"].widget = HiddenInput()
|
||||
|
||||
|
||||
class NextcloudChangePasswordForm(ChangePasswordForm):
|
||||
class Meta:
|
||||
fields = ("password",)
|
||||
model = SaaS
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(NextcloudChangePasswordForm, self).__init__(*args, **kwargs)
|
||||
self.fields['password'].help_text = _("Suggestion: %s") % random_ascii(20)
|
||||
|
||||
def clean_password(self):
|
||||
password = self.cleaned_data.get("password")
|
||||
self.fields['password'] = password
|
||||
self.instance.set_password(password)
|
|
@ -0,0 +1,97 @@
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.urls import reverse_lazy
|
||||
|
||||
from django.views.generic.base import RedirectView, TemplateView
|
||||
from django.views.generic.detail import DetailView
|
||||
from django.views.generic.edit import (CreateView, DeleteView, FormView,
|
||||
UpdateView)
|
||||
from django.views.generic.list import ListView
|
||||
|
||||
from orchestra.contrib.musician.mixins import (CustomContextMixin, ExtendedPaginationMixin,
|
||||
UserTokenRequiredMixin)
|
||||
|
||||
from .forms import ( NextcloudChangePasswordForm, SaasNextcloudUpdateForm,
|
||||
SaasWordpressUpdateForm )
|
||||
from orchestra.contrib.saas.models import SaaS
|
||||
|
||||
|
||||
class SaasNextcloudListView(CustomContextMixin, UserTokenRequiredMixin, ListView):
|
||||
model = SaaS
|
||||
template_name = "musician/saas_nextcloud_list.html"
|
||||
extra_context = {
|
||||
# Translators: This message appears on the page title
|
||||
'title': _('Software as a Service'),
|
||||
'verbose_name': _('Nextcloud Service'),
|
||||
'description': _("Members can manage their Nextcloud users in this section."),
|
||||
}
|
||||
|
||||
def get_queryset(self):
|
||||
return self.model.objects.filter(account=self.request.user, service='nextcloud')
|
||||
|
||||
|
||||
class SaasWordpressListView(CustomContextMixin, UserTokenRequiredMixin, ListView):
|
||||
model = SaaS
|
||||
template_name = "musician/saas_wordpress_list.html"
|
||||
extra_context = {
|
||||
# Translators: This message appears on the page title
|
||||
'title': _('Software as a Service'),
|
||||
'verbose_name': _('Community WordPress'),
|
||||
'description': _("Pangea's multisite WordPress service. Members can have their WordPress on this community WordPress hosted and maintained by Pangea."),
|
||||
}
|
||||
|
||||
def get_queryset(self):
|
||||
return self.model.objects.filter(account=self.request.user, service='wordpress')
|
||||
|
||||
|
||||
class SaasWordpressUpdateView(CustomContextMixin, UserTokenRequiredMixin, UpdateView):
|
||||
model = SaaS
|
||||
form_class = SaasWordpressUpdateForm
|
||||
template_name = "musician/saas_wordpress_form.html"
|
||||
|
||||
def get_queryset(self):
|
||||
qs = SaaS.objects.filter(account=self.request.user)
|
||||
return qs
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy("musician:saas-wordpress-list")
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super().get_form_kwargs()
|
||||
kwargs["user"] = self.request.user
|
||||
return kwargs
|
||||
|
||||
|
||||
class SaasNextcloudUpdateView(CustomContextMixin, UserTokenRequiredMixin, UpdateView):
|
||||
model = SaaS
|
||||
form_class = SaasNextcloudUpdateForm
|
||||
template_name = "musician/saas_nextcloud_form.html"
|
||||
|
||||
def get_queryset(self):
|
||||
qs = SaaS.objects.filter(account=self.request.user)
|
||||
return qs
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy("musician:saas-nextcloud-list")
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super().get_form_kwargs()
|
||||
kwargs["user"] = self.request.user
|
||||
return kwargs
|
||||
|
||||
class NextcloudChangePasswordView(CustomContextMixin, UserTokenRequiredMixin, UpdateView):
|
||||
template_name = "musician/nextcloud_change_password.html"
|
||||
model = SaaS
|
||||
form_class = NextcloudChangePasswordForm
|
||||
success_url = reverse_lazy("musician:saas-nextcloud-list")
|
||||
|
||||
def get_queryset(self):
|
||||
return self.model.objects.filter(account=self.request.user)
|
||||
|
||||
class SaasDeleteView(CustomContextMixin, UserTokenRequiredMixin, DeleteView):
|
||||
template_name = "musician/saas_check_delete.html"
|
||||
model = SaaS
|
||||
success_url = reverse_lazy("musician:saas-nextcloud-list")
|
||||
|
||||
def get_queryset(self):
|
||||
return self.model.objects.filter(account=self.request.user)
|
|
@ -52,7 +52,7 @@
|
|||
<li class="nav-item">
|
||||
{% endif %}
|
||||
<a class="nav-link text-light active" href="{% url item.pattern_name %}">
|
||||
<i class="fas fa-{{ item.icon }}"></i>
|
||||
<i class="{{ item.icon }}"></i>
|
||||
{{ item.title }}
|
||||
</a>
|
||||
</li>
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
{% extends "musician/base.html" %}
|
||||
{% load bootstrap4 i18n %}
|
||||
|
||||
{% block content %}
|
||||
<h1 class="service-name">{% trans "Change password" %}: <span class="font-weight-light">{{ object.name }}</span></h1>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
{% buttons %}
|
||||
<a class="btn btn-light mr-2" href="{% url 'musician:saas-nextcloud-list' %}">{% trans "Cancel" %}</a>
|
||||
<button type="submit" class="btn btn-secondary">{% trans "Save" %}</button>
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
{% endblock %}
|
|
@ -0,0 +1,12 @@
|
|||
{% extends "musician/base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block content %}
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<p>{% blocktrans %}Are you sure that you want remove the SaaS:{% endblocktrans %} {{ saas }} ?</p>
|
||||
<p class="alert alert-warning"><strong>{% trans 'WARNING: This action cannot be undone.' %}</strong></p>
|
||||
<a class="btn btn-light mr-2" href="{% url 'musician:saas-nextcloud-list' %}">{% trans 'Cancel' %}</a>
|
||||
<input class="btn btn-danger" type="submit" value="{% trans 'Delete' %}">
|
||||
</form>
|
||||
{% endblock %}
|
|
@ -19,7 +19,8 @@
|
|||
<th scope="col">{% trans "Name" %}</th>
|
||||
<th scope="col">{% trans "Status" %}</th>
|
||||
<th scope="col">{% trans "Service" %}</th>
|
||||
<th scope="col">{% trans "Service info" %}</th>
|
||||
<!-- <th scope="col">{% trans "Service info" %}</th> -->
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -34,14 +35,20 @@
|
|||
<span class="sr-only">{{ saas.is_active|yesno }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<a class="btn btn-sm btn-link" href="{{ saas.manager_url }}" target="_blank" rel="noopener noreferrer" title="{% trans 'Open service admin panel' %}">
|
||||
<a class="btn btn-sm btn-link" href="https://{{ saas.get_site_domain|default:'#' }}" target="_blank" rel="noopener noreferrer" title="{% trans 'Open service admin panel' %}">
|
||||
<i class="fab fa-{{ saas.service }}"></i> {{ saas.service|capfirst }}
|
||||
<span class="sr-only">{% trans "Open service admin panel" %}</span> <i class="fas fa-external-link-alt"></i></a>
|
||||
</td>
|
||||
<td>
|
||||
<!-- <td>
|
||||
{% for key, value in saas.data.items %}
|
||||
<label>{{ key }}:</label> <strong>{{ value }}</strong><br/>
|
||||
{% endfor %}
|
||||
</td> -->
|
||||
<td class="text-right">
|
||||
<a class="btn btn-outline-warning" role="button" href="{% url 'musician:saas-update' saas.id %}">
|
||||
<i class="fas fa-tools"></i></a>
|
||||
<a class="btn btn-outline-danger" role="button" href="{% url 'musician:saas-delete' saas.id %}">
|
||||
<i class="text-danger fas fa-trash"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
|
@ -59,4 +66,5 @@
|
|||
{% include "musician/components/table_paginator.html" %}
|
||||
</table>
|
||||
</div>
|
||||
<!-- <a class="btn btn-primary mt-4 mb-4" href="#">{% trans "New SaaS" %}</a> -->
|
||||
{% endblock %}
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
{% extends "musician/base.html" %}
|
||||
{% load bootstrap4 i18n %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
|
||||
<style>
|
||||
.form-check{
|
||||
background-color: #fff;
|
||||
padding: .375rem 2.0rem;
|
||||
border: 1px solid #ced4da;
|
||||
border-radius: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<a class="btn-arrow-left" href="{% url 'musician:saas-nextcloud-list' %}">{% trans "Go back" %}</a>
|
||||
|
||||
<h1 class="service-name">
|
||||
{% if form.instance.pk %}
|
||||
{% trans "Update SaaS" %} <span class="font-weight-light">{{ saas.name }}</span>
|
||||
{% else %}
|
||||
{% trans "Create SaaS" %}
|
||||
{% endif %}
|
||||
</h1>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
{% buttons %}
|
||||
<a class="btn btn-light mr-2" href="{% url 'musician:saas-nextcloud-list' %}">{% trans "Cancel" %}</a>
|
||||
<button type="submit" class="btn btn-secondary">{% trans "Save" %}</button>
|
||||
{% if form.instance.pk %}
|
||||
<div class="float-right">
|
||||
<a class="btn btn-outline-warning" href="{% url 'musician:nextcloud-password' form.instance.pk %}"><i class="fas fa-key"></i> {% trans "Change password" %}</a>
|
||||
<a class="btn btn-danger" href="{% url 'musician:saas-delete' view.kwargs.pk %}">{% trans "Delete" %}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endbuttons %}
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
{% extends "musician/base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1 class="service-name">{{ verbose_name }}</h1>
|
||||
<p class="service-description">{{ description }}</p>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table service-list">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th scope="col">{% trans "Name" %}</th>
|
||||
<th scope="col">{% trans "Status" %}</th>
|
||||
<th scope="col">{% trans "Service" %}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for saas in object_list %}
|
||||
<tr>
|
||||
<td>
|
||||
<strong>{{ saas.name }}</strong><br>
|
||||
<span class="text-secondary">{% trans "Installed on" %}: <strong>{{ saas.get_site_domain|default:"-" }}</strong></span>
|
||||
</td>
|
||||
<td class="text-{{saas.is_active|yesno:'success,danger'}}">
|
||||
<i class="fa fa-{{ saas.is_active|yesno:'check,times' }}"></i>
|
||||
<span class="sr-only">{{ saas.is_active|yesno }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<a class="btn btn-sm btn-link" href="https://{{ saas.get_site_domain|default:'#' }}" target="_blank" rel="noopener noreferrer" title="{% trans 'Open service admin panel' %}">
|
||||
<i class="fab fa-{{ saas.service }}"></i> {{ saas.service|capfirst }}
|
||||
<span class="sr-only">{% trans "Open service admin panel" %}</span> <i class="fas fa-external-link-alt"></i></a>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<a class="btn btn-outline-warning" role="button" href="{% url 'musician:saas-nextcloud-update' saas.id %}">
|
||||
<i class="fas fa-tools"></i></a>
|
||||
<a class="btn btn-outline-danger" role="button" href="{% url 'musician:saas-delete' saas.id %}">
|
||||
<i class="text-danger fas fa-trash"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<h5 class="text-dark">
|
||||
<i class="fas fa-fire fa-2x mr-2"></i>
|
||||
{# Translators: saas page when there isn't any saas. #}
|
||||
{% trans "Ooops! Looks like there is nothing here!" %}
|
||||
</h5>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -0,0 +1,41 @@
|
|||
{% extends "musician/base.html" %}
|
||||
{% load bootstrap4 i18n %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
|
||||
<style>
|
||||
.form-check{
|
||||
background-color: #fff;
|
||||
padding: .375rem 2.0rem;
|
||||
border: 1px solid #ced4da;
|
||||
border-radius: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<a class="btn-arrow-left" href="{% url 'musician:saas-wordpress-list' %}">{% trans "Go back" %}</a>
|
||||
|
||||
<h1 class="service-name">
|
||||
{% if form.instance.pk %}
|
||||
{% trans "Update SaaS" %} <span class="font-weight-light">{{ saas.name }}</span>
|
||||
{% else %}
|
||||
{% trans "Create SaaS" %}
|
||||
{% endif %}
|
||||
</h1>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
<!-- TODO: ya veremos si dejamos a los socios update/delete -->
|
||||
<!-- {% buttons %}
|
||||
<a class="btn btn-light mr-2" href="{% url 'musician:saas-wordpress-list' %}">{% trans "Cancel" %}</a>
|
||||
<button type="submit" class="btn btn-secondary">{% trans "Save" %}</button>
|
||||
{% if form.instance.pk %}
|
||||
<div class="float-right">
|
||||
<a class="btn btn-danger" href="{% url 'musician:saas-delete' view.kwargs.pk %}">{% trans "Delete" %}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endbuttons %} -->
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
{% extends "musician/base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1 class="service-name">{{ verbose_name }}</h1>
|
||||
<p class="service-description">{{ description }}</p>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table service-list">
|
||||
<thead class="thead-dark">
|
||||
<tr>
|
||||
<th scope="col">{% trans "Name" %}</th>
|
||||
<th scope="col">{% trans "Status" %}</th>
|
||||
<th scope="col">{% trans "Service" %}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for saas in object_list %}
|
||||
<tr>
|
||||
<td>
|
||||
<strong>{{ saas.name }}</strong><br>
|
||||
<span class="text-secondary">{% trans "Installed on" %}: <strong>{{ saas.get_site_domain|default:"-" }}</strong></span>
|
||||
</td>
|
||||
<td class="text-{{saas.is_active|yesno:'success,danger'}}">
|
||||
<i class="fa fa-{{ saas.is_active|yesno:'check,times' }}"></i>
|
||||
<span class="sr-only">{{ saas.is_active|yesno }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<a class="btn btn-sm btn-link" href="https://{{ saas.get_site_domain|default:'#' }}" target="_blank" rel="noopener noreferrer" title="{% trans 'Open service admin panel' %}">
|
||||
<i class="fab fa-{{ saas.service }}"></i> {{ saas.service|capfirst }}
|
||||
<span class="sr-only">{% trans "Open service admin panel" %}</span> <i class="fas fa-external-link-alt"></i></a>
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<a class="btn btn-outline-warning" role="button" href="{% url 'musician:saas-wordpress-update' saas.id %}">
|
||||
<i class="fas fa-tools"></i></a>
|
||||
<!-- <a class="btn btn-outline-danger" role="button" href="{% url 'musician:saas-delete' saas.id %}">
|
||||
<i class="text-danger fas fa-trash"></i></a> -->
|
||||
</td>
|
||||
</tr>
|
||||
{% empty %}
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<h5 class="text-dark">
|
||||
<i class="fas fa-fire fa-2x mr-2"></i>
|
||||
{# Translators: saas page when there isn't any saas. #}
|
||||
{% trans "Ooops! Looks like there is nothing here!" %}
|
||||
</h5>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -50,7 +50,12 @@ urlpatterns = [
|
|||
|
||||
path('databases/', views.DatabaseListView.as_view(), name='database-list'),
|
||||
|
||||
path('saas/', views.SaasListView.as_view(), name='saas-list'),
|
||||
path('saas/nextcloud/', views.SaasNextcloudListView.as_view(), name='saas-nextcloud-list'),
|
||||
path('saas/nextcloud/<int:pk>/', views.SaasNextcloudUpdateView.as_view(), name='saas-nextcloud-update'),
|
||||
path('saas/<int:pk>/nextcloud-change-password/', views.NextcloudChangePasswordView.as_view(), name='nextcloud-password'),
|
||||
path('saas/wordpress/', views.SaasWordpressListView.as_view(), name='saas-wordpress-list'),
|
||||
path('saas/wordpress/<int:pk>/', views.SaasWordpressUpdateView.as_view(), name='saas-wordpress-update'),
|
||||
path('saas/<int:pk>/delete/', views.SaasDeleteView.as_view(), name='saas-delete'),
|
||||
|
||||
path('webappusers/', views.WebappUserListView.as_view(), name='webappuser-list'),
|
||||
path('webappuser/<int:pk>/change-password/', views.WebappUserChangePasswordView.as_view(), name='webappuser-password'),
|
||||
|
|
|
@ -34,7 +34,6 @@ from orchestra.contrib.domains.models import Domain, Record
|
|||
from orchestra.contrib.lists.models import List
|
||||
from orchestra.contrib.mailboxes.models import Address, Mailbox
|
||||
from orchestra.contrib.resources.models import Resource, ResourceData
|
||||
from orchestra.contrib.saas.models import SaaS
|
||||
from orchestra.contrib.systemusers.models import WebappUsers, SystemUser
|
||||
from orchestra.utils.html import html_to_pdf
|
||||
|
||||
|
@ -56,6 +55,7 @@ from .utils import get_bootstraped_percent, get_bootstraped_percent_exact
|
|||
from .webapps.views import *
|
||||
from .websites.views import *
|
||||
from .lists.views import *
|
||||
from .saas.views import *
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -130,10 +130,9 @@ class DashboardView(CustomContextMixin, UserTokenRequiredMixin, TemplateView):
|
|||
mailboxes = related_resources.filter(resource_id__verbose_name='mailbox-disk')
|
||||
lists = related_resources.filter(resource_id__verbose_name='list-traffic')
|
||||
databases = related_resources.filter(resource_id__verbose_name='database-disk')
|
||||
nextcloud = related_resources.filter(resource_id__verbose_name='nextcloud-disk')
|
||||
nextcloud = related_resources.filter(resource_id__verbose_name='nextcloud-disk', content_object_repr__iregex=r'^.*@nextcloud$')
|
||||
domains = Domain.objects.filter(account_id=self.request.user)
|
||||
|
||||
|
||||
# TODO(@slamora) update when backend supports notifications
|
||||
notifications = []
|
||||
|
||||
|
@ -614,16 +613,6 @@ class DatabaseListView(ServiceListView):
|
|||
return qs
|
||||
|
||||
|
||||
class SaasListView(ServiceListView):
|
||||
service_class = SaasService
|
||||
model = SaaS
|
||||
template_name = "musician/saas_list.html"
|
||||
extra_context = {
|
||||
# Translators: This message appears on the page title
|
||||
'title': _('Software as a Service'),
|
||||
}
|
||||
|
||||
|
||||
class DomainDetailView(CustomContextMixin, UserTokenRequiredMixin, DetailView):
|
||||
template_name = "musician/domain_detail.html"
|
||||
extra_context = {
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,403 @@
|
|||
# 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: 2024-11-08 11:17+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"
|
||||
|
||||
#: admin.py:40
|
||||
msgid "Related website directive does not exist for this custom URL."
|
||||
msgstr "Related website directive does not exist for this custom URL."
|
||||
|
||||
#: admin.py:50
|
||||
msgid "URL"
|
||||
msgstr ""
|
||||
|
||||
#: backends/__init__.py:244
|
||||
msgid "nextCloud SaaS Disk Quota"
|
||||
msgstr ""
|
||||
|
||||
#: backends/bscw.py:11
|
||||
msgid "BSCW SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/dokuwikimu.py:20
|
||||
msgid "DokuWiki multisite"
|
||||
msgstr ""
|
||||
|
||||
#: backends/dokuwikimu.py:110
|
||||
msgid "DokuWiki MU Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: backends/drupalmu.py:15
|
||||
msgid "Drupal multisite"
|
||||
msgstr ""
|
||||
|
||||
#: backends/gitlab.py:12
|
||||
msgid "GitLab SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/moodle.py:49
|
||||
msgid "Moodle multisite"
|
||||
msgstr ""
|
||||
|
||||
#: backends/nextcloud.py:15
|
||||
msgid "nextCloud SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/nextcloud.py:55
|
||||
msgid "nextCloud SaaS Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: backends/owncloud.py:104
|
||||
msgid "ownCloud SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/owncloud.py:136
|
||||
msgid "ownCloud SaaS Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: backends/owncloud.py:146
|
||||
msgid "ownCloud SaaS Disk Quota"
|
||||
msgstr ""
|
||||
|
||||
#: backends/phplist.py:32
|
||||
msgid "phpList SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/phplist.py:132
|
||||
msgid "phpList SaaS Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: backends/wordpressmu.py:23
|
||||
msgid "Wordpress multisite"
|
||||
msgstr ""
|
||||
|
||||
#: backends/wordpressmu.py:274
|
||||
msgid "Wordpress MU Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: filters.py:6 models.py:35
|
||||
msgid "custom URL"
|
||||
msgstr "URL personalitzada"
|
||||
|
||||
#: filters.py:11
|
||||
msgid "True"
|
||||
msgstr ""
|
||||
|
||||
#: filters.py:12
|
||||
msgid "False"
|
||||
msgstr ""
|
||||
|
||||
#: forms.py:14
|
||||
msgid "Site URL"
|
||||
msgstr "URL del lloc"
|
||||
|
||||
#: forms.py:48 services/phplist.py:31
|
||||
msgid "Site name"
|
||||
msgstr "Nom del lloc"
|
||||
|
||||
#: forms.py:48
|
||||
msgid "Username"
|
||||
msgstr "Usuari"
|
||||
|
||||
#: forms.py:52 forms.py:64
|
||||
msgid "Password"
|
||||
msgstr "Contrasenya"
|
||||
|
||||
#: forms.py:57 serializers.py:20
|
||||
msgid ""
|
||||
"Enter a valid password. This value may contain any ascii character except "
|
||||
"for '/\"/\\/ characters."
|
||||
msgstr ""
|
||||
"Introdueix una contrasenya vàlida. Aquest valor pot contenir qualsevol caràcter ASCII excepte "
|
||||
"els caràcters '/\"/\\/."
|
||||
|
||||
#: forms.py:61
|
||||
msgid ""
|
||||
"Passwords are not stored, so there is no way to see this service's password, "
|
||||
"but you can change the password using <a href=\"../password/\">this form</a>."
|
||||
msgstr ""
|
||||
"Les contrasenyes no s'emmagatzemen, per tant no hi ha manera de veure la contrasenya d'aquest servei, "
|
||||
"però pots canviar la contrasenya utilitzant <a href=\"../password/\">aquest formulari</a>."
|
||||
|
||||
#: forms.py:67
|
||||
msgid "Password confirmation"
|
||||
msgstr "Confirmació de la contrasenya"
|
||||
|
||||
#: forms.py:69
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Introdueix la mateixa contrasenya que la de dalt, per a la verificació."
|
||||
|
||||
#: forms.py:80
|
||||
#, python-format
|
||||
msgid "Suggestion: %s"
|
||||
msgstr "Suggeriment: %s"
|
||||
|
||||
#: forms.py:87
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Els dos camps de contrasenya no coincideixen."
|
||||
|
||||
#: models.py:24
|
||||
msgid "service"
|
||||
msgstr "servei"
|
||||
|
||||
#: models.py:26
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: models.py:27
|
||||
msgid "Required. 64 characters or fewer. Letters, digits and ./- only."
|
||||
msgstr "Requerit. 64 caràcters o menys. Només lletres, xifres i ./-."
|
||||
|
||||
#: models.py:30
|
||||
msgid "account"
|
||||
msgstr "compte"
|
||||
|
||||
#: models.py:31
|
||||
msgid "active"
|
||||
msgstr "actiu"
|
||||
|
||||
#: models.py:32
|
||||
msgid "Designates whether this service should be treated as active. "
|
||||
msgstr "Designa si aquest servei ha de ser tractat com actiu."
|
||||
|
||||
#: models.py:33
|
||||
msgid "data"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34
|
||||
msgid "Extra information dependent of each service."
|
||||
msgstr "Informació addicional dependent de cada servei."
|
||||
|
||||
#: models.py:36
|
||||
msgid ""
|
||||
"Optional and alternative URL for accessing this service instance. i.e. "
|
||||
"<tt>https://wiki.mydomain/doku/</tt><br>A related website will be "
|
||||
"automatically configured if needed."
|
||||
msgstr ""
|
||||
"URL opcional i alternativa per accedir a aquesta instància de servei. És a dir, "
|
||||
"<tt>https://wiki.mydomain/doku/</tt><br>Un lloc web relacionat serà "
|
||||
"configurat automàticament si és necessari."
|
||||
|
||||
#: services/bscw.py:11 services/bscw.py:15 services/gitlab.py:13
|
||||
#: services/gitlab.py:23 services/seafile.py:13 services/seafile.py:19
|
||||
#: services/wordpress.py:14 services/wordpress.py:32
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: services/dokuwiki.py:22
|
||||
#, python-format
|
||||
msgid "Support for specific URL paths (%s) is not implemented."
|
||||
msgstr "El suport per a rutes d'URL específiques (%s) no està implementat."
|
||||
|
||||
#: services/gitlab.py:14
|
||||
msgid ""
|
||||
"Initial email address, changes on the GitLab server are not reflected here."
|
||||
msgstr ""
|
||||
|
||||
#: services/gitlab.py:19
|
||||
msgid "ID of this user used by GitLab, the only attribute that doesn't change."
|
||||
msgstr ""
|
||||
|
||||
#: services/gitlab.py:24
|
||||
msgid "User ID"
|
||||
msgstr ""
|
||||
|
||||
#: services/helpers.py:18 services/helpers.py:66
|
||||
#, python-format
|
||||
msgid "Error validating related %s: %s"
|
||||
msgstr "Error en validar el %s relacionat: %s"
|
||||
|
||||
#: services/helpers.py:33
|
||||
#, python-format
|
||||
msgid "%s scheme not supported (http/https)"
|
||||
msgstr "Esquema %s no suportat (http/https)"
|
||||
|
||||
#: services/helpers.py:50
|
||||
#, python-format
|
||||
msgid "Domain %s does not exist."
|
||||
msgstr "El domini %s no existeix."
|
||||
|
||||
#: services/helpers.py:54
|
||||
#, python-format
|
||||
msgid "Domain %s does not belong to account %s, it's from %s."
|
||||
msgstr "El domini %s no pertany a l'account %s, és de %s."
|
||||
|
||||
#: services/helpers.py:93
|
||||
#, python-format
|
||||
msgid "Another directive with this URL path exists (%s)."
|
||||
msgstr "Ja existeix una altra directiva amb aquesta ruta d'URL (%s)."
|
||||
|
||||
#: services/moodle.py:12 services/phplist.py:18
|
||||
msgid "Admin username"
|
||||
msgstr "Usuari admin"
|
||||
|
||||
#: services/options.py:34
|
||||
msgid "Software as a Service"
|
||||
msgstr ""
|
||||
|
||||
#: services/options.py:70
|
||||
msgid "Custom URL not allowed for this service."
|
||||
msgstr "URL personalitzada no permesa per a aquest servei."
|
||||
|
||||
#: services/options.py:82
|
||||
msgid "Validate creation execution has failed."
|
||||
msgstr "La validació de l'execució de creació ha fallat."
|
||||
|
||||
#: services/options.py:85
|
||||
msgid "User with this username already exists."
|
||||
msgstr "Ja existeix un usuari amb aquest nom d'usuari."
|
||||
|
||||
#: services/options.py:87
|
||||
msgid "User with this email address already exists."
|
||||
msgstr "Ja existeix un usuari amb aquesta adreça de correu electrònic."
|
||||
|
||||
#: services/options.py:184
|
||||
#, python-format
|
||||
msgid "Global database user for PHPList '%(db_user)s' does not exists."
|
||||
msgstr ""
|
||||
|
||||
#: services/phplist.py:20
|
||||
msgid "Database"
|
||||
msgstr "Base de dades"
|
||||
|
||||
#: services/phplist.py:21
|
||||
msgid "Database dedicated to this phpList instance."
|
||||
msgstr ""
|
||||
|
||||
#: services/phplist.py:24
|
||||
msgid "Bounces mailbox"
|
||||
msgstr ""
|
||||
|
||||
#: services/phplist.py:25
|
||||
msgid "Dedicated mailbox used for reciving bounces."
|
||||
msgstr ""
|
||||
|
||||
#: services/phplist.py:37
|
||||
msgid "Admin URL http://{}/admin/"
|
||||
msgstr ""
|
||||
|
||||
#: services/phplist.py:48
|
||||
#, python-brace-format
|
||||
msgid "Admin URL <a href={0}>{0}</a>"
|
||||
msgstr ""
|
||||
|
||||
#: services/seafile.py:14 services/seafile.py:20
|
||||
msgid "Quota"
|
||||
msgstr ""
|
||||
|
||||
#: services/seafile.py:15 services/seafile.py:21
|
||||
msgid "Disk quota in MB."
|
||||
msgstr ""
|
||||
|
||||
#: services/wordpress.py:15
|
||||
msgid ""
|
||||
"A new user will be created if the above email address is not in the database."
|
||||
"<br>The username and password will be mailed to this email address."
|
||||
msgstr ""
|
||||
"Es crearà un nou usuari si l'adreça de correu electrònic anterior no es troba a la base de dades."
|
||||
"<br>El nom d'usuari i la contrasenya seran enviats a aquesta adreça de correu electrònic."
|
||||
|
||||
#: services/wordpress.py:28
|
||||
msgid ""
|
||||
"ID of this blog used by WordPress, the only attribute that doesn't change."
|
||||
msgstr ""
|
||||
"ID d'aquest blog utilitzat per WordPress, l'únic atribut que no canvia."
|
||||
|
||||
#: services/wordpress.py:33
|
||||
msgid "Blog ID"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:32
|
||||
msgid "IP addresses to ignore during traffic accountability."
|
||||
msgstr "Adreces IP a ignorar durant la responsabilitat del trànsit."
|
||||
|
||||
#: settings.py:41 settings.py:79 settings.py:120 settings.py:138
|
||||
#: settings.py:291
|
||||
msgid "Whether allow custom URL to be specified or not."
|
||||
msgstr "Si es permet especificar una URL personalitzada o no."
|
||||
|
||||
#: settings.py:47 settings.py:234 settings.py:251
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Filesystem path for the webserver access logs.<br><tt>LogFormat \"%h %l %u "
|
||||
"%t \"%r\" %>s %O \"%{Host}i\"\" host</tt>"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:66
|
||||
msgid ""
|
||||
"Needed for domain mapping when <tt>SAAS_WORDPRESS_ALLOW_CUSTOM_URL</tt> is "
|
||||
"enabled."
|
||||
msgstr ""
|
||||
"Necessari per al mapeig de dominis quan <tt>SAAS_WORDPRESS_ALLOW_CUSTOM_URL</tt> està "
|
||||
"habilitat."
|
||||
|
||||
#: settings.py:71 settings.py:182
|
||||
msgid "Verify SSL certificate on the HTTP requests performed by the backend."
|
||||
msgstr "Verificar el certificat SSL a les sol·licituds HTTP realitzades pel backend."
|
||||
|
||||
#: settings.py:144 settings.py:149 settings.py:154 settings.py:159
|
||||
#: settings.py:297 settings.py:302 settings.py:307 settings.py:312
|
||||
msgid "Needed for password changing support."
|
||||
msgstr "Necessari per al suport de canvi de contrasenya."
|
||||
|
||||
#: settings.py:168
|
||||
msgid "Because of max system group name of the bounces mailbox is 32."
|
||||
msgstr "Degut a que el nom màxim del grup del sistema per al correu de rebots és de 32 caràcters."
|
||||
|
||||
#: settings.py:187
|
||||
msgid ""
|
||||
"Filesystem path to the phpList source code installed on the server. Used by "
|
||||
"<tt>SAAS_PHPLIST_CRONTAB</tt>."
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:193
|
||||
msgid ""
|
||||
"System user running phpList on the server.Used by <tt>SAAS_PHPLIST_CRONTAB</"
|
||||
"tt>."
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:200
|
||||
msgid ""
|
||||
"<tt>processqueue</tt> and <tt>processbounce</tt> phpList cron execution. "
|
||||
"Left blank if you don't want crontab to be configured"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:322 settings.py:328
|
||||
msgid ""
|
||||
"Filesystem path to the Moodle source code installed on the server. Used by "
|
||||
"<tt>SAAS_MOODLE_CRONTAB</tt>."
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:334
|
||||
msgid ""
|
||||
"System user running Moodle on the server.Used by <tt>SAAS_MOODLE_CRONTAB</"
|
||||
"tt>."
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:340
|
||||
msgid "Left blank if you don't want crontab to be configured"
|
||||
msgstr "Deixa en blanc si no vols que es configuri el crontab."
|
||||
|
||||
#: validators.py:12
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Allow custom URL is enabled for '%s', but has no associated "
|
||||
"WEBSITES_SAAS_DIRECTIVES"
|
||||
msgstr ""
|
||||
"Es permet la URL personalitzada per a '%s', però no té associades "
|
||||
"les DIRECTIVES_SAAS_WEBSITES."
|
Binary file not shown.
|
@ -0,0 +1,404 @@
|
|||
# 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: 2024-11-08 10:44+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"
|
||||
|
||||
#: admin.py:40
|
||||
msgid "Related website directive does not exist for this custom URL."
|
||||
msgstr ""
|
||||
|
||||
#: admin.py:50
|
||||
msgid "URL"
|
||||
msgstr ""
|
||||
|
||||
#: backends/__init__.py:244
|
||||
msgid "nextCloud SaaS Disk Quota"
|
||||
msgstr "nextCloud SaaS Cuota de Disco"
|
||||
|
||||
#: backends/bscw.py:11
|
||||
msgid "BSCW SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/dokuwikimu.py:20
|
||||
msgid "DokuWiki multisite"
|
||||
msgstr ""
|
||||
|
||||
#: backends/dokuwikimu.py:110
|
||||
msgid "DokuWiki MU Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: backends/drupalmu.py:15
|
||||
msgid "Drupal multisite"
|
||||
msgstr ""
|
||||
|
||||
#: backends/gitlab.py:12
|
||||
msgid "GitLab SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/moodle.py:49
|
||||
msgid "Moodle multisite"
|
||||
msgstr ""
|
||||
|
||||
#: backends/nextcloud.py:15
|
||||
msgid "nextCloud SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/nextcloud.py:55
|
||||
msgid "nextCloud SaaS Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: backends/owncloud.py:104
|
||||
msgid "ownCloud SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/owncloud.py:136
|
||||
msgid "ownCloud SaaS Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: backends/owncloud.py:146
|
||||
msgid "ownCloud SaaS Disk Quota"
|
||||
msgstr ""
|
||||
|
||||
#: backends/phplist.py:32
|
||||
msgid "phpList SaaS"
|
||||
msgstr ""
|
||||
|
||||
#: backends/phplist.py:132
|
||||
msgid "phpList SaaS Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: backends/wordpressmu.py:23
|
||||
msgid "Wordpress multisite"
|
||||
msgstr ""
|
||||
|
||||
#: backends/wordpressmu.py:274
|
||||
msgid "Wordpress MU Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: filters.py:6 models.py:35
|
||||
msgid "custom URL"
|
||||
msgstr "URL Personalizada"
|
||||
|
||||
#: filters.py:11
|
||||
msgid "True"
|
||||
msgstr ""
|
||||
|
||||
#: filters.py:12
|
||||
msgid "False"
|
||||
msgstr ""
|
||||
|
||||
#: forms.py:14
|
||||
msgid "Site URL"
|
||||
msgstr "URL del sitio"
|
||||
|
||||
#: forms.py:48 services/phplist.py:31
|
||||
msgid "Site name"
|
||||
msgstr "Nombre del sitio"
|
||||
|
||||
#: forms.py:48
|
||||
msgid "Username"
|
||||
msgstr "Usuario"
|
||||
|
||||
#: forms.py:52 forms.py:64
|
||||
msgid "Password"
|
||||
msgstr "Contraseña"
|
||||
|
||||
#: forms.py:57 serializers.py:20
|
||||
msgid ""
|
||||
"Enter a valid password. This value may contain any ascii character except "
|
||||
"for '/\"/\\/ characters."
|
||||
msgstr ""
|
||||
"Introduce una contraseña válida. Este valor puede contener cualquier carácter ASCII excepto "
|
||||
"los siguientes caracteres '/\"/\\/ ."
|
||||
|
||||
#: forms.py:61
|
||||
msgid ""
|
||||
"Passwords are not stored, so there is no way to see this service's password, "
|
||||
"but you can change the password using <a href=\"../password/\">this form</a>."
|
||||
msgstr ""
|
||||
"Las contraseñas no se almacenan, por lo que no hay forma de ver la contraseña de este servicio, "
|
||||
"pero puedes cambiar la contraseña utilizando <a href=\"../password/\">en este formulario</a>."
|
||||
|
||||
#: forms.py:67
|
||||
msgid "Password confirmation"
|
||||
msgstr "Confirma contraseña"
|
||||
|
||||
#: forms.py:69
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Introduce la misma contraseña que la anterior, para su verificación."
|
||||
|
||||
#: forms.py:80
|
||||
#, python-format
|
||||
msgid "Suggestion: %s"
|
||||
msgstr "Sugerencia: %s"
|
||||
|
||||
#: forms.py:87
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Los dos campos de contraseña no coinciden."
|
||||
|
||||
#: models.py:24
|
||||
msgid "service"
|
||||
msgstr "servicio"
|
||||
|
||||
#: models.py:26
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: models.py:27
|
||||
msgid "Required. 64 characters or fewer. Letters, digits and ./- only."
|
||||
msgstr "Requerido. 64 caracteres o menos. Solo letras, números y ./-."
|
||||
|
||||
#: models.py:30
|
||||
msgid "account"
|
||||
msgstr "cuenta"
|
||||
|
||||
#: models.py:31
|
||||
msgid "active"
|
||||
msgstr "activo?"
|
||||
|
||||
#: models.py:32
|
||||
msgid "Designates whether this service should be treated as active. "
|
||||
msgstr "Designa si este servicio debe ser tratado como activo."
|
||||
|
||||
#: models.py:33
|
||||
msgid "data"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:34
|
||||
msgid "Extra information dependent of each service."
|
||||
msgstr "Información adicional dependiente de cada servicio."
|
||||
|
||||
#: models.py:36
|
||||
msgid ""
|
||||
"Optional and alternative URL for accessing this service instance. i.e. "
|
||||
"<tt>https://wiki.mydomain/doku/</tt><br>A related website will be "
|
||||
"automatically configured if needed."
|
||||
msgstr ""
|
||||
"URL opcional y alternativa para acceder a esta instancia de servicio. Es decir, "
|
||||
"<tt>https://wiki.mydomain/doku/</tt><br>Un sitio web relacionado será "
|
||||
"configurado automáticamente si es necesario."
|
||||
|
||||
#: services/bscw.py:11 services/bscw.py:15 services/gitlab.py:13
|
||||
#: services/gitlab.py:23 services/seafile.py:13 services/seafile.py:19
|
||||
#: services/wordpress.py:14 services/wordpress.py:32
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: services/dokuwiki.py:22
|
||||
#, python-format
|
||||
msgid "Support for specific URL paths (%s) is not implemented."
|
||||
msgstr "No se ha implementado rutas de URL específicas (%s)."
|
||||
|
||||
#: services/gitlab.py:14
|
||||
msgid ""
|
||||
"Initial email address, changes on the GitLab server are not reflected here."
|
||||
msgstr ""
|
||||
"Dirección de correo electrónico inicial, los cambios en el servidor de GitLab no se reflejan aquí."
|
||||
|
||||
#: services/gitlab.py:19
|
||||
msgid "ID of this user used by GitLab, the only attribute that doesn't change."
|
||||
msgstr "ID de este usuario utilizado por GitLab, el único atributo que no cambia."
|
||||
|
||||
#: services/gitlab.py:24
|
||||
msgid "User ID"
|
||||
msgstr "ID usuario"
|
||||
|
||||
#: services/helpers.py:18 services/helpers.py:66
|
||||
#, python-format
|
||||
msgid "Error validating related %s: %s"
|
||||
msgstr "Error relacionado al validar el %s: %s"
|
||||
|
||||
#: services/helpers.py:33
|
||||
#, python-format
|
||||
msgid "%s scheme not supported (http/https)"
|
||||
msgstr "%s Esquema no soportado (http/https)"
|
||||
|
||||
#: services/helpers.py:50
|
||||
#, python-format
|
||||
msgid "Domain %s does not exist."
|
||||
msgstr "Dominio %s no existe."
|
||||
|
||||
#: services/helpers.py:54
|
||||
#, python-format
|
||||
msgid "Domain %s does not belong to account %s, it's from %s."
|
||||
msgstr "El dominio %s no pertenece a la cuenta %s, es de %s."
|
||||
|
||||
#: services/helpers.py:93
|
||||
#, python-format
|
||||
msgid "Another directive with this URL path exists (%s)."
|
||||
msgstr "Ya existe otra directiva con esta ruta de URL (%s)."
|
||||
|
||||
#: services/moodle.py:12 services/phplist.py:18
|
||||
msgid "Admin username"
|
||||
msgstr "Usuario admin"
|
||||
|
||||
#: services/options.py:34
|
||||
msgid "Software as a Service"
|
||||
msgstr ""
|
||||
|
||||
#: services/options.py:70
|
||||
msgid "Custom URL not allowed for this service."
|
||||
msgstr "URL personalizada no permitida para este servicio."
|
||||
|
||||
#: services/options.py:82
|
||||
msgid "Validate creation execution has failed."
|
||||
msgstr "La validación de la ejecución de creación ha fallado."
|
||||
|
||||
#: services/options.py:85
|
||||
msgid "User with this username already exists."
|
||||
msgstr "El usuario con este nombre ya existe."
|
||||
|
||||
#: services/options.py:87
|
||||
msgid "User with this email address already exists."
|
||||
msgstr "El usuario con este email ya existe."
|
||||
|
||||
#: services/options.py:184
|
||||
#, python-format
|
||||
msgid "Global database user for PHPList '%(db_user)s' does not exists."
|
||||
msgstr "El usuario global de la base de datos para PHPList '%(db_user)s' no existe."
|
||||
|
||||
#: services/phplist.py:20
|
||||
msgid "Database"
|
||||
msgstr "Base de datos"
|
||||
|
||||
#: services/phplist.py:21
|
||||
msgid "Database dedicated to this phpList instance."
|
||||
msgstr "Base de datos dedicada a esta instancia de phpList."
|
||||
|
||||
#: services/phplist.py:24
|
||||
msgid "Bounces mailbox"
|
||||
msgstr ""
|
||||
|
||||
#: services/phplist.py:25
|
||||
msgid "Dedicated mailbox used for reciving bounces."
|
||||
msgstr ""
|
||||
|
||||
#: services/phplist.py:37
|
||||
msgid "Admin URL http://{}/admin/"
|
||||
msgstr ""
|
||||
|
||||
#: services/phplist.py:48
|
||||
#, python-brace-format
|
||||
msgid "Admin URL <a href={0}>{0}</a>"
|
||||
msgstr ""
|
||||
|
||||
#: services/seafile.py:14 services/seafile.py:20
|
||||
msgid "Quota"
|
||||
msgstr ""
|
||||
|
||||
#: services/seafile.py:15 services/seafile.py:21
|
||||
msgid "Disk quota in MB."
|
||||
msgstr ""
|
||||
|
||||
#: services/wordpress.py:15
|
||||
msgid ""
|
||||
"A new user will be created if the above email address is not in the database."
|
||||
"<br>The username and password will be mailed to this email address."
|
||||
msgstr ""
|
||||
"Se creará un nuevo usuario si la dirección de correo electrónico anterior no está en la base de datos."
|
||||
"<br>El nombre de usuario y la contraseña se enviarán a esta dirección de correo electrónico."
|
||||
|
||||
#: services/wordpress.py:28
|
||||
msgid ""
|
||||
"ID of this blog used by WordPress, the only attribute that doesn't change."
|
||||
msgstr ""
|
||||
"ID de este blog utilizado por WordPress, el único atributo que no cambia."
|
||||
|
||||
#: services/wordpress.py:33
|
||||
msgid "Blog ID"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:32
|
||||
msgid "IP addresses to ignore during traffic accountability."
|
||||
msgstr "Direcciones IP a ignorar durante la contabilidad del tráfico."
|
||||
|
||||
#: settings.py:41 settings.py:79 settings.py:120 settings.py:138
|
||||
#: settings.py:291
|
||||
msgid "Whether allow custom URL to be specified or not."
|
||||
msgstr "Si se permite o no especificar una URL personalizada."
|
||||
|
||||
#: settings.py:47 settings.py:234 settings.py:251
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"Filesystem path for the webserver access logs.<br><tt>LogFormat \"%h %l %u "
|
||||
"%t \"%r\" %>s %O \"%{Host}i\"\" host</tt>"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:66
|
||||
msgid ""
|
||||
"Needed for domain mapping when <tt>SAAS_WORDPRESS_ALLOW_CUSTOM_URL</tt> is "
|
||||
"enabled."
|
||||
msgstr ""
|
||||
"Necesario para el mapeo de dominios cuando <tt>SAAS_WORDPRESS_ALLOW_CUSTOM_URL</tt> está "
|
||||
"habilitado."
|
||||
|
||||
#: settings.py:71 settings.py:182
|
||||
msgid "Verify SSL certificate on the HTTP requests performed by the backend."
|
||||
msgstr "Verificar el certificado SSL en las solicitudes HTTP realizadas por el backend."
|
||||
|
||||
#: settings.py:144 settings.py:149 settings.py:154 settings.py:159
|
||||
#: settings.py:297 settings.py:302 settings.py:307 settings.py:312
|
||||
msgid "Needed for password changing support."
|
||||
msgstr "Necesario para el soporte de cambio de contraseña."
|
||||
|
||||
#: settings.py:168
|
||||
msgid "Because of max system group name of the bounces mailbox is 32."
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:187
|
||||
msgid ""
|
||||
"Filesystem path to the phpList source code installed on the server. Used by "
|
||||
"<tt>SAAS_PHPLIST_CRONTAB</tt>."
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:193
|
||||
msgid ""
|
||||
"System user running phpList on the server.Used by <tt>SAAS_PHPLIST_CRONTAB</"
|
||||
"tt>."
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:200
|
||||
msgid ""
|
||||
"<tt>processqueue</tt> and <tt>processbounce</tt> phpList cron execution. "
|
||||
"Left blank if you don't want crontab to be configured"
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:322 settings.py:328
|
||||
msgid ""
|
||||
"Filesystem path to the Moodle source code installed on the server. Used by "
|
||||
"<tt>SAAS_MOODLE_CRONTAB</tt>."
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:334
|
||||
msgid ""
|
||||
"System user running Moodle on the server.Used by <tt>SAAS_MOODLE_CRONTAB</"
|
||||
"tt>."
|
||||
msgstr ""
|
||||
|
||||
#: settings.py:340
|
||||
msgid "Left blank if you don't want crontab to be configured"
|
||||
msgstr ""
|
||||
|
||||
#: validators.py:12
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Allow custom URL is enabled for '%s', but has no associated "
|
||||
"WEBSITES_SAAS_DIRECTIVES"
|
||||
msgstr ""
|
||||
"Se ha habilitado la URL personalizada para '%s', pero no tiene asociadas "
|
||||
"las DIRECTIVAS_SAAS_WEBSITES."
|
Loading…
Reference in New Issue