1
0
mirror of https://github.com/dkmstr/openuds.git synced 2024-12-22 13:34:04 +03:00

Advancing with very basic aspects of administration/REST api

This commit is contained in:
Adolfo Gómez 2013-11-14 11:17:07 +00:00
parent 6e0511add3
commit d68822eaf7
29 changed files with 836 additions and 383 deletions

View File

@ -11,7 +11,9 @@ encoding//src/server/urls.py=utf-8
encoding//src/uds/REST/__init__.py=utf-8
encoding//src/uds/REST/handlers.py=utf-8
encoding//src/uds/REST/methods/authentication.py=utf-8
encoding//src/uds/REST/methods/authenticators.py=utf-8
encoding//src/uds/REST/methods/providers.py=utf-8
encoding//src/uds/REST/mixins.py=utf-8
encoding//src/uds/REST/processors.py=utf-8
encoding//src/uds/__init__.py=utf-8
encoding//src/uds/admin/urls.py=utf-8

View File

@ -0,0 +1,77 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
from django.utils.translation import ugettext_lazy as _
from uds.models import Authenticator
from uds.core import auths
from uds.REST import Handler, HandlerError
from uds.REST.mixins import ModelHandlerMixin, ModelTypeHandlerMixin, ModelTableHandlerMixin
import logging
logger = logging.getLogger(__name__)
# Enclosed methods under /auth path
class Authenticators(ModelHandlerMixin, Handler):
model = Authenticator
def item_as_dict(self, auth):
type_ = auth.getType()
return { 'id': auth.id,
'name': auth.name,
'users_count': auth.users.count(),
'type': type_.type(),
'comments': auth.comments,
'type_name': type_.name(),
}
class Types(ModelTypeHandlerMixin, Handler):
path = 'authenticators'
model = Authenticator
def enum_types(self):
return auths.factory().providers().values()
class TableInfo(ModelTableHandlerMixin, Handler):
path = 'authenticators'
title = _('Current authenticators')
fields = [
{ 'name': {'title': _('Name'), 'visible': True } },
{ 'comments': {'title': _('Comments')}},
{ 'users_count': {'title': _('Users'), 'type': 'numeric', 'width': '5em'}}
]

View File

