mirror of
https://github.com/dkmstr/openuds.git
synced 2025-03-11 00:58:39 +03:00
Fixed several "case" uuids tests, so UDS can work with case sensitive
databases
This commit is contained in:
parent
b592e10126
commit
df498dd5bc
@ -36,6 +36,7 @@ from django.utils.translation import ugettext as _
|
||||
|
||||
from uds.core.util import Config
|
||||
from uds.core.util.State import State
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.util import log
|
||||
from uds.core.managers import cryptoManager
|
||||
from uds.REST import Handler
|
||||
@ -170,7 +171,7 @@ class Actor(Handler):
|
||||
|
||||
# Right now, only "message" posts
|
||||
try:
|
||||
service = UserService.objects.get(uuid=uuid)
|
||||
service = UserService.objects.get(uuid=processUuid(uuid))
|
||||
except Exception:
|
||||
return Actor.result(_('User service not found'), error=ERR_USER_SERVICE_NOT_FOUND)
|
||||
|
||||
|
@ -37,6 +37,7 @@ from django.utils.translation import ugettext as _
|
||||
from uds.REST import Handler
|
||||
from uds.REST import RequestError
|
||||
from uds.models import UserService, DeployedService, Transport
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.managers.UserServiceManager import UserServiceManager
|
||||
from uds.core.util import log
|
||||
from uds.core.util.stats import events
|
||||
@ -133,9 +134,9 @@ class Connection(Handler):
|
||||
try:
|
||||
logger.debug('Kind of service: {0}, idService: {1}'.format(kind, idService))
|
||||
if kind == 'A': # This is an assigned service
|
||||
ads = UserService.objects.get(uuid=idService)
|
||||
ads = UserService.objects.get(uuid=processUuid(idService))
|
||||
else:
|
||||
ds = DeployedService.objects.get(uuid=idService)
|
||||
ds = DeployedService.objects.get(uuid=processUuid(idService))
|
||||
# We first do a sanity check for this, if the user has access to this service
|
||||
# If it fails, will raise an exception
|
||||
ds.validateUser(self._user)
|
||||
@ -146,7 +147,7 @@ class Connection(Handler):
|
||||
return Connection.result(error='Service in maintenance')
|
||||
|
||||
logger.debug('Found service: {0}'.format(ads))
|
||||
trans = Transport.objects.get(uuid=idTransport)
|
||||
trans = Transport.objects.get(uuid=processUuid(idTransport))
|
||||
|
||||
if trans.validForIp(self._request.ip) is False:
|
||||
return Connection.result(error='Access denied')
|
||||
|
@ -33,6 +33,7 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from uds.core.util.Config import GlobalConfig
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.models import Authenticator
|
||||
from uds.core.auths.auth import authenticate
|
||||
|
||||
@ -90,7 +91,7 @@ class Login(Handler):
|
||||
try:
|
||||
# Will raise an exception if no auth found
|
||||
if authId is not None:
|
||||
auth = Authenticator.objects.get(uuid=authId)
|
||||
auth = Authenticator.objects.get(uuid=processUuid(authId))
|
||||
elif authName is not None:
|
||||
auth = Authenticator.objects.get(name=authName)
|
||||
else:
|
||||
|
@ -36,6 +36,7 @@ from django.utils.translation import ugettext, ugettext_lazy as _
|
||||
from uds.models import Provider, Service, UserService
|
||||
from uds.REST.methods.services import Services as DetailServices
|
||||
from uds.core import services
|
||||
from uds.core.util.model import processUuid
|
||||
|
||||
from uds.REST import NotFound, RequestError
|
||||
from uds.REST.model import ModelHandler
|
||||
@ -119,7 +120,7 @@ class Providers(ModelHandler):
|
||||
Custom method that returns a service by its uuid, no matter who's his daddy
|
||||
'''
|
||||
try:
|
||||
return DetailServices.serviceToDict(Service.objects.get(uuid=self._args[1]), True)
|
||||
return DetailServices.serviceToDict(Service.objects.get(uuid=processUuid(self._args[1])), True)
|
||||
except Exception:
|
||||
raise RequestError(ugettext('Service not found'))
|
||||
|
||||
|
@ -39,6 +39,7 @@ from uds.models import Service, UserService
|
||||
|
||||
from uds.core.services import Service as coreService
|
||||
from uds.core.util import log
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.Environment import Environment
|
||||
from uds.REST.model import DetailHandler
|
||||
from uds.REST import NotFound, ResponseError, RequestError
|
||||
@ -93,7 +94,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods
|
||||
if item is None:
|
||||
return [Services.serviceToDict(k) for k in parent.services.all()]
|
||||
else:
|
||||
k = parent.services.get(uuid=item)
|
||||
k = parent.services.get(uuid=processUuid(item))
|
||||
val = Services.serviceToDict(k)
|
||||
return self.fillIntanceFields(k, val)
|
||||
except Exception:
|
||||
@ -124,7 +125,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods
|
||||
if item is None: # Create new
|
||||
service = parent.services.create(**fields)
|
||||
else:
|
||||
service = parent.services.get(uuid=item)
|
||||
service = parent.services.get(uuid=processUuid(item))
|
||||
service.__dict__.update(fields)
|
||||
|
||||
service.data = service.getInstance(self._params).serialize()
|
||||
@ -145,7 +146,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods
|
||||
|
||||
def deleteItem(self, parent, item):
|
||||
try:
|
||||
service = parent.services.get(uuid=item)
|
||||
service = parent.services.get(uuid=processUuid(item))
|
||||
|
||||
if service.deployedServices.count() != 0:
|
||||
raise RequestError('Item has associated deployed services')
|
||||
@ -203,7 +204,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods
|
||||
|
||||
def getLogs(self, parent, item):
|
||||
try:
|
||||
item = parent.services.get(uuid=item)
|
||||
item = parent.services.get(uuid=processUuid(item))
|
||||
logger.debug('Getting logs for {0}'.format(item))
|
||||
return log.getLogs(item)
|
||||
except Exception:
|
||||
|
@ -36,6 +36,7 @@ from django.utils.translation import ugettext, ugettext_lazy as _
|
||||
from uds.models import DeployedService, OSManager, Service, Image
|
||||
from uds.core.ui.images import DEFAULT_THUMB_BASE64
|
||||
from uds.core.util.State import State
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.util import log
|
||||
from uds.REST.model import ModelHandler
|
||||
from uds.REST import RequestError, ResponseError
|
||||
@ -180,7 +181,7 @@ class ServicesPools(ModelHandler):
|
||||
# logger.debug(self._params)
|
||||
try:
|
||||
try:
|
||||
service = Service.objects.get(uuid=fields['service_id'])
|
||||
service = Service.objects.get(uuid=processUuid(fields['service_id']))
|
||||
fields['service_id'] = service.id
|
||||
except:
|
||||
raise RequestError(ugettext('Base service does not exist anymore'))
|
||||
@ -192,7 +193,7 @@ class ServicesPools(ModelHandler):
|
||||
self._params['publish_on_save'] = False
|
||||
|
||||
if serviceType.needsManager is True:
|
||||
osmanager = OSManager.objects.get(uuid=fields['osmanager_id'])
|
||||
osmanager = OSManager.objects.get(uuid=processUuid(fields['osmanager_id']))
|
||||
fields['osmanager_id'] = osmanager.id
|
||||
else:
|
||||
del fields['osmanager_id']
|
||||
@ -209,7 +210,7 @@ class ServicesPools(ModelHandler):
|
||||
logger.debug('Image id: {}'.format(imgId))
|
||||
try:
|
||||
if imgId != '-1':
|
||||
image = Image.objects.get(uuid=imgId)
|
||||
image = Image.objects.get(uuid=processUuid(imgId))
|
||||
fields['image_id'] = image.id
|
||||
except Exception:
|
||||
logger.exception('At image recovering')
|
||||
|
@ -38,6 +38,7 @@ from uds.models import Authenticator
|
||||
from uds.models import DeployedService
|
||||
from uds.models import Transport
|
||||
from uds.core.util.Ticket import Ticket
|
||||
from uds.core.util.model import processUuid
|
||||
|
||||
|
||||
import datetime
|
||||
@ -105,7 +106,7 @@ class Tickets(Handler):
|
||||
|
||||
# Will raise an exception if no auth found
|
||||
if authId is not None:
|
||||
auth = Authenticator.objects.get(uuid=authId.lower())
|
||||
auth = Authenticator.objects.get(uuid=processUuid(authId.lower()))
|
||||
elif authName is not None:
|
||||
auth = Authenticator.objects.get(name=authName)
|
||||
else:
|
||||
@ -135,11 +136,11 @@ class Tickets(Handler):
|
||||
transport = None
|
||||
|
||||
if servicePool is not None:
|
||||
servicePool = DeployedService.objects.get(uuid=servicePool.lower())
|
||||
servicePool = DeployedService.objects.get(uuid=processUuid(servicePool))
|
||||
|
||||
transport = self._params.get('transport', None)
|
||||
if transport is not None:
|
||||
transport = Transport.objects.get(uuid=transport.lower())
|
||||
transport = Transport.objects.get(uuid=processUuid(transport))
|
||||
try:
|
||||
servicePool.validateTransport(transport)
|
||||
except Exception:
|
||||
|
@ -40,10 +40,12 @@ from django.utils.translation import ugettext as _
|
||||
|
||||
from uds.models import Group, Transport, DeployedServicePublication
|
||||
from uds.core.util.State import State
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.util import log
|
||||
from uds.REST.model import DetailHandler
|
||||
from uds.REST import ResponseError
|
||||
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -96,7 +98,7 @@ class AssignedService(DetailHandler):
|
||||
return [AssignedService.itemToDict(k) for k in parent.assignedUserServices().all()
|
||||
.prefetch_related('properties').prefetch_related('deployed_service').prefetch_related('publication')]
|
||||
else:
|
||||
return parent.assignedUserServices().get(uuid=item)
|
||||
return parent.assignedUserServices().get(processUuid(uuid=processUuid(item)))
|
||||
except Exception:
|
||||
logger.exception('getItems')
|
||||
self.invalidItemException()
|
||||
@ -125,7 +127,7 @@ class AssignedService(DetailHandler):
|
||||
|
||||
def getLogs(self, parent, item):
|
||||
try:
|
||||
item = parent.assignedUserServices().get(uuid=item)
|
||||
item = parent.assignedUserServices().get(uuid=processUuid(item))
|
||||
logger.debug('Getting logs for {0}'.format(item))
|
||||
return log.getLogs(item)
|
||||
except Exception:
|
||||
@ -133,7 +135,7 @@ class AssignedService(DetailHandler):
|
||||
|
||||
def deleteItem(self, parent, item): # This is also used by CachedService, so we use "userServices" directly and is valid for both
|
||||
try:
|
||||
service = parent.userServices.get(uuid=item)
|
||||
service = parent.userServices.get(uuid=processUuid(item))
|
||||
except Exception:
|
||||
logger.exception('deleteItem')
|
||||
self.invalidItemException()
|
||||
@ -161,7 +163,7 @@ class CachedService(AssignedService):
|
||||
return [AssignedService.itemToDict(k, True) for k in parent.cachedUserServices().all()
|
||||
.prefetch_related('properties').prefetch_related('deployed_service').prefetch_related('publication')]
|
||||
else:
|
||||
k = parent.cachedUserServices().get(uuid=item)
|
||||
k = parent.cachedUserServices().get(uuid=processUuid(item))
|
||||
return AssignedService.itemToDict(k, True)
|
||||
except Exception:
|
||||
logger.exception('getItems')
|
||||
@ -184,7 +186,7 @@ class CachedService(AssignedService):
|
||||
|
||||
def getLogs(self, parent, item):
|
||||
try:
|
||||
item = parent.cachedUserServices().get(uuid=item)
|
||||
item = parent.cachedUserServices().get(uuid=processUuid(item))
|
||||
logger.debug('Getting logs for {0}'.format(item))
|
||||
return log.getLogs(item)
|
||||
except Exception:
|
||||
@ -220,11 +222,11 @@ class Groups(DetailHandler):
|
||||
return {'field': 'state', 'prefix': 'row-state-'}
|
||||
|
||||
def saveItem(self, parent, item):
|
||||
parent.assignedGroups.add(Group.objects.get(uuid=self._params['id']))
|
||||
parent.assignedGroups.add(Group.objects.get(uuid=processUuid(self._params['id'])))
|
||||
return self.success()
|
||||
|
||||
def deleteItem(self, parent, item):
|
||||
parent.assignedGroups.remove(Group.objects.get(uuid=self._args[0]))
|
||||
parent.assignedGroups.remove(Group.objects.get(uuid=processUuid(self._args[0])))
|
||||
|
||||
|
||||
class Transports(DetailHandler):
|
||||
@ -252,11 +254,11 @@ class Transports(DetailHandler):
|
||||
]
|
||||
|
||||
def saveItem(self, parent, item):
|
||||
parent.transports.add(Transport.objects.get(uuid=self._params['id']))
|
||||
parent.transports.add(Transport.objects.get(uuid=processUuid(self._params['id'])))
|
||||
return self.success()
|
||||
|
||||
def deleteItem(self, parent, item):
|
||||
parent.transports.remove(Transport.objects.get(uuid=self._args[0]))
|
||||
parent.transports.remove(Transport.objects.get(uuid=processUuid(self._args[0])))
|
||||
|
||||
|
||||
class Publications(DetailHandler):
|
||||
@ -282,7 +284,7 @@ class Publications(DetailHandler):
|
||||
:param uuid: uuid of the publication
|
||||
'''
|
||||
try:
|
||||
ds = DeployedServicePublication.objects.get(uuid=uuid)
|
||||
ds = DeployedServicePublication.objects.get(uuid=processUuid(uuid))
|
||||
ds.cancel()
|
||||
except Exception as e:
|
||||
raise ResponseError(unicode(e))
|
||||
|
@ -41,6 +41,7 @@ from uds.core.util.State import State
|
||||
|
||||
from uds.core.auths.Exceptions import AuthenticatorException
|
||||
from uds.core.util import log
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.models import Authenticator, User, Group
|
||||
from uds.core.auths.User import User as aUser
|
||||
from uds.core.managers import cryptoManager
|
||||
@ -71,7 +72,7 @@ class Users(DetailHandler):
|
||||
if item is None:
|
||||
return list(Users.uuid_to_id(parent.users.all().values('uuid', 'name', 'real_name', 'comments', 'state', 'staff_member', 'is_admin', 'last_access', 'parent')))
|
||||
else:
|
||||
u = parent.users.get(uuid=item)
|
||||
u = parent.users.get(uuid=processUuid(item))
|
||||
res = model_to_dict(u, fields=('name', 'real_name', 'comments', 'state', 'staff_member', 'is_admin', 'last_access', 'parent'))
|
||||
res['id'] = u.uuid
|
||||
usr = aUser(u)
|
||||
@ -84,7 +85,7 @@ class Users(DetailHandler):
|
||||
|
||||
def getTitle(self, parent):
|
||||
try:
|
||||
return _('Users of {0}').format(Authenticator.objects.get(uuid=self._kwargs['parent_id']).name)
|
||||
return _('Users of {0}').format(Authenticator.objects.get(uuid=processUuid(self._kwargs['parent_id'])).name)
|
||||
except Exception:
|
||||
return _('Current users')
|
||||
|
||||
@ -102,7 +103,7 @@ class Users(DetailHandler):
|
||||
|
||||
def getLogs(self, parent, item):
|
||||
try:
|
||||
user = parent.users.get(uuid=item)
|
||||
user = parent.users.get(uuid=processUuid(item))
|
||||
except Exception:
|
||||
self.invalidItemException()
|
||||
|
||||
@ -129,7 +130,7 @@ class Users(DetailHandler):
|
||||
toSave = {}
|
||||
for k in valid_fields:
|
||||
toSave[k] = fields[k]
|
||||
user = parent.users.get(uuid=item)
|
||||
user = parent.users.get(uuid=processUuid(item))
|
||||
user.__dict__.update(toSave)
|
||||
|
||||
logger.debug('User parent: {}'.format(user.parent))
|
||||
@ -157,7 +158,7 @@ class Users(DetailHandler):
|
||||
|
||||
def deleteItem(self, parent, item):
|
||||
try:
|
||||
user = parent.users.get(uuid=item)
|
||||
user = parent.users.get(uuid=processUuid(item))
|
||||
|
||||
user.delete()
|
||||
except Exception:
|
||||
@ -175,7 +176,7 @@ class Groups(DetailHandler):
|
||||
multi = True
|
||||
q = parent.groups.all().order_by('name')
|
||||
else:
|
||||
q = parent.groups.filter(uuid=item)
|
||||
q = parent.groups.filter(uuid=processUuid(item))
|
||||
res = []
|
||||
for i in q:
|
||||
val = {
|
||||
@ -198,7 +199,7 @@ class Groups(DetailHandler):
|
||||
|
||||
def getTitle(self, parent):
|
||||
try:
|
||||
return _('Groups of {0}').format(Authenticator.objects.get(uuid=self._kwargs['parent_id']).name)
|
||||
return _('Groups of {0}').format(Authenticator.objects.get(uuid=processUuid(self._kwargs['parent_id'])).name)
|
||||
except:
|
||||
return _('Current groups')
|
||||
|
||||
@ -258,7 +259,7 @@ class Groups(DetailHandler):
|
||||
toSave['comments'] = fields['comments'][:255]
|
||||
toSave['meta_if_any'] = meta_if_any
|
||||
|
||||
group = parent.groups.get(uuid=item)
|
||||
group = parent.groups.get(uuid=processUuid(item))
|
||||
group.__dict__.update(toSave)
|
||||
|
||||
if is_meta:
|
||||
|
@ -40,6 +40,7 @@ from django.db import IntegrityError
|
||||
from uds.core.ui.UserInterface import gui as uiGui
|
||||
from uds.REST.handlers import Handler, HandlerError
|
||||
from uds.core.util import log
|
||||
from uds.core.util.model import processUuid
|
||||
|
||||
import fnmatch
|
||||
import re
|
||||
@ -50,7 +51,7 @@ import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
__updated__ = '2015-02-16'
|
||||
__updated__ = '2015-05-14'
|
||||
|
||||
|
||||
# a few constants
|
||||
@ -332,7 +333,7 @@ class DetailHandler(BaseModelHandler): # pylint: disable=abstract-class-not-use
|
||||
return self.processTableFields(self.getTitle(parent), self.getFields(parent), self.getRowStyle(parent))
|
||||
|
||||
# try to get id
|
||||
return self.getItems(parent, self._args[0].upper())
|
||||
return self.getItems(parent, processUuid(self._args[0]))
|
||||
|
||||
if nArgs == 2:
|
||||
if self._args[0] == GUI:
|
||||
|
@ -6,9 +6,15 @@ Created on Sep 15, 2014
|
||||
from __future__ import unicode_literals
|
||||
from uds.core.managers import cryptoManager
|
||||
|
||||
import six
|
||||
|
||||
|
||||
def generateUuid():
|
||||
'''
|
||||
Generates a ramdom uuid for models default
|
||||
'''
|
||||
return cryptoManager().uuid().lower()
|
||||
|
||||
|
||||
def processUuid(uuid):
|
||||
return six.text_type(uuid).lower()
|
||||
|
@ -40,6 +40,7 @@ from uds.core.services.Exceptions import ServiceInMaintenanceMode, InvalidServic
|
||||
from uds.core.managers.UserServiceManager import UserServiceManager
|
||||
from uds.core.ui.images import DEFAULT_IMAGE
|
||||
from uds.core.ui import theme
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.util.Config import GlobalConfig
|
||||
from uds.core.util.stats import events
|
||||
from uds.core.util import log
|
||||
@ -52,7 +53,7 @@ import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
__updated__ = '2015-04-16'
|
||||
__updated__ = '2015-05-14'
|
||||
|
||||
|
||||
@webLoginRequired
|
||||
@ -61,9 +62,9 @@ def service(request, idService, idTransport):
|
||||
try:
|
||||
logger.debug('Kind of service: {0}, idService: {1}'.format(kind, idService))
|
||||
if kind == 'A': # This is an assigned service
|
||||
ads = UserService.objects.get(uuid=idService)
|
||||
ads = UserService.objects.get(uuid=processUuid(idService))
|
||||
else:
|
||||
ds = DeployedService.objects.get(uuid=idService)
|
||||
ds = DeployedService.objects.get(uuid=processUuid(idService))
|
||||
# We first do a sanity check for this, if the user has access to this service
|
||||
# If it fails, will raise an exception
|
||||
ds.validateUser(request.user)
|
||||
@ -74,7 +75,7 @@ def service(request, idService, idTransport):
|
||||
raise ServiceInMaintenanceMode()
|
||||
|
||||
logger.debug('Found service: {0}'.format(ads))
|
||||
trans = Transport.objects.get(uuid=idTransport)
|
||||
trans = Transport.objects.get(uuid=processUuid(idTransport))
|
||||
if trans.validForIp(request.ip) is False:
|
||||
raise InvalidServiceException()
|
||||
|
||||
@ -111,7 +112,7 @@ def service(request, idService, idTransport):
|
||||
def transcomp(request, idTransport, componentId):
|
||||
try:
|
||||
# We got translated first id
|
||||
trans = Transport.objects.get(uuid=idTransport.upper())
|
||||
trans = Transport.objects.get(uuid=processUuid(idTransport))
|
||||
itrans = trans.getInstance()
|
||||
res = itrans.getHtmlComponent(trans.uuid, OsDetector.getOsFromRequest(request), componentId)
|
||||
response = HttpResponse(res[1], content_type=res[0])
|
||||
@ -132,7 +133,7 @@ def sernotify(request, idUserService, notification):
|
||||
ip = request.GET.get('ip', ip)
|
||||
|
||||
if ip is not None and hostname is not None:
|
||||
us = UserService.objects.get(uuid=idUserService)
|
||||
us = UserService.objects.get(uuid=processUuid(idUserService))
|
||||
us.setConnectionSource(ip, hostname)
|
||||
else:
|
||||
return HttpResponse('Invalid request!', 'text/plain')
|
||||
@ -140,7 +141,7 @@ def sernotify(request, idUserService, notification):
|
||||
message = request.GET.get('message', None)
|
||||
level = request.GET.get('level', None)
|
||||
if message is not None and level is not None:
|
||||
us = UserService.objects.get(uuid=idUserService)
|
||||
us = UserService.objects.get(uuid=processUuid(idUserService))
|
||||
log.doLog(us, level, message, log.TRANSPORT)
|
||||
else:
|
||||
return HttpResponse('Invalid request!', 'text/plain')
|
||||
@ -152,7 +153,7 @@ def sernotify(request, idUserService, notification):
|
||||
|
||||
def transportIcon(request, idTrans):
|
||||
try:
|
||||
icon = Transport.objects.get(uuid=idTrans).getInstance().icon(False)
|
||||
icon = Transport.objects.get(uuid=processUuid(idTrans)).getInstance().icon(False)
|
||||
return HttpResponse(icon, content_type='image/png')
|
||||
except Exception:
|
||||
return HttpResponseRedirect('/static/img/unknown.png')
|
||||
@ -161,13 +162,13 @@ def transportIcon(request, idTrans):
|
||||
@cache_page(86400, key_prefix='img')
|
||||
def serviceImage(request, idImage):
|
||||
try:
|
||||
icon = Image.objects.get(uuid=idImage)
|
||||
icon = Image.objects.get(uuid=processUuid(idImage))
|
||||
return icon.imageResponse()
|
||||
except Image.DoesNotExist:
|
||||
pass # Tries to get image from transport
|
||||
|
||||
try:
|
||||
icon = Transport.objects.get(uuid=idImage).getInstance().icon(False)
|
||||
icon = Transport.objects.get(uuid=processUuid(idImage)).getInstance().icon(False)
|
||||
return HttpResponse(icon, content_type='image/png')
|
||||
except Exception:
|
||||
return HttpResponse(DEFAULT_IMAGE, content_type='image/png')
|
||||
|
Loading…
x
Reference in New Issue
Block a user