BO 1.33 training program

This commit is contained in:
Tibor Bossanyi (Freelancer) 2021-11-11 21:16:12 +01:00
parent 60927674ee
commit 3a429e714b
13 changed files with 133 additions and 33 deletions

View File

@ -15,4 +15,5 @@ from .training_plan_day import TrainingPlanDayAdmin
from .controlling import ControllingAdmin from .controlling import ControllingAdmin
from .sport import SportAdmin from .sport import SportAdmin
from .app_text import AppTextAdmin from .app_text import AppTextAdmin
from .notification import NotificationAdmin from .notification import NotificationAdmin
from .training_program import TrainingProgramAdmin

View File

@ -100,7 +100,7 @@ class TranslationTrainingPlanInline(admin.TabularInline):
class TrainingPlanAdmin( admin.ModelAdmin): class TrainingPlanAdmin( admin.ModelAdmin):
list_display = ('training_plan_id', 'name', 'internal_name', 'free', 'active') list_display = ('training_plan_id', 'name', 'internal_name', 'free', 'active')
fields = ('tree', 'name', 'description', 'internal_name', 'free', 'active') fields = ('tree','training_program', 'name', 'description', 'internal_name', 'free', 'active', 'weeks')
list_editable = ('name', 'internal_name', 'free', 'active') list_editable = ('name', 'internal_name', 'free', 'active')
def save_model(self, request, obj, form, change): def save_model(self, request, obj, form, change):

View File