@ -32,48 +32,44 @@
'''
from __future__ import unicode_literals
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext, ugettext_lazy as _
from uds.models import Provider
from uds.core import services
from uds.REST import Handler, HandlerError
from uds.REST.mixins import ModelHandlerMixin, ModelTypeHandlerMixin, ModelTableHandlerMixin
import logging
logger = logging.getLogger(__name__)
# Enclosed methods under /auth path
class Providers(Handler):
authenticated = True # Public method
class Providers(ModelHandlerMixin, Handler):
model = Provider
def provider_item(self, provider):
def item_as_dict(self, provider):
type_ = provider.getType()
return { 'id': provider.id,
'name': provider.name,
'services_count': provider.services.count(),
'type': type_.type(),
'comments': provider.comments,
'type_name': type_.name(),
}
def getProviders(self, *args, **kwargs):
for provider in Provider.objects.filter(*args, **kwargs):
yield self.provider_item(provider)
def get(self):
logger.error('getting providers')
return list(self.getProviders())
class Types(Handler):
class Types(ModelTypeHandlerMixin, Handler):
path = 'providers'
model = Provider
def get(self):
res = []
for type_ in services.factory().providers().values():
val = { 'name' : _(type_.name()),
'type' : type_.type(),
'description' : _(type_.description()),
'icon' : type_.icon().replace('\n', '') }
res.append(val)
return res
def enum_types(self):
return services.factory().providers().values()
class TableInfo(ModelTableHandlerMixin, Handler):
path = 'providers'
title = _('Current service providers')
fields = [
{ 'name': {'title': _('Name')} },
{ 'comments': {'title': _('Comments')}},
{ 'services_count': {'title': _('Services'), 'type': 'numeric', 'width': '5em'}}
]

View File

@ -0,0 +1,123 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2014 Virtual Cable S.L.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of Virtual Cable S.L. nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'''
@author: Adolfo Gómez, dkmaster at dkmon dot com
'''
from __future__ import unicode_literals
from django.utils.translation import ugettext as _
import logging
logger = logging.getLogger(__name__)
class ModelHandlerMixin(object):
'''
Basic Handler for a model
Basically we will need same operations for all models, so we can
take advantage of this fact to not repeat same code again and again...
'''
authenticated = True
needs_staff = True
model = None
def item_as_dict(self, item):
pass
def getItems(self, *args, **kwargs):
for item in self.model.objects.filter(*args, **kwargs):
yield self.item_as_dict(item)
def get(self):
logger.debug('methot GET for {0}'.format(self.__class__.__name__))
if len(self._args) == 0:
return list(self.getItems())
try:
return list(self.getItems(pk=self._args[0]))[0]
except:
return {'error': 'not found' }
class ModelTypeHandlerMixin(object):
'''
As With models, a lot of UDS model contains info about its class.
We take advantage of this for not repeating same code (as with ModelHandlerMixin)
'''
authenticated = True
needs_staff = True
model = None
def enum_types(self):
pass
def type_as_dict(self, type_):
return { 'name' : _(type_.name()),
'type' : type_.type(),
'description' : _(type_.description()),
'icon' : type_.icon().replace('\n', '')
}
def getTypes(self, *args, **kwargs):
for type_ in self.enum_types():
yield self.type_as_dict(type_)
def get(self):
return list(self.getTypes())
class ModelTableHandlerMixin(object):
authenticated = True
needs_staff = True
# Fields should have id of the field, type and length
# All options can be ommited
# Sample fields:
# fields = [
# { 'name': {'title': _('Name')} },
# { 'comments': {'title': _('Comments')}},
# { 'services_count': {'title': _('Services'), 'type': 'numeric', 'width': '5em'}}
#]
fields = []
title = ''
def get(self):
# Convert to unicode fields (ugettext_lazy needs to be rendered before passing it to Json
fields = [ { 'id' : {'visible': False } } ] # Always add id column as invisible
for f in self.fields:
for k1, v1 in f.iteritems():
dct = {}
for k2, v2 in v1.iteritems():
if type(v2) in (bool, int, long, float, unicode):
dct[k2] = v2
else:
dct[k2] = unicode(v2)
fields.append({k1: dct})
return { 'title': unicode(self.title), 'fields': fields };

View File

@ -32,7 +32,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\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"
@ -42,6 +42,31 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: REST/methods/authenticators.py:72
msgid "Current authenticators"
msgstr "Aktuelle Authentifikatoren"
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
msgid "Name"
msgstr "Name"
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
msgid "Comments"
msgstr "Kommentare"
#: REST/methods/authenticators.py:76
msgid "Users"
msgstr "Benutzer"
#: REST/methods/providers.py:69
msgid "Current service providers"
msgstr "Aktuelle Service-Provider"
#: REST/methods/providers.py:73 templates/uds/index.html:51
#: templates/uds/html5/index.html:68
msgid "Services"
msgstr "Dienstleistungen"
#: admin/views.py:53 admin/views.py:61 web/views.py:422
msgid "Forbidden"
msgstr "Verboten"
@ -1041,42 +1066,38 @@ msgstr ""
"Diese Seite enthält eine Liste der Downloads von verschiedenen Modulen "
"bereitgestellt"
#: templates/uds/index.html:51 templates/uds/html5/index.html:63
msgid "Services"
msgstr "Dienstleistungen"
#: templates/uds/index.html:70 templates/uds/html5/index.html:101
#: templates/uds/index.html:70 templates/uds/html5/index.html:106
msgid "Java not found"
msgstr "Java nicht gefunden"
#: templates/uds/index.html:71 templates/uds/html5/index.html:104
#: templates/uds/index.html:71 templates/uds/html5/index.html:109
msgid ""
"Java is not available on your browser, and the selected transport needs it."
msgstr ""
"Java ist nicht verfügbar in Ihrem Browser, und der ausgewählte Transport "
"muss es."
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Please, install latest version from"
msgstr "Bitte installieren Sie neueste Version von"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Java website"
msgstr "Java-website"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "and restart browser"
msgstr "und Browser neu starten"
#: templates/uds/index.html:78 templates/uds/html5/index.html:121
#: templates/uds/index.html:78 templates/uds/html5/index.html:126
msgid "Ip"
msgstr "IP"
#: templates/uds/index.html:79 templates/uds/html5/index.html:122
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
msgid "Networks"
msgstr "Netzwerke"
#: templates/uds/index.html:80 templates/uds/html5/index.html:123
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
msgid "Transports"
msgstr "Transporte"
@ -1140,10 +1161,6 @@ msgstr "Service-Provider"
msgid "Authenticators"
msgstr "Authentifikatoren"
#: templates/uds/admin/snippets/navbar.html:19
msgid "Os Managers"
msgstr "OS-Manager"
#: templates/uds/admin/snippets/navbar.html:20
msgid "Connectivity"
msgstr "Konnektivität"
@ -1183,14 +1200,22 @@ msgstr "Zurück zur Liste"
msgid "Available services list"
msgstr "Liste der verfügbaren Dienste"
#: templates/uds/html5/index.html:78
#: templates/uds/html5/index.html:83
msgid "transports"
msgstr "Transporte"
#: templates/uds/html5/index.html:118
#: templates/uds/html5/index.html:123
msgid "Administrator info panel"
msgstr "Administrator-Info-Tafel"
#: templates/uds/html5/index.html:129
msgid "User Agent"
msgstr "User-Agent"
#: templates/uds/html5/index.html:130
msgid "OS"
msgstr "OS"
#: templates/uds/html5/login.html:4 templates/uds/html5/login.html.py:69
msgid "Welcome to UDS"
msgstr "Willkommen bei der UDS"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\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"
@ -26,58 +26,62 @@ msgstr "Erfolg auf\""
msgid "Received "
msgstr "Empfangen "
#: static/adm/js/gui.js:43
msgid "Name"
msgstr "Name"
#: static/adm/js/gui.js:44
msgid "Type"
msgstr "Typ"
#: static/adm/js/gui.js:45
msgid "Number of Services"
msgstr "Anzahl der Dienste"
#: static/adm/js/gui.js:48
#: static/adm/js/gui.js:17
msgid "Display _MENU_ records per page"
msgstr "_MENU_-Einträge pro Seite anzeigen"
#: static/adm/js/gui.js:49
#: static/adm/js/gui.js:18
msgid "Nothing found - sorry"
msgstr "Nichts gefunden - sorry"
#: static/adm/js/gui.js:50
msgid "Showing _START_ to _END_ of _TOTAL_ records"
msgstr "Anzeigen auf _END_ von _TOTAL_ Datensätzen _START_"
#: static/adm/js/gui.js:19
msgid "Showing record _START_ to _END_ of _TOTAL_"
msgstr "Ergebnis Rekord _START_ zu _END_ von _TOTAL_"
#: static/adm/js/gui.js:51
#: static/adm/js/gui.js:20
msgid "Showing 0 to 0 of 0 records"
msgstr "Anzeigen 0 bis 0 von 0 Einträge"
#: static/adm/js/gui.js:52
#: static/adm/js/gui.js:21
msgid "(filtered from _MAX_ total records)"
msgstr "(von _MAX_ Datensätze gefiltert)"
#: static/adm/js/gui.js:53
#: static/adm/js/gui.js:22
msgid "Please wait, processing"
msgstr "Bitte warten, Verarbeitung"
#: static/adm/js/gui.js:54
#: static/adm/js/gui.js:23
msgid "Search"
msgstr "Suche"
#: static/adm/js/gui.js:56
#: static/adm/js/gui.js:26
msgid "First"
msgstr "Erste"
#: static/adm/js/gui.js:57
#: static/adm/js/gui.js:27
msgid "Last"
msgstr "Letzter"
#: static/adm/js/gui.js:58
#: static/adm/js/gui.js:28
msgid "Next"
msgstr "Nächste"
#: static/adm/js/gui.js:59
#: static/adm/js/gui.js:29
msgid "Previous"
msgstr "Vorherige"
#: static/adm/js/gui.js:83
msgid "Connectivity"
msgstr "Konnektivität"
#: static/adm/js/gui.js:88
msgid "Deployed services"
msgstr "Bereitgestellten Dienste"
#: static/adm/js/gui.js:181
msgid "Service Providers"
msgstr "Service-Provider"
#: static/adm/js/gui.js:191
msgid "Authenticators"
msgstr "Authentifikatoren"

View File

@ -31,7 +31,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\n"
"PO-Revision-Date: 2013-04-22 06:24+0200\n"
"Last-Translator: \n"
"Language-Team: Spanish <kde-i18n-doc@kde.org>\n"
@ -42,6 +42,31 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Lokalize 1.4\n"
#: REST/methods/authenticators.py:72
msgid "Current authenticators"
msgstr "Autenticadores actuales"
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
msgid "Name"
msgstr "Nombre"
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
msgid "Comments"
msgstr "Comentarios"
#: REST/methods/authenticators.py:76
msgid "Users"
msgstr "Usuarios"
#: REST/methods/providers.py:69
msgid "Current service providers"
msgstr "Proveedores de servicio actuales"
#: REST/methods/providers.py:73 templates/uds/index.html:51
#: templates/uds/html5/index.html:68
msgid "Services"
msgstr "Servicios"
#: admin/views.py:53 admin/views.py:61 web/views.py:422
msgid "Forbidden"
msgstr "Prohibido"
@ -1027,42 +1052,38 @@ msgstr ""
"Esta página contiene una lista de descargas proporcionadas por diferentes "
"módulos"
#: templates/uds/index.html:51 templates/uds/html5/index.html:63
msgid "Services"
msgstr "Servicios"
#: templates/uds/index.html:70 templates/uds/html5/index.html:101
#: templates/uds/index.html:70 templates/uds/html5/index.html:106
msgid "Java not found"
msgstr "Java no encontrado"
#: templates/uds/index.html:71 templates/uds/html5/index.html:104
#: templates/uds/index.html:71 templates/uds/html5/index.html:109
msgid ""
"Java is not available on your browser, and the selected transport needs it."
msgstr ""
"Java no está disponible en el navegador, y el transporte seleccionado "
"precisa de el."
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Please, install latest version from"
msgstr "Instale la versión mas reciente desde el"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Java website"
msgstr "Sitio Web de Java"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "and restart browser"
msgstr "y reinicie el navegador"
#: templates/uds/index.html:78 templates/uds/html5/index.html:121
#: templates/uds/index.html:78 templates/uds/html5/index.html:126
msgid "Ip"
msgstr "IP"
#: templates/uds/index.html:79 templates/uds/html5/index.html:122
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
msgid "Networks"
msgstr "Redes"
#: templates/uds/index.html:80 templates/uds/html5/index.html:123
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
msgid "Transports"
msgstr "Transportes"
@ -1126,10 +1147,6 @@ msgstr "Proveedores de servicios"
msgid "Authenticators"
msgstr "Autenticadores"
#: templates/uds/admin/snippets/navbar.html:19
msgid "Os Managers"
msgstr "Administradores de sistema operativo"
#: templates/uds/admin/snippets/navbar.html:20
msgid "Connectivity"
msgstr "Conectividad"
@ -1169,14 +1186,22 @@ msgstr "Volver a la lista de servicios"
msgid "Available services list"
msgstr "Lista de servicios disponibles"
#: templates/uds/html5/index.html:78
#: templates/uds/html5/index.html:83
msgid "transports"
msgstr "transportes"
#: templates/uds/html5/index.html:118
#: templates/uds/html5/index.html:123
msgid "Administrator info panel"
msgstr "Panel de información del administrador"
#: templates/uds/html5/index.html:129
msgid "User Agent"
msgstr "Agente de usuario"
#: templates/uds/html5/index.html:130
msgid "OS"
msgstr "OS"
#: templates/uds/html5/login.html:4 templates/uds/html5/login.html.py:69
msgid "Welcome to UDS"
msgstr "¡ Bienvenido a UDS"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\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"
@ -26,58 +26,62 @@ msgstr "Éxito de\""
msgid "Received "
msgstr "Recibido "
#: static/adm/js/gui.js:43
msgid "Name"
msgstr "Nombre"
#: static/adm/js/gui.js:44
msgid "Type"
msgstr "Tipo"
#: static/adm/js/gui.js:45
msgid "Number of Services"
msgstr "Número de servicios"
#: static/adm/js/gui.js:48
#: static/adm/js/gui.js:17
msgid "Display _MENU_ records per page"
msgstr "Pantalla _MENU_ registros por página"
#: static/adm/js/gui.js:49
#: static/adm/js/gui.js:18
msgid "Nothing found - sorry"
msgstr "No encontrado - lo siento"
#: static/adm/js/gui.js:50
msgid "Showing _START_ to _END_ of _TOTAL_ records"
msgstr "Mostrando _START_ a _END_ de registros _TOTAL_"
#: static/adm/js/gui.js:19
msgid "Showing record _START_ to _END_ of _TOTAL_"
msgstr "Mostrando registro _START_ a _END_ de _TOTAL_"
#: static/adm/js/gui.js:51
#: static/adm/js/gui.js:20
msgid "Showing 0 to 0 of 0 records"
msgstr "Mostrando 0 a 0 de 0 registros"
#: static/adm/js/gui.js:52
#: static/adm/js/gui.js:21
msgid "(filtered from _MAX_ total records)"
msgstr "(filtrado de registros total _MAX_)"
#: static/adm/js/gui.js:53
#: static/adm/js/gui.js:22
msgid "Please wait, processing"
msgstr "Por favor espere, procesando"
#: static/adm/js/gui.js:54
#: static/adm/js/gui.js:23
msgid "Search"
msgstr "Búsqueda de"
#: static/adm/js/gui.js:56
#: static/adm/js/gui.js:26
msgid "First"
msgstr "Primero"
#: static/adm/js/gui.js:57
#: static/adm/js/gui.js:27
msgid "Last"
msgstr "Duran"
#: static/adm/js/gui.js:58
#: static/adm/js/gui.js:28
msgid "Next"
msgstr "Próxima"
#: static/adm/js/gui.js:59
#: static/adm/js/gui.js:29
msgid "Previous"
msgstr "Anterior"
#: static/adm/js/gui.js:83
msgid "Connectivity"
msgstr "Conectividad"
#: static/adm/js/gui.js:88
msgid "Deployed services"
msgstr "Servicios desplegados"
#: static/adm/js/gui.js:181
msgid "Service Providers"
msgstr "Proveedores de servicios"
#: static/adm/js/gui.js:191
msgid "Authenticators"
msgstr "Autenticadores"

View File

@ -32,7 +32,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\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"
@ -42,6 +42,31 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
#: REST/methods/authenticators.py:72
msgid "Current authenticators"
msgstr "Authentificateurs actuels"
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
msgid "Name"
msgstr "Nom"
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
msgid "Comments"
msgstr "Commentaires"
#: REST/methods/authenticators.py:76
msgid "Users"
msgstr "Utilisateurs"
#: REST/methods/providers.py:69
msgid "Current service providers"
msgstr "Fournisseurs de services actuels"
#: REST/methods/providers.py:73 templates/uds/index.html:51
#: templates/uds/html5/index.html:68
msgid "Services"
msgstr "Services"
#: admin/views.py:53 admin/views.py:61 web/views.py:422
msgid "Forbidden"
msgstr "Interdit"
@ -1039,42 +1064,38 @@ msgstr ""
"Cette page contient une liste de téléchargeables fournis par différents "
"modules"
#: templates/uds/index.html:51 templates/uds/html5/index.html:63
msgid "Services"
msgstr "Services"
#: templates/uds/index.html:70 templates/uds/html5/index.html:101
#: templates/uds/index.html:70 templates/uds/html5/index.html:106
msgid "Java not found"
msgstr "Java non trouvé"
#: templates/uds/index.html:71 templates/uds/html5/index.html:104
#: templates/uds/index.html:71 templates/uds/html5/index.html:109
msgid ""
"Java is not available on your browser, and the selected transport needs it."
msgstr ""
"Java n'est pas disponible sur votre navigateur, et le transport sélectionné "
"en a besoin."
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Please, install latest version from"
msgstr "Veuillez installer une version plus récente de"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Java website"
msgstr "Site Web Java"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "and restart browser"
msgstr "Redémarrez le navigateur"
#: templates/uds/index.html:78 templates/uds/html5/index.html:121
#: templates/uds/index.html:78 templates/uds/html5/index.html:126
msgid "Ip"
msgstr "IP"
#: templates/uds/index.html:79 templates/uds/html5/index.html:122
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
msgid "Networks"
msgstr "Réseaux"
#: templates/uds/index.html:80 templates/uds/html5/index.html:123
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
msgid "Transports"
msgstr "Transports"
@ -1138,10 +1159,6 @@ msgstr "Fournisseurs de services"
msgid "Authenticators"
msgstr "Authentificateurs"
#: templates/uds/admin/snippets/navbar.html:19
msgid "Os Managers"
msgstr "Gestionnaires de système d'exploitation"
#: templates/uds/admin/snippets/navbar.html:20
msgid "Connectivity"
msgstr "Connectivité"
@ -1181,14 +1198,22 @@ msgstr "Retour à la liste de services"
msgid "Available services list"
msgstr "Liste des services disponibles"
#: templates/uds/html5/index.html:78
#: templates/uds/html5/index.html:83
msgid "transports"
msgstr "Transports"
#: templates/uds/html5/index.html:118
#: templates/uds/html5/index.html:123
msgid "Administrator info panel"
msgstr "Panneau info administrateur"
#: templates/uds/html5/index.html:129
msgid "User Agent"
msgstr "User Agent"
#: templates/uds/html5/index.html:130
msgid "OS"
msgstr "SYSTÈME D'EXPLOITATION"
#: templates/uds/html5/login.html:4 templates/uds/html5/login.html.py:69
msgid "Welcome to UDS"
msgstr "Bienvenue à l'UDS"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\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"
@ -26,58 +26,62 @@ msgstr "Succès sur\""
msgid "Received "
msgstr "Reçu "
#: static/adm/js/gui.js:43
msgid "Name"
msgstr "Nom"
#: static/adm/js/gui.js:44
msgid "Type"
msgstr "Type"
#: static/adm/js/gui.js:45
msgid "Number of Services"
msgstr "Nombre de Services"
#: static/adm/js/gui.js:48
#: static/adm/js/gui.js:17
msgid "Display _MENU_ records per page"
msgstr "Afficher _MENU_ enregistrements par page"
#: static/adm/js/gui.js:49
#: static/adm/js/gui.js:18
msgid "Nothing found - sorry"
msgstr "Rien trouvé - Désolé"
#: static/adm/js/gui.js:50
msgid "Showing _START_ to _END_ of _TOTAL_ records"
msgstr "Liste des _START_ de _END_ de documents _TOTAL_"
#: static/adm/js/gui.js:19
msgid "Showing record _START_ to _END_ of _TOTAL_"
msgstr "Affichage des enregistrement _START_ à _END_ de _TOTAL_"
#: static/adm/js/gui.js:51
#: static/adm/js/gui.js:20
msgid "Showing 0 to 0 of 0 records"
msgstr "Affichage de 0 à 0 sur 0 documents"
#: static/adm/js/gui.js:52
#: static/adm/js/gui.js:21
msgid "(filtered from _MAX_ total records)"
msgstr "(filtrée de total d'enregistrements _MAX_)"
#: static/adm/js/gui.js:53
#: static/adm/js/gui.js:22
msgid "Please wait, processing"
msgstr "Veuillez patienter, traitement"
#: static/adm/js/gui.js:54
#: static/adm/js/gui.js:23
msgid "Search"
msgstr "Rechercher"
#: static/adm/js/gui.js:56
#: static/adm/js/gui.js:26
msgid "First"
msgstr "Première"
#: static/adm/js/gui.js:57
#: static/adm/js/gui.js:27
msgid "Last"
msgstr "Dernière"
#: static/adm/js/gui.js:58
#: static/adm/js/gui.js:28
msgid "Next"
msgstr "Prochaine"
#: static/adm/js/gui.js:59
#: static/adm/js/gui.js:29
msgid "Previous"
msgstr "Précédent"
#: static/adm/js/gui.js:83
msgid "Connectivity"
msgstr "Connectivité"
#: static/adm/js/gui.js:88
msgid "Deployed services"
msgstr "Services déployés"
#: static/adm/js/gui.js:181
msgid "Service Providers"
msgstr "Fournisseurs de services"
#: static/adm/js/gui.js:191
msgid "Authenticators"
msgstr "Authentificateurs"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\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"
@ -18,6 +18,31 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: REST/methods/authenticators.py:72
msgid "Current authenticators"
msgstr "Autenticatori correnti"
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
msgid "Name"
msgstr "Nome"
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
msgid "Comments"
msgstr "Commenti"
#: REST/methods/authenticators.py:76
msgid "Users"
msgstr "Utenti"
#: REST/methods/providers.py:69
msgid "Current service providers"
msgstr "Attuali fornitori di servizi"
#: REST/methods/providers.py:73 templates/uds/index.html:51
#: templates/uds/html5/index.html:68
msgid "Services"
msgstr "Servizi"
#: admin/views.py:53 admin/views.py:61 web/views.py:422
msgid "Forbidden"
msgstr "Vietato"
@ -1007,42 +1032,38 @@ msgid ""
msgstr ""
"Questa pagina contiene un elenco di scaricabili forniti da diversi moduli"
#: templates/uds/index.html:51 templates/uds/html5/index.html:63
msgid "Services"
msgstr "Servizi"
#: templates/uds/index.html:70 templates/uds/html5/index.html:101
#: templates/uds/index.html:70 templates/uds/html5/index.html:106
msgid "Java not found"
msgstr "Java non trovato"
#: templates/uds/index.html:71 templates/uds/html5/index.html:104
#: templates/uds/index.html:71 templates/uds/html5/index.html:109
msgid ""
"Java is not available on your browser, and the selected transport needs it."
msgstr ""
"Java non è disponibile sul vostro browser, e il trasporto selezionato di cui "
"ha bisogno."
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Please, install latest version from"
msgstr "Per favore, installare la versione più recente da"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Java website"
msgstr "Sito Web Java"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "and restart browser"
msgstr "e riavviare il browser"
#: templates/uds/index.html:78 templates/uds/html5/index.html:121
#: templates/uds/index.html:78 templates/uds/html5/index.html:126
msgid "Ip"
msgstr "IP"
#: templates/uds/index.html:79 templates/uds/html5/index.html:122
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
msgid "Networks"
msgstr "Reti"
#: templates/uds/index.html:80 templates/uds/html5/index.html:123
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
msgid "Transports"
msgstr "Trasporti"
@ -1106,10 +1127,6 @@ msgstr "Fornitori di servizi"
msgid "Authenticators"
msgstr "Autenticatori"
#: templates/uds/admin/snippets/navbar.html:19
msgid "Os Managers"
msgstr "OS Manager"
#: templates/uds/admin/snippets/navbar.html:20
msgid "Connectivity"
msgstr "Connettività"
@ -1149,14 +1166,22 @@ msgstr "Torna alla lista di servizi"
msgid "Available services list"
msgstr "Elenco dei servizi disponibili"
#: templates/uds/html5/index.html:78
#: templates/uds/html5/index.html:83
msgid "transports"
msgstr "trasporti"
#: templates/uds/html5/index.html:118
#: templates/uds/html5/index.html:123
msgid "Administrator info panel"
msgstr "Pannello info amministratore"
#: templates/uds/html5/index.html:129
msgid "User Agent"
msgstr "Agente utente"
#: templates/uds/html5/index.html:130
msgid "OS"
msgstr "OS"
#: templates/uds/html5/login.html:4 templates/uds/html5/login.html.py:69
msgid "Welcome to UDS"
msgstr "Benvenuti a UDS"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\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"
@ -26,58 +26,62 @@ msgstr "Successo su\""
msgid "Received "
msgstr "Ricevuto "
#: static/adm/js/gui.js:43
msgid "Name"
msgstr "Nome"
#: static/adm/js/gui.js:44
msgid "Type"
msgstr "Tipo"
#: static/adm/js/gui.js:45
msgid "Number of Services"
msgstr "Numero dei servizi"
#: static/adm/js/gui.js:48
#: static/adm/js/gui.js:17
msgid "Display _MENU_ records per page"
msgstr "Visualizzare _MENU_ record per pagina"
#: static/adm/js/gui.js:49
#: static/adm/js/gui.js:18
msgid "Nothing found - sorry"
msgstr "Trovato nulla - ci dispiace"
#: static/adm/js/gui.js:50
msgid "Showing _START_ to _END_ of _TOTAL_ records"
msgstr "Mostrando _START_ a _END_ di record _TOTAL_"
#: static/adm/js/gui.js:19
msgid "Showing record _START_ to _END_ of _TOTAL_"
msgstr "Risultati record _START_ per _END_ di _TOTAL_"
#: static/adm/js/gui.js:51
#: static/adm/js/gui.js:20
msgid "Showing 0 to 0 of 0 records"
msgstr "Mostrando 0-0 di 0 record"
#: static/adm/js/gui.js:52
#: static/adm/js/gui.js:21
msgid "(filtered from _MAX_ total records)"
msgstr "(filtrato da record totale _MAX_)"
#: static/adm/js/gui.js:53
#: static/adm/js/gui.js:22
msgid "Please wait, processing"
msgstr "Attendere prego, elaborazione"
#: static/adm/js/gui.js:54
#: static/adm/js/gui.js:23
msgid "Search"
msgstr "Ricerca"
#: static/adm/js/gui.js:56
#: static/adm/js/gui.js:26
msgid "First"
msgstr "Primo"
#: static/adm/js/gui.js:57
#: static/adm/js/gui.js:27
msgid "Last"
msgstr "Ultima"
#: static/adm/js/gui.js:58
#: static/adm/js/gui.js:28
msgid "Next"
msgstr "Prossimo"
#: static/adm/js/gui.js:59
#: static/adm/js/gui.js:29
msgid "Previous"
msgstr "Precedente"
#: static/adm/js/gui.js:83
msgid "Connectivity"
msgstr "Connettività"
#: static/adm/js/gui.js:88
msgid "Deployed services"
msgstr "Servizi distribuiti"
#: static/adm/js/gui.js:181
msgid "Service Providers"
msgstr "Fornitori di servizi"
#: static/adm/js/gui.js:191
msgid "Authenticators"
msgstr "Autenticatori"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\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"
@ -18,6 +18,31 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: REST/methods/authenticators.py:72
msgid "Current authenticators"
msgstr "Autenticadores atuais"
#: REST/methods/authenticators.py:74 REST/methods/providers.py:71
msgid "Name"
msgstr "Nome"
#: REST/methods/authenticators.py:75 REST/methods/providers.py:72
msgid "Comments"
msgstr "Comentários"
#: REST/methods/authenticators.py:76
msgid "Users"
msgstr "Usuários"
#: REST/methods/providers.py:69
msgid "Current service providers"
msgstr "Provedores de serviço atual"
#: REST/methods/providers.py:73 templates/uds/index.html:51
#: templates/uds/html5/index.html:68
msgid "Services"
msgstr "Serviços"
#: admin/views.py:53 admin/views.py:61 web/views.py:422
msgid "Forbidden"
msgstr "Proibido"
@ -1009,42 +1034,38 @@ msgstr ""
"Esta página contém uma lista de downloadables fornecidos por diferentes "
"módulos"
#: templates/uds/index.html:51 templates/uds/html5/index.html:63
msgid "Services"
msgstr "Serviços"
#: templates/uds/index.html:70 templates/uds/html5/index.html:101
#: templates/uds/index.html:70 templates/uds/html5/index.html:106
msgid "Java not found"
msgstr "Java não encontrado"
#: templates/uds/index.html:71 templates/uds/html5/index.html:104
#: templates/uds/index.html:71 templates/uds/html5/index.html:109
msgid ""
"Java is not available on your browser, and the selected transport needs it."
msgstr ""
"Java não está disponível em seu navegador, e o transporte selecionado "
"precisa disso."
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Please, install latest version from"
msgstr "Por favor, instale a versão mais recente do"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "Java website"
msgstr "Site de Java"
#: templates/uds/index.html:72 templates/uds/html5/index.html:105
#: templates/uds/index.html:72 templates/uds/html5/index.html:110
msgid "and restart browser"
msgstr "e reinicie o navegador"
#: templates/uds/index.html:78 templates/uds/html5/index.html:121
#: templates/uds/index.html:78 templates/uds/html5/index.html:126
msgid "Ip"
msgstr "IP"
#: templates/uds/index.html:79 templates/uds/html5/index.html:122
#: templates/uds/index.html:79 templates/uds/html5/index.html:127
msgid "Networks"
msgstr "Redes"
#: templates/uds/index.html:80 templates/uds/html5/index.html:123
#: templates/uds/index.html:80 templates/uds/html5/index.html:128
msgid "Transports"
msgstr "Transportes"
@ -1108,10 +1129,6 @@ msgstr "Prestadores de serviços"
msgid "Authenticators"
msgstr "Autenticadores"
#: templates/uds/admin/snippets/navbar.html:19
msgid "Os Managers"
msgstr "Os gerentes"
#: templates/uds/admin/snippets/navbar.html:20
msgid "Connectivity"
msgstr "Conectividade"
@ -1151,14 +1168,22 @@ msgstr "Voltar à lista de serviços"
msgid "Available services list"
msgstr "Lista de serviços disponíveis"
#: templates/uds/html5/index.html:78
#: templates/uds/html5/index.html:83
msgid "transports"
msgstr "transportes"
#: templates/uds/html5/index.html:118
#: templates/uds/html5/index.html:123
msgid "Administrator info panel"
msgstr "Painel de informações do administrador"
#: templates/uds/html5/index.html:129
msgid "User Agent"
msgstr "Agente do usuário"
#: templates/uds/html5/index.html:130
msgid "OS"
msgstr "SISTEMA OPERACIONAL"
#: templates/uds/html5/login.html:4 templates/uds/html5/login.html.py:69
msgid "Welcome to UDS"
msgstr "Bem-vindo ao UDS"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-11-13 19:50+0100\n"
"POT-Creation-Date: 2013-11-14 11:59+0100\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"
@ -26,58 +26,62 @@ msgstr "Sucesso na\""
msgid "Received "
msgstr "Recebido "
#: static/adm/js/gui.js:43
msgid "Name"
msgstr "Nome"
#: static/adm/js/gui.js:44
msgid "Type"
msgstr "Tipo"
#: static/adm/js/gui.js:45
msgid "Number of Services"
msgstr "Número de serviços"
#: static/adm/js/gui.js:48
#: static/adm/js/gui.js:17
msgid "Display _MENU_ records per page"
msgstr "Exibir _MENU_ de registros por página"
#: static/adm/js/gui.js:49
#: static/adm/js/gui.js:18
msgid "Nothing found - sorry"
msgstr "Nada foi encontrado - Desculpe"
#: static/adm/js/gui.js:50
msgid "Showing _START_ to _END_ of _TOTAL_ records"
msgstr "Mostrando _START_ para _END_ de registros _TOTAL_"
#: static/adm/js/gui.js:19
msgid "Showing record _START_ to _END_ of _TOTAL_"
msgstr "Mostrando registro _START_ para _END_ de _TOTAL_"
#: static/adm/js/gui.js:51
#: static/adm/js/gui.js:20
msgid "Showing 0 to 0 of 0 records"
msgstr "Mostrando 0 a 0 de 0 registros"
#: static/adm/js/gui.js:52
#: static/adm/js/gui.js:21
msgid "(filtered from _MAX_ total records)"
msgstr "(filtrada de registros total de _MAX_)"
#: static/adm/js/gui.js:53
#: static/adm/js/gui.js:22
msgid "Please wait, processing"
msgstr "Aguarde, processamento"
#: static/adm/js/gui.js:54
#: static/adm/js/gui.js:23
msgid "Search"
msgstr "Pesquisa"
#: static/adm/js/gui.js:56
#: static/adm/js/gui.js:26
msgid "First"
msgstr "Primeiro"
#: static/adm/js/gui.js:57
#: static/adm/js/gui.js:27
msgid "Last"
msgstr "Última"
#: static/adm/js/gui.js:58
#: static/adm/js/gui.js:28
msgid "Next"
msgstr "Próxima"
#: static/adm/js/gui.js:59
#: static/adm/js/gui.js:29
msgid "Previous"
msgstr "Anterior"
#: static/adm/js/gui.js:83
msgid "Connectivity"
msgstr "Conectividade"
#: static/adm/js/gui.js:88
msgid "Deployed services"
msgstr "Serviços implantados"
#: static/adm/js/gui.js:181
msgid "Service Providers"
msgstr "Prestadores de serviços"
#: static/adm/js/gui.js:191
msgid "Authenticators"
msgstr "Autenticadores"

View File

@ -34,47 +34,70 @@
};
// Public attributes
api.debug = true;
api.debug = false;
}(window.api = window.api || {}, jQuery));
// Great part of UDS REST api provides same methods.
// We will take advantage of this and save a lot of nonsense, prone to failure code :-)
// Service providers related
api.providers = (function($){
var pub = {};
function BasicModelRest(path) {
this.path = path;
this.cached_types = undefined;
this.cached_tableInfo = undefined;
}
pub.cached_types = undefined;
pub.list = function(success_fnc) {
api.getJson('providers',success_fnc);
}
pub.types = function(success_fnc) {
// Cache types locally, will not change unless new broker version
if( pub.cached_types ) {
if( success_fnc ) {
success_fnc(pub.cached_types);
BasicModelRest.prototype = {
get: function(options) {
if( options == undefined ){
options = {};
}
}
api.getJson('providers/types', function(data){
pub.cached_types = data;
if( success_fnc ) {
success_fnc(pub.cached_types);
var path = this.path;
if( options.id != undefined )
path += '/' + options.id;
api.getJson(path, options.success);
},
types: function(success_fnc) {
// Cache types locally, will not change unless new broker version
if( this.cached_types ) {
if( success_fnc ) {
success_fnc(this.cached_types);
}
}
});
}
else {
var $this = this;
return pub;
}(jQuery));
api.getJson( this.path + '/types', function(data) {
$this.cached_types = data;
if( success_fnc ) {
success_fnc($this.cached_types);
}
});
}
},
tableInfo: function(success_fnc) {
// Cache types locally, will not change unless new broker version
if( this.cached_tableInfo ) {
if( success_fnc ) {
success_fnc(this.cached_tableInfo);
}
return;
}
var $this = this;
// Service related
api.services = (function($){
var pub = {};
api.getJson( this.path + '/tableinfo', function(data) {
$this.cached_tableInfo = data;
if( success_fnc ) {
success_fnc($this.cached_tableInfo);
}
});
},
}
api.providers = new BasicModelRest('providers');
//api.services = new BasicModelRest('services');
api.authenticators = new BasicModelRest('authenticators');
pub.get = function(success_fnc) {
return api.getJson('/rest/providers', success_fnc);
}
return pub;
}(jQuery));

View File

@ -12,77 +12,189 @@
}
}
gui.table = function(table_id) {
return '<div class="well"><table class="display" id="' + table_id + '"></table></div>'
// Several convenience "constants"
gui.dataTablesLanguage = {
"sLengthMenu": gettext("Display _MENU_ records per page"),
"sZeroRecords": gettext("Nothing found - sorry"),
"sInfo": gettext("Showing record _START_ to _END_ of _TOTAL_"),
"sInfoEmpty": gettext("Showing 0 to 0 of 0 records"),
"sInfoFiltered": gettext("(filtered from _MAX_ total records)"),
"sProcessing": gettext("Please wait, processing"),
"sSearch": gettext("Search"),
"sInfoThousands": django.formats.THOUSAND_SEPARATOR,
"oPaginate": {
"sFirst": gettext("First"),
"sLast": gettext("Last"),
"sNext": gettext("Next"),
"sPrevious": gettext("Previous"),
}
};
gui.table = function(title, table_id, options) {
if( options == undefined )
options = { 'size': 12, 'icon': 'table'};
if( options.size == undefined )
options.size = 12;
if( options.icon == undefined )
options.icon = 'table';
return '<div class="col-lg-' + options.size + '"><div class="panel panel-primary"><div class="panel-heading">'+
'<h3 class="panel-title"><span class="fa fa-'+ options.icon + '"></span> ' + title + '</h3></div>'+
'<div class="panel-body"><table class="display" id="' + table_id + '"></table></div></div></div>';
}
gui.breadcrumbs = function(path) {
var items = path.split('/');
var active = items.pop();
var list = '';
$.each(items, function(index, value){
list += '<li><a href="#">' + value + '</a></li>';
});
list += '<li class="active">' + active + '</li>';
return '<div class="row"><div class="col-lg-12"><ol class="breadcrumb">'+ list + "</ol></div></div>";
}
gui.clearWorkspace = function() {
$('#content').empty();
$('#page-wrapper').empty();
};
gui.appendToWorkspace = function(data) {
$(data).appendTo('#content');
$(data).appendTo('#page-wrapper');
};
// Links methods
gui.dashboard = function() {
gui.clearWorkspace();
gui.appendToWorkspace(gui.breadcrumbs('Dasboard'));
gui.doLog(this);
};
gui.providers = function() {
gui.osmanagers = function() {
gui.clearWorkspace();
gui.appendToWorkspace(gui.breadcrumbs('OS Managers'));
api.providers.list(function(data){
gui.appendToWorkspace( gui.table('providers_table') );
var arr = [];
$.each(data, function(index, value){
arr.push([value.name, value.type_name, value.services_count]);
});
$('#providers_table').dataTable( {
"aaData": arr,
"aoColumns": [
{ "sTitle": gettext("Name") },
{ "sTitle": gettext("Type") },
{ "sTitle": gettext("Number of Services") },
],
"oLanguage": {
"sLengthMenu": gettext("Display _MENU_ records per page"),
"sZeroRecords": gettext("Nothing found - sorry"),
"sInfo": gettext("Showing _START_ to _END_ of _TOTAL_ records"),
"sInfoEmpty": gettext("Showing 0 to 0 of 0 records"),
"sInfoFiltered": gettext("(filtered from _MAX_ total records)"),
"sProcessing": gettext("Please wait, processing"),
"sSearch": gettext("Search"),
"sInfoThousands": django.formats.THOUSAND_SEPARATOR,
"oPaginate": {
"sFirst": gettext("First"),
"sLast": gettext("Last"),
"sNext": gettext("Next"),
"sPrevious": gettext("Previous"),
}
},
} );
});
return false;
}
var sidebarLinks = [
{ id: 'dashboard', exec: gui.dashboard },
{ id: 'service_providers', exec: gui.providers },
{ id: 'authenticators', exec: gui.dashboard },
{ id: 'osmanagers', exec: gui.dashboard },
{ id: 'connectivity', exec: gui.dashboard },
{ id: 'deployed_services', exec: gui.dashboard },
];
gui.connectivity = function() {
gui.clearWorkspace();
gui.appendToWorkspace(gui.breadcrumbs(gettext('Connectivity')));
}
gui.init = function() {
gui.deployed_services = function() {
gui.clearWorkspace();
gui.appendToWorkspace(gui.breadcrumbs(gettext('Deployed services')));
}
gui.setLinksEvents = function() {
var sidebarLinks = [
{ id: 'lnk-dashboard', exec: gui.dashboard },
{ id: 'lnk-service_providers', exec: gui.providers.link },
{ id: 'lnk-authenticators', exec: gui.authenticators.link },
{ id: 'lnk-osmanagers', exec: gui.osmanagers },
{ id: 'lnk-connectivity', exec: gui.connectivity },
{ id: 'lnk-deployed_services', exec: gui.deployed_services },
];
$.each(sidebarLinks, function(index, value){
gui.doLog('Adding ' + value.id)
$('#'+value.id).click(value.exec);
$('.'+value.id).unbind('click').click(value.exec);
});
}
gui.init = function() {
gui.setLinksEvents();
};
// Public attributes
gui.debug = true;
}(window.gui = window.gui || {}, jQuery));
function GuiElement(restItem) {
this.rest = restItem;
this.init();
}
GuiElement.prototype = {
init: function() {
gui.doLog('Initializing ' + this.rest.path);
var $this = this;
this.rest.types(function(data){
var styles = '<style media="screen">';
$.each(data, function(index, value){
var className = $this.rest.path + '-' + value.type;
gui.doLog('Creating style for ' + className )
var style = '.' + className +
' { display:inline-block; background: url(data:image/png;base64,' + value.icon + '); ' +
'width: 16px; height: 16px; vertical-align: middle; } ';
styles += style;
});
styles += '</style>'
$(styles).appendTo('head');
});
},
table: function(options) {
// Empty container_id first
gui.doLog('Composing table for ' + this.rest.path);
var tableId = this.rest.path + '-table';
var $this = this;
this.rest.tableInfo(function(data){
var title = data.title;
var columns = [];
$.each(data.fields,function(index, value) {
for( var v in value ){
var options = value[v];
gui.doLog(options);
var column = { mData: v };
column.sTitle = options.title;
if( options.type )
column.sType = options.type;
if( options.width )
column.sWidth = options.width;
if( options.visible != undefined )
column.bVisible = options.visible;
columns.push(column);
}
});
gui.doLog(columns);
$this.rest.get({
success: function(data) {
var table = gui.table(title, tableId, options);
gui.appendToWorkspace('<div class="row">' + table + '</div>');
$('#' + tableId).dataTable( {
"aaData": data,
"aoColumns": columns,
"oLanguage": gui.dataTablesLanguage,
} )
}
});
});
return '#' + tableId;
}
};
// Compose gui API
// Service providers
gui.providers = new GuiElement(api.providers);
gui.providers.link = function(event) {
gui.clearWorkspace();
gui.appendToWorkspace(gui.breadcrumbs(gettext('Service Providers')));
var tableId = gui.providers.table();
return false;
};
gui.authenticators = new GuiElement(api.authenticators);
gui.authenticators.link = function(event) {
gui.clearWorkspace();
gui.appendToWorkspace(gui.breadcrumbs(gettext('Authenticators')));
gui.authenticators.table();
return false;
};

View File

@ -8,21 +8,9 @@
{% block js %}
<script>
$(function() {
// Preload styles for service providers
api.providers.types(function(data){
var styles = '<style media="screen">';
$.each(data, function(index, value){
var style = '.prov-' + value.type +
' { display:inline-block; background: url(data:image/png;base64,' + value.icon + '); ' +
'width: 16px; height: 16px; } ';
styles += style;
});
styles += '</style>'
$(styles).appendTo('head');
});
// Initialize gui
gui.init();
});
</script>
{% endblock %}

View File

@ -13,12 +13,12 @@
<!-- Side bar -->
<ul class="nav navbar-nav side-nav">
<li class="active"><a id="dashboard" href="#"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li><a id="service_providers" href="#"><i class="fa fa-bar-chart-o"></i> {% trans 'Service providers' %}</a></li>
<li><a id="authenticators" href="#"><i class="fa fa-user"></i> {% trans 'Authenticators' %}</a></li>
<li><a id="osmanagers" href="#"><i class="fa fa-edit"></i> Os Managers</a></li>
<li><a id="connectivity" href="#"><i class="fa fa-font"></i> {% trans 'Connectivity' %}</a></li>
<li><a id="deployed_services" href=""><i class="fa fa-desktop"></i> {% trans 'Deployed services' %}</a></li>
<li><a class="lnk-dashboard" href="#"><i class="fa fa-dashboard"></i> Dashboard</a></li>
<li><a class="lnk-service_providers" href="#"><i class="fa fa-bar-chart-o"></i> {% trans 'Service providers' %}</a></li>
<li><a class="lnk-authenticators" href="#"><i class="fa fa-user"></i> {% trans 'Authenticators' %}</a></li>
<li><a class="lnk-osmanagers" href="#"><i class="fa fa-edit"></i> Os Managers</a></li>
<li><a class="lnk-connectivity" href="#"><i class="fa fa-font"></i> {% trans 'Connectivity' %}</a></li>
<li><a class="lnk-deployed_services" href=""><i class="fa fa-desktop"></i> {% trans 'Deployed services' %}</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-caret-square-o-down"></i> Tools <b class="caret"></b></a>
<ul class="dropdown-menu">

View File

@ -16,14 +16,12 @@
<!-- Bootstrap -->
<link href="{% get_static_prefix %}css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}css/font-awesome.min.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}css/bootstrap-theme.min.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}css/bootstrap-formhelpers.min.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}css/bootstrap-responsive.min.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}css/bootstrap-switch.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}adm/css/jquery.dataTables.css" rel="stylesheet" media="screen">
<link href="{% get_static_prefix %}css/tables.css" rel="stylesheet" media="screen">
<!-- <link href="{% get_static_prefix %}css/tables.css" rel="stylesheet" media="screen"> -->
<link href="{% get_static_prefix %}css/uds-admin.css" rel="stylesheet" media="screen">
{% block css %}{% endblock %}
</head>
@ -34,21 +32,9 @@
{% block menu %}{% include 'uds/admin/snippets/navbar.html' %}{% endblock %}
<!-- End of menu -->
{% block messages %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-dismissable {{ message.tags }}">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
{{ message }}
</div>
{% endfor %}
{% endif %}
{% endblock %}
<!-- Content -->
<div id="page-wrapper">
<div id="content" class="fluid-container">
{% block body %}{% endblock %}
</div>
{% block body %}{% endblock %}
</div>
<!-- End of content -->
</div>
@ -62,22 +48,23 @@
<script src="{% url 'uds.web.views.jsCatalog' LANGUAGE_CODE %}"></script>
<script src="{% get_static_prefix %}adm/js/templating.js"></script>
<script>
// Initialize a few settings, needed for api to work
(function(api, $, undefined){
api.token = "{% auth_token %}";
api.auth_header = "{% auth_token_header %}";
api.base_url = "{% url 'REST' '' %}";
api.url_for = function(path) {
return api.base_url + path;
}
}(window.api = window.api || {}, jQuery));
</script>
<script src="{% get_static_prefix %}adm/js/api.js"></script>
<script src="{% get_static_prefix %}adm/js/gui.js"></script>
<script>
// Initialize a few settings
(function(api, $, undefined){
api.token = "{% auth_token %}";
api.auth_header = "{% auth_token_header %}";
api.base_url = "{% url 'REST' '' %}";
api.url_for = function(path) {
return api.base_url + path;
}
}(window.api = window.api || {}, jQuery));
</script>
{% block js %}{% endblock %}
</body>