From 93ffa1ae85822806fd8ebc745484541b3343334a Mon Sep 17 00:00:00 2001 From: Gabriel Augendre Date: Sun, 4 Mar 2018 21:45:50 +0100 Subject: [PATCH] Refactor code --- gym/mixins.py | 10 ++ gym/templates/gym/base.html | 22 ++++ gym/templates/gym/equipment.html | 13 ++- gym/templates/gym/equipment_edit.html | 13 +-- gym/templates/gym/room.html | 15 +-- gym/templates/gym/round_edit.html | 15 +-- gym/templates/gym/session_detail.html | 14 +-- gym/templates/gym/session_edit.html | 15 +-- gym/templates/gym/setting_confirm_delete.html | 8 +- gym/templates/gym/setting_edit.html | 15 +-- gym/templates/gym/theoretical_max_edit.html | 15 +-- gym/views.py | 107 ++++++++++++++++-- 12 files changed, 161 insertions(+), 101 deletions(-) diff --git a/gym/mixins.py b/gym/mixins.py index 99ade3b..234e2be 100644 --- a/gym/mixins.py +++ b/gym/mixins.py @@ -4,3 +4,13 @@ class SessionResetMixin: del request.session['session_pk'] return super().dispatch(request, *args, **kwargs) + + +class QuickActionsMixin: + def get_quick_actions(self): + return [] + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['quick_actions'] = self.get_quick_actions() + return context diff --git a/gym/templates/gym/base.html b/gym/templates/gym/base.html index def3f22..835db0d 100644 --- a/gym/templates/gym/base.html +++ b/gym/templates/gym/base.html @@ -22,6 +22,28 @@ {% endfor %} + +
+
+

{% block h1 %}{% endblock %}

