Added a couple csv reports

This commit is contained in:
Adolfo Gómez García 2015-06-21 21:51:36 +02:00
parent abf6d3751b
commit f8934acbe4
39 changed files with 3113 additions and 1677 deletions

View File

@ -111,6 +111,7 @@ class Reports(model.BaseModelHandler):
return { return {
'mime_type': report.mime_type, 'mime_type': report.mime_type,
'encoded': report.encoded,
'filename': report.filename, 'filename': report.filename,
'data': result 'data': result
} }
@ -133,6 +134,7 @@ class Reports(model.BaseModelHandler):
{ {
'id': i.getUuid(), 'id': i.getUuid(),
'mime_type': i.mime_type, 'mime_type': i.mime_type,
'encoded': i.encoded,
'group': i.translated_group(), 'group': i.translated_group(),
'name': i.translated_name(), 'name': i.translated_name(),
'description': i.translated_description() 'description': i.translated_description()

View File

@ -41,15 +41,16 @@ import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
__updated__ = '2015-05-03' __updated__ = '2015-06-21'
class Report(UserInterface): class Report(UserInterface):
mime_type = 'application/pdf' # Report returns pdfs by default, but could be anything else mime_type = 'application/pdf' # Report returns pdfs by default, but could be anything else
name = _('Base Report') # Report name name = _('Base Report') # Report name
description = _('Base report') # Report description description = _('Base report') # Report description
filename = 'file.bin' # Filename that will be returned as 'hint' on rest report request filename = 'file.pdf' # Filename that will be returned as 'hint' on rest report request
group = '' # So we can "group" reports by kind? group = '' # So we can "group" reports by kind?
encoded = True # If the report is mean to be encoded (binary reports as PDFs == True, text reports must be False so utf-8 is correctly threated
uuid = None uuid = None
@classmethod @classmethod
@ -123,7 +124,11 @@ class Report(UserInterface):
Generated base 64 encoded report. Generated base 64 encoded report.
Basically calls generate and encodes resuslt as base64 Basically calls generate and encodes resuslt as base64
''' '''
return self.generate().encode('base64').replace('\n', '') data = self.generate()
if self.encoded:
return data.encode('base64').replace('\n', '')
else:
return data
def __str__(self): def __str__(self):
return 'Report {} with uuid {}'.format(self.name, self.uuid) return 'Report {} with uuid {}'.format(self.name, self.uuid)

View File

@ -9,23 +9,19 @@ logger = logging.getLogger(__name__)
class UDSImage(Image): class UDSImage(Image):
def _get_height(self): def _get_height(self):
logger.debug('get height called') ret = self._height or (self.image and (self.image.size[1] * cm / 118) or 0)
ret = self._height or (self.image and self.image.size[1] or 0) return ret
return ret * cm / 118
def _set_height(self, value): def _set_height(self, value):
logger.debug('set height called') self._height = value
self._height = value / cm * 118
height = property(_get_height, _set_height) height = property(_get_height, _set_height)
def _get_width(self): def _get_width(self):
logger.debug('get width called') ret = self._width or (self.image and (self.image.size[0] * cm / 118) or 0)
ret = self._width or (self.image and self.image.size[0] or 0) return ret
return ret * cm / 118
def _set_width(self, value): def _set_width(self, value):
logger.debug('set width called') self._width = value
self._width = value / cm * 118
width = property(_get_width, _set_width) width = property(_get_width, _set_width)

File diff suppressed because it is too large Load Diff

View File

@ -8,14 +8,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenUDS\n" "Project-Id-Version: OpenUDS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-05 12:34+0200\n" "POT-Creation-Date: 2015-06-21 21:22+0200\n"
"PO-Revision-Date: 2015-06-05 10:02+0000\n" "PO-Revision-Date: 2015-06-21 19:16+0000\n"
"Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n" "Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n"
"Language-Team: German (http://www.transifex.com/projects/p/openuds/language/de/)\n" "Language-Team: German (http://www.transifex.com/projects/p/openuds/language/"
"de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19 #: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19
@ -415,123 +416,121 @@ msgstr "Löschen-Dienstleister"
msgid "Services Provider deletion error" msgid "Services Provider deletion error"
msgstr "Service Provider löschen Fehler" msgstr "Service Provider löschen Fehler"
#: static/tmp_js/gui-d-servicespools.js:133 #: static/tmp_js/gui-d-servicespools.js:134
msgid "error" msgid "error"
msgstr "Fehler" msgstr "Fehler"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
msgid "Remove Cache element" msgid "Remove Cache element"
msgstr "Cache-Element entfernen" msgstr "Cache-Element entfernen"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Deletion error" msgid "Deletion error"
msgstr "Fehler löschen" msgstr "Fehler löschen"
#: static/tmp_js/gui-d-servicespools.js:186 #: static/tmp_js/gui-d-servicespools.js:187
msgid "Add group" msgid "Add group"
msgstr "Gruppe hinzufügen" msgstr "Gruppe hinzufügen"
#: static/tmp_js/gui-d-servicespools.js:209 #: static/tmp_js/gui-d-servicespools.js:210
msgid "You must provide authenticator and group" msgid "You must provide authenticator and group"
msgstr "Sie müssen Authentifikator und Gruppe bereitstellen." msgstr "Sie müssen Authentifikator und Gruppe bereitstellen."
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Remove group" msgid "Remove group"
msgstr "Gruppe entfernen" msgstr "Gruppe entfernen"
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Group removal error" msgid "Group removal error"
msgstr "Gruppe entfernen Fehler" msgstr "Gruppe entfernen Fehler"
#: static/tmp_js/gui-d-servicespools.js:247 #: static/tmp_js/gui-d-servicespools.js:248
msgid "Yes" msgid "Yes"
msgstr "Ja" msgstr "Ja"
#: static/tmp_js/gui-d-servicespools.js:249 #: static/tmp_js/gui-d-servicespools.js:250
msgid "No" msgid "No"
msgstr "Nr." msgstr "Nr."
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Remove Assigned service" msgid "Remove Assigned service"
msgstr "Zugewiesene Dienst entfernen" msgstr "Zugewiesene Dienst entfernen"
#: static/tmp_js/gui-d-servicespools.js:288 #: static/tmp_js/gui-d-servicespools.js:289
msgid "Add transport" msgid "Add transport"
msgstr "Transport hinzufügen" msgstr "Transport hinzufügen"
#: static/tmp_js/gui-d-servicespools.js:295 #: static/tmp_js/gui-d-servicespools.js:296
msgid "You must provide a transport" msgid "You must provide a transport"
msgstr "Sie müssen einen Transport bereitstellen." msgstr "Sie müssen einen Transport bereitstellen."
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Remove transport" msgid "Remove transport"
msgstr "Verkehr zu entfernen" msgstr "Verkehr zu entfernen"
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Transport removal error" msgid "Transport removal error"
msgstr "Transportfehler entfernen" msgstr "Transportfehler entfernen"
#: static/tmp_js/gui-d-servicespools.js:333 #: static/tmp_js/gui-d-servicespools.js:336
#: static/tmp_js/gui-d-servicespools.js:352 #: static/tmp_js/gui-d-servicespools.js:355
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:368
#: static/tmp_js/gui-d-servicespools.js:369
msgid "Publish" msgid "Publish"
msgstr "Veröffentlichen" msgstr "Veröffentlichen"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
msgid "Cancel publication" msgid "Cancel publication"
msgstr "Veröffentlichung einzustellen" msgstr "Veröffentlichung einzustellen"
#: static/tmp_js/gui-d-servicespools.js:350 #: static/tmp_js/gui-d-servicespools.js:353
msgid "Force Cancel" msgid "Force Cancel"
msgstr "Kraft \"Abbrechen\"" msgstr "Kraft \"Abbrechen\""
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:379
msgid "Launch new publication?"
msgstr "Starten neue Publikation zu?"
#: static/tmp_js/gui-d-servicespools.js:366
msgid "Failed creating publication" msgid "Failed creating publication"
msgstr "Fehler beim Erstellen von Publikation" msgstr "Fehler beim Erstellen von Publikation"
#: static/tmp_js/gui-d-servicespools.js:390 #: static/tmp_js/gui-d-servicespools.js:415
msgid "Restrained" msgid "Restrained"
msgstr "Zurückhaltend" msgstr "Zurückhaltend"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "New service pool" msgid "New service pool"
msgstr "Neue Service-pool" msgstr "Neue Service-pool"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "creation error" msgid "creation error"
msgstr "Fehler beim Erstellen" msgstr "Fehler beim Erstellen"
#: static/tmp_js/gui-d-servicespools.js:408 #: static/tmp_js/gui-d-servicespools.js:433
msgid "Publish on creation" msgid "Publish on creation"
msgstr "Bei der Erstellung zu veröffentlichen" msgstr "Bei der Erstellung zu veröffentlichen"
#: static/tmp_js/gui-d-servicespools.js:409 #: static/tmp_js/gui-d-servicespools.js:434
msgid "If selected, will initiate the publication inmediatly after creation" msgid "If selected, will initiate the publication inmediatly after creation"
msgstr "Wenn ausgewählt, wird die Publikation Inmediatly nach Erstellung einleiten." msgstr ""
"Wenn ausgewählt, wird die Publikation Inmediatly nach Erstellung einleiten."
#: static/tmp_js/gui-d-servicespools.js:421 static/tmp_js/gui.js:40 #: static/tmp_js/gui-d-servicespools.js:446 static/tmp_js/gui.js:40
msgid "Edit" msgid "Edit"
msgstr "Bearbeiten" msgstr "Bearbeiten"
#: static/tmp_js/gui-d-servicespools.js:421 #: static/tmp_js/gui-d-servicespools.js:446
msgid "saving error" msgid "saving error"
msgstr "Speichern von Fehler" msgstr "Speichern von Fehler"
#: static/tmp_js/gui-d-servicespools.js:422 static/tmp_js/gui.js:44 #: static/tmp_js/gui-d-servicespools.js:447 static/tmp_js/gui.js:44
#: static/tmp_js/gui.js:368 #: static/tmp_js/gui.js:368
msgid "Delete" msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
#: static/tmp_js/gui-d-servicespools.js:422 #: static/tmp_js/gui-d-servicespools.js:447
msgid "deletion error" msgid "deletion error"
msgstr "Fehler löschen" msgstr "Fehler löschen"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-05 12:47+0200\n" "POT-Creation-Date: 2015-06-21 21:22+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -41,7 +41,7 @@ msgstr ""
#: REST/methods/authenticators.py:59 REST/methods/images.py:60 #: REST/methods/authenticators.py:59 REST/methods/images.py:60
#: REST/methods/networks.py:60 REST/methods/osmanagers.py:57 #: REST/methods/networks.py:60 REST/methods/osmanagers.py:57
#: REST/methods/providers.py:64 REST/methods/reports.py:58 #: REST/methods/providers.py:64 REST/methods/reports.py:58
#: REST/methods/services_pools.py:71 REST/methods/transports.py:56 #: REST/methods/services_pools.py:72 REST/methods/transports.py:56
#: REST/methods/user_services.py:218 REST/methods/user_services.py:253 #: REST/methods/user_services.py:218 REST/methods/user_services.py:253
#: REST/methods/users_groups.py:95 REST/model.py:119 #: REST/methods/users_groups.py:95 REST/model.py:119
#: templates/uds/admin/tmpl/user.html:29 templates/uds/admin/tmpl/user.html:32 #: templates/uds/admin/tmpl/user.html:29 templates/uds/admin/tmpl/user.html:32
@ -50,7 +50,7 @@ msgstr ""
#: REST/methods/authenticators.py:60 REST/methods/osmanagers.py:58 #: REST/methods/authenticators.py:60 REST/methods/osmanagers.py:58
#: REST/methods/providers.py:65 REST/methods/services.py:179 #: REST/methods/providers.py:65 REST/methods/services.py:179
#: REST/methods/services_pools.py:75 REST/methods/transports.py:57 #: REST/methods/services_pools.py:76 REST/methods/transports.py:57
#: REST/methods/user_services.py:255 REST/methods/users_groups.py:96 #: REST/methods/user_services.py:255 REST/methods/users_groups.py:96
#: REST/methods/users_groups.py:209 REST/model.py:126 #: REST/methods/users_groups.py:209 REST/model.py:126
#: templates/uds/admin/tmpl/group.html:49 #: templates/uds/admin/tmpl/group.html:49
@ -67,8 +67,8 @@ msgstr ""
msgid "Tag" msgid "Tag"
msgstr "" msgstr ""
#: REST/methods/authenticators.py:63 #: REST/methods/authenticators.py:63 reports/stats/login.py:107
#: templates/uds/admin/tmpl/authenticators.html:30 #: reports/stats/login.py:372 templates/uds/admin/tmpl/authenticators.html:30
#: templates/uds/admin/tmpl/dashboard.html:34 #: templates/uds/admin/tmpl/dashboard.html:34
#: templates/uds/admin/tmpl/permissions.html:7 #: templates/uds/admin/tmpl/permissions.html:7
msgid "Users" msgid "Users"
@ -208,104 +208,104 @@ msgstr ""
msgid "User services" msgid "User services"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:69 #: REST/methods/services_pools.py:70
#: templates/uds/admin/snippets/navbar.html:25 #: templates/uds/admin/snippets/navbar.html:25
#: templates/uds/admin/tmpl/services_pool.html:4 #: templates/uds/admin/tmpl/services_pool.html:4
#: templates/uds/admin/tmpl/services_pool.html:7 #: templates/uds/admin/tmpl/services_pool.html:7
msgid "Service Pools" msgid "Service Pools"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:72 #: REST/methods/services_pools.py:73
msgid "Parent Service" msgid "Parent Service"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:73 REST/methods/user_services.py:118 #: REST/methods/services_pools.py:74 REST/methods/user_services.py:118
msgid "status" msgid "status"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:74 #: REST/methods/services_pools.py:75
msgid "Shows transports" msgid "Shows transports"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:113 #: REST/methods/services_pools.py:114
msgid "Create at least one OS Manager before creating a new service pool" msgid "Create at least one OS Manager before creating a new service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:115 #: REST/methods/services_pools.py:116
msgid "Create at least a service before creating a new service pool" msgid "Create at least a service before creating a new service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:122 #: REST/methods/services_pools.py:123
msgid "Base service" msgid "Base service"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:123 #: REST/methods/services_pools.py:124
msgid "Service used as base of this service pool" msgid "Service used as base of this service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:130 #: REST/methods/services_pools.py:131
msgid "OS Manager" msgid "OS Manager"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:131 #: REST/methods/services_pools.py:132
msgid "OS Manager used as base of this service pool" msgid "OS Manager used as base of this service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:138 #: REST/methods/services_pools.py:139
msgid "Associated Image" msgid "Associated Image"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:139 #: REST/methods/services_pools.py:140
msgid "Image assocciated with this service" msgid "Image assocciated with this service"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:146 #: REST/methods/services_pools.py:147
msgid "Initial available services" msgid "Initial available services"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:147 #: REST/methods/services_pools.py:148
msgid "Services created initially for this service pool" msgid "Services created initially for this service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:154 #: REST/methods/services_pools.py:155
msgid "Services to keep in cache" msgid "Services to keep in cache"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:155 #: REST/methods/services_pools.py:156
msgid "Services kept in cache for improved user service assignation" msgid "Services kept in cache for improved user service assignation"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:162 #: REST/methods/services_pools.py:163
msgid "Services to keep in L2 cache" msgid "Services to keep in L2 cache"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:163 #: REST/methods/services_pools.py:164
msgid "Services kept in cache of level2 for improved service generation" msgid "Services kept in cache of level2 for improved service generation"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:170 #: REST/methods/services_pools.py:171
msgid "Maximum number of services to provide" msgid "Maximum number of services to provide"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:171 #: REST/methods/services_pools.py:172
msgid "" msgid ""
"Maximum number of service (assigned and L1 cache) that can be created for " "Maximum number of service (assigned and L1 cache) that can be created for "
"this service" "this service"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:177 #: REST/methods/services_pools.py:178
msgid "Show transports" msgid "Show transports"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:178 #: REST/methods/services_pools.py:179
msgid "If active, alternative transports for user will be shown" msgid "If active, alternative transports for user will be shown"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:193 #: REST/methods/services_pools.py:194
msgid "Base service does not exist anymore" msgid "Base service does not exist anymore"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:212 #: REST/methods/services_pools.py:213
msgid "This service requires an OS Manager" msgid "This service requires an OS Manager"
msgstr "" msgstr ""
@ -348,7 +348,7 @@ msgid "Creation date"
msgstr "" msgstr ""
#: REST/methods/user_services.py:114 REST/methods/user_services.py:180 #: REST/methods/user_services.py:114 REST/methods/user_services.py:180
#: REST/methods/user_services.py:319 #: REST/methods/user_services.py:321 REST/methods/user_services.py:350
msgid "Revision" msgid "Revision"
msgstr "" msgstr ""
@ -394,7 +394,8 @@ msgid "Cached services"
msgstr "" msgstr ""
#: REST/methods/user_services.py:184 REST/methods/user_services.py:220 #: REST/methods/user_services.py:184 REST/methods/user_services.py:220
#: REST/methods/user_services.py:321 templates/uds/admin/tmpl/group.html:54 #: REST/methods/user_services.py:323 REST/methods/user_services.py:352
#: templates/uds/admin/tmpl/group.html:54
#: templates/uds/admin/tmpl/user.html:45 #: templates/uds/admin/tmpl/user.html:45
msgid "State" msgid "State"
msgstr "" msgstr ""
@ -416,19 +417,23 @@ msgstr ""
msgid "Assigned transports" msgid "Assigned transports"
msgstr "" msgstr ""
#: REST/methods/user_services.py:315 #: REST/methods/user_services.py:317
#: templates/uds/admin/tmpl/services_pool.html:34 #: templates/uds/admin/tmpl/services_pool.html:34
msgid "Publications" msgid "Publications"
msgstr "" msgstr ""
#: REST/methods/user_services.py:320 #: REST/methods/user_services.py:322 REST/methods/user_services.py:351
msgid "Publish date" msgid "Publish date"
msgstr "" msgstr ""
#: REST/methods/user_services.py:322 #: REST/methods/user_services.py:324 templates/uds/admin/tmpl/publish.html:5
msgid "Reason" msgid "Reason"
msgstr "" msgstr ""
#: REST/methods/user_services.py:346
msgid "Changelog"
msgstr ""
#: REST/methods/users_groups.py:88 #: REST/methods/users_groups.py:88
#, python-brace-format #, python-brace-format
msgid "Users of {0}" msgid "Users of {0}"
@ -459,7 +464,8 @@ msgstr ""
msgid "state" msgid "state"
msgstr "" msgstr ""
#: REST/methods/users_groups.py:98 #: REST/methods/users_groups.py:98 reports/lists/users.py:86
#: reports/lists/users.py:161
msgid "Last access" msgid "Last access"
msgstr "" msgstr ""
@ -530,18 +536,18 @@ msgid "requested a template that do not exist"
msgstr "" msgstr ""
#: admin/views/reporting/usage.py:84 admin/views/reporting/users.py:87 #: admin/views/reporting/usage.py:84 admin/views/reporting/users.py:87
#: reports/lists/users.py:85 reports/stats/login.py:96 #: core/reports/tools/report.py:69 reports/lists/users.py:87
#, python-format #, python-format
msgid "Page %(page_number)d of %(page_count)d" msgid "Page %(page_number)d of %(page_count)d"
msgstr "" msgstr ""
#: admin/views/reporting/usage.py:93 admin/views/reporting/users.py:97 #: admin/views/reporting/usage.py:93 admin/views/reporting/users.py:97
#: reports/lists/users.py:95 reports/stats/login.py:106 #: core/reports/tools/report.py:79 reports/lists/users.py:97
#, python-format #, python-format
msgid "Printed in %(now:%Y, %b %d)s at %(now:%H:%M)s" msgid "Printed in %(now:%Y, %b %d)s at %(now:%H:%M)s"
msgstr "" msgstr ""
#: admin/views/reporting/users.py:112 reports/lists/users.py:135 #: admin/views/reporting/users.py:112 reports/lists/users.py:137
msgid "Users List for {}" msgid "Users List for {}"
msgstr "" msgstr ""
@ -1122,15 +1128,15 @@ msgstr ""
msgid "Service is in maintenance mode and new publications are not allowed" msgid "Service is in maintenance mode and new publications are not allowed"
msgstr "" msgstr ""
#: core/managers/PublicationManager.py:236 #: core/managers/PublicationManager.py:238
msgid "Can't cancel non running publication" msgid "Can't cancel non running publication"
msgstr "" msgstr ""
#: core/managers/PublicationManager.py:258 #: core/managers/PublicationManager.py:260
msgid "Can't unpublish non usable publication" msgid "Can't unpublish non usable publication"
msgstr "" msgstr ""
#: core/managers/PublicationManager.py:261 #: core/managers/PublicationManager.py:263
msgid "Can't unpublish publications with services in process" msgid "Can't unpublish publications with services in process"
msgstr "" msgstr ""
@ -1199,6 +1205,10 @@ msgstr ""
msgid "Base report" msgid "Base report"
msgstr "" msgstr ""
#: core/reports/tools/report.py:78
msgid "Generated by UDS"
msgstr ""
#: core/services/BaseService.py:89 core/services/BaseService.py:101 #: core/services/BaseService.py:89 core/services/BaseService.py:101
msgid "Base Service" msgid "Base Service"
msgstr "" msgstr ""
@ -1474,14 +1484,28 @@ msgstr ""
msgid "UDS Actor for openSUSE, ... Linux machines <b>(Requires python 2.7)</b>" msgid "UDS Actor for openSUSE, ... Linux machines <b>(Requires python 2.7)</b>"
msgstr "" msgstr ""
#: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:29 #: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:31
msgid "RDS OS Manager" msgid "RDS OS Manager"
msgstr "" msgstr ""
#: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:31 #: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:33
msgid "Os Manager to control RDS provided services" msgid "Os Manager to control RDS provided services"
msgstr "" msgstr ""
#: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:40
msgid "Max. session time"
msgstr ""
#: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:44
msgid ""
"Maximum duration in hours for a session (0 means no limit). After this "
"period, session will be released."
msgstr ""
#: osmanagers/RDSOsManager_enterprise/__init__.py:49
msgid "RDS UDS Actor (for remote apps on Windows Server 2012)"
msgstr ""
#: osmanagers/WindowsOsManager/WinDomainOsManager.py:28 #: osmanagers/WindowsOsManager/WinDomainOsManager.py:28
msgid "Windows Domain OS Manager" msgid "Windows Domain OS Manager"
msgstr "" msgstr ""
@ -1626,64 +1650,101 @@ msgstr ""
msgid "UDS Actor for windows machines" msgid "UDS Actor for windows machines"
msgstr "" msgstr ""
#: reports/lists/users.py:110 templates/uds/admin/tmpl/permissions_add.html:5 #: reports/lists/base.py:42
msgid "Lists"
msgstr ""
#: reports/lists/users.py:84 reports/lists/users.py:161
msgid "User ID"
msgstr ""
#: reports/lists/users.py:85 reports/lists/users.py:161
msgid "Real Name"
msgstr ""
#: reports/lists/users.py:112 templates/uds/admin/tmpl/permissions_add.html:5
#: templates/uds/admin/tmpl/pool_add_group.html:5 web/forms/LoginForm.py:77 #: templates/uds/admin/tmpl/pool_add_group.html:5 web/forms/LoginForm.py:77
msgid "Authenticator" msgid "Authenticator"
msgstr "" msgstr ""
#: reports/lists/users.py:112 #: reports/lists/users.py:114
msgid "Authenticator from where to list users" msgid "Authenticator from where to list users"
msgstr "" msgstr ""
#: reports/lists/users.py:116 #: reports/lists/users.py:118
msgid "Users list" msgid "Users list"
msgstr "" msgstr ""
#: reports/lists/users.py:117 #: reports/lists/users.py:119
msgid "List users of platform" msgid "List users of platform"
msgstr "" msgstr ""
#: reports/stats/login.py:135 #: reports/stats/base.py:46
msgid "Statistics"
msgstr ""
#: reports/stats/login.py:77 reports/stats/login.py:103
msgid "Users access by date"
msgstr ""
#: reports/stats/login.py:83
msgid "Users access by day of week"
msgstr ""
#: reports/stats/login.py:89
msgid "Users access by hour"
msgstr ""
#: reports/stats/login.py:105 reports/stats/login.py:372
msgid "Date range"
msgstr ""
#: reports/stats/login.py:125 reports/stats/login.py:357
msgid "Users access report by date" msgid "Users access report by date"
msgstr "" msgstr ""
#: reports/stats/login.py:136 #: reports/stats/login.py:126 reports/stats/login.py:358
msgid "Report of user access to platform by date" msgid "Report of user access to platform by date"
msgstr "" msgstr ""
#: reports/stats/login.py:142 #: reports/stats/login.py:132
msgid "Starting date" msgid "Starting date"
msgstr "" msgstr ""
#: reports/stats/login.py:143 #: reports/stats/login.py:133
msgid "starting date for report" msgid "starting date for report"
msgstr "" msgstr ""
#: reports/stats/login.py:150 #: reports/stats/login.py:140
msgid "Finish date" msgid "Finish date"
msgstr "" msgstr ""
#: reports/stats/login.py:151 #: reports/stats/login.py:141
msgid "finish date for report" msgid "finish date for report"
msgstr "" msgstr ""
#: reports/stats/login.py:158 #: reports/stats/login.py:148
msgid "Number of points" msgid "Number of points"
msgstr "" msgstr ""
#: reports/stats/login.py:162 #: reports/stats/login.py:152
msgid "Number of sampling points used in charts" msgid "Number of sampling points used in charts"
msgstr "" msgstr ""
#: reports/stats/login.py:258 #: reports/stats/login.py:230 reports/stats/login.py:273
msgid "Users usage of UDS" #: reports/stats/login.py:287 reports/stats/login.py:312
msgid "Users access to UDS"
msgstr "" msgstr ""
#: reports/stats/usage.py:44 #: reports/stats/login.py:345
msgid "Usage stats" msgid "User access to UDS"
msgstr "" msgstr ""
#: reports/stats/usage.py:45 #: reports/stats/usage.py:45
msgid "Usage stats"
msgstr ""
#: reports/stats/usage.py:46
msgid "Statistics of platform use" msgid "Statistics of platform use"
msgstr "" msgstr ""
@ -1864,13 +1925,13 @@ msgstr ""
#: services/HyperV_enterprise/HyperVClusterProvider.py:299 #: services/HyperV_enterprise/HyperVClusterProvider.py:299
#: services/HyperV_enterprise/HyperVProvider.py:255 #: services/HyperV_enterprise/HyperVProvider.py:255
#: services/OVirt/OVirtProvider.py:414 services/Xen/XenProvider.py:392 #: services/Xen/XenProvider.py:392
msgid "Connection test successful" msgid "Connection test successful"
msgstr "" msgstr ""
#: services/HyperV_enterprise/HyperVClusterProvider.py:300 #: services/HyperV_enterprise/HyperVClusterProvider.py:300
#: services/HyperV_enterprise/HyperVProvider.py:256 #: services/HyperV_enterprise/HyperVProvider.py:256
#: services/OVirt/OVirtProvider.py:415 #: services/OVirt/OVirtProvider.py:419
#: services/Vmware_enterprise/ServiceProviderVC.py:123 #: services/Vmware_enterprise/ServiceProviderVC.py:123
msgid "Connection failed. Check connection params" msgid "Connection failed. Check connection params"
msgstr "" msgstr ""
@ -2582,6 +2643,14 @@ msgstr ""
msgid "Transport" msgid "Transport"
msgstr "" msgstr ""
#: templates/uds/admin/tmpl/publish.html:5
msgid "reason of publication"
msgstr ""
#: templates/uds/admin/tmpl/publish.html:7
msgid "Reason for publication (can be empty)"
msgstr ""
#: templates/uds/admin/tmpl/request_failed.html:4 #: templates/uds/admin/tmpl/request_failed.html:4
msgid "Error on request" msgid "Error on request"
msgstr "" msgstr ""
@ -3147,14 +3216,14 @@ msgid "NX Transport for tunneled connection"
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:69 transports/RDP/TRDPTransport.py:69 #: transports/NX/TSNXTransport.py:69 transports/RDP/TRDPTransport.py:69
#: transports/RDS_enterprise/TRDSTransport.py:69 #: transports/RDS_enterprise/TRDSTransport.py:67
#: transports/RGS_enterprise/TRGSTransport.py:49 #: transports/RGS_enterprise/TRGSTransport.py:49
#: transports/SPICE/TSPICETransport.py:65 #: transports/SPICE/TSPICETransport.py:65
msgid "Tunnel server" msgid "Tunnel server"
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:69 transports/RDP/TRDPTransport.py:69 #: transports/NX/TSNXTransport.py:69 transports/RDP/TRDPTransport.py:69
#: transports/RDS_enterprise/TRDSTransport.py:69 #: transports/RDS_enterprise/TRDSTransport.py:67
#: transports/RGS_enterprise/TRGSTransport.py:49 #: transports/RGS_enterprise/TRGSTransport.py:49
#: transports/SPICE/TSPICETransport.py:65 #: transports/SPICE/TSPICETransport.py:65
msgid "" msgid ""
@ -3163,13 +3232,13 @@ msgid ""
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:70 transports/RDP/TRDPTransport.py:70 #: transports/NX/TSNXTransport.py:70 transports/RDP/TRDPTransport.py:70
#: transports/RDS_enterprise/TRDSTransport.py:70 #: transports/RDS_enterprise/TRDSTransport.py:68
#: transports/RGS_enterprise/TRGSTransport.py:50 #: transports/RGS_enterprise/TRGSTransport.py:50
msgid "Tunnel host check" msgid "Tunnel host check"
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:70 transports/RDP/TRDPTransport.py:70 #: transports/NX/TSNXTransport.py:70 transports/RDP/TRDPTransport.py:70
#: transports/RDS_enterprise/TRDSTransport.py:70 #: transports/RDS_enterprise/TRDSTransport.py:68
#: transports/RGS_enterprise/TRGSTransport.py:50 #: transports/RGS_enterprise/TRGSTransport.py:50
msgid "" msgid ""
"If not empty, this server will be used to check if service is running before " "If not empty, this server will be used to check if service is running before "
@ -3177,7 +3246,7 @@ msgid ""
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:113 transports/RDP/TRDPTransport.py:88 #: transports/NX/TSNXTransport.py:113 transports/RDP/TRDPTransport.py:88
#: transports/RDS_enterprise/TRDSTransport.py:83 #: transports/RDS_enterprise/TRDSTransport.py:81
#: transports/RGS_enterprise/TRGSTransport.py:76 #: transports/RGS_enterprise/TRGSTransport.py:76
#: transports/SPICE/TSPICETransport.py:72 #: transports/SPICE/TSPICETransport.py:72
msgid "Must use HOST:PORT in Tunnel Server Field" msgid "Must use HOST:PORT in Tunnel Server Field"
@ -3228,36 +3297,30 @@ msgid "If checked, this transport will allow the use of user serial ports"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:70 #: transports/RDP/BaseRDPTransport.py:70
#: transports/RDS_enterprise/BaseRDSTransport.py:73
msgid "Show wallpaper" msgid "Show wallpaper"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:70 #: transports/RDP/BaseRDPTransport.py:70
#: transports/RDS_enterprise/BaseRDSTransport.py:73
msgid "" msgid ""
"If checked, the wallpaper and themes will be shown on machine (better user " "If checked, the wallpaper and themes will be shown on machine (better user "
"experience, more bandwidth)" "experience, more bandwidth)"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:71 #: transports/RDP/BaseRDPTransport.py:71
#: transports/RDS_enterprise/BaseRDSTransport.py:74
msgid "Multiple monitors" msgid "Multiple monitors"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:71 #: transports/RDP/BaseRDPTransport.py:71
#: transports/RDS_enterprise/BaseRDSTransport.py:74
msgid "" msgid ""
"If checked, all client monitors will be used for displaying (only works on " "If checked, all client monitors will be used for displaying (only works on "
"windows clients)" "windows clients)"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:72 #: transports/RDP/BaseRDPTransport.py:72
#: transports/RDS_enterprise/BaseRDSTransport.py:75
msgid "Allow Aero" msgid "Allow Aero"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:72 #: transports/RDP/BaseRDPTransport.py:72
#: transports/RDS_enterprise/BaseRDSTransport.py:75
msgid "If checked, desktop composition will be allowed" msgid "If checked, desktop composition will be allowed"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-05 12:47+0200\n" "POT-Creation-Date: 2015-06-21 21:22+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -414,123 +414,120 @@ msgstr ""
msgid "Services Provider deletion error" msgid "Services Provider deletion error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:133 #: static/tmp_js/gui-d-servicespools.js:134
msgid "error" msgid "error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
msgid "Remove Cache element" msgid "Remove Cache element"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Deletion error" msgid "Deletion error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:186 #: static/tmp_js/gui-d-servicespools.js:187
msgid "Add group" msgid "Add group"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:209 #: static/tmp_js/gui-d-servicespools.js:210
msgid "You must provide authenticator and group" msgid "You must provide authenticator and group"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Remove group" msgid "Remove group"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Group removal error" msgid "Group removal error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:247 #: static/tmp_js/gui-d-servicespools.js:248
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:249 #: static/tmp_js/gui-d-servicespools.js:250
msgid "No" msgid "No"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Remove Assigned service" msgid "Remove Assigned service"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:288 #: static/tmp_js/gui-d-servicespools.js:289
msgid "Add transport" msgid "Add transport"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:295 #: static/tmp_js/gui-d-servicespools.js:296
msgid "You must provide a transport" msgid "You must provide a transport"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Remove transport" msgid "Remove transport"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Transport removal error" msgid "Transport removal error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:333 #: static/tmp_js/gui-d-servicespools.js:336
#: static/tmp_js/gui-d-servicespools.js:352 #: static/tmp_js/gui-d-servicespools.js:355
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:368
#: static/tmp_js/gui-d-servicespools.js:369
msgid "Publish" msgid "Publish"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
msgid "Cancel publication" msgid "Cancel publication"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:350 #: static/tmp_js/gui-d-servicespools.js:353
msgid "Force Cancel" msgid "Force Cancel"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:379
msgid "Launch new publication?"
msgstr ""
#: static/tmp_js/gui-d-servicespools.js:366
msgid "Failed creating publication" msgid "Failed creating publication"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:390 #: static/tmp_js/gui-d-servicespools.js:415
msgid "Restrained" msgid "Restrained"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "New service pool" msgid "New service pool"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "creation error" msgid "creation error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:408 #: static/tmp_js/gui-d-servicespools.js:433
msgid "Publish on creation" msgid "Publish on creation"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:409 #: static/tmp_js/gui-d-servicespools.js:434
msgid "If selected, will initiate the publication inmediatly after creation" msgid "If selected, will initiate the publication inmediatly after creation"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:421 static/tmp_js/gui.js:40 #: static/tmp_js/gui-d-servicespools.js:446 static/tmp_js/gui.js:40
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:421 #: static/tmp_js/gui-d-servicespools.js:446
msgid "saving error" msgid "saving error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:422 static/tmp_js/gui.js:44 #: static/tmp_js/gui-d-servicespools.js:447 static/tmp_js/gui.js:44
#: static/tmp_js/gui.js:368 #: static/tmp_js/gui.js:368
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:422 #: static/tmp_js/gui-d-servicespools.js:447
msgid "deletion error" msgid "deletion error"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

View File

@ -6,21 +6,22 @@
# , 2014 # , 2014
# Adolfo Gómez <dkmaster@dkmon.com>, 2014-2015 # Adolfo Gómez <dkmaster@dkmon.com>, 2014-2015
# blafuente <blafuente@virtualcable.es>, 2014 # blafuente <blafuente@virtualcable.es>, 2014
# blafuente <blafuente@virtualcable.es>, 2014 # blafuente <blafuente@virtualcable.es>, 2014-2015
# JaviBas <jgonzalez@virtualcable.es>, 2014 # JaviBas <jgonzalez@virtualcable.es>, 2014
# JaviBas <jgonzalez@virtualcable.es>, 2014 # JaviBas <jgonzalez@virtualcable.es>, 2014
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenUDS\n" "Project-Id-Version: OpenUDS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-05 12:34+0200\n" "POT-Creation-Date: 2015-06-21 21:22+0200\n"
"PO-Revision-Date: 2015-06-05 10:02+0000\n" "PO-Revision-Date: 2015-06-21 19:16+0000\n"
"Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n" "Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/openuds/language/es/)\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/openuds/language/"
"es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19 #: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19
@ -126,7 +127,7 @@ msgstr "Grupo guardado"
#: static/tmp_js/gui-d-authenticators.js:189 #: static/tmp_js/gui-d-authenticators.js:189
msgid "New meta group" msgid "New meta group"
msgstr "Nuevo grupo meta" msgstr "Nuevo meta grupo"
#: static/tmp_js/gui-d-authenticators.js:191 #: static/tmp_js/gui-d-authenticators.js:191
msgid "New group" msgid "New group"
@ -155,7 +156,7 @@ msgstr "Borrar grupo"
#: static/tmp_js/gui-d-authenticators.js:224 #: static/tmp_js/gui-d-authenticators.js:224
msgid "Group deletion error" msgid "Group deletion error"
msgstr "Error en el borrado del grupo" msgstr "Error al borrar grupo"
#: static/tmp_js/gui-d-authenticators.js:270 #: static/tmp_js/gui-d-authenticators.js:270
msgid "Edit user" msgid "Edit user"
@ -194,7 +195,7 @@ msgstr "Eliminar usuario"
#: static/tmp_js/gui-d-authenticators.js:339 #: static/tmp_js/gui-d-authenticators.js:339
msgid "User deletion error" msgid "User deletion error"
msgstr "Error de borrado de usuario" msgstr "Error al borrar usuario"
#: static/tmp_js/gui-d-authenticators.js:352 #: static/tmp_js/gui-d-authenticators.js:352
msgid "New authenticator" msgid "New authenticator"
@ -202,7 +203,7 @@ msgstr "Nuevo autenticador"
#: static/tmp_js/gui-d-authenticators.js:352 #: static/tmp_js/gui-d-authenticators.js:352
msgid "Authenticator creation error" msgid "Authenticator creation error"
msgstr "Error de creación de autenticador" msgstr "Error al crear autenticador"
#: static/tmp_js/gui-d-authenticators.js:353 #: static/tmp_js/gui-d-authenticators.js:353
msgid "Edit authenticator" msgid "Edit authenticator"
@ -218,7 +219,7 @@ msgstr "Eliminar autenticador"
#: static/tmp_js/gui-d-authenticators.js:354 #: static/tmp_js/gui-d-authenticators.js:354
msgid "Authenticator deletion error" msgid "Authenticator deletion error"
msgstr "Error en la eliminación del autenticador" msgstr "Error al eliminar autenticador"
#: static/tmp_js/gui-d-config.js:56 #: static/tmp_js/gui-d-config.js:56
msgid "Configuration saved" msgid "Configuration saved"
@ -226,7 +227,7 @@ msgstr "Configuración guardada"
#: static/tmp_js/gui-d-config.js:60 #: static/tmp_js/gui-d-config.js:60
msgid "No changes has been made" msgid "No changes has been made"
msgstr "No se han introducido modificaciones" msgstr "No se han hecho cambios"
#: static/tmp_js/gui-d-connectivity.js:21 #: static/tmp_js/gui-d-connectivity.js:21
msgid "New transport" msgid "New transport"
@ -234,7 +235,7 @@ msgstr "Nuevo transporte"
#: static/tmp_js/gui-d-connectivity.js:21 #: static/tmp_js/gui-d-connectivity.js:21
msgid "Transport creation error" msgid "Transport creation error"
msgstr "Error en creación de transporte" msgstr "Error al crear transporte"
#: static/tmp_js/gui-d-connectivity.js:22 #: static/tmp_js/gui-d-connectivity.js:22
msgid "Edit transport" msgid "Edit transport"
@ -250,7 +251,7 @@ msgstr "Eliminar transporte"
#: static/tmp_js/gui-d-connectivity.js:23 #: static/tmp_js/gui-d-connectivity.js:23
msgid "Transport deletion error" msgid "Transport deletion error"
msgstr "Error en la eliminación del transporte" msgstr "Error al eliminar transporte"
#: static/tmp_js/gui-d-connectivity.js:30 #: static/tmp_js/gui-d-connectivity.js:30
msgid "New network" msgid "New network"
@ -258,7 +259,7 @@ msgstr "Nueva red"
#: static/tmp_js/gui-d-connectivity.js:30 #: static/tmp_js/gui-d-connectivity.js:30
msgid "Network creation error" msgid "Network creation error"
msgstr "Error de creación de la red" msgstr "Error al crear red"
#: static/tmp_js/gui-d-connectivity.js:31 #: static/tmp_js/gui-d-connectivity.js:31
msgid "Edit network" msgid "Edit network"
@ -266,7 +267,7 @@ msgstr "Editar red"
#: static/tmp_js/gui-d-connectivity.js:31 #: static/tmp_js/gui-d-connectivity.js:31
msgid "Network saving error" msgid "Network saving error"
msgstr "Error al guardar la red" msgstr "Error al guardar red"
#: static/tmp_js/gui-d-connectivity.js:32 #: static/tmp_js/gui-d-connectivity.js:32
msgid "Delete network" msgid "Delete network"
@ -274,7 +275,7 @@ msgstr "Eliminar red"
#: static/tmp_js/gui-d-connectivity.js:32 #: static/tmp_js/gui-d-connectivity.js:32
msgid "Network deletion error" msgid "Network deletion error"
msgstr "Error de eliminación de la red" msgstr "Error al eliminar red"
#: static/tmp_js/gui-d-dashboard.js:40 #: static/tmp_js/gui-d-dashboard.js:40
msgid "Staff member" msgid "Staff member"
@ -294,7 +295,7 @@ msgstr "Debe seleccionar una imagen"
#: static/tmp_js/gui-d-gallery.js:34 #: static/tmp_js/gui-d-gallery.js:34
msgid "Image is too big (max. upload size is 256Kb)" msgid "Image is too big (max. upload size is 256Kb)"
msgstr "La imagen es demasiado grande (el tamaño de carga máximo es 256Kb)" msgstr "La imagen es demasiado grande (el tamaño máximo es de 256Kb)"
#: static/tmp_js/gui-d-gallery.js:80 #: static/tmp_js/gui-d-gallery.js:80
msgid "Delete Image" msgid "Delete Image"
@ -302,31 +303,31 @@ msgstr "Borrar imagen"
#: static/tmp_js/gui-d-gallery.js:80 #: static/tmp_js/gui-d-gallery.js:80
msgid "Image deletion error" msgid "Image deletion error"
msgstr "Error de borrado de imagen" msgstr "Error al borrar la imagen"
#: static/tmp_js/gui-d-osmanagers.js:17 #: static/tmp_js/gui-d-osmanagers.js:17
msgid "New OSManager" msgid "New OSManager"
msgstr "Nuevo OSManager" msgstr "Nuevo OS Manager"
#: static/tmp_js/gui-d-osmanagers.js:17 #: static/tmp_js/gui-d-osmanagers.js:17
msgid "OSManager creation error" msgid "OSManager creation error"
msgstr "Error de creación del OSManager" msgstr "Error al crear OS Manager"
#: static/tmp_js/gui-d-osmanagers.js:18 #: static/tmp_js/gui-d-osmanagers.js:18
msgid "Edit OSManager" msgid "Edit OSManager"
msgstr "Editar OSManager" msgstr "Editar OS Manager"
#: static/tmp_js/gui-d-osmanagers.js:18 #: static/tmp_js/gui-d-osmanagers.js:18
msgid "OSManager saving error" msgid "OSManager saving error"
msgstr "Error al guardar OSManager" msgstr "Error al guardar OS Manager"
#: static/tmp_js/gui-d-osmanagers.js:19 #: static/tmp_js/gui-d-osmanagers.js:19
msgid "Delete OSManager" msgid "Delete OSManager"
msgstr "Eliminar OSManager" msgstr "Eliminar OS Manager"
#: static/tmp_js/gui-d-osmanagers.js:19 #: static/tmp_js/gui-d-osmanagers.js:19
msgid "OSManager deletion error" msgid "OSManager deletion error"
msgstr "Error en la eliminación del OSManager" msgstr "Error al eliminarl OS Manager"
#: static/tmp_js/gui-d-reports.js:21 static/tmp_js/gui-d-reports.js:34 #: static/tmp_js/gui-d-reports.js:21 static/tmp_js/gui-d-reports.js:34
msgid "Generate report" msgid "Generate report"
@ -338,7 +339,7 @@ msgstr "Error al crear el informe"
#: static/tmp_js/gui-d-reports.js:52 #: static/tmp_js/gui-d-reports.js:52
msgid "Error obtainint report description" msgid "Error obtainint report description"
msgstr "Descripción del informe de error obtainint" msgstr "Descripción del informe de error"
#: static/tmp_js/gui-d-services.js:69 #: static/tmp_js/gui-d-services.js:69
msgid "In Maintenance" msgid "In Maintenance"
@ -354,7 +355,7 @@ msgstr "Editar servicio"
#: static/tmp_js/gui-d-services.js:121 #: static/tmp_js/gui-d-services.js:121
msgid "Service creation error" msgid "Service creation error"
msgstr "Error de creación de servicio" msgstr "Error al crear servicio"
#: static/tmp_js/gui-d-services.js:122 #: static/tmp_js/gui-d-services.js:122
msgid "New service" msgid "New service"
@ -378,15 +379,15 @@ msgstr "Mantenimiento"
#: static/tmp_js/gui-d-services.js:141 #: static/tmp_js/gui-d-services.js:141
msgid "Maintenance Mode" msgid "Maintenance Mode"
msgstr "En modo mantenimiento" msgstr "Modo de mantenimiento"
#: static/tmp_js/gui-d-services.js:141 #: static/tmp_js/gui-d-services.js:141
msgid "Enter Maintenance Mode?" msgid "Enter Maintenance Mode?"
msgstr "Entrar en modo mantenimiento." msgstr "¿Entrar en modo mantenimiento?"
#: static/tmp_js/gui-d-services.js:141 #: static/tmp_js/gui-d-services.js:141
msgid "Exit Maintenance Mode?" msgid "Exit Maintenance Mode?"
msgstr "Salir del modo mantenimiento." msgstr "Salir del modo mantenimiento"
#: static/tmp_js/gui-d-services.js:158 #: static/tmp_js/gui-d-services.js:158
msgid "Enter maintenance Mode" msgid "Enter maintenance Mode"
@ -420,123 +421,122 @@ msgstr "Eliminar proveedor de servicios"
msgid "Services Provider deletion error" msgid "Services Provider deletion error"
msgstr "Error al eliminar el proveedor de servicios" msgstr "Error al eliminar el proveedor de servicios"
#: static/tmp_js/gui-d-servicespools.js:133 #: static/tmp_js/gui-d-servicespools.js:134
msgid "error" msgid "error"
msgstr "error" msgstr "error"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
msgid "Remove Cache element" msgid "Remove Cache element"
msgstr "Retirar elemento de la caché" msgstr "Retirar elemento de la caché"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Deletion error" msgid "Deletion error"
msgstr "Error de eliminación" msgstr "Error de eliminación"
#: static/tmp_js/gui-d-servicespools.js:186 #: static/tmp_js/gui-d-servicespools.js:187
msgid "Add group" msgid "Add group"
msgstr "Agregar grupo" msgstr "Agregar grupo"
#: static/tmp_js/gui-d-servicespools.js:209 #: static/tmp_js/gui-d-servicespools.js:210
msgid "You must provide authenticator and group" msgid "You must provide authenticator and group"
msgstr "Debe proporcionar autenticador y grupo" msgstr "Debe proporcionar autenticador y grupo"
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Remove group" msgid "Remove group"
msgstr "Quitar grupo" msgstr "Quitar grupo"
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Group removal error" msgid "Group removal error"
msgstr "Error en la desasignación del grupo" msgstr "Error al quitar grupo"
#: static/tmp_js/gui-d-servicespools.js:247 #: static/tmp_js/gui-d-servicespools.js:248
msgid "Yes" msgid "Yes"
msgstr "Sí" msgstr "Sí"
#: static/tmp_js/gui-d-servicespools.js:249 #: static/tmp_js/gui-d-servicespools.js:250
msgid "No" msgid "No"
msgstr "No" msgstr "No"
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Remove Assigned service" msgid "Remove Assigned service"
msgstr "Quitar servicio asignado" msgstr "Quitar servicio asignado"
#: static/tmp_js/gui-d-servicespools.js:288 #: static/tmp_js/gui-d-servicespools.js:289
msgid "Add transport" msgid "Add transport"
msgstr "Añadir transporte" msgstr "Añadir transporte"
#: static/tmp_js/gui-d-servicespools.js:295 #: static/tmp_js/gui-d-servicespools.js:296
msgid "You must provide a transport" msgid "You must provide a transport"
msgstr "Debe proporcionar un transporte" msgstr "Debe proporcionar un transporte"
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Remove transport" msgid "Remove transport"
msgstr "Quitar transporte" msgstr "Quitar transporte"
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Transport removal error" msgid "Transport removal error"
msgstr "Error en la desasignación del transporte" msgstr "Error al quitar transporte"
#: static/tmp_js/gui-d-servicespools.js:333 #: static/tmp_js/gui-d-servicespools.js:336
#: static/tmp_js/gui-d-servicespools.js:352 #: static/tmp_js/gui-d-servicespools.js:355
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:368
#: static/tmp_js/gui-d-servicespools.js:369
msgid "Publish" msgid "Publish"
msgstr "Publicar" msgstr "Publicar"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
msgid "Cancel publication" msgid "Cancel publication"
msgstr "Cancelar la publicación" msgstr "Cancelar la publicación"
#: static/tmp_js/gui-d-servicespools.js:350 #: static/tmp_js/gui-d-servicespools.js:353
msgid "Force Cancel" msgid "Force Cancel"
msgstr "Forzar cancelación" msgstr "Forzar cancelación"
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:379
msgid "Launch new publication?"
msgstr "¿Lanzar nueva publicación?"
#: static/tmp_js/gui-d-servicespools.js:366
msgid "Failed creating publication" msgid "Failed creating publication"
msgstr "No se pudo crear la publicación" msgstr "No se pudo crear la publicación"
#: static/tmp_js/gui-d-servicespools.js:390 #: static/tmp_js/gui-d-servicespools.js:415
msgid "Restrained" msgid "Restrained"
msgstr "Contenido" msgstr "Contenido"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "New service pool" msgid "New service pool"
msgstr "Nuevo Pool de Servicios" msgstr "Nuevo Pool de Servicios"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "creation error" msgid "creation error"
msgstr "error de creación" msgstr "error de creación"
#: static/tmp_js/gui-d-servicespools.js:408 #: static/tmp_js/gui-d-servicespools.js:433
msgid "Publish on creation" msgid "Publish on creation"
msgstr "Publicar en creación" msgstr "Publicar en la creación"
#: static/tmp_js/gui-d-servicespools.js:409 #: static/tmp_js/gui-d-servicespools.js:434
msgid "If selected, will initiate the publication inmediatly after creation" msgid "If selected, will initiate the publication inmediatly after creation"
msgstr "Si se selecciona, se iniciará la publicación inmediatamente después de la creación" msgstr ""
"Si se selecciona, se iniciará la publicación inmediatamente después de la "
"creación"
#: static/tmp_js/gui-d-servicespools.js:421 static/tmp_js/gui.js:40 #: static/tmp_js/gui-d-servicespools.js:446 static/tmp_js/gui.js:40
msgid "Edit" msgid "Edit"
msgstr "Editar" msgstr "Editar"
#: static/tmp_js/gui-d-servicespools.js:421 #: static/tmp_js/gui-d-servicespools.js:446
msgid "saving error" msgid "saving error"
msgstr "error al guardar" msgstr "error al guardar"
#: static/tmp_js/gui-d-servicespools.js:422 static/tmp_js/gui.js:44 #: static/tmp_js/gui-d-servicespools.js:447 static/tmp_js/gui.js:44
#: static/tmp_js/gui.js:368 #: static/tmp_js/gui.js:368
msgid "Delete" msgid "Delete"
msgstr "Borrar" msgstr "Borrar"
#: static/tmp_js/gui-d-servicespools.js:422 #: static/tmp_js/gui-d-servicespools.js:447
msgid "deletion error" msgid "deletion error"
msgstr "error al eliminar" msgstr "error al eliminar"
@ -546,7 +546,7 @@ msgstr "Caché"
#: static/tmp_js/gui-definition.js:12 #: static/tmp_js/gui-definition.js:12
msgid "Cache has been flushed" msgid "Cache has been flushed"
msgstr "La caché ha sido vaciada" msgstr "La caché se ha vaciado"
#: static/tmp_js/gui-element.js:482 #: static/tmp_js/gui-element.js:482
msgid "Date" msgid "Date"
@ -674,7 +674,7 @@ msgstr "Por favor, introduzca un número válido."
#: static/tmp_js/gui.js:232 #: static/tmp_js/gui.js:232
msgid "Please enter only digits." msgid "Please enter only digits."
msgstr "Por favor, introduzca sólo dígitos." msgstr "Por favor, introduzca sólo cifras."
#: static/tmp_js/gui.js:233 #: static/tmp_js/gui.js:233
msgid "Please enter a valid credit card number." msgid "Please enter a valid credit card number."
@ -682,7 +682,7 @@ msgstr "Por favor, introduzca un número de tarjeta de crédito válida."
#: static/tmp_js/gui.js:234 #: static/tmp_js/gui.js:234
msgid "Please enter the same value again." msgid "Please enter the same value again."
msgstr "Por favor, introduzca el mismo valor de nuevo." msgstr "Por favor, introduzca el mismo valor otra vez."
#: static/tmp_js/gui.js:235 #: static/tmp_js/gui.js:235
msgid "Please enter no more than {0} characters." msgid "Please enter no more than {0} characters."
@ -694,7 +694,7 @@ msgstr "Por favor, introduzca al menos {0} caracteres."
#: static/tmp_js/gui.js:237 #: static/tmp_js/gui.js:237
msgid "Please enter a value between {0} and {1} characters long." msgid "Please enter a value between {0} and {1} characters long."
msgstr "Por favor, introduzca un valor de una longitud entre {0} y {1} caracteres." msgstr "Por favor, introduzca un valor de entre {0} y {1} caracteres."
#: static/tmp_js/gui.js:238 #: static/tmp_js/gui.js:238
msgid "Please enter a value between {0} and {1}." msgid "Please enter a value between {0} and {1}."
@ -710,15 +710,15 @@ msgstr "Por favor, introduzca un valor mayor o igual a {0}."
#: static/tmp_js/gui.js:277 #: static/tmp_js/gui.js:277
msgid "Test passed successfully" msgid "Test passed successfully"
msgstr "Test pasado con éxito" msgstr "Test superado con éxito"
#: static/tmp_js/gui.js:280 #: static/tmp_js/gui.js:280
msgid "Test failed:" msgid "Test failed:"
msgstr "Ha fallado el test:" msgstr "El test ha fallado:"
#: static/tmp_js/gui.js:284 #: static/tmp_js/gui.js:284
msgid "Test error" msgid "Test error"
msgstr "Error en la prueba" msgstr "Error en el test"
#: static/tmp_js/gui.js:315 #: static/tmp_js/gui.js:315
msgid "Edition successfully done" msgid "Edition successfully done"
@ -734,7 +734,7 @@ msgstr "Creación realizada con éxito"
#: static/tmp_js/gui.js:366 #: static/tmp_js/gui.js:366
msgid "Are you sure do you want to delete " msgid "Are you sure do you want to delete "
msgstr "¿Estás seguro que lo quieres eliminar?" msgstr "¿Estás seguro de que lo quieres eliminar?"
#: static/tmp_js/gui.js:374 #: static/tmp_js/gui.js:374
msgid "Sucess" msgid "Sucess"
@ -746,4 +746,4 @@ msgstr "Contactando con servicio..."
#: static/tmp_js/uds-client.js:186 #: static/tmp_js/uds-client.js:186
msgid "Error accessing service: " msgid "Error accessing service: "
msgstr "Error de acceso a servicio: " msgstr "Error al acceder al servicio: "

View File

@ -8,14 +8,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenUDS\n" "Project-Id-Version: OpenUDS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-05 12:34+0200\n" "POT-Creation-Date: 2015-06-21 21:22+0200\n"
"PO-Revision-Date: 2015-06-05 10:46+0000\n" "PO-Revision-Date: 2015-06-21 19:15+0000\n"
"Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n" "Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n"
"Language-Team: Basque (http://www.transifex.com/projects/p/openuds/language/eu/)\n" "Language-Team: Basque (http://www.transifex.com/projects/p/openuds/language/"
"eu/)\n"
"Language: eu\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: eu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: REST/methods/actor.py:94 REST/methods/client.py:88 #: REST/methods/actor.py:94 REST/methods/client.py:88
@ -42,7 +43,7 @@ msgstr ""
#: REST/methods/authenticators.py:59 REST/methods/images.py:60 #: REST/methods/authenticators.py:59 REST/methods/images.py:60
#: REST/methods/networks.py:60 REST/methods/osmanagers.py:57 #: REST/methods/networks.py:60 REST/methods/osmanagers.py:57
#: REST/methods/providers.py:64 REST/methods/reports.py:58 #: REST/methods/providers.py:64 REST/methods/reports.py:58
#: REST/methods/services_pools.py:71 REST/methods/transports.py:56 #: REST/methods/services_pools.py:72 REST/methods/transports.py:56
#: REST/methods/user_services.py:218 REST/methods/user_services.py:253 #: REST/methods/user_services.py:218 REST/methods/user_services.py:253
#: REST/methods/users_groups.py:95 REST/model.py:119 #: REST/methods/users_groups.py:95 REST/model.py:119
#: templates/uds/admin/tmpl/user.html:29 templates/uds/admin/tmpl/user.html:32 #: templates/uds/admin/tmpl/user.html:29 templates/uds/admin/tmpl/user.html:32
@ -51,7 +52,7 @@ msgstr ""
#: REST/methods/authenticators.py:60 REST/methods/osmanagers.py:58 #: REST/methods/authenticators.py:60 REST/methods/osmanagers.py:58
#: REST/methods/providers.py:65 REST/methods/services.py:179 #: REST/methods/providers.py:65 REST/methods/services.py:179
#: REST/methods/services_pools.py:75 REST/methods/transports.py:57 #: REST/methods/services_pools.py:76 REST/methods/transports.py:57
#: REST/methods/user_services.py:255 REST/methods/users_groups.py:96 #: REST/methods/user_services.py:255 REST/methods/users_groups.py:96
#: REST/methods/users_groups.py:209 REST/model.py:126 #: REST/methods/users_groups.py:209 REST/model.py:126
#: templates/uds/admin/tmpl/group.html:49 #: templates/uds/admin/tmpl/group.html:49
@ -68,8 +69,8 @@ msgstr ""
msgid "Tag" msgid "Tag"
msgstr "" msgstr ""
#: REST/methods/authenticators.py:63 #: REST/methods/authenticators.py:63 reports/stats/login.py:107
#: templates/uds/admin/tmpl/authenticators.html:30 #: reports/stats/login.py:372 templates/uds/admin/tmpl/authenticators.html:30
#: templates/uds/admin/tmpl/dashboard.html:34 #: templates/uds/admin/tmpl/dashboard.html:34
#: templates/uds/admin/tmpl/permissions.html:7 #: templates/uds/admin/tmpl/permissions.html:7
msgid "Users" msgid "Users"
@ -209,104 +210,104 @@ msgstr ""
msgid "User services" msgid "User services"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:69 #: REST/methods/services_pools.py:70
#: templates/uds/admin/snippets/navbar.html:25 #: templates/uds/admin/snippets/navbar.html:25
#: templates/uds/admin/tmpl/services_pool.html:4 #: templates/uds/admin/tmpl/services_pool.html:4
#: templates/uds/admin/tmpl/services_pool.html:7 #: templates/uds/admin/tmpl/services_pool.html:7
msgid "Service Pools" msgid "Service Pools"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:72 #: REST/methods/services_pools.py:73
msgid "Parent Service" msgid "Parent Service"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:73 REST/methods/user_services.py:118 #: REST/methods/services_pools.py:74 REST/methods/user_services.py:118
msgid "status" msgid "status"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:74 #: REST/methods/services_pools.py:75
msgid "Shows transports" msgid "Shows transports"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:113 #: REST/methods/services_pools.py:114
msgid "Create at least one OS Manager before creating a new service pool" msgid "Create at least one OS Manager before creating a new service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:115 #: REST/methods/services_pools.py:116
msgid "Create at least a service before creating a new service pool" msgid "Create at least a service before creating a new service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:122 #: REST/methods/services_pools.py:123
msgid "Base service" msgid "Base service"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:123 #: REST/methods/services_pools.py:124
msgid "Service used as base of this service pool" msgid "Service used as base of this service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:130 #: REST/methods/services_pools.py:131
msgid "OS Manager" msgid "OS Manager"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:131 #: REST/methods/services_pools.py:132
msgid "OS Manager used as base of this service pool" msgid "OS Manager used as base of this service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:138 #: REST/methods/services_pools.py:139
msgid "Associated Image" msgid "Associated Image"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:139 #: REST/methods/services_pools.py:140
msgid "Image assocciated with this service" msgid "Image assocciated with this service"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:146 #: REST/methods/services_pools.py:147
msgid "Initial available services" msgid "Initial available services"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:147 #: REST/methods/services_pools.py:148
msgid "Services created initially for this service pool" msgid "Services created initially for this service pool"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:154 #: REST/methods/services_pools.py:155
msgid "Services to keep in cache" msgid "Services to keep in cache"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:155 #: REST/methods/services_pools.py:156
msgid "Services kept in cache for improved user service assignation" msgid "Services kept in cache for improved user service assignation"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:162 #: REST/methods/services_pools.py:163
msgid "Services to keep in L2 cache" msgid "Services to keep in L2 cache"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:163 #: REST/methods/services_pools.py:164
msgid "Services kept in cache of level2 for improved service generation" msgid "Services kept in cache of level2 for improved service generation"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:170 #: REST/methods/services_pools.py:171
msgid "Maximum number of services to provide" msgid "Maximum number of services to provide"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:171 #: REST/methods/services_pools.py:172
msgid "" msgid ""
"Maximum number of service (assigned and L1 cache) that can be created for " "Maximum number of service (assigned and L1 cache) that can be created for "
"this service" "this service"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:177 #: REST/methods/services_pools.py:178
msgid "Show transports" msgid "Show transports"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:178 #: REST/methods/services_pools.py:179
msgid "If active, alternative transports for user will be shown" msgid "If active, alternative transports for user will be shown"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:193 #: REST/methods/services_pools.py:194
msgid "Base service does not exist anymore" msgid "Base service does not exist anymore"
msgstr "" msgstr ""
#: REST/methods/services_pools.py:212 #: REST/methods/services_pools.py:213
msgid "This service requires an OS Manager" msgid "This service requires an OS Manager"
msgstr "" msgstr ""
@ -349,7 +350,7 @@ msgid "Creation date"
msgstr "" msgstr ""
#: REST/methods/user_services.py:114 REST/methods/user_services.py:180 #: REST/methods/user_services.py:114 REST/methods/user_services.py:180
#: REST/methods/user_services.py:319 #: REST/methods/user_services.py:321 REST/methods/user_services.py:350
msgid "Revision" msgid "Revision"
msgstr "" msgstr ""
@ -395,7 +396,8 @@ msgid "Cached services"
msgstr "" msgstr ""
#: REST/methods/user_services.py:184 REST/methods/user_services.py:220 #: REST/methods/user_services.py:184 REST/methods/user_services.py:220
#: REST/methods/user_services.py:321 templates/uds/admin/tmpl/group.html:54 #: REST/methods/user_services.py:323 REST/methods/user_services.py:352
#: templates/uds/admin/tmpl/group.html:54
#: templates/uds/admin/tmpl/user.html:45 #: templates/uds/admin/tmpl/user.html:45
msgid "State" msgid "State"
msgstr "" msgstr ""
@ -417,19 +419,23 @@ msgstr ""
msgid "Assigned transports" msgid "Assigned transports"
msgstr "" msgstr ""
#: REST/methods/user_services.py:315 #: REST/methods/user_services.py:317
#: templates/uds/admin/tmpl/services_pool.html:34 #: templates/uds/admin/tmpl/services_pool.html:34
msgid "Publications" msgid "Publications"
msgstr "" msgstr ""
#: REST/methods/user_services.py:320 #: REST/methods/user_services.py:322 REST/methods/user_services.py:351
msgid "Publish date" msgid "Publish date"
msgstr "" msgstr ""
#: REST/methods/user_services.py:322 #: REST/methods/user_services.py:324 templates/uds/admin/tmpl/publish.html:5
msgid "Reason" msgid "Reason"
msgstr "" msgstr ""
#: REST/methods/user_services.py:346
msgid "Changelog"
msgstr ""
#: REST/methods/users_groups.py:88 #: REST/methods/users_groups.py:88
#, python-brace-format #, python-brace-format
msgid "Users of {0}" msgid "Users of {0}"
@ -460,7 +466,8 @@ msgstr "Erabiltzaile izena"
msgid "state" msgid "state"
msgstr "" msgstr ""
#: REST/methods/users_groups.py:98 #: REST/methods/users_groups.py:98 reports/lists/users.py:86
#: reports/lists/users.py:161
msgid "Last access" msgid "Last access"
msgstr "" msgstr ""
@ -531,18 +538,18 @@ msgid "requested a template that do not exist"
msgstr "" msgstr ""
#: admin/views/reporting/usage.py:84 admin/views/reporting/users.py:87 #: admin/views/reporting/usage.py:84 admin/views/reporting/users.py:87
#: reports/lists/users.py:85 reports/stats/login.py:96 #: core/reports/tools/report.py:69 reports/lists/users.py:87
#, python-format #, python-format
msgid "Page %(page_number)d of %(page_count)d" msgid "Page %(page_number)d of %(page_count)d"
msgstr "" msgstr ""
#: admin/views/reporting/usage.py:93 admin/views/reporting/users.py:97 #: admin/views/reporting/usage.py:93 admin/views/reporting/users.py:97
#: reports/lists/users.py:95 reports/stats/login.py:106 #: core/reports/tools/report.py:79 reports/lists/users.py:97
#, python-format #, python-format
msgid "Printed in %(now:%Y, %b %d)s at %(now:%H:%M)s" msgid "Printed in %(now:%Y, %b %d)s at %(now:%H:%M)s"
msgstr "" msgstr ""
#: admin/views/reporting/users.py:112 reports/lists/users.py:135 #: admin/views/reporting/users.py:112 reports/lists/users.py:137
msgid "Users List for {}" msgid "Users List for {}"
msgstr "" msgstr ""
@ -586,8 +593,8 @@ msgstr ""
#: auths/ActiveDirectory_enterprise/Authenticator.py:39 #: auths/ActiveDirectory_enterprise/Authenticator.py:39
msgid "" msgid ""
"Username with read privileges on the base selected (use USER@DOMAIN.DOM form" "Username with read privileges on the base selected (use USER@DOMAIN.DOM form "
" for this)" "for this)"
msgstr "" msgstr ""
#: auths/ActiveDirectory_enterprise/Authenticator.py:40 #: auths/ActiveDirectory_enterprise/Authenticator.py:40
@ -776,8 +783,8 @@ msgstr ""
#: auths/IP/Authenticator.py:52 #: auths/IP/Authenticator.py:52
msgid "" msgid ""
"If checked, requests via proxy will get FORWARDED ip address (take care with" "If checked, requests via proxy will get FORWARDED ip address (take care with "
" this bein checked, can take internal IP addresses from internet)" "this bein checked, can take internal IP addresses from internet)"
msgstr "" msgstr ""
#: auths/IP/Authenticator.py:54 auths/IP/Authenticator.py:56 #: auths/IP/Authenticator.py:54 auths/IP/Authenticator.py:56
@ -861,8 +868,7 @@ msgid "User Name Attr"
msgstr "" msgstr ""
#: auths/RegexLdap/Authenticator.py:65 auths/SimpleLDAP/Authenticator.py:66 #: auths/RegexLdap/Authenticator.py:65 auths/SimpleLDAP/Authenticator.py:66
msgid "" msgid "Attributes that contains the user name (list of comma separated values)"
"Attributes that contains the user name (list of comma separated values)"
msgstr "" msgstr ""
#: auths/RegexLdap/Authenticator.py:66 #: auths/RegexLdap/Authenticator.py:66
@ -937,8 +943,7 @@ msgid "Entity ID"
msgstr "" msgstr ""
#: auths/SAML_enterprise/SAML.py:129 #: auths/SAML_enterprise/SAML.py:129
msgid "" msgid "ID of the SP. If left blank, this will be autogenerated from server URL"
"ID of the SP. If left blank, this will be autogenerated from server URL"
msgstr "" msgstr ""
#: auths/SAML_enterprise/SAML.py:131 #: auths/SAML_enterprise/SAML.py:131
@ -967,8 +972,8 @@ msgstr ""
#: auths/SAML_enterprise/SAML.py:161 #: auths/SAML_enterprise/SAML.py:161
msgid "" msgid ""
"Server certificate should be a valid PEM (PEM certificates starts with " "Server certificate should be a valid PEM (PEM certificates starts with -----"
"-----BEGIN CERTIFICATE-----)" "BEGIN CERTIFICATE-----)"
msgstr "" msgstr ""
#: auths/SAML_enterprise/SAML.py:166 #: auths/SAML_enterprise/SAML.py:166
@ -1125,15 +1130,15 @@ msgstr ""
msgid "Service is in maintenance mode and new publications are not allowed" msgid "Service is in maintenance mode and new publications are not allowed"
msgstr "" msgstr ""
#: core/managers/PublicationManager.py:236 #: core/managers/PublicationManager.py:238
msgid "Can't cancel non running publication" msgid "Can't cancel non running publication"
msgstr "" msgstr ""
#: core/managers/PublicationManager.py:258 #: core/managers/PublicationManager.py:260
msgid "Can't unpublish non usable publication" msgid "Can't unpublish non usable publication"
msgstr "" msgstr ""
#: core/managers/PublicationManager.py:261 #: core/managers/PublicationManager.py:263
msgid "Can't unpublish publications with services in process" msgid "Can't unpublish publications with services in process"
msgstr "" msgstr ""
@ -1202,6 +1207,10 @@ msgstr ""
msgid "Base report" msgid "Base report"
msgstr "" msgstr ""
#: core/reports/tools/report.py:78
msgid "Generated by UDS"
msgstr ""
#: core/services/BaseService.py:89 core/services/BaseService.py:101 #: core/services/BaseService.py:89 core/services/BaseService.py:101
msgid "Base Service" msgid "Base Service"
msgstr "" msgstr ""
@ -1328,8 +1337,8 @@ msgstr ""
#: core/util/validators.py:114 #: core/util/validators.py:114
msgid "" msgid ""
"Invalid mac range. Mac range must be in format XX:XX:XX:XX:XX:XX-" "Invalid mac range. Mac range must be in format XX:XX:XX:XX:XX:XX-XX:XX:XX:XX:"
"XX:XX:XX:XX:XX:XX" "XX:XX"
msgstr "" msgstr ""
#: dispatchers/wyse_enterprise/views.py:112 #: dispatchers/wyse_enterprise/views.py:112
@ -1464,8 +1473,7 @@ msgstr ""
#: osmanagers/LinuxOsManager/__init__.py:49 #: osmanagers/LinuxOsManager/__init__.py:49
msgid "" msgid ""
"UDS Actor for Debian, Ubuntu, ... Linux machines <b>(Requires python " "UDS Actor for Debian, Ubuntu, ... Linux machines <b>(Requires python 2.7)</b>"
"2.7)</b>"
msgstr "" msgstr ""
#: osmanagers/LinuxOsManager/__init__.py:54 #: osmanagers/LinuxOsManager/__init__.py:54
@ -1475,18 +1483,31 @@ msgid ""
msgstr "" msgstr ""
#: osmanagers/LinuxOsManager/__init__.py:59 #: osmanagers/LinuxOsManager/__init__.py:59
msgid "" msgid "UDS Actor for openSUSE, ... Linux machines <b>(Requires python 2.7)</b>"
"UDS Actor for openSUSE, ... Linux machines <b>(Requires python 2.7)</b>"
msgstr ""
#: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:29
msgid "RDS OS Manager"
msgstr "" msgstr ""
#: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:31 #: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:31
msgid "RDS OS Manager"
msgstr ""
#: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:33
msgid "Os Manager to control RDS provided services" msgid "Os Manager to control RDS provided services"
msgstr "" msgstr ""
#: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:40
msgid "Max. session time"
msgstr ""
#: osmanagers/RDSOsManager_enterprise/RDSOsManager.py:44
msgid ""
"Maximum duration in hours for a session (0 means no limit). After this "
"period, session will be released."
msgstr ""
#: osmanagers/RDSOsManager_enterprise/__init__.py:49
msgid "RDS UDS Actor (for remote apps on Windows Server 2012)"
msgstr ""
#: osmanagers/WindowsOsManager/WinDomainOsManager.py:28 #: osmanagers/WindowsOsManager/WinDomainOsManager.py:28
msgid "Windows Domain OS Manager" msgid "Windows Domain OS Manager"
msgstr "" msgstr ""
@ -1631,64 +1652,103 @@ msgstr ""
msgid "UDS Actor for windows machines" msgid "UDS Actor for windows machines"
msgstr "" msgstr ""
#: reports/lists/users.py:110 templates/uds/admin/tmpl/permissions_add.html:5 #: reports/lists/base.py:42
msgid "Lists"
msgstr ""
#: reports/lists/users.py:84 reports/lists/users.py:161
#, fuzzy
#| msgid "User"
msgid "User ID"
msgstr "erabiltzaile"
#: reports/lists/users.py:85 reports/lists/users.py:161
msgid "Real Name"
msgstr ""
#: reports/lists/users.py:112 templates/uds/admin/tmpl/permissions_add.html:5
#: templates/uds/admin/tmpl/pool_add_group.html:5 web/forms/LoginForm.py:77 #: templates/uds/admin/tmpl/pool_add_group.html:5 web/forms/LoginForm.py:77
msgid "Authenticator" msgid "Authenticator"
msgstr "" msgstr ""
#: reports/lists/users.py:112 #: reports/lists/users.py:114
msgid "Authenticator from where to list users" msgid "Authenticator from where to list users"
msgstr "" msgstr ""
#: reports/lists/users.py:116 #: reports/lists/users.py:118
msgid "Users list" msgid "Users list"
msgstr "" msgstr ""
#: reports/lists/users.py:117 #: reports/lists/users.py:119
msgid "List users of platform" msgid "List users of platform"
msgstr "" msgstr ""
#: reports/stats/login.py:135 #: reports/stats/base.py:46
msgid "Statistics"
msgstr ""
#: reports/stats/login.py:77 reports/stats/login.py:103
msgid "Users access by date"
msgstr ""
#: reports/stats/login.py:83
msgid "Users access by day of week"
msgstr ""
#: reports/stats/login.py:89
msgid "Users access by hour"
msgstr ""
#: reports/stats/login.py:105 reports/stats/login.py:372
msgid "Date range"
msgstr ""
#: reports/stats/login.py:125 reports/stats/login.py:357
msgid "Users access report by date" msgid "Users access report by date"
msgstr "" msgstr ""
#: reports/stats/login.py:136 #: reports/stats/login.py:126 reports/stats/login.py:358
msgid "Report of user access to platform by date" msgid "Report of user access to platform by date"
msgstr "" msgstr ""
#: reports/stats/login.py:142 #: reports/stats/login.py:132
msgid "Starting date" msgid "Starting date"
msgstr "" msgstr ""
#: reports/stats/login.py:143 #: reports/stats/login.py:133
msgid "starting date for report" msgid "starting date for report"
msgstr "" msgstr ""
#: reports/stats/login.py:150 #: reports/stats/login.py:140
msgid "Finish date" msgid "Finish date"
msgstr "" msgstr ""
#: reports/stats/login.py:151 #: reports/stats/login.py:141
msgid "finish date for report" msgid "finish date for report"
msgstr "" msgstr ""
#: reports/stats/login.py:158 #: reports/stats/login.py:148
msgid "Number of points" msgid "Number of points"
msgstr "" msgstr ""
#: reports/stats/login.py:162 #: reports/stats/login.py:152
msgid "Number of sampling points used in charts" msgid "Number of sampling points used in charts"
msgstr "" msgstr ""
#: reports/stats/login.py:258 #: reports/stats/login.py:230 reports/stats/login.py:273
msgid "Users usage of UDS" #: reports/stats/login.py:287 reports/stats/login.py:312
msgid "Users access to UDS"
msgstr "" msgstr ""
#: reports/stats/usage.py:44 #: reports/stats/login.py:345
msgid "Usage stats" msgid "User access to UDS"
msgstr "" msgstr ""
#: reports/stats/usage.py:45 #: reports/stats/usage.py:45
msgid "Usage stats"
msgstr ""
#: reports/stats/usage.py:46
msgid "Statistics of platform use" msgid "Statistics of platform use"
msgstr "" msgstr ""
@ -1698,8 +1758,7 @@ msgstr ""
#: services/HyperV_enterprise/HyperVClusterLinkedService.py:55 #: services/HyperV_enterprise/HyperVClusterLinkedService.py:55
#: services/HyperV_enterprise/HyperVLinkedService.py:59 #: services/HyperV_enterprise/HyperVLinkedService.py:59
msgid "" msgid "Hyper Services based on templates and differential disks (experimental)"
"Hyper Services based on templates and differential disks (experimental)"
msgstr "" msgstr ""
#: services/HyperV_enterprise/HyperVClusterLinkedService.py:72 #: services/HyperV_enterprise/HyperVClusterLinkedService.py:72
@ -1745,8 +1804,7 @@ msgstr ""
#: services/HyperV_enterprise/HyperVLinkedService.py:102 #: services/HyperV_enterprise/HyperVLinkedService.py:102
#: services/Vmware_enterprise/VCLinkedCloneService.py:62 #: services/Vmware_enterprise/VCLinkedCloneService.py:62
msgid "" msgid ""
"If more than 1 interface is found in machine, use one on this network as " "If more than 1 interface is found in machine, use one on this network as main"
"main"
msgstr "" msgstr ""
#: services/HyperV_enterprise/HyperVClusterLinkedService.py:98 #: services/HyperV_enterprise/HyperVClusterLinkedService.py:98
@ -1871,13 +1929,13 @@ msgstr ""
#: services/HyperV_enterprise/HyperVClusterProvider.py:299 #: services/HyperV_enterprise/HyperVClusterProvider.py:299
#: services/HyperV_enterprise/HyperVProvider.py:255 #: services/HyperV_enterprise/HyperVProvider.py:255
#: services/OVirt/OVirtProvider.py:414 services/Xen/XenProvider.py:392 #: services/Xen/XenProvider.py:392
msgid "Connection test successful" msgid "Connection test successful"
msgstr "" msgstr ""
#: services/HyperV_enterprise/HyperVClusterProvider.py:300 #: services/HyperV_enterprise/HyperVClusterProvider.py:300
#: services/HyperV_enterprise/HyperVProvider.py:256 #: services/HyperV_enterprise/HyperVProvider.py:256
#: services/OVirt/OVirtProvider.py:415 #: services/OVirt/OVirtProvider.py:419
#: services/Vmware_enterprise/ServiceProviderVC.py:123 #: services/Vmware_enterprise/ServiceProviderVC.py:123
msgid "Connection failed. Check connection params" msgid "Connection failed. Check connection params"
msgstr "" msgstr ""
@ -2029,8 +2087,7 @@ msgid "Default password for users in list mapping"
msgstr "" msgstr ""
#: services/RDS_enterprise/RDSProvider.py:59 #: services/RDS_enterprise/RDSProvider.py:59
msgid "" msgid "Error: User {} on host {} is being used and cannot be removed right now"
"Error: User {} on host {} is being used and cannot be removed right now"
msgstr "" msgstr ""
#: services/RDS_enterprise/RDSProvider.py:89 #: services/RDS_enterprise/RDSProvider.py:89
@ -2590,6 +2647,14 @@ msgstr ""
msgid "Transport" msgid "Transport"
msgstr "" msgstr ""
#: templates/uds/admin/tmpl/publish.html:5
msgid "reason of publication"
msgstr ""
#: templates/uds/admin/tmpl/publish.html:7
msgid "Reason for publication (can be empty)"
msgstr ""
#: templates/uds/admin/tmpl/request_failed.html:4 #: templates/uds/admin/tmpl/request_failed.html:4
msgid "Error on request" msgid "Error on request"
msgstr "" msgstr ""
@ -2924,8 +2989,8 @@ msgstr ""
#: templates/uds/html5/templates/base.html:60 #: templates/uds/html5/templates/base.html:60
msgid "" msgid ""
"Your browser is supported only partially. Please, upgrade it to a modern " "Your browser is supported only partially. Please, upgrade it to a modern "
"html5 browser like Firefox, Chrome, Opera, ... (IE must be 10 or better, and" "html5 browser like Firefox, Chrome, Opera, ... (IE must be 10 or better, and "
" must also disable \"Compatibility View Mode\" for this site)" "must also disable \"Compatibility View Mode\" for this site)"
msgstr "" msgstr ""
#: templates/uds/html5/templates/base.html:108 #: templates/uds/html5/templates/base.html:108
@ -3070,8 +3135,8 @@ msgstr ""
#: transports/RGS_enterprise/RGSTransport.py:47 #: transports/RGS_enterprise/RGSTransport.py:47
#: transports/RGS_enterprise/TRGSTransport.py:55 #: transports/RGS_enterprise/TRGSTransport.py:55
msgid "" msgid ""
"If not empty, this domain will be always used as credential (used as " "If not empty, this domain will be always used as credential (used as DOMAIN"
"DOMAIN\\user)" "\\user)"
msgstr "" msgstr ""
#: transports/HTML5RDP/HTML5RDP.py:74 #: transports/HTML5RDP/HTML5RDP.py:74
@ -3155,14 +3220,14 @@ msgid "NX Transport for tunneled connection"
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:69 transports/RDP/TRDPTransport.py:69 #: transports/NX/TSNXTransport.py:69 transports/RDP/TRDPTransport.py:69
#: transports/RDS_enterprise/TRDSTransport.py:69 #: transports/RDS_enterprise/TRDSTransport.py:67
#: transports/RGS_enterprise/TRGSTransport.py:49 #: transports/RGS_enterprise/TRGSTransport.py:49
#: transports/SPICE/TSPICETransport.py:65 #: transports/SPICE/TSPICETransport.py:65
msgid "Tunnel server" msgid "Tunnel server"
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:69 transports/RDP/TRDPTransport.py:69 #: transports/NX/TSNXTransport.py:69 transports/RDP/TRDPTransport.py:69
#: transports/RDS_enterprise/TRDSTransport.py:69 #: transports/RDS_enterprise/TRDSTransport.py:67
#: transports/RGS_enterprise/TRGSTransport.py:49 #: transports/RGS_enterprise/TRGSTransport.py:49
#: transports/SPICE/TSPICETransport.py:65 #: transports/SPICE/TSPICETransport.py:65
msgid "" msgid ""
@ -3171,21 +3236,21 @@ msgid ""
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:70 transports/RDP/TRDPTransport.py:70 #: transports/NX/TSNXTransport.py:70 transports/RDP/TRDPTransport.py:70
#: transports/RDS_enterprise/TRDSTransport.py:70 #: transports/RDS_enterprise/TRDSTransport.py:68
#: transports/RGS_enterprise/TRGSTransport.py:50 #: transports/RGS_enterprise/TRGSTransport.py:50
msgid "Tunnel host check" msgid "Tunnel host check"
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:70 transports/RDP/TRDPTransport.py:70 #: transports/NX/TSNXTransport.py:70 transports/RDP/TRDPTransport.py:70
#: transports/RDS_enterprise/TRDSTransport.py:70 #: transports/RDS_enterprise/TRDSTransport.py:68
#: transports/RGS_enterprise/TRGSTransport.py:50 #: transports/RGS_enterprise/TRGSTransport.py:50
msgid "" msgid ""
"If not empty, this server will be used to check if service is running before" "If not empty, this server will be used to check if service is running before "
" assigning it to user. (use HOST:PORT format)" "assigning it to user. (use HOST:PORT format)"
msgstr "" msgstr ""
#: transports/NX/TSNXTransport.py:113 transports/RDP/TRDPTransport.py:88 #: transports/NX/TSNXTransport.py:113 transports/RDP/TRDPTransport.py:88
#: transports/RDS_enterprise/TRDSTransport.py:83 #: transports/RDS_enterprise/TRDSTransport.py:81
#: transports/RGS_enterprise/TRGSTransport.py:76 #: transports/RGS_enterprise/TRGSTransport.py:76
#: transports/SPICE/TSPICETransport.py:72 #: transports/SPICE/TSPICETransport.py:72
msgid "Must use HOST:PORT in Tunnel Server Field" msgid "Must use HOST:PORT in Tunnel Server Field"
@ -3236,36 +3301,30 @@ msgid "If checked, this transport will allow the use of user serial ports"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:70 #: transports/RDP/BaseRDPTransport.py:70
#: transports/RDS_enterprise/BaseRDSTransport.py:73
msgid "Show wallpaper" msgid "Show wallpaper"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:70 #: transports/RDP/BaseRDPTransport.py:70
#: transports/RDS_enterprise/BaseRDSTransport.py:73
msgid "" msgid ""
"If checked, the wallpaper and themes will be shown on machine (better user " "If checked, the wallpaper and themes will be shown on machine (better user "
"experience, more bandwidth)" "experience, more bandwidth)"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:71 #: transports/RDP/BaseRDPTransport.py:71
#: transports/RDS_enterprise/BaseRDSTransport.py:74
msgid "Multiple monitors" msgid "Multiple monitors"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:71 #: transports/RDP/BaseRDPTransport.py:71
#: transports/RDS_enterprise/BaseRDSTransport.py:74
msgid "" msgid ""
"If checked, all client monitors will be used for displaying (only works on " "If checked, all client monitors will be used for displaying (only works on "
"windows clients)" "windows clients)"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:72 #: transports/RDP/BaseRDPTransport.py:72
#: transports/RDS_enterprise/BaseRDSTransport.py:75
msgid "Allow Aero" msgid "Allow Aero"
msgstr "" msgstr ""
#: transports/RDP/BaseRDPTransport.py:72 #: transports/RDP/BaseRDPTransport.py:72
#: transports/RDS_enterprise/BaseRDSTransport.py:75
msgid "If checked, desktop composition will be allowed" msgid "If checked, desktop composition will be allowed"
msgstr "" msgstr ""
@ -3407,8 +3466,8 @@ msgstr ""
#: transports/SPICE/BaseSPICETransport.py:84 #: transports/SPICE/BaseSPICETransport.py:84
msgid "" msgid ""
"Server certificate (public), can be found on your ovirt engine, probably at " "Server certificate (public), can be found on your ovirt engine, probably at /"
"/etc/pki/ovirt-engine/certs/ca.der (Use the contents of this file)." "etc/pki/ovirt-engine/certs/ca.der (Use the contents of this file)."
msgstr "" msgstr ""
#: transports/SPICE/SPICETransport.py:52 #: transports/SPICE/SPICETransport.py:52

View File

@ -8,14 +8,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenUDS\n" "Project-Id-Version: OpenUDS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-05 12:34+0200\n" "POT-Creation-Date: 2015-06-21 21:22+0200\n"
"PO-Revision-Date: 2015-06-05 10:46+0000\n" "PO-Revision-Date: 2015-06-21 19:16+0000\n"
"Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n" "Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n"
"Language-Team: Basque (http://www.transifex.com/projects/p/openuds/language/eu/)\n" "Language-Team: Basque (http://www.transifex.com/projects/p/openuds/language/"
"eu/)\n"
"Language: eu\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: eu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19 #: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19
@ -415,123 +416,120 @@ msgstr ""
msgid "Services Provider deletion error" msgid "Services Provider deletion error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:133 #: static/tmp_js/gui-d-servicespools.js:134
msgid "error" msgid "error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
msgid "Remove Cache element" msgid "Remove Cache element"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Deletion error" msgid "Deletion error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:186 #: static/tmp_js/gui-d-servicespools.js:187
msgid "Add group" msgid "Add group"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:209 #: static/tmp_js/gui-d-servicespools.js:210
msgid "You must provide authenticator and group" msgid "You must provide authenticator and group"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Remove group" msgid "Remove group"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Group removal error" msgid "Group removal error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:247 #: static/tmp_js/gui-d-servicespools.js:248
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:249 #: static/tmp_js/gui-d-servicespools.js:250
msgid "No" msgid "No"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Remove Assigned service" msgid "Remove Assigned service"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:288 #: static/tmp_js/gui-d-servicespools.js:289
msgid "Add transport" msgid "Add transport"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:295 #: static/tmp_js/gui-d-servicespools.js:296
msgid "You must provide a transport" msgid "You must provide a transport"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Remove transport" msgid "Remove transport"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Transport removal error" msgid "Transport removal error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:333 #: static/tmp_js/gui-d-servicespools.js:336
#: static/tmp_js/gui-d-servicespools.js:352 #: static/tmp_js/gui-d-servicespools.js:355
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:368
#: static/tmp_js/gui-d-servicespools.js:369
msgid "Publish" msgid "Publish"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
msgid "Cancel publication" msgid "Cancel publication"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:350 #: static/tmp_js/gui-d-servicespools.js:353
msgid "Force Cancel" msgid "Force Cancel"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:379
msgid "Launch new publication?"
msgstr ""
#: static/tmp_js/gui-d-servicespools.js:366
msgid "Failed creating publication" msgid "Failed creating publication"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:390 #: static/tmp_js/gui-d-servicespools.js:415
msgid "Restrained" msgid "Restrained"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "New service pool" msgid "New service pool"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "creation error" msgid "creation error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:408 #: static/tmp_js/gui-d-servicespools.js:433
msgid "Publish on creation" msgid "Publish on creation"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:409 #: static/tmp_js/gui-d-servicespools.js:434
msgid "If selected, will initiate the publication inmediatly after creation" msgid "If selected, will initiate the publication inmediatly after creation"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:421 static/tmp_js/gui.js:40 #: static/tmp_js/gui-d-servicespools.js:446 static/tmp_js/gui.js:40
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:421 #: static/tmp_js/gui-d-servicespools.js:446
msgid "saving error" msgid "saving error"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:422 static/tmp_js/gui.js:44 #: static/tmp_js/gui-d-servicespools.js:447 static/tmp_js/gui.js:44
#: static/tmp_js/gui.js:368 #: static/tmp_js/gui.js:368
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: static/tmp_js/gui-d-servicespools.js:422 #: static/tmp_js/gui-d-servicespools.js:447
msgid "deletion error" msgid "deletion error"
msgstr "" msgstr ""

File diff suppressed because it is too large Load Diff

View File

@ -8,14 +8,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenUDS\n" "Project-Id-Version: OpenUDS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-05 12:34+0200\n" "POT-Creation-Date: 2015-06-21 21:22+0200\n"
"PO-Revision-Date: 2015-06-05 10:02+0000\n" "PO-Revision-Date: 2015-06-21 19:16+0000\n"
"Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n" "Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/openuds/language/fr/)\n" "Language-Team: French (http://www.transifex.com/projects/p/openuds/language/"
"fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19 #: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19
@ -289,7 +290,8 @@ msgstr "Vous devez sélectionner une image"
#: static/tmp_js/gui-d-gallery.js:34 #: static/tmp_js/gui-d-gallery.js:34
msgid "Image is too big (max. upload size is 256Kb)" msgid "Image is too big (max. upload size is 256Kb)"
msgstr "L'image est trop grande (taille de téléchargement de max. est de 256Kb)" msgstr ""
"L'image est trop grande (taille de téléchargement de max. est de 256Kb)"
#: static/tmp_js/gui-d-gallery.js:80 #: static/tmp_js/gui-d-gallery.js:80
msgid "Delete Image" msgid "Delete Image"
@ -415,123 +417,120 @@ msgstr "Supprimer le fournisseur de services"
msgid "Services Provider deletion error" msgid "Services Provider deletion error"
msgstr "Erreur de suppression de fournisseur de services" msgstr "Erreur de suppression de fournisseur de services"
#: static/tmp_js/gui-d-servicespools.js:133 #: static/tmp_js/gui-d-servicespools.js:134
msgid "error" msgid "error"
msgstr "erreur" msgstr "erreur"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
msgid "Remove Cache element" msgid "Remove Cache element"
msgstr "Remove, élément de Cache" msgstr "Remove, élément de Cache"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Deletion error" msgid "Deletion error"
msgstr "Erreur de suppression" msgstr "Erreur de suppression"
#: static/tmp_js/gui-d-servicespools.js:186 #: static/tmp_js/gui-d-servicespools.js:187
msgid "Add group" msgid "Add group"
msgstr "Ajouter groupe" msgstr "Ajouter groupe"
#: static/tmp_js/gui-d-servicespools.js:209 #: static/tmp_js/gui-d-servicespools.js:210
msgid "You must provide authenticator and group" msgid "You must provide authenticator and group"
msgstr "Vous devez fournir authentificateur et groupe" msgstr "Vous devez fournir authentificateur et groupe"
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Remove group" msgid "Remove group"
msgstr "Supprimer le groupe" msgstr "Supprimer le groupe"
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Group removal error" msgid "Group removal error"
msgstr "Erreur de suppression de groupe" msgstr "Erreur de suppression de groupe"
#: static/tmp_js/gui-d-servicespools.js:247 #: static/tmp_js/gui-d-servicespools.js:248
msgid "Yes" msgid "Yes"
msgstr "Oui" msgstr "Oui"
#: static/tmp_js/gui-d-servicespools.js:249 #: static/tmp_js/gui-d-servicespools.js:250
msgid "No" msgid "No"
msgstr "Non" msgstr "Non"
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Remove Assigned service" msgid "Remove Assigned service"
msgstr "Supprimer le service affecté" msgstr "Supprimer le service affecté"
#: static/tmp_js/gui-d-servicespools.js:288 #: static/tmp_js/gui-d-servicespools.js:289
msgid "Add transport" msgid "Add transport"
msgstr "Ajouter transport" msgstr "Ajouter transport"
#: static/tmp_js/gui-d-servicespools.js:295 #: static/tmp_js/gui-d-servicespools.js:296
msgid "You must provide a transport" msgid "You must provide a transport"
msgstr "Vous devez fournir un transport" msgstr "Vous devez fournir un transport"
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Remove transport" msgid "Remove transport"
msgstr "Supprimer le transport" msgstr "Supprimer le transport"
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Transport removal error" msgid "Transport removal error"
msgstr "Erreur de suppression de transport" msgstr "Erreur de suppression de transport"
#: static/tmp_js/gui-d-servicespools.js:333 #: static/tmp_js/gui-d-servicespools.js:336
#: static/tmp_js/gui-d-servicespools.js:352 #: static/tmp_js/gui-d-servicespools.js:355
msgid "Cancel" msgid "Cancel"
msgstr "Annuler" msgstr "Annuler"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:368
#: static/tmp_js/gui-d-servicespools.js:369
msgid "Publish" msgid "Publish"
msgstr "Publier" msgstr "Publier"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
msgid "Cancel publication" msgid "Cancel publication"
msgstr "Annuler la publication" msgstr "Annuler la publication"
#: static/tmp_js/gui-d-servicespools.js:350 #: static/tmp_js/gui-d-servicespools.js:353
msgid "Force Cancel" msgid "Force Cancel"
msgstr "Force Cancel" msgstr "Force Cancel"
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:379
msgid "Launch new publication?"
msgstr "Lancement nouvelle publication ?"
#: static/tmp_js/gui-d-servicespools.js:366
msgid "Failed creating publication" msgid "Failed creating publication"
msgstr "Échec de création de publication" msgstr "Échec de création de publication"
#: static/tmp_js/gui-d-servicespools.js:390 #: static/tmp_js/gui-d-servicespools.js:415
msgid "Restrained" msgid "Restrained"
msgstr "Retenu" msgstr "Retenu"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "New service pool" msgid "New service pool"
msgstr "Nouvelle piscine service" msgstr "Nouvelle piscine service"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "creation error" msgid "creation error"
msgstr "erreur de création" msgstr "erreur de création"
#: static/tmp_js/gui-d-servicespools.js:408 #: static/tmp_js/gui-d-servicespools.js:433
msgid "Publish on creation" msgid "Publish on creation"
msgstr "Publier sur création" msgstr "Publier sur création"
#: static/tmp_js/gui-d-servicespools.js:409 #: static/tmp_js/gui-d-servicespools.js:434
msgid "If selected, will initiate the publication inmediatly after creation" msgid "If selected, will initiate the publication inmediatly after creation"
msgstr "Si sélectionné, lancera la publication immédiatement après création" msgstr "Si sélectionné, lancera la publication immédiatement après création"
#: static/tmp_js/gui-d-servicespools.js:421 static/tmp_js/gui.js:40 #: static/tmp_js/gui-d-servicespools.js:446 static/tmp_js/gui.js:40
msgid "Edit" msgid "Edit"
msgstr "Edit" msgstr "Edit"
#: static/tmp_js/gui-d-servicespools.js:421 #: static/tmp_js/gui-d-servicespools.js:446
msgid "saving error" msgid "saving error"
msgstr "erreur de sauvegarde" msgstr "erreur de sauvegarde"
#: static/tmp_js/gui-d-servicespools.js:422 static/tmp_js/gui.js:44 #: static/tmp_js/gui-d-servicespools.js:447 static/tmp_js/gui.js:44
#: static/tmp_js/gui.js:368 #: static/tmp_js/gui.js:368
msgid "Delete" msgid "Delete"
msgstr "Supprimer" msgstr "Supprimer"
#: static/tmp_js/gui-d-servicespools.js:422 #: static/tmp_js/gui-d-servicespools.js:447
msgid "deletion error" msgid "deletion error"
msgstr "erreur de suppression" msgstr "erreur de suppression"

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenUDS\n" "Project-Id-Version: OpenUDS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-05 12:34+0200\n" "POT-Creation-Date: 2015-06-21 21:22+0200\n"
"PO-Revision-Date: 2015-06-05 10:02+0000\n" "PO-Revision-Date: 2015-06-21 19:16+0000\n"
"Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n" "Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/openuds/language/it/)\n" "Language-Team: Italian (http://www.transifex.com/projects/p/openuds/language/"
"it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19 #: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19
@ -414,123 +415,120 @@ msgstr "Eliminare il provider di servizi"
msgid "Services Provider deletion error" msgid "Services Provider deletion error"
msgstr "Errore di omissione del Provider di servizi" msgstr "Errore di omissione del Provider di servizi"
#: static/tmp_js/gui-d-servicespools.js:133 #: static/tmp_js/gui-d-servicespools.js:134
msgid "error" msgid "error"
msgstr "errore" msgstr "errore"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
msgid "Remove Cache element" msgid "Remove Cache element"
msgstr "Rimuovere l'elemento della Cache" msgstr "Rimuovere l'elemento della Cache"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Deletion error" msgid "Deletion error"
msgstr "Errore di omissione" msgstr "Errore di omissione"
#: static/tmp_js/gui-d-servicespools.js:186 #: static/tmp_js/gui-d-servicespools.js:187
msgid "Add group" msgid "Add group"
msgstr "Aggiungi gruppo" msgstr "Aggiungi gruppo"
#: static/tmp_js/gui-d-servicespools.js:209 #: static/tmp_js/gui-d-servicespools.js:210
msgid "You must provide authenticator and group" msgid "You must provide authenticator and group"
msgstr "È necessario fornire autenticatore e gruppo" msgstr "È necessario fornire autenticatore e gruppo"
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Remove group" msgid "Remove group"
msgstr "Rimuovere il gruppo" msgstr "Rimuovere il gruppo"
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Group removal error" msgid "Group removal error"
msgstr "Errore di rimozione di gruppo" msgstr "Errore di rimozione di gruppo"
#: static/tmp_js/gui-d-servicespools.js:247 #: static/tmp_js/gui-d-servicespools.js:248
msgid "Yes" msgid "Yes"
msgstr "Sì" msgstr "Sì"
#: static/tmp_js/gui-d-servicespools.js:249 #: static/tmp_js/gui-d-servicespools.js:250
msgid "No" msgid "No"
msgstr "No" msgstr "No"
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Remove Assigned service" msgid "Remove Assigned service"
msgstr "Rimuovere il servizio assegnato" msgstr "Rimuovere il servizio assegnato"
#: static/tmp_js/gui-d-servicespools.js:288 #: static/tmp_js/gui-d-servicespools.js:289
msgid "Add transport" msgid "Add transport"
msgstr "Aggiungi trasporti" msgstr "Aggiungi trasporti"
#: static/tmp_js/gui-d-servicespools.js:295 #: static/tmp_js/gui-d-servicespools.js:296
msgid "You must provide a transport" msgid "You must provide a transport"
msgstr "È necessario fornire un trasporto" msgstr "È necessario fornire un trasporto"
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Remove transport" msgid "Remove transport"
msgstr "Rimuovere il trasporto" msgstr "Rimuovere il trasporto"
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Transport removal error" msgid "Transport removal error"
msgstr "Trasporto rimozione errore" msgstr "Trasporto rimozione errore"
#: static/tmp_js/gui-d-servicespools.js:333 #: static/tmp_js/gui-d-servicespools.js:336
#: static/tmp_js/gui-d-servicespools.js:352 #: static/tmp_js/gui-d-servicespools.js:355
msgid "Cancel" msgid "Cancel"
msgstr "Annulla" msgstr "Annulla"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:368
#: static/tmp_js/gui-d-servicespools.js:369
msgid "Publish" msgid "Publish"
msgstr "Pubblicare" msgstr "Pubblicare"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
msgid "Cancel publication" msgid "Cancel publication"
msgstr "Annullare la pubblicazione" msgstr "Annullare la pubblicazione"
#: static/tmp_js/gui-d-servicespools.js:350 #: static/tmp_js/gui-d-servicespools.js:353
msgid "Force Cancel" msgid "Force Cancel"
msgstr "Forza Annulla" msgstr "Forza Annulla"
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:379
msgid "Launch new publication?"
msgstr "Lancio nuova pubblicazione?"
#: static/tmp_js/gui-d-servicespools.js:366
msgid "Failed creating publication" msgid "Failed creating publication"
msgstr "Fallita creazione pubblicazione" msgstr "Fallita creazione pubblicazione"
#: static/tmp_js/gui-d-servicespools.js:390 #: static/tmp_js/gui-d-servicespools.js:415
msgid "Restrained" msgid "Restrained"
msgstr "Trattenuto" msgstr "Trattenuto"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "New service pool" msgid "New service pool"
msgstr "Nuovo servizio piscina" msgstr "Nuovo servizio piscina"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "creation error" msgid "creation error"
msgstr "errore di creazione" msgstr "errore di creazione"
#: static/tmp_js/gui-d-servicespools.js:408 #: static/tmp_js/gui-d-servicespools.js:433
msgid "Publish on creation" msgid "Publish on creation"
msgstr "Pubblicare sulla creazione" msgstr "Pubblicare sulla creazione"
#: static/tmp_js/gui-d-servicespools.js:409 #: static/tmp_js/gui-d-servicespools.js:434
msgid "If selected, will initiate the publication inmediatly after creation" msgid "If selected, will initiate the publication inmediatly after creation"
msgstr "Se selezionata, avvia la pubblicazione inmediatly dopo la creazione" msgstr "Se selezionata, avvia la pubblicazione inmediatly dopo la creazione"
#: static/tmp_js/gui-d-servicespools.js:421 static/tmp_js/gui.js:40 #: static/tmp_js/gui-d-servicespools.js:446 static/tmp_js/gui.js:40
msgid "Edit" msgid "Edit"
msgstr "Modifica" msgstr "Modifica"
#: static/tmp_js/gui-d-servicespools.js:421 #: static/tmp_js/gui-d-servicespools.js:446
msgid "saving error" msgid "saving error"
msgstr "errore di risparmio" msgstr "errore di risparmio"
#: static/tmp_js/gui-d-servicespools.js:422 static/tmp_js/gui.js:44 #: static/tmp_js/gui-d-servicespools.js:447 static/tmp_js/gui.js:44
#: static/tmp_js/gui.js:368 #: static/tmp_js/gui.js:368
msgid "Delete" msgid "Delete"
msgstr "Eliminare" msgstr "Eliminare"
#: static/tmp_js/gui-d-servicespools.js:422 #: static/tmp_js/gui-d-servicespools.js:447
msgid "deletion error" msgid "deletion error"
msgstr "errore di omissione" msgstr "errore di omissione"

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: OpenUDS\n" "Project-Id-Version: OpenUDS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-06-05 12:34+0200\n" "POT-Creation-Date: 2015-06-21 21:22+0200\n"
"PO-Revision-Date: 2015-06-05 10:02+0000\n" "PO-Revision-Date: 2015-06-21 19:16+0000\n"
"Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n" "Last-Translator: Adolfo Gómez <dkmaster@dkmon.com>\n"
"Language-Team: Portuguese (http://www.transifex.com/projects/p/openuds/language/pt/)\n" "Language-Team: Portuguese (http://www.transifex.com/projects/p/openuds/"
"language/pt/)\n"
"Language: pt\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19 #: static/adm/js/dataTables.bootstrap.js:6 static/tmp_js/gui.js:19
@ -414,123 +415,120 @@ msgstr "Exclua o provedor de serviços"
msgid "Services Provider deletion error" msgid "Services Provider deletion error"
msgstr "Erro de exclusão do provedor de serviços" msgstr "Erro de exclusão do provedor de serviços"
#: static/tmp_js/gui-d-servicespools.js:133 #: static/tmp_js/gui-d-servicespools.js:134
msgid "error" msgid "error"
msgstr "erro" msgstr "erro"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
msgid "Remove Cache element" msgid "Remove Cache element"
msgstr "Remover o elemento de Cache" msgstr "Remover o elemento de Cache"
#: static/tmp_js/gui-d-servicespools.js:165 #: static/tmp_js/gui-d-servicespools.js:166
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Deletion error" msgid "Deletion error"
msgstr "Erro de exclusão" msgstr "Erro de exclusão"
#: static/tmp_js/gui-d-servicespools.js:186 #: static/tmp_js/gui-d-servicespools.js:187
msgid "Add group" msgid "Add group"
msgstr "Adicionar grupo" msgstr "Adicionar grupo"
#: static/tmp_js/gui-d-servicespools.js:209 #: static/tmp_js/gui-d-servicespools.js:210
msgid "You must provide authenticator and group" msgid "You must provide authenticator and group"
msgstr "Você deve fornecer o autenticador e grupo" msgstr "Você deve fornecer o autenticador e grupo"
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Remove group" msgid "Remove group"
msgstr "Remover grupo" msgstr "Remover grupo"
#: static/tmp_js/gui-d-servicespools.js:223 #: static/tmp_js/gui-d-servicespools.js:224
msgid "Group removal error" msgid "Group removal error"
msgstr "Erro de remoção do grupo" msgstr "Erro de remoção do grupo"
#: static/tmp_js/gui-d-servicespools.js:247 #: static/tmp_js/gui-d-servicespools.js:248
msgid "Yes" msgid "Yes"
msgstr "Sim" msgstr "Sim"
#: static/tmp_js/gui-d-servicespools.js:249 #: static/tmp_js/gui-d-servicespools.js:250
msgid "No" msgid "No"
msgstr "Não" msgstr "Não"
#: static/tmp_js/gui-d-servicespools.js:265 #: static/tmp_js/gui-d-servicespools.js:266
msgid "Remove Assigned service" msgid "Remove Assigned service"
msgstr "Remover o serviço atribuído" msgstr "Remover o serviço atribuído"
#: static/tmp_js/gui-d-servicespools.js:288 #: static/tmp_js/gui-d-servicespools.js:289
msgid "Add transport" msgid "Add transport"
msgstr "Adicionar transporte" msgstr "Adicionar transporte"
#: static/tmp_js/gui-d-servicespools.js:295 #: static/tmp_js/gui-d-servicespools.js:296
msgid "You must provide a transport" msgid "You must provide a transport"
msgstr "Você deve fornecer um transporte" msgstr "Você deve fornecer um transporte"
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Remove transport" msgid "Remove transport"
msgstr "Remover o transporte" msgstr "Remover o transporte"
#: static/tmp_js/gui-d-servicespools.js:309 #: static/tmp_js/gui-d-servicespools.js:310
msgid "Transport removal error" msgid "Transport removal error"
msgstr "Erro de remoção de transporte" msgstr "Erro de remoção de transporte"
#: static/tmp_js/gui-d-servicespools.js:333 #: static/tmp_js/gui-d-servicespools.js:336
#: static/tmp_js/gui-d-servicespools.js:352 #: static/tmp_js/gui-d-servicespools.js:355
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:368
#: static/tmp_js/gui-d-servicespools.js:369
msgid "Publish" msgid "Publish"
msgstr "Publicar" msgstr "Publicar"
#: static/tmp_js/gui-d-servicespools.js:336 #: static/tmp_js/gui-d-servicespools.js:339
msgid "Cancel publication" msgid "Cancel publication"
msgstr "Cancelar a publicação" msgstr "Cancelar a publicação"
#: static/tmp_js/gui-d-servicespools.js:350 #: static/tmp_js/gui-d-servicespools.js:353
msgid "Force Cancel" msgid "Force Cancel"
msgstr "Força cancelar" msgstr "Força cancelar"
#: static/tmp_js/gui-d-servicespools.js:362 #: static/tmp_js/gui-d-servicespools.js:379
msgid "Launch new publication?"
msgstr "Lançamento nova publicação?"
#: static/tmp_js/gui-d-servicespools.js:366
msgid "Failed creating publication" msgid "Failed creating publication"
msgstr "Não conseguiu criar publicação" msgstr "Não conseguiu criar publicação"
#: static/tmp_js/gui-d-servicespools.js:390 #: static/tmp_js/gui-d-servicespools.js:415
msgid "Restrained" msgid "Restrained"
msgstr "Contido" msgstr "Contido"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "New service pool" msgid "New service pool"
msgstr "Novo pool de serviço" msgstr "Novo pool de serviço"
#: static/tmp_js/gui-d-servicespools.js:399 #: static/tmp_js/gui-d-servicespools.js:424
msgid "creation error" msgid "creation error"
msgstr "erro de criação" msgstr "erro de criação"
#: static/tmp_js/gui-d-servicespools.js:408 #: static/tmp_js/gui-d-servicespools.js:433
msgid "Publish on creation" msgid "Publish on creation"
msgstr "Publicar na criação" msgstr "Publicar na criação"
#: static/tmp_js/gui-d-servicespools.js:409 #: static/tmp_js/gui-d-servicespools.js:434
msgid "If selected, will initiate the publication inmediatly after creation" msgid "If selected, will initiate the publication inmediatly after creation"
msgstr "Se selecionado, irá iniciar a publicação imediatamente após a criação" msgstr "Se selecionado, irá iniciar a publicação imediatamente após a criação"
#: static/tmp_js/gui-d-servicespools.js:421 static/tmp_js/gui.js:40 #: static/tmp_js/gui-d-servicespools.js:446 static/tmp_js/gui.js:40
msgid "Edit" msgid "Edit"
msgstr "Editar" msgstr "Editar"
#: static/tmp_js/gui-d-servicespools.js:421 #: static/tmp_js/gui-d-servicespools.js:446
msgid "saving error" msgid "saving error"
msgstr "salvando o erro" msgstr "salvando o erro"
#: static/tmp_js/gui-d-servicespools.js:422 static/tmp_js/gui.js:44 #: static/tmp_js/gui-d-servicespools.js:447 static/tmp_js/gui.js:44
#: static/tmp_js/gui.js:368 #: static/tmp_js/gui.js:368
msgid "Delete" msgid "Delete"
msgstr "Excluir" msgstr "Excluir"
#: static/tmp_js/gui-d-servicespools.js:422 #: static/tmp_js/gui-d-servicespools.js:447
msgid "deletion error" msgid "deletion error"
msgstr "erro de exclusão" msgstr "erro de exclusão"

View File

@ -39,6 +39,13 @@ The registration of modules is done locating subclases of :py:class:`uds.core.au
.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com .. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com
''' '''
from __future__ import unicode_literals
import logging
logger = logging.getLogger(__name__)
__updated__ = '2015-06-21'
availableReports = [] availableReports = []
@ -55,18 +62,18 @@ def __init__():
def addReportCls(cls): def addReportCls(cls):
availableReports.append(cls) availableReports.append(cls)
def recursiveAdd(p):
if p.generate != reports.Report.generate:
addReportCls(p)
for c in p.__subclasses__():
recursiveAdd(c)
# Dinamycally import children of this package. The __init__.py files must import classes # Dinamycally import children of this package. The __init__.py files must import classes
pkgpath = os.path.dirname(sys.modules[__name__].__file__) pkgpath = os.path.dirname(sys.modules[__name__].__file__)
for _, name, _ in pkgutil.iter_modules([pkgpath]): for _, name, _ in pkgutil.iter_modules([pkgpath]):
__import__(name, globals(), locals(), []) __import__(name, globals(), locals(), [])
p = reports.Report recursiveAdd(reports.Report)
for cls in p.__subclasses__():
clsSubCls = cls.__subclasses__()
if len(clsSubCls) == 0:
addReportCls(cls)
else:
for l2 in clsSubCls:
addReportCls(l2)
__init__() __init__()

View File

@ -31,4 +31,4 @@
@author: Adolfo Gómez, dkmaster at dkmon dot com @author: Adolfo Gómez, dkmaster at dkmon dot com
''' '''
from .users import ListReportUsers from .users import ListReportUsers, ListReportsUsersCSV

View File

@ -33,10 +33,10 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from uds.core import reports from uds.core import reports
from django.utils.translation import ugettext_noop as _
__updated__ = '2015-06-21'
__updated__ = '2015-04-28'
class ListReport(reports.Report): class ListReport(reports.Report):
group = 'Lists' # So we can make submenus with reports group = _('Lists') # So we can make submenus with reports

View File

@ -32,26 +32,28 @@
''' '''
from __future__ import unicode_literals from __future__ import unicode_literals
from django.utils.translation import ugettext, ugettext_noop as _ from django.utils.translation import ugettext, ugettext_lazy as _
from uds.core.ui.UserInterface import gui from uds.core.ui.UserInterface import gui
from uds.core.reports import stock from uds.core.reports import stock
from uds.models import Authenticator from uds.models import Authenticator
import StringIO import StringIO
import csv
from .base import ListReport from .base import ListReport
from uds.core.util import tools
from geraldo.generators.pdf import PDFGenerator from geraldo.generators.pdf import PDFGenerator
from geraldo import Report, landscape, ReportBand, ObjectValue, SystemField, BAND_WIDTH, Label, Image from geraldo import Report, landscape, ReportBand, ObjectValue, SystemField, BAND_WIDTH, Label, Image
from reportlab.lib.pagesizes import A4 from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm from reportlab.lib.units import cm
from reportlab.lib.enums import TA_RIGHT, TA_CENTER from reportlab.lib.enums import TA_RIGHT, TA_CENTER
import logging import logging
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
__updated__ = '2015-05-03' __updated__ = '2015-06-21'
class UsersReport(Report): class UsersReport(Report):
@ -68,9 +70,9 @@ class UsersReport(Report):
class band_detail(ReportBand): class band_detail(ReportBand):
height = 0.5 * cm height = 0.5 * cm
elements = ( elements = (
ObjectValue(attribute_name='name', left=0.5 * cm), ObjectValue(attribute_name='name', left=0.5 * cm, style={'fontName': 'Helvetica', 'fontSize': 8}),
ObjectValue(attribute_name='real_name', left=3 * cm), ObjectValue(attribute_name='real_name', left=6 * cm, style={'fontName': 'Helvetica', 'fontSize': 8}),
ObjectValue(attribute_name='last_access', left=7 * cm), ObjectValue(attribute_name='last_access', left=15 * cm, style={'fontName': 'Helvetica', 'fontSize': 8}),
) )
class band_page_header(ReportBand): class band_page_header(ReportBand):
@ -79,9 +81,9 @@ class UsersReport(Report):
SystemField(expression='%(report_title)s', top=0.5 * cm, left=0, width=BAND_WIDTH, SystemField(expression='%(report_title)s', top=0.5 * cm, left=0, width=BAND_WIDTH,
style={'fontName': 'Helvetica-Bold', 'fontSize': 14, 'alignment': TA_CENTER}), style={'fontName': 'Helvetica-Bold', 'fontSize': 14, 'alignment': TA_CENTER}),
Label(text="User ID", top=1.5 * cm, left=0.5 * cm), Label(text=_('User ID'), top=1.5 * cm, left=0.5 * cm),
Label(text="Real Name", top=1.5 * cm, left=3 * cm), Label(text=_('Real Name'), top=1.5 * cm, left=6 * cm),
Label(text="Last access", top=1.5 * cm, left=7 * cm), Label(text=_('Last access'), top=1.5 * cm, left=15 * cm),
SystemField(expression=_('Page %(page_number)d of %(page_count)d'), top=0.1 * cm, SystemField(expression=_('Page %(page_number)d of %(page_count)d'), top=0.1 * cm,
width=BAND_WIDTH, style={'alignment': TA_RIGHT}), width=BAND_WIDTH, style={'alignment': TA_RIGHT}),
Image(filename=stock.getStockImagePath(stock.LOGO), left=0.1 * cm, top=0.0 * cm, width=2 * cm, height=2 * cm), Image(filename=stock.getStockImagePath(stock.LOGO), left=0.1 * cm, top=0.0 * cm, width=2 * cm, height=2 * cm),
@ -135,3 +137,33 @@ class ListReportUsers(ListReport):
report.title = _('Users List for {}').format(auth.name) report.title = _('Users List for {}').format(auth.name)
report.generate_by(PDFGenerator, filename=output) report.generate_by(PDFGenerator, filename=output)
return output.getvalue() return output.getvalue()
class ListReportsUsersCSV(ListReportUsers):
filename = 'users.csv'
mime_type = 'text/csv'
encoded = False
uuid = '5da93a76-1849-11e5-ac1a-10feed05884b'
authenticator = ListReportUsers.authenticator
def initialize(self, values):
if values:
auth = Authenticator.objects.get(uuid=self.authenticator.value)
self.filename = auth.name + '.csv'
def generate(self):
output = StringIO.StringIO()
writer = csv.writer(output)
auth = Authenticator.objects.get(uuid=self.authenticator.value)
users = auth.users.order_by('name')
writer.writerow([ugettext('User ID'), ugettext('Real Name'), ugettext('Last access')])
for v in users:
writer.writerow([v.name, v.real_name, v.last_access])
writer.writerow(['ñoño', 'ádios', 'hola'])
return output.getvalue()

View File

@ -32,4 +32,4 @@
''' '''
from .usage import StatsReportUsage from .usage import StatsReportUsage
from .login import StatsReportLogin from .login import StatsReportLogin, StatsReportLoginCSV

View File

@ -32,11 +32,15 @@
''' '''
from __future__ import unicode_literals from __future__ import unicode_literals
from django.utils.translation import ugettext_noop as _
from uds.core import reports from uds.core import reports
__updated__ = '2015-04-28' __updated__ = '2015-06-21'
class StatsReport(reports.Report): class StatsReport(reports.Report):
group = 'Statistics' # So we can make submenus with reports '''
Base report por stats reports
'''
group = _('Statistics') # So we can make submenus with reports

View File

@ -33,16 +33,14 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from django.utils.translation import ugettext, ugettext_lazy as _ from django.utils.translation import ugettext, ugettext_lazy as _
from django.utils import formats
import django.template.defaultfilters as filters import django.template.defaultfilters as filters
from uds.core.ui.UserInterface import gui from uds.core.ui.UserInterface import gui
from uds.core.reports import stock
from uds.core.reports.tools import UDSImage, UDSGeraldoReport from uds.core.reports.tools import UDSImage, UDSGeraldoReport
from uds.models import StatsEvents
from uds.core.util.stats import events from uds.core.util.stats import events
import StringIO import StringIO
import csv
import cairo import cairo
import pycha.line import pycha.line
@ -52,11 +50,9 @@ from .base import StatsReport
from uds.core.util import tools from uds.core.util import tools
from geraldo.generators.pdf import PDFGenerator from geraldo.generators.pdf import PDFGenerator
from geraldo import Report, landscape, ReportBand, ObjectValue, SystemField, BAND_WIDTH, Label, SubReport, Rect from geraldo import ReportBand, ObjectValue, BAND_WIDTH, Label, SubReport
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import cm, mm from reportlab.lib.units import cm, mm
from reportlab.lib.enums import TA_RIGHT, TA_CENTER from reportlab.lib.enums import TA_RIGHT, TA_CENTER
from reportlab.lib import colors
from PIL import Image as PILImage from PIL import Image as PILImage
import datetime import datetime
@ -75,8 +71,8 @@ GERALDO_HEIGHT = GERALDO_WIDTH * HEIGHT / WIDTH
class AccessReport(UDSGeraldoReport): class AccessReport(UDSGeraldoReport):
class band_detail(ReportBand): class band_detail(ReportBand):
height = 10 * cm height = 400 * mm # Height bigger than a page, so a new page is launched
auto_expand_height = True # auto_expand_height = True
elements = ( elements = (
Label(text=_('Users access by date'), top=0.6 * cm, left=0, width=BAND_WIDTH, Label(text=_('Users access by date'), top=0.6 * cm, left=0, width=BAND_WIDTH,
style={'fontName': 'Helvetica-Bold', 'fontSize': 10, 'alignment': TA_CENTER}), style={'fontName': 'Helvetica-Bold', 'fontSize': 10, 'alignment': TA_CENTER}),
@ -101,18 +97,23 @@ class AccessReport(UDSGeraldoReport):
SubReport( SubReport(
queryset_string='%(object)s["data"]', queryset_string='%(object)s["data"]',
band_header=ReportBand( band_header=ReportBand(
height=2.5 * cm, height=1 * cm,
auto_expand_height=True,
elements=( elements=(
Label(text='Date range', top=2.0 * cm, left=4.2 * cm, style={'fontName': 'Helvetica-Bold'}), Label(text=_('Users access by date'), top=0.2 * cm, left=0, width=BAND_WIDTH,
Label(text='Users', top=2.0 * cm, left=10 * cm, style={'fontName': 'Helvetica-Bold'}), style={'fontName': 'Helvetica-Bold', 'fontSize': 12, 'alignment': TA_CENTER}),
Label(text=_('Date range'), top=1.0 * cm, left=1.2 * cm,
style={'fontName': 'Helvetica-Bold', 'fontSize': 10}),
Label(text=_('Users'), top=1.0 * cm, left=14 * cm,
style={'fontName': 'Helvetica-Bold', 'fontSize': 10}),
), ),
borders={'bottom': True} # borders={'bottom': True}
), ),
band_detail=ReportBand( band_detail=ReportBand(
height=0.5 * cm, height=0.5 * cm,
elements=( elements=(
ObjectValue(attribute_name='date', top=0, left=4.2 * cm), ObjectValue(attribute_name='date', top=0, left=1.2 * cm, width=12 * cm, style={'fontName': 'Helvetica', 'fontSize': 9}),
ObjectValue(attribute_name='users', top=0, left=10 * cm), ObjectValue(attribute_name='users', top=0, left=14 * cm, style={'fontName': 'Helvetica', 'fontSize': 9}),
) )
), ),
) )
@ -158,15 +159,7 @@ class StatsReportLogin(StatsReport):
def initGui(self): def initGui(self):
pass pass
def generate(self): def getRangeData(self):
# Sample query:
# 'SELECT *, count(*) as number, CEIL(stamp/(3600))*3600 as block'
# ' FROM {table}'
# ' WHERE event_type = 0 and stamp >= {start} and stamp <= {end}'
# ' GROUP BY CEIL(stamp/(3600))'
# ' ORDER BY block'
# Generate the sampling intervals and get data from db
start = self.startDate.stamp() start = self.startDate.stamp()
end = self.endDate.stamp() end = self.endDate.stamp()
samplingPoints = self.samplingPoints.num() samplingPoints = self.samplingPoints.num()
@ -177,9 +170,6 @@ class StatsReportLogin(StatsReport):
else: else:
xLabelFormat = 'SHORT_DATETIME_FORMAT' xLabelFormat = 'SHORT_DATETIME_FORMAT'
#
# User access by date graph
#
samplingIntervals = [] samplingIntervals = []
prevVal = None prevVal = None
for val in range(start, end, (end - start) / (samplingPoints + 1)): for val in range(start, end, (end - start) / (samplingPoints + 1)):
@ -197,11 +187,44 @@ class StatsReportLogin(StatsReport):
data.append((key, val)) # @UndefinedVariable data.append((key, val)) # @UndefinedVariable
reportData.append( reportData.append(
{ {
'date': tools.timestampAsStr(interval[0], xLabelFormat) + ' - ' + tools.timestampAsStr(interval[1]), 'date': tools.timestampAsStr(interval[0], xLabelFormat) + ' - ' + tools.timestampAsStr(interval[1], xLabelFormat),
'users': val 'users': val
} }
) )
return (xLabelFormat, data, reportData)
def getWeekHourlyData(self):
start = self.startDate.stamp()
end = self.endDate.stamp()
dataWeek = [0] * 7
dataHour = [0] * 24
for val in events.statsManager().getEvents(events.OT_AUTHENTICATOR, events.ET_LOGIN, since=start, to=end):
s = datetime.datetime.fromtimestamp(val.stamp)
dataWeek[s.weekday()] += 1
dataHour[s.hour] += 1
return (dataWeek, dataHour)
def generate(self):
# Sample query:
# 'SELECT *, count(*) as number, CEIL(stamp/(3600))*3600 as block'
# ' FROM {table}'
# ' WHERE event_type = 0 and stamp >= {start} and stamp <= {end}'
# ' GROUP BY CEIL(stamp/(3600))'
# ' ORDER BY block'
# Generate the sampling intervals and get data from db
start = self.startDate.stamp()
end = self.endDate.stamp()
xLabelFormat, data, reportData = self.getRangeData()
#
# User access by date graph
#
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT) surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, WIDTH, HEIGHT)
dataset = ((ugettext('Users access to UDS'), data),) dataset = ((ugettext('Users access to UDS'), data),)
@ -259,12 +282,7 @@ class StatsReportLogin(StatsReport):
# #
# User access by day of week # User access by day of week
# #
dataWeek = [0] * 7 dataWeek, dataHour = self.getWeekHourlyData()
dataHour = [0] * 24
for val in events.statsManager().getEvents(events.OT_AUTHENTICATOR, events.ET_LOGIN, since=start, to=end):
s = datetime.datetime.fromtimestamp(val.stamp)
dataWeek[s.weekday()] += 1
dataHour[s.hour] += 1
dataset = ((ugettext('Users access to UDS'), [(i, dataWeek[i]) for i in range(0, 7)]),) dataset = ((ugettext('Users access to UDS'), [(i, dataWeek[i]) for i in range(0, 7)]),)
@ -331,3 +349,30 @@ class StatsReportLogin(StatsReport):
except Exception: except Exception:
logger.exception('Errool') logger.exception('Errool')
return None return None
class StatsReportLoginCSV(StatsReportLogin):
filename = 'access.csv'
mime_type = 'text/csv' # Report returns pdfs by default, but could be anything else
name = _('Users access report by date') # Report name
description = _('Report of user access to platform by date') # Report description
uuid = '765b5580-1840-11e5-8137-10feed05884b'
encoded = False
# Input fields
startDate = StatsReportLogin.startDate
endDate = StatsReportLogin.endDate
samplingPoints = StatsReportLogin.samplingPoints
def generate(self):
output = StringIO.StringIO()
writer = csv.writer(output)
reportData = self.getRangeData()[2]
writer.writerow([ugettext('Date range'), ugettext('Users')])
for v in reportData:
writer.writerow([v['date'], v['users']])
return output.getvalue()

View File

@ -38,7 +38,10 @@ gui.reports.link = (event) ->
api.reports.save fields, ((data) -> # Success on put api.reports.save fields, ((data) -> # Success on put
closeFnc() closeFnc()
gui.doLog data gui.doLog data
if data.encoded
content = base64.decode(data.data) content = base64.decode(data.data)
else
content = data.data
setTimeout( (()-> setTimeout( (()->
saveAs( saveAs(
new Blob([content], new Blob([content],