@ -0,0 +1,13 @@
from django.contrib import admin
from ..models.training_program import TrainingProgram
class TrainingProgramAdmin(admin.ModelAdmin):
list_display = ('training_program_id', 'name',)
fields = ('name',)
list_editable = ('name',)
admin.site.register(TrainingProgram, TrainingProgramAdmin)
admin.autodiscover()

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-17 10:52+0200\n" "POT-Creation-Date: 2021-11-11 20:59+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -26,10 +26,16 @@ msgstr ""
msgid "Image Preview" msgid "Image Preview"
msgstr "Kép előnézet" msgstr "Kép előnézet"
#: .\aitrainer_backoffice\admin\evaluation.py:29 #: .\aitrainer_backoffice\admin\evaluation.py:27
msgid "Clone the selected evaluation" msgid "Clone the selected evaluation"
msgstr "Kiértékelés klónozása" msgstr "Kiértékelés klónozása"
#: .\aitrainer_backoffice\admin\exercise_type.py:56
#, fuzzy
#| msgid "exercise_type"
msgid "Clone exercise type"
msgstr "Aktuális gyakorlat"
#: .\aitrainer_backoffice\admin\inline_select_action.py:116 #: .\aitrainer_backoffice\admin\inline_select_action.py:116
msgid "Actions" msgid "Actions"
msgstr "Akciók" msgstr "Akciók"
@ -89,7 +95,7 @@ msgstr "App Fordítások"
#: .\aitrainer_backoffice\models\faq.py:34 #: .\aitrainer_backoffice\models\faq.py:34
#: .\aitrainer_backoffice\models\property.py:29 #: .\aitrainer_backoffice\models\property.py:29
#: .\aitrainer_backoffice\models\sports.py:29 #: .\aitrainer_backoffice\models\sports.py:29
#: .\aitrainer_backoffice\models\training_plan.py:58 #: .\aitrainer_backoffice\models\training_plan.py:61
#: .\aitrainer_backoffice\models\training_plan_day.py:31 #: .\aitrainer_backoffice\models\training_plan_day.py:31
#: .\aitrainer_backoffice\models\tutorial.py:45 #: .\aitrainer_backoffice\models\tutorial.py:45
msgid "Translation" msgid "Translation"
@ -105,7 +111,7 @@ msgstr "Fordítás"
#: .\aitrainer_backoffice\models\faq.py:35 #: .\aitrainer_backoffice\models\faq.py:35
#: .\aitrainer_backoffice\models\property.py:30 #: .\aitrainer_backoffice\models\property.py:30
#: .\aitrainer_backoffice\models\sports.py:30 #: .\aitrainer_backoffice\models\sports.py:30
#: .\aitrainer_backoffice\models\training_plan.py:59 #: .\aitrainer_backoffice\models\training_plan.py:62
#: .\aitrainer_backoffice\models\training_plan_day.py:32 #: .\aitrainer_backoffice\models\training_plan_day.py:32
#: .\aitrainer_backoffice\models\tutorial.py:46 #: .\aitrainer_backoffice\models\tutorial.py:46
msgid "Translations" msgid "Translations"
@ -119,25 +125,23 @@ msgstr "Fordítások"
#: .\aitrainer_backoffice\models\split_tests.py:7 #: .\aitrainer_backoffice\models\split_tests.py:7
#: .\aitrainer_backoffice\models\sports.py:9 #: .\aitrainer_backoffice\models\sports.py:9
#: .\aitrainer_backoffice\models\sports.py:25 #: .\aitrainer_backoffice\models\sports.py:25
#: .\aitrainer_backoffice\models\training_plan.py:14 #: .\aitrainer_backoffice\models\training_plan.py:16
#: .\aitrainer_backoffice\models\training_plan_day.py:11 #: .\aitrainer_backoffice\models\training_plan_day.py:11
#: .\aitrainer_backoffice\models\training_plan_day.py:27 #: .\aitrainer_backoffice\models\training_plan_day.py:27
#: .\aitrainer_backoffice\models\training_program.py:11
#: .\aitrainer_backoffice\models\tutorial.py:11 #: .\aitrainer_backoffice\models\tutorial.py:11
msgid "name" msgid "name"
msgstr "Név" msgstr "Név"
#: .\aitrainer_backoffice\models\customer.py:10 #: .\aitrainer_backoffice\models\customer.py:10
#| msgid "name"
msgid "firstname" msgid "firstname"
msgstr "Keresztnév" msgstr "Keresztnév"
#: .\aitrainer_backoffice\models\customer.py:28 #: .\aitrainer_backoffice\models\customer.py:28
#| msgid "Customer Property"
msgid "Customer" msgid "Customer"
msgstr "Ügyfél" msgstr "Ügyfél"
#: .\aitrainer_backoffice\models\customer.py:29 #: .\aitrainer_backoffice\models\customer.py:29
#| msgid "Customer Properties"
msgid "Customers" msgid "Customers"
msgstr "Ügyfelek" msgstr "Ügyfelek"
@ -288,7 +292,7 @@ msgid "Exercise Parents"
msgstr "Gyakorlat szülők" msgstr "Gyakorlat szülők"
#: .\aitrainer_backoffice\models\exercisetree.py:15 #: .\aitrainer_backoffice\models\exercisetree.py:15
#: .\aitrainer_backoffice\models\training_plan.py:17 #: .\aitrainer_backoffice\models\training_plan.py:19
msgid "internal_name" msgid "internal_name"
msgstr "" msgstr ""
@ -317,12 +321,11 @@ msgstr "GYÍK"
msgid "FAQs" msgid "FAQs"
msgstr "GYÍK" msgstr "GYÍK"
#: .\aitrainer_backoffice\models\notification.py:20 #: .\aitrainer_backoffice\models\notification.py:21
msgid "Notification" msgid "Notification"
msgstr "" msgstr ""
#: .\aitrainer_backoffice\models\notification.py:21 #: .\aitrainer_backoffice\models\notification.py:22
#| msgid "Descriptions"
msgid "Notifications" msgid "Notifications"
msgstr "" msgstr ""
@ -366,32 +369,38 @@ msgstr ""
msgid "Sports" msgid "Sports"
msgstr "" msgstr ""
#: .\aitrainer_backoffice\models\training_plan.py:23 #: .\aitrainer_backoffice\models\training_plan.py:26
msgid "Training Plan" msgid "Training Plan"
msgstr "Edzésprogram" msgstr "Edzésterv"
#: .\aitrainer_backoffice\models\training_plan.py:24 #: .\aitrainer_backoffice\models\training_plan.py:27
msgid "Training Plans" msgid "Training Plans"
msgstr "Edzésprogramok" msgstr "Edzéstervek"
#: .\aitrainer_backoffice\models\training_plan.py:44 #: .\aitrainer_backoffice\models\training_plan.py:47
msgid "Training Plan Detail" msgid "Training Plan Detail"
msgstr "Edzésprogram részlet" msgstr "Edzésterv részlet"
#: .\aitrainer_backoffice\models\training_plan.py:45 #: .\aitrainer_backoffice\models\training_plan.py:48
msgid "Training Plan Details" msgid "Training Plan Details"
msgstr "Edzésprogram részletek" msgstr "Edzésterv részletek"
#: .\aitrainer_backoffice\models\training_plan_day.py:15 #: .\aitrainer_backoffice\models\training_plan_day.py:15
#| msgid "Training Plan"
msgid "Training Day" msgid "Training Day"
msgstr "Edzésnap" msgstr "Edzésnap"
#: .\aitrainer_backoffice\models\training_plan_day.py:16 #: .\aitrainer_backoffice\models\training_plan_day.py:16
#| msgid "Training Plans"
msgid "Training Days" msgid "Training Days"
msgstr "Edzésnapok" msgstr "Edzésnapok"
#: .\aitrainer_backoffice\models\training_program.py:15
msgid "Training Program"
msgstr "Edzésprogram"
#: .\aitrainer_backoffice\models\training_program.py:16
msgid "Training Programs"
msgstr "Edzésprogramok"
#: .\aitrainer_backoffice\models\tutorial.py:15 #: .\aitrainer_backoffice\models\tutorial.py:15
msgid "Tutorial" msgid "Tutorial"
msgstr "Tutorial" msgstr "Tutorial"