+
+
+ {% block quick_actions %} + {% if quick_actions %} +
+
{# Visible only on large screens #} + {% for qa in quick_actions %} + {{ qa.display }} + {% endfor %} +
+
{# Visible only on small screens #} + {% for qa in quick_actions %} + {{ qa.display }} + {% endfor %} +
+
+ {% endif %} + {% endblock %} {% block content %} {% endblock %} diff --git a/gym/templates/gym/equipment.html b/gym/templates/gym/equipment.html index 02d8d65..ed1236b 100644 --- a/gym/templates/gym/equipment.html +++ b/gym/templates/gym/equipment.html @@ -1,12 +1,10 @@ {% extends 'gym/base.html' %} {% load humanize %} -{% block content %} -
-
-

{% block title %}{{ equipment.name }} ({{ equipment.room.name }}){% endblock %}

-
-
+{% block title %}{{ equipment.name }} ({{ equipment.room.name }}){% endblock %} +{% block h1 %}{{ equipment.name }} ({{ equipment.room.name }}){% endblock %} + +{% block quick_actions %}
{% if session %} @@ -26,6 +24,9 @@ {% endif %}
+{% endblock %} + +{% block content %}

Max théorique

diff --git a/gym/templates/gym/equipment_edit.html b/gym/templates/gym/equipment_edit.html index 1cdcf11..5175b62 100644 --- a/gym/templates/gym/equipment_edit.html +++ b/gym/templates/gym/equipment_edit.html @@ -1,17 +1,10 @@ {% extends 'gym/base.html' %} {% load bootstrap4 %} +{% block title %}Ajouter une machine{% endblock %} +{% block h1 %}Ajouter une machine{% endblock %} + {% block content %} -
-
-

{% block title %}Ajouter une machine{% endblock %}

-
-
-
diff --git a/gym/templates/gym/room.html b/gym/templates/gym/room.html index 5edd5d3..cbe426e 100644 --- a/gym/templates/gym/room.html +++ b/gym/templates/gym/room.html @@ -1,18 +1,9 @@ {% extends 'gym/base.html' %} +{% block title %}{{ room.name }}{% endblock %} +{% block h1 %}{{ room.name }}{% endblock %} + {% block content %} -
-
-

{% block title %}{{ room.name }}{% endblock %}

-
-
-

Machines

diff --git a/gym/templates/gym/round_edit.html b/gym/templates/gym/round_edit.html index ae46240..45d8f3c 100644 --- a/gym/templates/gym/round_edit.html +++ b/gym/templates/gym/round_edit.html @@ -3,19 +3,10 @@ {% load static %} {% load l10n %} +{% block title %}{{ title }} une série{% endblock %} +{% block h1 %}{{ title }} une série{% endblock %} + {% block content %} -
-
-

{% block title %}{{ title }} une série{% endblock %}

-
-
-
-
- {% if equipment %} - Retourner à la machine - {% endif %} -
-
diff --git a/gym/templates/gym/session_detail.html b/gym/templates/gym/session_detail.html index 56dfd6b..aa72d4a 100644 --- a/gym/templates/gym/session_detail.html +++ b/gym/templates/gym/session_detail.html @@ -1,18 +1,10 @@ {% extends 'gym/base.html' %} {% load bootstrap4 %} +{% block title %}Séance en cours{% endblock %} +{% block h1 %}Séance en cours{% endblock %} + {% block content %} -
-
-

{% block title %}Séance en cours{% endblock %}

-
-
-

Infos

diff --git a/gym/templates/gym/session_edit.html b/gym/templates/gym/session_edit.html index 53dbecc..e46f4d3 100644 --- a/gym/templates/gym/session_edit.html +++ b/gym/templates/gym/session_edit.html @@ -1,19 +1,10 @@ {% extends 'gym/base.html' %} {% load bootstrap4 %} +{% block title %}{{ title }} une séance{% endblock %} +{% block h1 %}{{ title }} une séance{% endblock %} + {% block content %} -
-
-

{% block title %}{{ title }} une séance{% endblock %}

-
-
-
-
- {% if room %} - Retourner à la salle - {% endif %} -
-
diff --git a/gym/templates/gym/setting_confirm_delete.html b/gym/templates/gym/setting_confirm_delete.html index 9036ab1..4273ec5 100644 --- a/gym/templates/gym/setting_confirm_delete.html +++ b/gym/templates/gym/setting_confirm_delete.html @@ -1,12 +1,10 @@ {% extends 'gym/base.html' %} {% load bootstrap4 %} +{% block title %}Supprimer un réglage{% endblock %} +{% block h1 %}Supprimer un réglage{% endblock %} + {% block content %} -
-
-

{% block title %}Supprimer un réglage{% endblock %}

-
-
diff --git a/gym/templates/gym/setting_edit.html b/gym/templates/gym/setting_edit.html index cf80636..1ed4550 100644 --- a/gym/templates/gym/setting_edit.html +++ b/gym/templates/gym/setting_edit.html @@ -1,19 +1,10 @@ {% extends 'gym/base.html' %} {% load bootstrap4 %} +{% block title %}{{ title }} un réglage{% endblock %} +{% block h1 %}{{ title }} un réglage{% endblock %} + {% block content %} -
-
-

{% block title %}{{ title }} un réglage{% endblock %}

-
-
-
-
- {% if equipment %} - Retourner à la machine - {% endif %} -
-
diff --git a/gym/templates/gym/theoretical_max_edit.html b/gym/templates/gym/theoretical_max_edit.html index 7f47fa1..d0d7ae9 100644 --- a/gym/templates/gym/theoretical_max_edit.html +++ b/gym/templates/gym/theoretical_max_edit.html @@ -1,19 +1,10 @@ {% extends 'gym/base.html' %} {% load bootstrap4 %} +{% block title %}{{ title }} un max théorique{% endblock %} +{% block h1 %}{{ title }} un max théorique{% endblock %} + {% block content %} -
-
-

{% block title %}{{ title }} un max théorique{% endblock %}

-
-
-
-
- {% if equipment %} - Retourner à la machine - {% endif %} -
-
diff --git a/gym/views.py b/gym/views.py index 6d01275..886cd3b 100644 --- a/gym/views.py +++ b/gym/views.py @@ -5,7 +5,7 @@ from django.shortcuts import get_object_or_404 from django.urls import reverse from django.views import generic -from gym.mixins import SessionResetMixin +from gym.mixins import SessionResetMixin, QuickActionsMixin from gym.models import Room, Equipment, Setting, Session, Round, TheoreticalMax @@ -15,11 +15,30 @@ class RoomListView(LoginRequiredMixin, SessionResetMixin, generic.ListView): template_name = 'gym/rooms.html' -class RoomDetailView(LoginRequiredMixin, SessionResetMixin, generic.DetailView): +class RoomDetailView(LoginRequiredMixin, QuickActionsMixin, SessionResetMixin, generic.DetailView): model = Room context_object_name = 'room' template_name = 'gym/room.html' + def get_quick_actions(self): + return [ + { + 'url': reverse('rooms-list'), + 'category': 'secondary', + 'display': 'Liste des salles' + }, + { + 'url': "{}?room={}".format(reverse('equipment-create'), self.object.pk), + 'category': 'success', + 'display': 'Ajouter une machine' + }, + { + 'url': "{}?room={}".format(reverse('session-start'), self.object.pk), + 'category': 'primary', + 'display': 'Commencer une séance' + }, + ] + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['sessions'] = self.object.sessions.all().order_by('-start') @@ -46,12 +65,21 @@ class EquipmentDetailView(LoginRequiredMixin, generic.DetailView): return context -class EquipmentCreateView(LoginRequiredMixin, generic.CreateView): +class EquipmentCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView): model = Equipment fields = ['room', 'name'] template_name = 'gym/equipment_edit.html' room = None + def get_quick_actions(self): + return [ + { + 'url': reverse('room-detail', args=(self.room.pk,)), + 'category': 'secondary', + 'display': 'Retourner à la salle' + }, + ] + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['room'] = self.room @@ -74,12 +102,21 @@ class EquipmentCreateView(LoginRequiredMixin, generic.CreateView): return initial -class SettingCreateView(LoginRequiredMixin, generic.CreateView): +class SettingCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView): model = Setting fields = ['equipment', 'name', 'value'] template_name = 'gym/setting_edit.html' equipment = None + def get_quick_actions(self): + return [ + { + 'url': reverse('equipment-detail', args=(self.equipment.pk,)), + 'category': 'secondary', + 'display': 'Retourner à la machine' + }, + ] + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['title'] = 'Ajouter' @@ -103,11 +140,20 @@ class SettingCreateView(LoginRequiredMixin, generic.CreateView): return reverse('equipment-detail', kwargs={'pk': self.object.equipment.pk}) -class SettingUpdateView(LoginRequiredMixin, generic.UpdateView): +class SettingUpdateView(LoginRequiredMixin, QuickActionsMixin, generic.UpdateView): model = Setting fields = ['equipment', 'name', 'value'] template_name = 'gym/setting_edit.html' + def get_quick_actions(self): + return [ + { + 'url': reverse('equipment-detail', args=(self.object.equipment.pk,)), + 'category': 'secondary', + 'display': 'Retourner à la machine' + }, + ] + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['edit'] = True @@ -128,12 +174,21 @@ class SettingDeleteView(LoginRequiredMixin, generic.DeleteView): return reverse('equipment-detail', kwargs={'pk': self.object.equipment.pk}) -class TheoreticalMaxCreateView(LoginRequiredMixin, generic.CreateView): +class TheoreticalMaxCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView): model = TheoreticalMax fields = ['equipment', 'date', 'value'] template_name = 'gym/theoretical_max_edit.html' equipment = None + def get_quick_actions(self): + return [ + { + 'url': reverse('equipment-detail', args=(self.equipment.pk,)), + 'category': 'secondary', + 'display': 'Retourner à la machine' + }, + ] + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['title'] = 'Ajouter' @@ -158,12 +213,22 @@ class TheoreticalMaxCreateView(LoginRequiredMixin, generic.CreateView): return reverse('equipment-detail', kwargs={'pk': self.object.equipment.pk}) -class SessionCreateView(LoginRequiredMixin, generic.CreateView): +class SessionCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView): model = Session fields = ['room', 'start'] template_name = 'gym/session_edit.html' room = None + def get_quick_actions(self): + room_pk = self.room.pk + return [ + { + 'url': reverse('room-detail', args=(room_pk,)), + 'category': 'secondary', + 'display': 'Retourner à la salle' + }, + ] + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['title'] = 'Démarrer' @@ -185,23 +250,47 @@ class SessionCreateView(LoginRequiredMixin, generic.CreateView): return initial -class SessionDetailView(LoginRequiredMixin, generic.DetailView): +class SessionDetailView(LoginRequiredMixin, QuickActionsMixin, generic.DetailView): model = Session context_object_name = 'session' template_name = 'gym/session_detail.html' + def get_quick_actions(self): + room_pk = self.get_object().room.pk + return [ + { + 'url': reverse('room-detail', args=(room_pk,)), + 'category': 'secondary', + 'display': 'Retourner à la salle' + }, + { + 'url': "{}?room={}".format(reverse('equipment-create'), room_pk), + 'category': 'success', + 'display': 'Ajouter une machine' + }, + ] + def dispatch(self, request, *args, **kwargs): request.session['session_pk'] = self.get_object().pk return super().dispatch(request, *args, **kwargs) -class RoundCreateView(LoginRequiredMixin, generic.CreateView): +class RoundCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView): model = Round fields = ['equipment', 'session', 'theoretical_max_percentage', 'chosen_weight', 'repetition_number', 'notes'] template_name = 'gym/round_edit.html' equipment = None session_pk = None + def get_quick_actions(self): + return [ + { + 'url': reverse('equipment-detail', args=(self.equipment.pk,)), + 'category': 'secondary', + 'display': 'Retourner à la machine' + }, + ] + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['title'] = 'Commencer'