diff --git a/aitrainer_backoffice/aitrainer_backoffice/admin.py b/aitrainer_backoffice/aitrainer_backoffice/admin.py index 90cd7a9..e84e036 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/admin.py +++ b/aitrainer_backoffice/aitrainer_backoffice/admin.py @@ -1,8 +1,8 @@ from django.contrib import admin -from django.db.models import Sum from django.utils.html import format_html from django.utils.translation import ugettext_lazy as _ from .models import ExerciseType, Product, Purchase, Property, PropertyTranslation +from .models import ExerciseDevice, ExerciseDeviceTranslation, ExerciseTypeDevice from .models import ExerciseTypeImage from .models import ExerciseTypeTranslation from .models import ExerciseTreeTranslation @@ -12,6 +12,12 @@ from .models import ExercisePlanDetail from .models import ExercisePlan +class ExerciseTypeDeviceInline(admin.StackedInline): + model = ExerciseTypeDevice + extra = 0 + fields = ["exercise_type", "exercise_device"] + + class ImageInline(admin.StackedInline): model = ExerciseTypeImage extra = 0 @@ -53,7 +59,8 @@ class ExerciseTypeAdmin(admin.ModelAdmin): inlines = [ ImageInline, - TranslationInline + TranslationInline, + ExerciseTypeDeviceInline ] @@ -125,6 +132,7 @@ class ExercisePlanDetailAdmin(admin.ModelAdmin): list_editable = ('serie', 'repeat', 'weight_equation',) #list_editable_link('',) + def get_plan(self, obj): return obj.exercise_plan.name @@ -164,6 +172,20 @@ class PropertyAdmin(admin.ModelAdmin): ] +class TranslationExerciseDeviceInline(admin.TabularInline): + model = ExerciseDeviceTranslation + fields = ('language_code', 'name') + extra = 0 + + +class ExerciseDeviceAdmin(admin.ModelAdmin): + list_display = ('device_id', 'name') + + inlines = [ + TranslationExerciseDeviceInline + ] + + admin.site.register(ExerciseType, ExerciseTypeAdmin) admin.site.register(ExerciseTree, ExerciseTreeAdmin) admin.site.register(ExercisePlan, ExercisePlanAdmin) @@ -171,5 +193,6 @@ admin.site.register(ExercisePlanDetail, ExercisePlanDetailAdmin) admin.site.register(Product, ProductAdmin) admin.site.register(Purchase, PurchaseAdmin) admin.site.register(Property, PropertyAdmin) +admin.site.register(ExerciseDevice, ExerciseDeviceAdmin) admin.autodiscover() diff --git a/aitrainer_backoffice/aitrainer_backoffice/models.py b/aitrainer_backoffice/aitrainer_backoffice/models.py index 7b427ce..f9bed25 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/models.py +++ b/aitrainer_backoffice/aitrainer_backoffice/models.py @@ -2,6 +2,25 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ +class LanguageTypes(models.TextChoices): + EN = "en" + HU = "hu" + + +class ExerciseDevice(models.Model): + device_id = models.AutoField(primary_key=True) + name = models.CharField(max_length=100) + description = models.CharField(max_length=200, blank=True, null=True) + + class Meta: + db_table = 'exercise_device' + verbose_name = _("Exercise Device") + verbose_name_plural = _("Exercise Devices") + + def __str__(self): + return self.name + + class ExerciseTree(models.Model): tree_id = models.AutoField(primary_key=True) parent_id = models.IntegerField(help_text='This is the parent menu ID. 0 if it is on the top of the tree') @@ -71,11 +90,6 @@ class ExerciseTypeImage(models.Model): return self.name -class LanguageTypes(models.TextChoices): - EN = "en" - HU = "hu" - - class ExerciseTypeTranslation(models.Model): translation_id = models.AutoField(primary_key=True) exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE) @@ -214,4 +228,30 @@ class PropertyTranslation(models.Model): verbose_name_plural = _("Translations") def __str__(self): - return self.property_name \ No newline at end of file + return self.property_name + + +class ExerciseTypeDevice(models.Model): + exercise_type_device_id = models.AutoField(primary_key=True) + exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE) + exercise_device = models.ForeignKey(ExerciseDevice, on_delete=models.CASCADE) + + class Meta: + db_table = 'exercise_type_device' + verbose_name = _("Exercise Device") + verbose_name_plural = _("Exercise Devices") + + +class ExerciseDeviceTranslation(models.Model): + translation_id = models.AutoField(primary_key=True) + device = models.ForeignKey(ExerciseDevice, on_delete=models.CASCADE) + name = models.CharField(max_length=100) + language_code = models.CharField(max_length=2, choices=LanguageTypes.choices, default=LanguageTypes.HU) + + class Meta: + db_table = 'exercise_device_translation' + verbose_name = _("Translation") + verbose_name_plural = _("Translations") + + def __str__(self): + return self.name \ No newline at end of file diff --git a/aitrainer_backoffice/aitrainer_backoffice/settings/__init__.py b/aitrainer_backoffice/aitrainer_backoffice/settings/__init__.py index be7ce5e..8e28e9d 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/settings/__init__.py +++ b/aitrainer_backoffice/aitrainer_backoffice/settings/__init__.py @@ -1 +1,2 @@ from .prod import * +from .dev import * diff --git a/aitrainer_backoffice/aitrainer_backoffice/settings/dev.py b/aitrainer_backoffice/aitrainer_backoffice/settings/dev.py index 9fec1d5..924cb62 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/settings/dev.py +++ b/aitrainer_backoffice/aitrainer_backoffice/settings/dev.py @@ -15,6 +15,10 @@ import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +LOCALE_PATHS = [ + 'D:\\projects\\aitrainer\\src\\aitrainer_backoffice\\aitrainer_backoffice\\locale' +] + # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ @@ -142,4 +146,4 @@ LOGGING = { 'propagate': True, }, }, -} \ No newline at end of file +}