View File

@ -5,11 +5,13 @@ from django.utils.translation import ugettext_lazy as _
from .enums import LanguageTypes from .enums import LanguageTypes
from ..models import ExerciseType, ExerciseTree from ..models import ExerciseType, ExerciseTree
from ..models.training_plan_day import TrainingPlanDay from ..models.training_plan_day import TrainingPlanDay
from ..models.training_program import TrainingProgram
class TrainingPlan(models.Model): class TrainingPlan(models.Model):
training_plan_id = models.AutoField(primary_key=True) training_plan_id = models.AutoField(primary_key=True)
tree = models.ForeignKey(ExerciseTree,on_delete=models.CASCADE, limit_choices_to={'active':True}) tree = models.ForeignKey(ExerciseTree,on_delete=models.CASCADE, limit_choices_to={'active':True})
training_program = models.ForeignKey(TrainingProgram, on_delete=models.CASCADE)
name = models.CharField(max_length=100, help_text='The name of the training plan', name = models.CharField(max_length=100, help_text='The name of the training plan',
verbose_name=_("name")) verbose_name=_("name"))
description = RichTextField(blank=True, null=True) description = RichTextField(blank=True, null=True)
@ -17,6 +19,7 @@ class TrainingPlan(models.Model):
verbose_name=_("internal_name")) verbose_name=_("internal_name"))
free = models.BooleanField(blank=True) free = models.BooleanField(blank=True)
active = models.BooleanField() active = models.BooleanField()
weeks = models.IntegerField(blank=True, null=True )
class Meta: class Meta:
db_table = 'training_plan' db_table = 'training_plan'

View File

@ -0,0 +1,19 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from ckeditor.fields import RichTextField
from .enums import LanguageTypes
class TrainingProgram(models.Model):
training_program_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=200, help_text='Unique description name',
verbose_name=_("name"))
class Meta:
db_table = 'training_program'
verbose_name = _("Training Program")
verbose_name_plural = _("Training Programs")
def __str__(self):
return self.name

View File

