# JS 2023-08-11: TODO: fix this! For now we want all users to get updates.
returnlist(self._ws_server.connections.values())
# from django.contrib.auth import get_user_model
# User = get_user_model()
#
# from lofar.sas.tmss.tmss.tmssapp.viewsets.permissions import get_project_roles_for_user, get_project_roles_with_permission
# from lofar.sas.tmss.tmss.tmssapp.models import ProjectRole
#
# auth_clients = []
# logger.debug('Checking which of these users should receive websocket update for obj=%s: %s' % (obj, [ws.user for ws in list(self._ws_server.connections.values())]))
# for ws in list(self._ws_server.connections.values()):
# if ws.authenticated: # Check user permissions for the object
# # JS 2023-08-11: TODO: fix this! For now we want all users to get updates.
# auth_clients.append(ws)
# continue
#
# user = User.objects.filter(username=ws.user).first()
# if user is None:
# continue
#
# if user.is_superuser:
# logger.debug('User=%s is superuser and will receive websocket update for obj=%s' % (user, obj))
# logger.debug('User=%s has permission=%s and will receive websocket update for obj=%s' % (user, "tmssapp.view_%s" % type(obj).__name__.lower(), obj))
# auth_clients.append(ws)
# else:
# logger.debug('User=%s has no permission=%s, checking for project-based permission to receive websocket update for obj=%s' % (user, "tmssapp.view_%s" % type(obj).__name__.lower(), obj))
# if project_role['project'].lower() == related_project.name.lower() and \
# ProjectRole.objects.get(value=project_role['role']) in permitted_project_roles:
# auth_clients.append(ws)
# logger.debug("User=%s has project-based permission for project=%s and will receive websocket update for obj=%s" % (user, project_role['project'].lower(), obj))
# break
# else:
# logger.debug("%s websocket is not authenticated and will not receive websocket update for obj=%s" % (ws.user, obj))
logger.info('Checking which of these users should receive websocket update for obj=%s: %s'%(obj,[ws.userforwsinlist(self._ws_server.connections.values())]))
logger.info('User=%s has permission=%s and will receive websocket update for obj=%s'%(user,"tmssapp.view_%s"%type(obj).__name__.lower(),obj))
auth_clients.append(ws)
else:
logger.info('User=%s has no permission=%s, checking for project-based permission to receive websocket update for obj=%s'%(user,"tmssapp.view_%s"%type(obj).__name__.lower(),obj))
logger.info("User=%s has project-based permission for project=%s and will receive websocket update for obj=%s"%(user,project_role['project'].lower(),obj))
break
else:
logger.info("%s websocket is not authenticated and will not receive websocket update for obj=%s"%(ws.user,obj))
# todo: remove this, once the above works as expected. -> TMSS-2658
ifwsnotinauth_clients:
logger.warning('Workaround: %s websocket will receive websocket update for obj=%s despite failed permission check'%(ws.user,obj))