Add work forms and some default values
This commit is contained in:
parent
68e18c406a
commit
9f4834547f
6 changed files with 105 additions and 11 deletions
|
@ -1,6 +1,6 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from gym.models import Room, Equipment, TheoreticalMax, Session, Round, Unit
|
from gym.models import Room, Equipment, TheoreticalMax, Session, Round, Unit, WorkForm
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Room)
|
@admin.register(Room)
|
||||||
|
@ -31,3 +31,8 @@ class RoundAdmin(admin.ModelAdmin):
|
||||||
@admin.register(Unit)
|
@admin.register(Unit)
|
||||||
class UnitAdmin(admin.ModelAdmin):
|
class UnitAdmin(admin.ModelAdmin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(WorkForm)
|
||||||
|
class WorkFormAdmin(admin.ModelAdmin):
|
||||||
|
pass
|
||||||
|
|
40
gym/migrations/0008_auto_20180313_0913.py
Normal file
40
gym/migrations/0008_auto_20180313_0913.py
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# Generated by Django 2.0.2 on 2018-03-13 08:13
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('gym', '0007_auto_20180313_0857'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='WorkForm',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=300, verbose_name='nom')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'forme de travail',
|
||||||
|
'verbose_name_plural': 'formes de travail',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='equipment',
|
||||||
|
name='default_repetition_number',
|
||||||
|
field=models.PositiveIntegerField(default=12, verbose_name='nombre de répétitions par défaut'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='equipment',
|
||||||
|
name='default_work_form',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='gym.WorkForm', verbose_name='forme de travail par défaut'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='round',
|
||||||
|
name='work_form',
|
||||||
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='gym.WorkForm', verbose_name='forme de travail'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 2.0.2 on 2018-03-13 08:16
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('gym', '0008_auto_20180313_0913'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='session',
|
||||||
|
name='default_theoretical_max_percentage',
|
||||||
|
field=models.PositiveIntegerField(default=65, verbose_name='pourcentage par défaut'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -26,6 +26,17 @@ class Unit(models.Model):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
class WorkForm(models.Model):
|
||||||
|
class Meta:
|
||||||
|
verbose_name = 'forme de travail'
|
||||||
|
verbose_name_plural = 'formes de travail'
|
||||||
|
|
||||||
|
name = models.CharField('nom', max_length=300)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
class Equipment(models.Model):
|
class Equipment(models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'machine'
|
verbose_name = 'machine'
|
||||||
|
@ -45,6 +56,13 @@ class Equipment(models.Model):
|
||||||
on_delete=models.PROTECT,
|
on_delete=models.PROTECT,
|
||||||
null=True
|
null=True
|
||||||
)
|
)
|
||||||
|
default_work_form = models.ForeignKey(
|
||||||
|
verbose_name='forme de travail par défaut',
|
||||||
|
to=WorkForm,
|
||||||
|
on_delete=models.SET_NULL,
|
||||||
|
null=True
|
||||||
|
)
|
||||||
|
default_repetition_number = models.PositiveIntegerField('nombre de répétitions par défaut', default=12)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def last_theoretical_max(self):
|
def last_theoretical_max(self):
|
||||||
|
@ -103,6 +121,7 @@ class Session(models.Model):
|
||||||
related_name='sessions',
|
related_name='sessions',
|
||||||
null=True
|
null=True
|
||||||
)
|
)
|
||||||
|
default_theoretical_max_percentage = models.PositiveIntegerField('pourcentage par défaut', default=65)
|
||||||
notes = models.TextField('notes', blank=True)
|
notes = models.TextField('notes', blank=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
@ -129,4 +148,10 @@ class Round(models.Model):
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
related_name='rounds'
|
related_name='rounds'
|
||||||
)
|
)
|
||||||
|
work_form = models.ForeignKey(
|
||||||
|
verbose_name='forme de travail',
|
||||||
|
to=WorkForm,
|
||||||
|
on_delete=models.PROTECT,
|
||||||
|
null=True
|
||||||
|
)
|
||||||
notes = models.TextField('notes', blank=True)
|
notes = models.TextField('notes', blank=True)
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li>{{ session.room.name }}</li>
|
<li>{{ session.room.name }}</li>
|
||||||
<li>{{ session.start }}</li>
|
<li>{{ session.start }}</li>
|
||||||
|
<li>{{ session.default_theoretical_max_percentage }}%</li>
|
||||||
{% if session.notes %}
|
{% if session.notes %}
|
||||||
<li>{{ session.notes }}</li>
|
<li>{{ session.notes }}</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
25
gym/views.py
25
gym/views.py
|
@ -67,7 +67,7 @@ class EquipmentDetailView(LoginRequiredMixin, generic.DetailView):
|
||||||
|
|
||||||
class EquipmentCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView):
|
class EquipmentCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView):
|
||||||
model = Equipment
|
model = Equipment
|
||||||
fields = ['room', 'name']
|
fields = ['room', 'name', 'default_work_form', 'default_repetition_number']
|
||||||
template_name = 'gym/equipment_edit.html'
|
template_name = 'gym/equipment_edit.html'
|
||||||
room = None
|
room = None
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ class TheoreticalMaxCreateView(LoginRequiredMixin, QuickActionsMixin, generic.Cr
|
||||||
|
|
||||||
class SessionCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView):
|
class SessionCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView):
|
||||||
model = Session
|
model = Session
|
||||||
fields = ['room', 'start']
|
fields = ['room', 'start', 'default_theoretical_max_percentage']
|
||||||
template_name = 'gym/session_edit.html'
|
template_name = 'gym/session_edit.html'
|
||||||
room = None
|
room = None
|
||||||
|
|
||||||
|
@ -287,10 +287,11 @@ class SessionDetailView(LoginRequiredMixin, QuickActionsMixin, generic.DetailVie
|
||||||
|
|
||||||
class RoundCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView):
|
class RoundCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView):
|
||||||
model = Round
|
model = Round
|
||||||
fields = ['equipment', 'session', 'theoretical_max_percentage', 'chosen_weight', 'repetition_number', 'notes']
|
fields = ['equipment', 'session', 'theoretical_max_percentage', 'chosen_weight',
|
||||||
|
'repetition_number', 'work_form', 'notes']
|
||||||
template_name = 'gym/round_edit.html'
|
template_name = 'gym/round_edit.html'
|
||||||
equipment = None
|
equipment = None
|
||||||
session_pk = None
|
session = None
|
||||||
|
|
||||||
def get_quick_actions(self):
|
def get_quick_actions(self):
|
||||||
return [
|
return [
|
||||||
|
@ -309,16 +310,19 @@ class RoundCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView)
|
||||||
|
|
||||||
def dispatch(self, request, *args, **kwargs):
|
def dispatch(self, request, *args, **kwargs):
|
||||||
self.equipment = get_object_or_404(Equipment, pk=self.request.GET.get('equipment'))
|
self.equipment = get_object_or_404(Equipment, pk=self.request.GET.get('equipment'))
|
||||||
self.session_pk = self.request.session.get('session_pk')
|
session_pk = self.request.session.get('session_pk')
|
||||||
|
if session_pk:
|
||||||
|
self.session = Session.objects.get(pk=session_pk)
|
||||||
|
|
||||||
return super().dispatch(request, *args, **kwargs)
|
return super().dispatch(request, *args, **kwargs)
|
||||||
|
|
||||||
def get_initial(self):
|
def get_initial(self):
|
||||||
theoretical_max_percentage = 65
|
theoretical_max_percentage = self.session.default_theoretical_max_percentage
|
||||||
initial = super().get_initial()
|
initial = super().get_initial()
|
||||||
initial['equipment'] = self.equipment
|
initial['equipment'] = self.equipment
|
||||||
initial['session'] = self.session_pk
|
initial['session'] = self.session
|
||||||
initial['repetition_number'] = 12
|
initial['repetition_number'] = self.equipment.default_repetition_number or 12
|
||||||
|
initial['work_form'] = self.equipment.default_work_form
|
||||||
initial['theoretical_max_percentage'] = theoretical_max_percentage
|
initial['theoretical_max_percentage'] = theoretical_max_percentage
|
||||||
proposed_weight = 0
|
proposed_weight = 0
|
||||||
theoretical_max = self.equipment.last_theoretical_max
|
theoretical_max = self.equipment.last_theoretical_max
|
||||||
|
@ -334,7 +338,8 @@ class RoundCreateView(LoginRequiredMixin, QuickActionsMixin, generic.CreateView)
|
||||||
|
|
||||||
class RoundUpdateView(LoginRequiredMixin, QuickActionsMixin, generic.UpdateView):
|
class RoundUpdateView(LoginRequiredMixin, QuickActionsMixin, generic.UpdateView):
|
||||||
model = Round
|
model = Round
|
||||||
fields = ['equipment', 'session', 'theoretical_max_percentage', 'chosen_weight', 'repetition_number', 'notes']
|
fields = ['equipment', 'session', 'theoretical_max_percentage', 'chosen_weight',
|
||||||
|
'repetition_number', 'work_form', 'notes']
|
||||||
template_name = 'gym/round_edit.html'
|
template_name = 'gym/round_edit.html'
|
||||||
|
|
||||||
def get_quick_actions(self):
|
def get_quick_actions(self):
|
||||||
|
@ -349,7 +354,7 @@ class RoundUpdateView(LoginRequiredMixin, QuickActionsMixin, generic.UpdateView)
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
context['edit'] = True
|
context['edit'] = True
|
||||||
context['title'] = 'Commencer'
|
context['title'] = 'Modifier'
|
||||||
context['equipment'] = self.object.equipment
|
context['equipment'] = self.object.equipment
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue