UDS 3.0 will be only python 3 compatible. We have upgrade django to 2.x, so we need python 3 to use it

This commit is contained in:
Adolfo Gómez García 2018-02-12 21:29:35 +01:00
parent 96721487de
commit 1ea2054d60
26 changed files with 104 additions and 82 deletions

View File

@ -1 +1 @@
2.5.0
3.0.0

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">python3.5</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 3.0</pydev_property>
<pydev_variables_property name="org.python.pydev.PROJECT_VARIABLE_SUBSTITUTION">
<key>DJANGO_MANAGE_LOCATION</key>
<value>src/manage.py</value>

View File

@ -34,7 +34,7 @@ from __future__ import unicode_literals
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from django.urls import reverse
from uds.REST import Handler
from uds.REST import RequestError
from uds.models import TicketStore

View File

@ -41,5 +41,5 @@ from uds.core.BaseModule import Module
import time
VERSION = '2.x.x-DEVEL'
VERSION = '3.x.x-DEVEL'
VERSION_STAMP = '{}-DEVEL'.format(time.strftime("%Y%m%d"))

View File

@ -39,7 +39,7 @@ from uds.core.auths.GroupsManager import GroupsManager
from uds.core.auths.Exceptions import InvalidUserException
import logging
__updated__ = '2018-01-16'
__updated__ = '2018-02-12'
logger = logging.getLogger(__name__)
@ -200,7 +200,7 @@ class Authenticator(Module):
if self.isExternalSource:
groupsManager = GroupsManager(self._dbAuth)
self.getGroups(user.name, groupsManager)
user.groups = [g.dbGroup() for g in groupsManager.getValidGroups()]
user.groups.set([g.dbGroup() for g in groupsManager.getValidGroups()])
def callbackUrl(self):
"""

View File

@ -63,7 +63,7 @@ class Cache(object):
def get(self, skey, defValue=None):
now = getSqlDatetime()
# logger.debug('Requesting key "%s" for cache "%s"' % (skey, self._owner,))
logger.debug('Requesting key "%s" for cache "%s"' % (skey, self._owner,))
try:
key = self.__getKey(skey)
c = uds.models.Cache.objects.get(pk=key) # @UndefinedVariable
@ -71,8 +71,10 @@ class Cache(object):
if expired:
return defValue
try:
logger.debug('value: {} ----- {}'.format(c.value, encoders.decode(c.value, 'base64')))
val = pickle.loads(encoders.decode(c.value, 'base64'))
except ValueError:
except Exception: # If invalid, simple do no tuse it
logger.exception('Invalid pickle from cache')
c.delete()
return defValue
Cache.hits += 1

View File

@ -77,6 +77,9 @@ class FileStorage(Storage):
Storage.__init__(self, *args, **kwargs)
def get_valid_name(self, name):
logger.debug('Name in get_valid_name: {}'.format(name))
if name is None:
return name
return name.replace('\\', os.path.sep)
def _getKey(self, name):
@ -88,6 +91,7 @@ class FileStorage(Storage):
return 'fstor' + six.text_type(hash(self.get_valid_name(name)))
def _dbFileForReadOnly(self, name):
logger.debug('Name in _dbFileForReadOnly: {}'.format(name))
# If we have a cache, & the cache contains the object
if self.cache is not None:
dbf = self.cache.get(self._getKey(name))
@ -97,6 +101,7 @@ class FileStorage(Storage):
return self._dbFileForReadWrite(name)
def _dbFileForReadWrite(self, name):
logger.debug('Name in _dbFileForReadWrite: {}'.format(name))
f = DBFile.objects.get(name=self.get_valid_name(name))
self._storeInCache(f)
return f
@ -114,6 +119,7 @@ class FileStorage(Storage):
'modified': f.modified
})
logger.debug('Name in _dbFileForReadWrite: {}'.format(f.name))
self.cache.set(self._getKey(f.name), dbf, 3600) # Cache defaults to one hour
def _removeFromCache(self, name):
@ -162,7 +168,7 @@ class FileStorage(Storage):
def exists(self, name):
logger.debug('Called exists for {}'.format(name))
try:
_ = self._dbFileForReadOnly(name).uuid # Tries to access uuid
_ = self._dbFileForReadOnly(name).uuid # Tries to access uuid
return True
except DBFile.DoesNotExist:
return False

View File

@ -99,7 +99,7 @@ class Migration(migrations.Migration):
('state', models.CharField(default='P', max_length=1, db_index=True)),
('state_date', models.DateTimeField()),
('revision', models.PositiveIntegerField(default=1)),
('deployed_service', models.ForeignKey(related_name='publications', to='uds.DeployedService')),
('deployed_service', models.ForeignKey(related_name='publications', to='uds.DeployedService', on_delete=models.CASCADE)),
],
options={
'ordering': ('publish_date',),
@ -116,7 +116,7 @@ class Migration(migrations.Migration):
('comments', models.CharField(default='', max_length=256)),
('is_meta', models.BooleanField(default=False, db_index=True)),
('groups', models.ManyToManyField(to='uds.Group')),
('manager', models.ForeignKey(related_name='groups', to='uds.Authenticator')),
('manager', models.ForeignKey(related_name='groups', to='uds.Authenticator', on_delete=models.CASCADE)),
],
options={
'ordering': ('name',),
@ -203,7 +203,7 @@ class Migration(migrations.Migration):
('data_type', models.CharField(max_length=128)),
('data', models.TextField(default='')),
('comments', models.CharField(max_length=256)),
('provider', models.ForeignKey(related_name='services', to='uds.Provider')),
('provider', models.ForeignKey(related_name='services', to='uds.Provider', on_delete=models.CASCADE)),
],
options={
'ordering': ('name',),
@ -295,7 +295,7 @@ class Migration(migrations.Migration):
('is_admin', models.BooleanField(default=False)),
('last_access', models.DateTimeField(default=datetime.datetime(1972, 7, 1, 0, 0))),
('parent', models.IntegerField(default=-1)),
('manager', models.ForeignKey(related_name='users', to='uds.Authenticator')),
('manager', models.ForeignKey(related_name='users', to='uds.Authenticator', on_delete=models.CASCADE)),
],
options={
'ordering': ('name',),
@ -309,7 +309,7 @@ class Migration(migrations.Migration):
('module', models.CharField(max_length=32, db_index=True)),
('name', models.CharField(max_length=32, db_index=True)),
('value', models.CharField(max_length=128, db_index=True)),
('user', models.ForeignKey(related_name='preferences', to='uds.User')),
('user', models.ForeignKey(related_name='preferences', to='uds.User', on_delete=models.CASCADE)),
],
options={
},
@ -332,9 +332,9 @@ class Migration(migrations.Migration):
('src_hostname', models.CharField(default='', max_length=64)),
('src_ip', models.CharField(default='', max_length=15)),
('cluster_node', models.CharField(default=None, max_length=128, null=True, db_index=True, blank=True)),
('deployed_service', models.ForeignKey(related_name='userServices', to='uds.DeployedService')),
('publication', models.ForeignKey(related_name='userServices', blank=True, to='uds.DeployedServicePublication', null=True)),
('user', models.ForeignKey(related_name='userServices', default=None, blank=True, to='uds.User', null=True)),
('deployed_service', models.ForeignKey(related_name='userServices', to='uds.DeployedService', on_delete=models.CASCADE)),
('publication', models.ForeignKey(related_name='userServices', blank=True, to='uds.DeployedServicePublication', null=True, on_delete=models.CASCADE)),
('user', models.ForeignKey(related_name='userServices', default=None, blank=True, to='uds.User', null=True, on_delete=models.CASCADE)),
],
options={
'ordering': ('creation_date',),
@ -379,13 +379,13 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='deployedservice',
name='osmanager',
field=models.ForeignKey(related_name='deployedServices', blank=True, to='uds.OSManager', null=True),
field=models.ForeignKey(related_name='deployedServices', blank=True, to='uds.OSManager', null=True, on_delete=models.CASCADE),
preserve_default=True,
),
migrations.AddField(
model_name='deployedservice',
name='service',
field=models.ForeignKey(related_name='deployedServices', blank=True, to='uds.Service', null=True),
field=models.ForeignKey(related_name='deployedServices', blank=True, to='uds.Service', null=True, on_delete=models.CASCADE),
preserve_default=True,
),
migrations.AddField(

View File

@ -31,7 +31,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='deployedservice',
name='image',
field=models.ForeignKey(related_name='deployedServices', blank=True, to='uds.Image', null=True),
field=models.ForeignKey(related_name='deployedServices', blank=True, to='uds.Image', null=True, on_delete=models.CASCADE),
preserve_default=True,
),
]

View File

@ -17,7 +17,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=128, db_index=True)),
('value', models.TextField(default='')),
('user_service', models.ForeignKey(related_name='properties', to='uds.UserService')),
('user_service', models.ForeignKey(related_name='properties', to='uds.UserService', on_delete=models.CASCADE)),
],
options={
'db_table': 'uds__user_service_property',

View File

@ -21,8 +21,8 @@ class Migration(migrations.Migration):
('object_type', models.SmallIntegerField(default=-1, db_index=True)),
('object_id', models.IntegerField(default=None, null=True, db_index=True, blank=True)),
('permission', models.SmallIntegerField(default=0, db_index=True)),
('group', models.ForeignKey(related_name='permissions', default=None, blank=True, to='uds.Group', null=True)),
('user', models.ForeignKey(related_name='permissions', default=None, blank=True, to='uds.User', null=True)),
('group', models.ForeignKey(related_name='permissions', default=None, blank=True, to='uds.Group', null=True, on_delete=models.CASCADE)),
('user', models.ForeignKey(related_name='permissions', default=None, blank=True, to='uds.User', null=True, on_delete=models.CASCADE)),
],
options={
'abstract': False,

View File

@ -44,16 +44,16 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='group',
name='manager',
field=uds.models.Util.UnsavedForeignKey(related_name='groups', to='uds.Authenticator'),
field=uds.models.Util.UnsavedForeignKey(related_name='groups', to='uds.Authenticator', on_delete=models.CASCADE),
),
migrations.AlterField(
model_name='user',
name='manager',
field=uds.models.Util.UnsavedForeignKey(related_name='users', to='uds.Authenticator'),
field=uds.models.Util.UnsavedForeignKey(related_name='users', to='uds.Authenticator', on_delete=models.CASCADE),
),
migrations.AddField(
model_name='deployedservicepublicationchangelog',
name='publication',
field=models.ForeignKey(related_name='changelog', to='uds.DeployedService'),
field=models.ForeignKey(related_name='changelog', to='uds.DeployedService', on_delete=models.CASCADE),
),
]

View File

@ -37,7 +37,7 @@ class Migration(migrations.Migration):
('interval', models.IntegerField(default=1)),
('duration', models.IntegerField(default=0)),
('duration_unit', models.CharField(default='MINUTES', max_length=32, choices=[('MINUTES', 'Minutes'), ('HOURS', 'Hours'), ('DAYS', 'Days'), ('WEEKS', 'Weeks')])),
('calendar', models.ForeignKey(related_name='rules', to='uds.Calendar')),
('calendar', models.ForeignKey(related_name='rules', to='uds.Calendar', on_delete=models.CASCADE)),
],
options={
'db_table': 'uds_calendar_rules',

View File

@ -60,7 +60,7 @@ class AccountUsage(UUIDModel):
end = models.DateTimeField(default=NEVER)
user_service = models.OneToOneField(UserService, null=True, blank=True, related_name='accounting', on_delete=models.SET_NULL)
account = models.ForeignKey(Account, related_name='usages')
account = models.ForeignKey(Account, related_name='usages', on_delete=models.CASCADE)
class Meta:
"""

