def __init__(self): self.permisoCrud= PermisoCrud() self.grupoPermisoCrud= GrupoPermisoCrud() self.personaPermisoCrud= PersonaPermisoCrud() self.grupoCrud=GrupoCrud() self.personaCrud= PersonaCrud()
class PermisoServicios: def __init__(self): self.permisoCrud= PermisoCrud() self.grupoPermisoCrud= GrupoPermisoCrud() self.personaPermisoCrud= PersonaPermisoCrud() self.grupoCrud=GrupoCrud() self.personaCrud= PersonaCrud() # region Servicios Basicos def get(self, id): return self.permisoCrud.readId(id) def getAll(self): return self.permisoCrud.readAll() def getDTO(self, permiso): permisoDTO= PermisoDTO(permiso) return permisoDTO.toJSON() def insert(self, permiso): return self.permisoCrud.create(permiso) def update(self, permiso): return self.permisoCrud.update(permiso) def delete(self, permiso): return self.permisoCrud.delete(permiso) # endregion def listar(self): permisos = Permiso.objects.all() return permisos def getPermisoByUserAndUrl(self, user, path): """ Método que verifica si un usuario tiene relacionado un permiso ya sea por grupo o por usuario. Realiza una búsqueda hacia arriba buscando en los padres aplanando la autorización. :param userId: Usuario en sesión. :param path: url del método a ingresar :return: Permiso asociado. """ permiso= self.permisoCrud.whereObject(path=path) usuario= self.personaCrud.whereObject(usuario=user) perm = self.personaPermisoCrud.whereList(permiso=permiso, usuario=usuario) #Si no se encuentra aplanado se busca en los padres. if not perm : while permiso.parent is not None: permiso=permiso.parent perm = self.personaPermisoCrud.whereList(permiso=permiso, usuario=usuario) if not perm: break #Si al finalizar en los padres no encuentra continua buscando en los grupos. if not perm: permiso= self.permisoCrud.whereObject(path=path) grupos= self.grupoCrud.whereList(personas=usuario) perm= self.grupoPermisoCrud.whereList(grupo__in=grupos, permiso=permiso) while permiso.parent is not None: permiso=permiso.parent perm= self.grupoPermisoCrud.whereList(grupo__in=grupos, permiso=permiso) if not perm: break return perm