diff --git a/python-total/dia_16/README.md b/python-total/dia_16/README.md index 2b854a6..7b3860c 100644 --- a/python-total/dia_16/README.md +++ b/python-total/dia_16/README.md @@ -773,6 +773,35 @@ Así nos desviará a la página de logueo sin no estamos registrados. ## 16.16. - Información específica de usuario +Cada usuario debe ver tan solo sus tareas, para eso vamos a añadir un nuevo usuario en el panel de administración de django. Así que en views.py vamos añadir el método GetContentData y sobreescribirlo en la calse de ListaPendientes: +```python +def get_context_data(self, **kwarg): + context = super().get_context_data(**kwarg) + context['tareas'] = context['tareas'].filter(usuario=self.request.user) + context['count'] = context['tareas'].filter(completo=False).count() + return context +``` + +Se puede ver dos filtros al contexto, el primero es para que solo se vea las tareas del usuario registrado y el segundo es para que solo se vean las tareas que no estén completas. + +Ahora, con el nuevo usuario creado no veremos las tareas del anterior usuario: + +![](../img/dia16_35.png) + +Ahora, si un usuario crea una tarea queremos que se le asigne a si mismo, así que vamos a views.py y en la clase de CrearTarea redefinimos la función de form_valid: +```python +def form_valid(self, form): + form.instance.usuario = self.request.user + return super(CrearTarea, self).form_valid(form) +``` + +Y en la misma clase, donde tenemos que aparezcan todos los campos con __all__ tenemos que dar la lista para que no de la opción de escoger el usuario. También lo tendremos que hacer en EditarTarea: +```python +fields = ['titulo', 'descripcion', 'completo'] +``` + +![](../img/dia16_36.png) + ## 16.17. - Registrar nuevo usuario ## 16.18. - Barra de búsquedas diff --git a/python-total/dia_16/mi_web/src/proyecto/base/views.py b/python-total/dia_16/mi_web/src/proyecto/base/views.py index 3434af8..e919b82 100644 --- a/python-total/dia_16/mi_web/src/proyecto/base/views.py +++ b/python-total/dia_16/mi_web/src/proyecto/base/views.py @@ -23,6 +23,13 @@ class ListaPendientes(LoginRequiredMixin, ListView): model = Tarea context_object_name = 'tareas' + def get_context_data(self, **kwarg): + context = super().get_context_data(**kwarg) + context['tareas'] = context['tareas'].filter(usuario=self.request.user) + context['count'] = context['tareas'].filter(completo=False).count() + + return context + class DetalleTarea(LoginRequiredMixin, DetailView): model = Tarea @@ -32,13 +39,18 @@ class DetalleTarea(LoginRequiredMixin, DetailView): class CrearTarea(LoginRequiredMixin, CreateView): model = Tarea - fields = '__all__' + fields = ['titulo', 'descripcion', 'completo'] success_url = reverse_lazy('tareas') + def form_valid(self, form): + form.instance.usuario = self.request.user + + return super(CrearTarea, self).form_valid(form) + class EditarTarea(LoginRequiredMixin, UpdateView): model = Tarea - fields = '__all__' + fields = ['titulo', 'descripcion', 'completo'] success_url = reverse_lazy('tareas') diff --git a/python-total/img/dia16_35.png b/python-total/img/dia16_35.png new file mode 100644 index 0000000..8ab21dd Binary files /dev/null and b/python-total/img/dia16_35.png differ diff --git a/python-total/img/dia16_36.png b/python-total/img/dia16_36.png new file mode 100644 index 0000000..4df6c47 Binary files /dev/null and b/python-total/img/dia16_36.png differ