@ -1,7 +1,7 @@
import os import os
from firebase_admin import initialize_app from firebase_admin import initialize_app
BACKOFFICE_VERSION = "1.32" BACKOFFICE_VERSION = "1.33"
# 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__)))
@ -51,7 +51,7 @@ INSTALLED_APPS = [
'adminsortable2', 'adminsortable2',
'inline_actions', 'inline_actions',
'django_cron', 'django_cron',
'firebase_admin' 'firebase_admin',
] ]
MIDDLEWARE = [ MIDDLEWARE = [

View File

@ -1,7 +1,7 @@
import os import os
from firebase_admin import initialize_app from firebase_admin import initialize_app
BACKOFFICE_VERSION = "1.32" BACKOFFICE_VERSION = "1.33"
# 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__)))
@ -35,7 +35,7 @@ INSTALLED_APPS = [
'adminsortable2', 'adminsortable2',
'inline_actions', 'inline_actions',
'django_cron', 'django_cron',
'firebase_admin' 'firebase_admin',
] ]
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'

View File

@ -1,7 +1,7 @@
import os import os
from firebase_admin import initialize_app from firebase_admin import initialize_app
BACKOFFICE_VERSION = "1.32" BACKOFFICE_VERSION = "1.33"
# 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__)))

View File

@ -55,10 +55,12 @@ class FCM:
return "Registration token is null" return "Registration token is null"
try: try:
if image_url == None or self.image_base == None: notification_image_url = self.logo_url
''' if image_url == None or self.image_base == None:
notification_image_url = self.logo_url notification_image_url = self.logo_url
else: else:
notification_image_url = self.image_base + '/' + image_url notification_image_url = self.image_base + '/' + image_url
'''
print(f'image: {notification_image_url}' ) print(f'image: {notification_image_url}' )

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-10-17 10:52+0200\n" "POT-Creation-Date: 2021-11-11 20:59+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -1,6 +1,24 @@
version: "3.7" version: "3.7"
services: services:
uvdesk:
image: dietermartens/uvdesk
environment:
# installation in dev, change it after installation to prod
- APP_ENV=dev
- APP_SECRET=8237945gker
- TZ=Europe/Budapest
- APP_TIMEZONE=Europe/Budapest
- APP_CURRENCY=EUR
- CRON_USER1=root
- CRON_SCHEDULE1=*/5 * * * *
# - CRON_COMMAND1=cd /usr/local/uvdesk && php bin/console uvdesk:refresh-mailbox info@domain.tld support@domain.tld
restart: always
volumes:
- uvdesk:/usr/local/uvdesk
ports:
- "7089:89"
web: web:
build: build:
@ -40,6 +58,8 @@ services:
- /home/bosi/backoffice/aitrainer_backoffice/mysqlconf:/etc/mysql/conf.d - /home/bosi/backoffice/aitrainer_backoffice/mysqlconf:/etc/mysql/conf.d
ports: ports:
- "33060:3306" - "33060:3306"
networks:
- redis_tier
phpmyadmin: phpmyadmin:
image: phpmyadmin/phpmyadmin:latest image: phpmyadmin/phpmyadmin:latest
@ -53,6 +73,8 @@ services:
volumes: volumes:
- ./htpasswd:/etc/phpmyadmin/.htpasswd - ./htpasswd:/etc/phpmyadmin/.htpasswd
- ./phpmyadmin.config.php:/etc/phpmyadmin/config.user.inc.php - ./phpmyadmin.config.php:/etc/phpmyadmin/config.user.inc.php
networks:
- redis_tier
wordpress: wordpress:
image: wordpress image: wordpress
@ -62,6 +84,7 @@ services:
- mysql-server:mysql - mysql-server:mysql
depends_on: depends_on:
- mysql-server - mysql-server
- redis
ports: ports:
- "8090:80" - "8090:80"
environment: environment:
@ -73,8 +96,28 @@ services:
WORDPRESS_DB_NAME: wp WORDPRESS_DB_NAME: wp
volumes: volumes:
- wordpress:/var/www/html - wordpress:/var/www/html
- ./wp_php_custom.ini:/usr/local/etc/php/conf.d/uploads.ini #- ./wp_php_custom.ini:/usr/local/etc/php/conf.d/uploads.ini:chached
- ./wp_htaccess:/var/www/html/.htaccess - type: bind
target: /etc/php/conf.d/uploads.ini
source: /usr/local/bin/wordpress/wp_php_custom.ini
consistency: cached
#- ./wp_htaccess:/var/www/html/.htaccess
- type: bind
target: /var/www/html/.htaccess
source: /usr/local/bin/wordpress/wp_htaccess
consistency: cached
- /usr/local/bin/wordpress/wp-content/uploads:/var/www/html/wp-content/uploads:cached
networks:
- redis_tier
redis:
image: redis
environment:
- REDIS_URL=redis://redis
ports:
- '6379:6379'
networks:
- redis_tier
mautic: mautic:
image: mautic/mautic:v3 image: mautic/mautic:v3
@ -93,6 +136,8 @@ services:
- MAUTIC_DB_PASSWORD=$MYSQL_ROOT_PASSWORD - MAUTIC_DB_PASSWORD=$MYSQL_ROOT_PASSWORD
- MAUTIC_DB_NAME=mautic - MAUTIC_DB_NAME=mautic
- MAUTIC_RUN_CRON_JOBS=true - MAUTIC_RUN_CRON_JOBS=true
networks:
- redis_tier
api: api:
# container_name: api_server # container_name: api_server
@ -149,6 +194,8 @@ services:
restart: unless-stopped restart: unless-stopped
ports: ports:
- "3000:3000" - "3000:3000"
networks:
- redis_tier
volumes: volumes:
mysql-data-backoffice: mysql-data-backoffice:
@ -156,3 +203,9 @@ volumes:
static: static:
wordpress: wordpress:
mautic_data: mautic_data:
uvdesk:
redis_data:
networks:
redis_tier:
driver: bridge