# from lofar.sas.tmss.tmss.tmssapp.viewsets.permissions import get_project_roles_for_user, get_project_roles_with_permission
auth_clients=[]
# from lofar.sas.tmss.tmss.tmssapp.models import ProjectRole
logger.info('Checking which of these users should receive websocket update for obj=%s: %s'%(obj,[ws.userforwsinlist(self._ws_server.connections.values())]))
ifws.authenticated:# Check user permissions for the object
# 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())]))
logger.info('User=%s has permission=%s and will receive websocket update for obj=%s'%(user,"tmssapp.view_%s"%type(obj).__name__.lower(),obj))
# continue
auth_clients.append(ws)
#
else:
# if user.is_superuser:
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.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))
related_project=getattr(obj,'project',None)
# auth_clients.append(ws)
forproject_roleinuser_project_roles:
# else:
ifrelated_project:
# 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))
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))
# related_project = getattr(obj, 'project', None)
break
# for project_role in user_project_roles:
else:
# if related_project:
logger.info("%s websocket is not authenticated and will not receive websocket update for obj=%s"%(ws.user,obj))
# if project_role['project'].lower() == related_project.name.lower() and \
# ProjectRole.objects.get(value=project_role['role']) in permitted_project_roles:
# todo: remove this, once the above works as expected. -> TMSS-2658
# auth_clients.append(ws)
ifwsnotinauth_clients:
# 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))
logger.warning('Workaround: %s websocket will receive websocket update for obj=%s despite failed permission check'%(ws.user,obj))
# break
auth_clients.append(ws)
# else:
# logger.debug("%s websocket is not authenticated and will not receive websocket update for obj=%s" % (ws.user, obj))