Que las páginas se puedan hacer publicas/solo miembros
Closed this issue · 1 comments
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 .