Symbol -> oznacza, że link będzie otwarty w nowej karcie Symbol | oznacza, że link będzie otwarty w tej samej karcie Na przykład: pzbs -> https://pzbs.pl fotogaleria | https://galeria.podlaskizbs.pl cezar -> https://www.msc.com.pl/cezar
PZBS i Cezar zostaną otwarte w nowej karcie UWAGA !! Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób: -> link do wyników fotogaleria -> link do fotogalerii
Wtedy pokaże się tylko przycisk fotogalerii ', verbose_name='Przyciski'),
+ ),
+ migrations.AlterField(
+ model_name='tournamentpage',
+ name='contact_buttons',
+ field=models.TextField(blank=True, default='', help_text='Tutaj można wpisać dowolną ilość przycisków w następującym formacie: tekst1 -> link teskt2 | link ...
Symbol -> oznacza, że link będzie otwarty w nowej karcie Symbol | oznacza, że link będzie otwarty w tej samej karcie Na przykład: pzbs -> https://pzbs.pl fotogaleria | https://galeria.podlaskizbs.pl cezar -> https://www.msc.com.pl/cezar
PZBS i Cezar zostaną otwarte w nowej karcie UWAGA !! Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób: -> link do wyników fotogaleria -> link do fotogalerii
Wtedy pokaże się tylko przycisk fotogalerii ', verbose_name='Przyciski'),
+ ),
+ migrations.AlterField(
+ model_name='tournamentpage',
+ name='fee_and_prizes_buttons',
+ field=models.TextField(blank=True, default='', help_text='Tutaj można wpisać dowolną ilość przycisków w następującym formacie: tekst1 -> link teskt2 | link ...
Symbol -> oznacza, że link będzie otwarty w nowej karcie Symbol | oznacza, że link będzie otwarty w tej samej karcie Na przykład: pzbs -> https://pzbs.pl fotogaleria | https://galeria.podlaskizbs.pl cezar -> https://www.msc.com.pl/cezar
PZBS i Cezar zostaną otwarte w nowej karcie UWAGA !! Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób: -> link do wyników fotogaleria -> link do fotogalerii
Wtedy pokaże się tylko przycisk fotogalerii ', verbose_name='Przyciski'),
+ ),
+ migrations.AlterField(
+ model_name='tournamentpage',
+ name='homepage_buttons',
+ field=models.TextField(blank=True, default='', help_text='Tutaj można wpisać dowolną ilość przycisków w następującym formacie: tekst1 -> link teskt2 | link ...
Symbol -> oznacza, że link będzie otwarty w nowej karcie Symbol | oznacza, że link będzie otwarty w tej samej karcie Na przykład: pzbs -> https://pzbs.pl fotogaleria | https://galeria.podlaskizbs.pl cezar -> https://www.msc.com.pl/cezar
PZBS i Cezar zostaną otwarte w nowej karcie UWAGA !! Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób: -> link do wyników fotogaleria -> link do fotogalerii
Wtedy pokaże się tylko przycisk fotogalerii ', verbose_name='Przyciski'),
+ ),
+ migrations.AlterField(
+ model_name='tournamentpage',
+ name='registration_buttons',
+ field=models.TextField(blank=True, default='', help_text='Tutaj można wpisać dowolną ilość przycisków w następującym formacie: tekst1 -> link teskt2 | link ...
Symbol -> oznacza, że link będzie otwarty w nowej karcie Symbol | oznacza, że link będzie otwarty w tej samej karcie Na przykład: pzbs -> https://pzbs.pl fotogaleria | https://galeria.podlaskizbs.pl cezar -> https://www.msc.com.pl/cezar
PZBS i Cezar zostaną otwarte w nowej karcie UWAGA !! Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób: -> link do wyników fotogaleria -> link do fotogalerii
Wtedy pokaże się tylko przycisk fotogalerii ', verbose_name='Przyciski'),
+ ),
+ migrations.AlterField(
+ model_name='tournamentpage',
+ name='rules_buttons',
+ field=models.TextField(blank=True, default='', help_text='Tutaj można wpisać dowolną ilość przycisków w następującym formacie: tekst1 -> link teskt2 | link ...
Symbol -> oznacza, że link będzie otwarty w nowej karcie Symbol | oznacza, że link będzie otwarty w tej samej karcie Na przykład: pzbs -> https://pzbs.pl fotogaleria | https://galeria.podlaskizbs.pl cezar -> https://www.msc.com.pl/cezar
PZBS i Cezar zostaną otwarte w nowej karcie UWAGA !! Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób: -> link do wyników fotogaleria -> link do fotogalerii
Wtedy pokaże się tylko przycisk fotogalerii ', verbose_name='Przyciski'),
+ ),
+ migrations.AlterField(
+ model_name='tournamentpage',
+ name='schedule_and_results_buttons',
+ field=models.TextField(blank=True, default='', help_text='Tutaj można wpisać dowolną ilość przycisków w następującym formacie: tekst1 -> link teskt2 | link ...
Symbol -> oznacza, że link będzie otwarty w nowej karcie Symbol | oznacza, że link będzie otwarty w tej samej karcie Na przykład: pzbs -> https://pzbs.pl fotogaleria | https://galeria.podlaskizbs.pl cezar -> https://www.msc.com.pl/cezar
PZBS i Cezar zostaną otwarte w nowej karcie UWAGA !! Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób: -> link do wyników fotogaleria -> link do fotogalerii
Wtedy pokaże się tylko przycisk fotogalerii ', verbose_name='Przyciski'),
+ ),
+ ]
diff --git a/tournamentpages/models.py b/tournamentpages/models.py
index ebf89dc..393376c 100644
--- a/tournamentpages/models.py
+++ b/tournamentpages/models.py
@@ -2,35 +2,11 @@ from django.db import models
from django.urls.base import reverse_lazy
from django.utils.safestring import mark_safe
from tinymce.models import HTMLField
+from db.help import buttons_help_text
# Create your models here.
-buttons_help_text = """Tutaj można wpisać dowolną ilość przycisków w następującym formacie:
-
- tekst1 -> link
- tekst2 | link
- ...
-
- Symbol -> oznacza, że link będzie otwarty w nowej karcie
- Symbol | oznacza, że link będzie otwarty w tej samej karcie
- Na przykład:
-
- pzbs -> https://pzbs.pl
- fotogaleria | https://galeria.podlaskizbs.pl
- cezar -> https://www.msc.com.pl/cezar
-
- PZBS i Cezar zostaną otwarte w nowej karcie
- UWAGA !!
- Klikając na zdjęcie zawsze zostaniemy przekierowani na pierwszy podany link
- Gdy nie podamy tekstu przyciku, nie pokaże on się, można to wykorzystać w taki sposób:
-
- -> link do wyników
- fotogaleria -> link do fotogalerii
-
- Wtedy pokaże się tylko przycisk fotogalerii, a zdjęcie przekieruje nas do wyników!
- """.replace('\n', ' ')
-
class TournamentPage(models.Model):
name = models.CharField('Nazwa', max_length=250)
@@ -39,10 +15,12 @@ class TournamentPage(models.Model):
header = HTMLField('Nagłówek', default='', blank=True)
footer = HTMLField('Stopka', default='', blank=True)
+ homepage_rename = models.CharField('Nazwa przycisku', default='Strona główna', max_length=250)
homepage = HTMLField('Strona główna', default='', blank=True)
homepage_buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
+ schedule_and_results_rename = models.CharField('Nazwa przycisku', default='Harmonogram i wyniki', max_length=250)
schedule_and_results = HTMLField(
'Harmonogram i wyniki', default='', blank=True)
schedule_and_results_enabled = models.BooleanField(
@@ -50,29 +28,34 @@ class TournamentPage(models.Model):
schedule_and_results_buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
+ registration_rename = models.CharField('Nazwa przycisku', default='Rejestracja', max_length=250)
registration = HTMLField('Rejestracja', default='', blank=True)
registration_enabled = models.BooleanField(
'Strona włączona', default=False)
registration_buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
+ rules_rename = models.CharField('Nazwa przycisku', default='Regulamin', max_length=250)
rules = HTMLField('Regulamin', default='', blank=True)
rules_enabled = models.BooleanField('Strona włączona', default=False)
rules_buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
+ fee_and_prizes_rename = models.CharField('Nazwa przycisku', default='Wpisowe i nagrody', max_length=250)
fee_and_prizes = HTMLField('Wpisowe i nagrody', default='', blank=True)
fee_and_prizes_enabled = models.BooleanField(
'Strona włączona', default=False)
fee_and_prizes_buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
+ accomodation_rename = models.CharField('Nazwa przycisku', default='Noclegi', max_length=250)
accomodation = HTMLField('Noclegi', default='', blank=True)
accomodation_enabled = models.BooleanField(
'Strona włączona', default=False)
accomodation_buttons = models.TextField(
'Przyciski', default='', blank=True, help_text=buttons_help_text)
+ contact_rename = models.CharField('Nazwa przycisku', default='Kontakt', max_length=250)
contact = HTMLField('Kontakt', default='', blank=True)
contact_enabled = models.BooleanField('Strona włączona', default=False)
contact_buttons = models.TextField(
diff --git a/tournamentpages/templates/tournament.html b/tournamentpages/templates/tournament.html
index 409532f..48490f9 100644
--- a/tournamentpages/templates/tournament.html
+++ b/tournamentpages/templates/tournament.html
@@ -34,36 +34,18 @@
{{ t.header | safe}}
diff --git a/tournamentpages/urls.py b/tournamentpages/urls.py
index 59fe5e7..10d689c 100644
--- a/tournamentpages/urls.py
+++ b/tournamentpages/urls.py
@@ -4,11 +4,5 @@ from .views import *
urlpatterns = [
path('', HomeView.as_view(), name='homepage'),
- path('/wyniki', ScheduleAndResultsView.as_view(),
- name='schedule_and_results'),
- path('/rejestracja', RegistrationView.as_view(), name='registration'),
- path('/regulamin', RulesView.as_view(), name='rules'),
- path('/nagrody', FeeAndPrizesView.as_view(), name='fee_and_prizes'),
- path('/noclegi', AccomodationView.as_view(), name='accomodation'),
- path('/kontakt', ContactView.as_view(), name='contact'),
+ path('/', PageView.as_view(), name='page'),
]
diff --git a/tournamentpages/views.py b/tournamentpages/views.py
index 7d2f098..aeca64b 100644
--- a/tournamentpages/views.py
+++ b/tournamentpages/views.py
@@ -1,16 +1,85 @@
from django.shortcuts import render
from django.views.generic import TemplateView
+from django.utils.text import slugify
+
from .models import TournamentPage
# Create your views here.
+def func(id, page):
+ t = TournamentPage.objects.get(
+ id=id, published=True)
+
+ remap = {
+ 'wyniki': 'schedule_and_results',
+ 'rejestracja': 'registration',
+ 'regulamin': 'rules',
+ 'nagrody': 'fee_and_prizes',
+ 'noclegi': 'accomodation',
+ 'kontakt': 'contact',
+ f'{slugify(t.schedule_and_results_rename)}': 'schedule_and_results',
+ f'{slugify(t.registration_rename)}': 'registration',
+ f'{slugify(t.rules_rename)}': 'rules',
+ f'{slugify(t.fee_and_prizes_rename)}': 'fee_and_prizes',
+ f'{slugify(t.accomodation_rename)}': 'accomodation',
+ f'{slugify(t.contact_rename)}': 'contact'
+ }
+
+ rename = {
+ 'schedule_and_results': (t.schedule_and_results_rename, slugify(t.schedule_and_results_rename)) if t.schedule_and_results_enabled else '',
+ 'registration': (t.registration_rename, slugify(t.registration_rename)) if t.registration_enabled else '',
+ 'rules': (t.rules_rename, slugify(t.rules_rename)) if t.rules_enabled else '',
+ 'fee_and_prizes': (t.fee_and_prizes_rename, slugify(t.fee_and_prizes_rename)) if t.fee_and_prizes_enabled else '',
+ 'accomodation': (t.accomodation_rename, slugify(t.accomodation_rename)) if t.accomodation_enabled else '',
+ 'contact': (t.contact_rename, slugify(t.contact_rename)) if t.contact_enabled else '',
+ }
+
+ page = remap[page] if page in remap else page
+
+ return {'t': t, 'rename': rename, 'content': t.__dict__[page], 'content_buttons': t.__dict__[f'{page}_buttons'], 'page': page}
+
class HomeView(TemplateView):
template_name = "tournament.html"
def get_context_data(self, id, **kwargs):
- t = TournamentPage.objects.get(id=id, published=True)
- return {'t': t, 'content': t.homepage, 'content_buttons': t.homepage_buttons, 'homepage': True}
+ return func(id, 'homepage')
+
+
+class PageView(TemplateView):
+ template_name = "tournament.html"
+
+ def get_context_data(self, id, page, **kwargs):
+ t = TournamentPage.objects.get(
+ id=id, published=True)
+
+ remap = {
+ 'wyniki': 'schedule_and_results',
+ 'rejestracja': 'registration',
+ 'regulamin': 'rules',
+ 'nagrody': 'fee_and_prizes',
+ 'noclegi': 'accomodation',
+ 'kontakt': 'contact',
+ f'{slugify(t.schedule_and_results_rename)}': 'schedule_and_results',
+ f'{slugify(t.registration_rename)}': 'registration',
+ f'{slugify(t.rules_rename)}': 'rules',
+ f'{slugify(t.fee_and_prizes_rename)}': 'fee_and_prizes',
+ f'{slugify(t.accomodation_rename)}': 'accomodation',
+ f'{slugify(t.contact_rename)}': 'contact'
+ }
+
+ rename = {
+ 'schedule_and_results': (t.schedule_and_results_rename, slugify(t.schedule_and_results_rename)) if t.schedule_and_results_enabled else '',
+ 'registration': (t.registration_rename, slugify(t.registration_rename)) if t.registration_enabled else '',
+ 'rules': (t.rules_rename, slugify(t.rules_rename)) if t.rules_enabled else '',
+ 'fee_and_prizes': (t.fee_and_prizes_rename, slugify(t.fee_and_prizes_rename)) if t.fee_and_prizes_enabled else '',
+ 'accomodation': (t.accomodation_rename, slugify(t.accomodation_rename)) if t.accomodation_enabled else '',
+ 'contact': (t.contact_rename, slugify(t.contact_rename)) if t.contact_enabled else '',
+ }
+
+ page = remap[page] if page in remap else page
+
+ return {'t': t, 'rename': rename, 'content': t.__dict__[page], 'content_buttons': t.__dict__[f'{page}_buttons'], 'page': page}
class ScheduleAndResultsView(TemplateView):