Refactor code

This commit is contained in:
Gabriel Augendre 2018-03-04 21:45:50 +01:00
parent ff7e12759d
commit 93ffa1ae85
No known key found for this signature in database
GPG key ID: F360212F958357D4
12 changed files with 161 additions and 101 deletions

View file

@ -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

View file

@ -22,6 +22,28 @@
</button>
</div>
{% endfor %}
<div class="row">
<div class="col-12">
<h1>{% block h1 %}{% endblock %}</h1>
</div>
</div>
{% block quick_actions %}
{% if quick_actions %}
<div class="row">
<div class="col-12 d-none d-md-block"> {# Visible only on large screens #}
{% for qa in quick_actions %}
<a href="{{ qa.url }}" class="btn btn-{{ qa.category }}">{{ qa.display }}</a>
{% endfor %}
</div>
<div class="col-12 d-md-none"> {# Visible only on small screens #}
{% for qa in quick_actions %}
<a href="{{ qa.url }}" class="btn btn-{{ qa.category }} btn-block">{{ qa.display }}</a>
{% endfor %}
</div>
</div>
{% endif %}
{% endblock %}
{% block content %}
{% endblock %}
</div>

View file

@ -1,12 +1,10 @@
{% extends 'gym/base.html' %}
{% load humanize %}
{% block content %}
<div class="row">
<div class="col-12">
<h1>{% block title %}{{ equipment.name }} <small class="text-muted">({{ equipment.room.name }})</small>{% endblock %}</h1>
</div>
</div>
{% block title %}{{ equipment.name }} ({{ equipment.room.name }}){% endblock %}
{% block h1 %}{{ equipment.name }} <small class="text-muted">({{ equipment.room.name }})</small>{% endblock %}
{% block quick_actions %}
<div class="row">
<div class="col-12">
{% if session %}
@ -26,6 +24,9 @@
{% endif %}
</div>
</div>
{% endblock %}
{% block content %}
<div class="row">
<div class="col-12">
<h2>Max théorique</h2>

View file

@ -1,17 +1,10 @@
{% extends 'gym/base.html' %}
{% load bootstrap4 %}
{% block title %}Ajouter une machine{% endblock %}
{% block h1 %}Ajouter une machine{% endblock %}
{% block content %}
<div class="row">
<div class="col-12">
<h1>{% block title %}Ajouter une machine{% endblock %}</h1>
</div>
</div>
<div class="row">
<div class="col-12">
<a href="{% url 'room-detail' room.pk %}" class="btn btn-secondary">Retourner à la salle</a>
</div>
</div>
<div class="row">
<div class="col-12">
<form action="" method="post">

View file

@ -1,18 +1,9 @@
{% extends 'gym/base.html' %}
{% block title %}{{ room.name }}{% endblock %}
{% block h1 %}{{ room.name }}{% endblock %}
{% block content %}
<div class="row">
<div class="col-12">
<h1>{% block title %}{{ room.name }}{% endblock %}</h1>
</div>
</div>
<div class="row">
<div class="col-12">
<a href="{% url 'rooms-list' %}" class="btn btn-secondary">Liste des salles</a>
<a href="{% url 'equipment-create' %}?room={{ room.pk }}" class="btn btn-success">Ajouter une machine</a>
<a href="{% url 'session-start' %}?room={{ room.pk }}" class="btn btn-primary">Commencer une séance</a>
</div>
</div>
<div class="row">
<div class="col-12">
<h2>Machines</h2>

View file

@ -3,19 +3,10 @@
{% load static %}
{% load l10n %}
{% block title %}{{ title }} une série{% endblock %}
{% block h1 %}{{ title }} une série{% endblock %}
{% block content %}
<div class="row">
<div class="col-12">
<h1>{% block title %}{{ title }} une série{% endblock %}</h1>
</div>
</div>
<div class="row">
<div class="col-12">
{% if equipment %}
<a href="{% url 'equipment-detail' equipment.pk %}" class="btn btn-secondary">Retourner à la machine</a>
{% endif %}
</div>
</div>
<div class="row">
<div class="col-12">
<form action="" method="post">

View file

@ -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 %}
<div class="row">
<div class="col-12">
<h1>{% block title %}Séance en cours{% endblock %}</h1>
</div>
</div>
<div class="row">
<div class="col-12">
<a href="{% url 'room-detail' session.room.pk %}" class="btn btn-secondary">Retourner à la salle</a>
<a href="{% url 'equipment-create' %}?room={{ session.room.pk }}" class="btn btn-success">Ajouter une machine</a>
</div>
</div>
<div class="row">
<div class="col-12">
<h2>Infos</h2>

View file

@ -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 %}
<div class="row">
<div class="col-12">
<h1>{% block title %}{{ title }} une séance{% endblock %}</h1>
</div>
</div>
<div class="row">
<div class="col-12">
{% if room %}
<a href="{% url 'room-detail' room.pk %}" class="btn btn-secondary">Retourner à la salle</a>
{% endif %}
</div>
</div>
<div class="row">
<div class="col-12">
<form action="" method="post">

View file

@ -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 %}
<div class="row">
<div class="col-12">
<h1>{% block title %}Supprimer un réglage{% endblock %}</h1>
</div>
</div>
<div class="row">
<div class="col-12">
<form action="" method="post">

View file

@ -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 %}
<div class="row">
<div class="col-12">
<h1>{% block title %}{{ title }} un réglage{% endblock %}</h1>
</div>
</div>
<div class="row">
<div class="col-12">
{% if equipment %}
<a href="{% url 'equipment-detail' equipment.pk %}" class="btn btn-secondary">Retourner à la machine</a>
{% endif %}
</div>
</div>
<div class="row">
<div class="col-12">
<form action="" method="post">

View file

@ -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 %}
<div class="row">
<div class="col-12">
<h1>{% block title %}{{ title }} un max théorique{% endblock %}</h1>
</div>
</div>
<div class="row">
<div class="col-12">
{% if equipment %}
<a href="{% url 'equipment-detail' equipment.pk %}" class="btn btn-secondary">Retourner à la machine</a>
{% endif %}
</div>
</div>
<div class="row">
<div class="col-12">
<form action="" method="post">

View file

@ -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'