kreitek/metaespacio

Que las páginas se puedan hacer publicas/solo miembros

Closed this issue · 1 comments

amd77 commented

En el modelo pages.models.Pagina poner un BooleanField llamado public y default=False
y hacer el makemigrations y el migrate, y agregar la migracion al git.

Ampliar el mixin espacios.views.SiteMixin para que mire el request.user y vea si is_authenticated y si es miembro del espacio. El resultado lo pone en self.miembro = Member.object.get(...) o None si no esta autenticado para poderlo usar en otros sitios.

Agregar un metodo para que las webs privadas sean solo para miembros. Un dispatch no puede ser por razones no explicables en estas lineas, pero podria ser otro: get, get_context_data, get_object, ... El metodo se agrega a pages.views.PaginaView (copiarlo de otro sitio) y mira si la pagina es privada Y si self.miembro is not None, entonces muestre la pagina. Si falla, entonces poner en un message en el request (ver api de mensajes) que diga message.ERROR "Usted no esta autorizado" y hacer un redirect a url reverse('inicio') que es abierta.

El fichero common/templates/common/_menu_user.html habria que modificarlo con algun "if" para que esconda los menus en caso de ser usuario de metaespacio pero no miembro del espacio actual. Si nos vemos cortos de manos porque hay que hacer mucho python para sacar este dato, a lo mejor hay que hacer que el menu sea un custom template tag de tipo "inclusion" con allow_context=True (el html es el mismo). Tenemos uno de ejemplo en espacios/templatetags/espacios.py .

enen commented

Implementado parcialmente en los commits ba612aa y 9cfc48f. Falta el mensaje de error que no se completó al afectar la sobreescritura del método get_object() también a la visualización selectiva del menú cuando el usuario no está autentificado.