153 lines
4.5 KiB
Python
153 lines
4.5 KiB
Python
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
|
|
from .models import ExerciseTypeImage
|
|
from .models import ExerciseTypeTranslation
|
|
from .models import ExerciseTreeTranslation
|
|
from .models import ExerciseTree
|
|
from .models import ExercisePlanTranslation
|
|
from .models import ExercisePlanDetail
|
|
from .models import ExercisePlan
|
|
|
|
|
|
class ImageInline(admin.StackedInline):
|
|
model = ExerciseTypeImage
|
|
extra = 0
|
|
fields = ["name", "url", "type", "get_image_preview"]
|
|
readonly_fields = ("get_image_preview",)
|
|
|
|
def get_image_preview(self, obj):
|
|
image_url = '/media/' + str(obj.url)
|
|
if obj.pk:
|
|
return format_html('<img src="{url}" title="{url}" width="30%" height="30%"/> ' \
|
|
.format(url=image_url))
|
|
|
|
get_image_preview.short_description = _("Image Preview")
|
|
|
|
|
|
class TranslationInline(admin.TabularInline):
|
|
model = ExerciseTypeTranslation
|
|
fields = ('language_code', 'name', 'description')
|
|
extra = 0
|
|
|
|
|
|
class ExerciseTypeAdmin(admin.ModelAdmin):
|
|
list_display = ('exercise_type_id', 'tree', 'name_colored', 'active', 'base')
|
|
search_fields = ['name']
|
|
|
|
def name_colored(self, obj):
|
|
if obj.active:
|
|
if obj.base:
|
|
color_code = '7bc863'
|
|
else:
|
|
color_code = '4178bc'
|
|
else:
|
|
color_code = 'C20000'
|
|
html = '<span style="color: #{};">{}</span>˓→'.format(color_code, obj.name)
|
|
return format_html(html)
|
|
|
|
name_colored.admin_order_field = 'name'
|
|
name_colored.short_description = 'name'
|
|
|
|
inlines = [
|
|
ImageInline,
|
|
TranslationInline
|
|
]
|
|
|
|
|
|
class TranslationTreeInline(admin.TabularInline):
|
|
model = ExerciseTreeTranslation
|
|
fields = ('language_code', 'name',)
|
|
extra = 0
|
|
|
|
|
|
class ExerciseTreeAdmin(admin.ModelAdmin):
|
|
list_display = ('tree_id', 'name_colored', 'parent_id', 'active')
|
|
search_fields = ['name']
|
|
|
|
fields = ["name", "parent_id", "image_url", "active", "get_image_preview"]
|
|
readonly_fields = ("get_image_preview",)
|
|
|
|
def get_image_preview(self, obj):
|
|
image_url = '/media/' + str(obj.image_url)
|
|
if obj.pk:
|
|
return format_html('<img src="{url}" title="{url}" width="30%" height="30%"/> ' \
|
|
.format(url=image_url))
|
|
|
|
get_image_preview.short_description = _("Image Preview")
|
|
|
|
def name_colored(self, obj):
|
|
if obj.active:
|
|
if obj.image_url != "":
|
|
color_code = '7bc863'
|
|
else:
|
|
color_code = 'f2cdb3'
|
|
else:
|
|
color_code = 'C20000'
|
|
html = '<span style="color: #{};">{}</span>˓→'.format(color_code, obj.name)
|
|
return format_html(html)
|
|
|
|
name_colored.admin_order_field = 'name'
|
|
name_colored.short_description = 'name'
|
|
|
|
inlines = [
|
|
TranslationTreeInline
|
|
]
|
|
|
|
|
|
class TranslationPlanInline(admin.TabularInline):
|
|
model = ExercisePlanTranslation
|
|
fields = ('language_code', 'name','description')
|
|
extra = 0
|
|
|
|
|
|
class ExercisePlanAdmin(admin.ModelAdmin):
|
|
list_display = ('name_colored',)
|
|
search_fields = ['name']
|
|
|
|
def name_colored(self, obj):
|
|
color_code = 'C20000'
|
|
html = '<span style="color: #{};">{}</span>˓→'.format(color_code, obj.name)
|
|
return format_html(html)
|
|
|
|
name_colored.admin_order_field = 'name'
|
|
name_colored.short_description = 'name'
|
|
|
|
inlines = [
|
|
TranslationPlanInline
|
|
]
|
|
|
|
|
|
class ExercisePlanDetailAdmin(admin.ModelAdmin):
|
|
list_display = ( 'get_plan', 'get_exercise_type', 'serie', 'repeat', 'weight_equation',)
|
|
list_editable = ('serie', 'repeat', 'weight_equation',)
|
|
#list_editable_link('',)
|
|
|
|
def get_plan(self, obj):
|
|
return obj.exercise_plan.name
|
|
|
|
def get_exercise_type(self, obj):
|
|
return obj.exercise_type.name
|
|
|
|
|
|
class ProductAdmin(admin.ModelAdmin):
|
|
list_display = ('product_id', 'name', 'type')
|
|
# Product.objects.all().aggregate(Sum('price'))
|
|
|
|
|
|
class PurchaseAdmin(admin.ModelAdmin):
|
|
list_display = ('purchase_id', 'product', 'customer_id', 'purchase_sum', 'currency', 'date_add')
|
|
list_filter = ['product']
|
|
|
|
|
|
admin.site.register(ExerciseType, ExerciseTypeAdmin)
|
|
admin.site.register(ExerciseTree, ExerciseTreeAdmin)
|
|
admin.site.register(ExercisePlan, ExercisePlanAdmin)
|
|
admin.site.register(ExercisePlanDetail, ExercisePlanDetailAdmin)
|
|
admin.site.register(Product, ProductAdmin)
|
|
admin.site.register(Purchase, PurchaseAdmin)
|
|
admin.autodiscover()
|
|
|