Backoffice for API 1.0.14 ExerciseDevice, ExerciseTypeDevice

This commit is contained in:
Bossanyi Tibor 2020-11-20 15:53:13 +01:00
parent 826b1f900d
commit aa23ec4e49
4 changed files with 77 additions and 9 deletions

View File

@ -1,8 +1,8 @@
from django.contrib import admin from django.contrib import admin
from django.db.models import Sum
from django.utils.html import format_html from django.utils.html import format_html
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from .models import ExerciseType, Product, Purchase, Property, PropertyTranslation from .models import ExerciseType, Product, Purchase, Property, PropertyTranslation
from .models import ExerciseDevice, ExerciseDeviceTranslation, ExerciseTypeDevice
from .models import ExerciseTypeImage from .models import ExerciseTypeImage
from .models import ExerciseTypeTranslation from .models import ExerciseTypeTranslation
from .models import ExerciseTreeTranslation from .models import ExerciseTreeTranslation
@ -12,6 +12,12 @@ from .models import ExercisePlanDetail
from .models import ExercisePlan from .models import ExercisePlan
class ExerciseTypeDeviceInline(admin.StackedInline):
model = ExerciseTypeDevice
extra = 0
fields = ["exercise_type", "exercise_device"]
class ImageInline(admin.StackedInline): class ImageInline(admin.StackedInline):
model = ExerciseTypeImage model = ExerciseTypeImage
extra = 0 extra = 0
@ -53,7 +59,8 @@ class ExerciseTypeAdmin(admin.ModelAdmin):
inlines = [ inlines = [
ImageInline, ImageInline,
TranslationInline TranslationInline,
ExerciseTypeDeviceInline
] ]
@ -125,6 +132,7 @@ class ExercisePlanDetailAdmin(admin.ModelAdmin):
list_editable = ('serie', 'repeat', 'weight_equation',) list_editable = ('serie', 'repeat', 'weight_equation',)
#list_editable_link('',) #list_editable_link('',)
def get_plan(self, obj): def get_plan(self, obj):
return obj.exercise_plan.name 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(ExerciseType, ExerciseTypeAdmin)
admin.site.register(ExerciseTree, ExerciseTreeAdmin) admin.site.register(ExerciseTree, ExerciseTreeAdmin)
admin.site.register(ExercisePlan, ExercisePlanAdmin) admin.site.register(ExercisePlan, ExercisePlanAdmin)
@ -171,5 +193,6 @@ admin.site.register(ExercisePlanDetail, ExercisePlanDetailAdmin)
admin.site.register(Product, ProductAdmin) admin.site.register(Product, ProductAdmin)
admin.site.register(Purchase, PurchaseAdmin) admin.site.register(Purchase, PurchaseAdmin)
admin.site.register(Property, PropertyAdmin) admin.site.register(Property, PropertyAdmin)
admin.site.register(ExerciseDevice, ExerciseDeviceAdmin)
admin.autodiscover() admin.autodiscover()

View File

@ -2,6 +2,25 @@ from django.db import models
from django.utils.translation import ugettext_lazy as _ 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): class ExerciseTree(models.Model):
tree_id = models.AutoField(primary_key=True) 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') 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 return self.name
class LanguageTypes(models.TextChoices):
EN = "en"
HU = "hu"
class ExerciseTypeTranslation(models.Model): class ExerciseTypeTranslation(models.Model):
translation_id = models.AutoField(primary_key=True) translation_id = models.AutoField(primary_key=True)
exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE) exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE)
@ -215,3 +229,29 @@ class PropertyTranslation(models.Model):
def __str__(self): def __str__(self):
return self.property_name 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

View File

@ -1 +1,2 @@
from .prod import * from .prod import *
from .dev import *

View File

@ -15,6 +15,10 @@ import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 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 # Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/