View File

@ -103,7 +103,7 @@ class CalendarRule(UUIDModel):
duration = models.IntegerField(default=0) # Duration in minutes
duration_unit = models.CharField(choices=dunits, default='MINUTES', max_length=32)
calendar = models.ForeignKey(Calendar, related_name='rules')
calendar = models.ForeignKey(Calendar, related_name='rules', on_delete=models.CASCADE)
class Meta:
'''

View File

@ -59,9 +59,11 @@ class DBFile(UUIDModel):
try:
return encoders.decode(encoders.decode(self.content, 'base64'), 'zip')
except Exception:
logger.exception('Getting data')
logger.error('DBFile {} has errors and cannot be used'.format(self.name))
try:
self.delete() # Autodelete, invalid...
# self.delete() # Autodelete, invalid...
pass
except:
logger.error('Could not even delete {}!!'.format(self.name))
@ -69,8 +71,11 @@ class DBFile(UUIDModel):
@data.setter
def data(self, value):
logger.debug('Encoding value: {}'.format(value))
self.size = len(value)
self.content = encoders.encode(encoders.encode(value, 'zip'), 'base64')
content = encoders.encode(encoders.encode(value, 'zip'), 'base64', asText=True)
logger.debug('Content is {}'.format(type(content)))
self.content = content
def __str__(self):
return 'File: {} {} {} {}'.format(self.name, self.size, self.created, self.modified)

View File

@ -64,10 +64,10 @@ class Service(ManagedObjectModel, TaggingMixin):
or a Terminal Server configuration).
"""
# pylint: disable=model-missing-unicode
provider = models.ForeignKey(Provider, related_name='services')
provider = models.ForeignKey(Provider, related_name='services', on_delete=models.CASCADE)
# Proxy for this service
proxy = models.ForeignKey(Proxy, null=True, blank=True, related_name='services')
proxy = models.ForeignKey(Proxy, null=True, blank=True, related_name='services', on_delete=models.CASCADE)
class Meta(ManagedObjectModel.Meta):

View File

@ -76,8 +76,8 @@ class DeployedService(UUIDModel, TaggingMixin):
name = models.CharField(max_length=128, default='')
short_name = models.CharField(max_length=32, default='')
comments = models.CharField(max_length=256, default='')
service = models.ForeignKey(Service, null=True, blank=True, related_name='deployedServices')
osmanager = models.ForeignKey(OSManager, null=True, blank=True, related_name='deployedServices')
service = models.ForeignKey(Service, null=True, blank=True, related_name='deployedServices', on_delete=models.CASCADE)
osmanager = models.ForeignKey(OSManager, null=True, blank=True, related_name='deployedServices', on_delete=models.CASCADE)
transports = models.ManyToManyField(Transport, related_name='deployedServices', db_table='uds__ds_trans')
assignedGroups = models.ManyToManyField(Group, related_name='deployedServices', db_table='uds__ds_grps')
state = models.CharField(max_length=1, default=states.servicePool.ACTIVE, db_index=True)
@ -96,7 +96,7 @@ class DeployedService(UUIDModel, TaggingMixin):
actionsCalendars = models.ManyToManyField(Calendar, related_name='actionsSP', through='CalendarAction')
# Usage accounting
account = models.ForeignKey(Account, null=True, blank=True, related_name='servicesPools')
account = models.ForeignKey(Account, null=True, blank=True, related_name='servicesPools', on_delete=models.CASCADE)
initial_srvs = models.PositiveIntegerField(default=0)
cache_l1_srvs = models.PositiveIntegerField(default=0)

View File

@ -63,12 +63,13 @@ def country(lang):
# Config related
@register.assignment_tag
@register.simple_tag
def get_theme():
return GlobalConfig.UDS_THEME.get()
class EnhacedVisual(template.Node):
def __init__(self, nodelistTrue, nodelistFalse):
self._nodelistTrue = nodelistTrue
self._nodelistFalse = nodelistFalse
@ -98,6 +99,7 @@ def enhaced_visual(parser, token):
class TabIndex(template.Node):
def __init__(self, tabIndexName):
self.tabIndexIname = tabIndexName
@ -121,6 +123,7 @@ def tabindex(parser, token):
class Preference(template.Node):
def __init__(self, modName, prefName):
self.modName = modName
self.prefName = prefName
@ -147,26 +150,27 @@ def preference(parser, token):
return Preference(modName, prefName)
@register.assignment_tag
@register.simple_tag
def preferences_allowed():
return GlobalConfig.PREFERENCES_ALLOWED.getBool(True)
@register.assignment_tag
@register.simple_tag
def pageReloadTime():
return GlobalConfig.RELOAD_TIME.getInt(True)
@register.assignment_tag
@register.simple_tag
def root_id():
return ROOT_ID
@register.assignment_tag
@register.simple_tag
def image_size():
return Image.MAX_IMAGE_SIZE
@register.assignment_tag
@register.simple_tag
def calendar_denied_msg():
text = GlobalConfig.LIMITED_BY_CALENDAR_TEXT.get().strip()
if text == '':
@ -174,8 +178,10 @@ def calendar_denied_msg():
return text
# Browser related
class IfBrowser(template.Node):
def __init__(self, nodelistTrue, nodelistFalse, browsers):
self._nodelistTrue = nodelistTrue
self._nodelistFalse = nodelistFalse

View File

@ -34,7 +34,7 @@
from __future__ import unicode_literals
from django.utils.translation import ugettext_noop as _
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.http import HttpResponseRedirect
from uds.core.ui.UserInterface import gui

View File

@ -30,9 +30,10 @@
@author: Adolfo Gómez, dkmaster at dkmon dot com
"""
from django.conf.urls import include, url
from django.urls import re_path
from django.conf.urls import include
from uds.core.util.modfinder import loadModulesUrls
from django.views.i18n import javascript_catalog
from django.views.i18n import JavaScriptCatalog
from uds import REST
import uds.web.views
@ -42,56 +43,56 @@ js_info_dict = {
}
urlpatterns = [
url(r'^$', uds.web.views.index, name='uds.web.views.index'),
url(r'^login/$', uds.web.views.login, name='uds.web.views.login'),
url(r'^login/(?P<tag>.+)$', uds.web.views.login, name='uds.web.views.login'),
url(r'^logout$', uds.web.views.logout, name='uds.web.views.logout'),
re_path(r'^$', uds.web.views.index, name='uds.web.views.index'),
re_path(r'^login/$', uds.web.views.login, name='uds.web.views.login'),
re_path(r'^login/(?P<tag>.+)$', uds.web.views.login, name='uds.web.views.login'),
re_path(r'^logout$', uds.web.views.logout, name='uds.web.views.logout'),
# Icons
url(r'^transicon/(?P<idTrans>.+)$', uds.web.views.transportIcon, name='uds.web.views.transportIcon'),
re_path(r'^transicon/(?P<idTrans>.+)$', uds.web.views.transportIcon, name='uds.web.views.transportIcon'),
# Images
url(r'^srvimg/(?P<idImage>.+)$', uds.web.views.serviceImage, name='uds.web.views.serviceImage'),
url(r'^galimg/(?P<idImage>.+)$', uds.web.views.image, name='galleryImage'),
re_path(r'^srvimg/(?P<idImage>.+)$', uds.web.views.serviceImage, name='uds.web.views.serviceImage'),
re_path(r'^galimg/(?P<idImage>.+)$', uds.web.views.image, name='galleryImage'),
# Error URL
url(r'^error/(?P<idError>.+)$', uds.web.views.error, name='uds.web.views.error'),
re_path(r'^error/(?P<idError>.+)$', uds.web.views.error, name='uds.web.views.error'),
# Transport own link processor
url(r'^trans/(?P<idService>.+)/(?P<idTransport>.+)$', uds.web.views.transportOwnLink, name='TransportOwnLink'),
re_path(r'^trans/(?P<idService>.+)/(?P<idTransport>.+)$', uds.web.views.transportOwnLink, name='TransportOwnLink'),
# Authenticators custom html
url(r'^customAuth/(?P<idAuth>.*)$', uds.web.views.customAuth, name='uds.web.views.customAuth'),
re_path(r'^customAuth/(?P<idAuth>.*)$', uds.web.views.customAuth, name='uds.web.views.customAuth'),
# Preferences
url(r'^prefs$', uds.web.views.prefs, name='uds.web.views.prefs'),
re_path(r'^prefs$', uds.web.views.prefs, name='uds.web.views.prefs'),
# Change Language
url(r'^i18n/', include('django.conf.urls.i18n')),
re_path(r'^i18n/', include('django.conf.urls.i18n')),
# Downloads
url(r'^idown/(?P<idDownload>[a-zA-Z0-9-]*)$', uds.web.views.download, name='uds.web.views.download'),
re_path(r'^idown/(?P<idDownload>[a-zA-Z0-9-]*)$', uds.web.views.download, name='uds.web.views.download'),
# downloads for client
url(r'^down$', uds.web.views.client_downloads, name='uds.web.views.client_downloads'),
url(r'^down/(?P<os>[a-zA-Z0-9-]*)$', uds.web.views.client_downloads, name='uds.web.views.client_downloads'),
url(r'^pluginDetection/(?P<detection>[a-zA-Z0-9-]*)$', uds.web.views.plugin_detection, name='PluginDetection'),
re_path(r'^down$', uds.web.views.client_downloads, name='uds.web.views.client_downloads'),
re_path(r'^down/(?P<os>[a-zA-Z0-9-]*)$', uds.web.views.client_downloads, name='uds.web.views.client_downloads'),
re_path(r'^pluginDetection/(?P<detection>[a-zA-Z0-9-]*)$', uds.web.views.plugin_detection, name='PluginDetection'),
# Client access enabler
url(r'^enable/(?P<idService>.+)/(?P<idTransport>.+)$', uds.web.views.clientEnabler, name='ClientAccessEnabler'),
re_path(r'^enable/(?P<idService>.+)/(?P<idTransport>.+)$', uds.web.views.clientEnabler, name='ClientAccessEnabler'),
# Releaser
url(r'^release/(?P<idService>.+)$', uds.web.views.release, name='Releaser'),
re_path(r'^release/(?P<idService>.+)$', uds.web.views.release, name='Releaser'),
# Custom authentication callback
url(r'^auth/(?P<authName>.+)', uds.web.views.authCallback, name='uds.web.views.authCallback'),
url(r'^authinfo/(?P<authName>.+)', uds.web.views.authInfo, name='uds.web.views.authInfo'),
url(r'^about', uds.web.views.about, name='uds.web.views.about'),
re_path(r'^auth/(?P<authName>.+)', uds.web.views.authCallback, name='uds.web.views.authCallback'),
re_path(r'^authinfo/(?P<authName>.+)', uds.web.views.authInfo, name='uds.web.views.authInfo'),
re_path(r'^about', uds.web.views.about, name='uds.web.views.about'),
# Ticket authentication
url(r'^tkauth/(?P<ticketId>.+)$', uds.web.views.ticketAuth, name='TicketAuth'),
re_path(r'^tkauth/(?P<ticketId>.+)$', uds.web.views.ticketAuth, name='TicketAuth'),
# REST Api
url(r'^rest/(?P<arguments>.*)$', REST.Dispatcher.as_view(), name="REST"),
re_path(r'^rest/(?P<arguments>.*)$', REST.Dispatcher.as_view(), name="REST"),
# Web admin GUI
url(r'^adm/', include('uds.admin.urls')),
re_path(r'^adm/', include('uds.admin.urls')),
# Files
url(r'^files/(?P<uuid>.+)', uds.web.views.file_storage, name='uds.web.views.file_storage'),
re_path(r'^files/(?P<uuid>.+)', uds.web.views.file_storage, name='uds.web.views.file_storage'),
# Internacionalization in javascript
# Javascript catalog
url(r'^jsi18n/(?P<packages>[a-z]*)$', javascript_catalog, js_info_dict, name='uds.web.views.jsCatalog'),
# Javascript catalog. In fact, lang is not used, but it is maintanied for "backward" user templates compatibility
re_path(r'^jsi18n/(?P<lang>[a-z]*)$', JavaScriptCatalog.as_view(), name='uds.web.views.jsCatalog'),
]
# Append urls from special dispatchers

View File

@ -37,7 +37,7 @@ from django.shortcuts import render
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.urls import reverse
from .transformers import scrambleId, transformId
from uds.models import DeployedService, Transport, UserService, Authenticator

View File

@ -32,7 +32,7 @@ from __future__ import unicode_literals
import logging
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.http import HttpResponse, HttpResponseRedirect, HttpResponsePermanentRedirect
from django.shortcuts import render
from django.utils.translation import ugettext as _
@ -53,8 +53,7 @@ from uds.models import TicketStore
logger = logging.getLogger(__name__)
__updated__ = '2017-02-14'
__updated__ = '2018-02-12'
@csrf_exempt

View File

@ -39,10 +39,12 @@ import logging
logger = logging.getLogger(__name__)
__updated__ = '2016-04-05'
__updated__ = '2018-02-12'
@cache_page(3600, key_prefix='file', cache='memory')
def file_storage(request, uuid):
logger.debug('Getting {} from DB'.format(uuid))
f = DBFile.objects.get(uuid=uuid)
content_type, encoding = mimetypes.guess_type(f.name)

View File

@ -31,7 +31,7 @@
from __future__ import unicode_literals
from django.shortcuts import render
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.utils.translation import ugettext
from django.utils import formats
@ -51,7 +51,7 @@ import logging
logger = logging.getLogger(__name__)
__updated__ = '2017-11-10'
__updated__ = '2018-02-12'
def about(request):

View File

@ -32,7 +32,7 @@ from __future__ import unicode_literals
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.utils.translation import ugettext
from uds.core.auths.auth import webLogin, authenticate, authLogLogin, authLogLogout, getUDSCookie, webLoginRequired, webLogout
@ -48,7 +48,8 @@ import uds.web.errors as errors
import logging
logger = logging.getLogger(__name__)
__updated__ = '2017-06-01'
__updated__ = '2018-02-12'
# Allow cross-domain login
# @csrf_exempt