From a9d34f65b8411a7e86232c0f02fc4a6e9f25cc02 Mon Sep 17 00:00:00 2001 From: "Tibor Bossanyi (Freelancer)" Date: Mon, 9 Aug 2021 14:53:14 +0200 Subject: [PATCH] BO 1.24 sport + active exercises in exercise programs --- .../aitrainer_backoffice/admin/__init__.py | 1 + .../aitrainer_backoffice/admin/sport.py | 22 +++++++++++++ .../aitrainer_backoffice/models/__init__.py | 3 +- .../aitrainer_backoffice/models/evaluation.py | 3 +- .../models/exercise_plan.py | 2 +- .../aitrainer_backoffice/models/sports.py | 32 +++++++++++++++++++ .../models/training_plan.py | 4 +-- 7 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 aitrainer_backoffice/aitrainer_backoffice/admin/sport.py create mode 100644 aitrainer_backoffice/aitrainer_backoffice/models/sports.py diff --git a/aitrainer_backoffice/aitrainer_backoffice/admin/__init__.py b/aitrainer_backoffice/aitrainer_backoffice/admin/__init__.py index 4419bf1..0f0fa0f 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/admin/__init__.py +++ b/aitrainer_backoffice/aitrainer_backoffice/admin/__init__.py @@ -13,3 +13,4 @@ from .faq import FaqAdmin from .split_tests import SplitTestAdmin from .training_plan_day import TrainingPlanDayAdmin from .controlling import ControllingAdmin +from .sport import SportAdmin diff --git a/aitrainer_backoffice/aitrainer_backoffice/admin/sport.py b/aitrainer_backoffice/aitrainer_backoffice/admin/sport.py new file mode 100644 index 0000000..4961245 --- /dev/null +++ b/aitrainer_backoffice/aitrainer_backoffice/admin/sport.py @@ -0,0 +1,22 @@ +from django.contrib import admin + +from ..models.sports import Sport, SportTranslation + + +class SportTranslationInline(admin.TabularInline): + model = SportTranslation + fields = ('language_code', 'sport_name') + extra = 0 + + +class SportAdmin(admin.ModelAdmin): + list_display = ('name',) + fields = ('name',) + + inlines = [ + SportTranslationInline, + ] + + +admin.site.register(Sport, SportAdmin) +admin.autodiscover() diff --git a/aitrainer_backoffice/aitrainer_backoffice/models/__init__.py b/aitrainer_backoffice/aitrainer_backoffice/models/__init__.py index 32b3136..a6a5d81 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/models/__init__.py +++ b/aitrainer_backoffice/aitrainer_backoffice/models/__init__.py @@ -15,4 +15,5 @@ from .training_plan import TrainingPlan, TrainingPlanDetail from .faq import Faq, FaqTranslation from .split_tests import SplitTests from .training_plan_day import TrainingPlanDay, TrainingPlanDayTranslation -from .controlling import Controlling \ No newline at end of file +from .controlling import Controlling +from .sports import Sport, SportTranslation \ No newline at end of file diff --git a/aitrainer_backoffice/aitrainer_backoffice/models/evaluation.py b/aitrainer_backoffice/aitrainer_backoffice/models/evaluation.py index e6af962..68c26b3 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/models/evaluation.py +++ b/aitrainer_backoffice/aitrainer_backoffice/models/evaluation.py @@ -7,7 +7,8 @@ from .exercise_type import ExerciseType class Evaluation(models.Model): evaluation_id = models.AutoField(primary_key=True) name = models.CharField(max_length=100, help_text='The name should be in English here') - exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE, verbose_name=_("exercise_type")) + exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE, verbose_name=_("exercise_type"), + limit_choices_to={'active': True}) unit = models.CharField(max_length=50, verbose_name=_("unit")) class Meta: diff --git a/aitrainer_backoffice/aitrainer_backoffice/models/exercise_plan.py b/aitrainer_backoffice/aitrainer_backoffice/models/exercise_plan.py index 5a7b084..002705d 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/models/exercise_plan.py +++ b/aitrainer_backoffice/aitrainer_backoffice/models/exercise_plan.py @@ -39,7 +39,7 @@ class ExercisePlanTranslation(models.Model): class ExercisePlanDetail(models.Model): exercise_plan_detail_id = models.AutoField(primary_key=True) exercise_plan = models.ForeignKey(ExercisePlan, on_delete=models.CASCADE) - exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE) + exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE, limit_choices_to={'active':True}) serie = models.IntegerField() repeats = models.IntegerField() weight_equation = models.CharField(max_length=100) diff --git a/aitrainer_backoffice/aitrainer_backoffice/models/sports.py b/aitrainer_backoffice/aitrainer_backoffice/models/sports.py new file mode 100644 index 0000000..15001f4 --- /dev/null +++ b/aitrainer_backoffice/aitrainer_backoffice/models/sports.py @@ -0,0 +1,32 @@ +from django.db import models +from django.utils.translation import ugettext_lazy as _ +from ckeditor.fields import RichTextField + +from .enums import LanguageTypes + + +class Sport(models.Model): + sport_id = models.AutoField(primary_key=True) + name = models.CharField(max_length=200, help_text='Unique name', + verbose_name=_("name")) + + class Meta: + db_table = 'sport' + verbose_name = _("Sport") + verbose_name_plural = _("Sports") + + def __str__(self): + return self.name + + +class SportTranslation(models.Model): + translation_id = models.AutoField(primary_key=True) + sport = models.ForeignKey(Sport, on_delete=models.CASCADE) + language_code = models.CharField(max_length=2, choices=LanguageTypes.choices, default=LanguageTypes.HU) + sport_name = models.CharField(max_length=200, help_text='Unique description name', + verbose_name=_("name")) + + class Meta: + db_table = 'sport_translation' + verbose_name = _("Translation") + verbose_name_plural = _("Translations") diff --git a/aitrainer_backoffice/aitrainer_backoffice/models/training_plan.py b/aitrainer_backoffice/aitrainer_backoffice/models/training_plan.py index d4c92b9..fd5ac39 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/models/training_plan.py +++ b/aitrainer_backoffice/aitrainer_backoffice/models/training_plan.py @@ -9,7 +9,7 @@ from ..models.training_plan_day import TrainingPlanDay class TrainingPlan(models.Model): training_plan_id = models.AutoField(primary_key=True) - tree = models.ForeignKey(ExerciseTree,on_delete=models.CASCADE) + tree = models.ForeignKey(ExerciseTree,on_delete=models.CASCADE, limit_choices_to={'active':True}) name = models.CharField(max_length=100, help_text='The name of the training plan', verbose_name=_("name")) description = RichTextField(blank=True, null=True) @@ -30,7 +30,7 @@ class TrainingPlan(models.Model): class TrainingPlanDetail(models.Model): training_plan_detail_id = models.AutoField(primary_key=True) training_plan = models.ForeignKey(TrainingPlan, on_delete=models.CASCADE) - exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE) + exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE, limit_choices_to={'active': True}) sort = models.IntegerField() set = models.IntegerField() repeats = models.IntegerField(blank=True)