many gpws
parent
5e8f6c39d4
commit
f192df7909
|
|
@ -16,7 +16,7 @@ def load_config(request):
|
|||
return {
|
||||
'nav': Button.objects.filter(published=True),
|
||||
'uppernav': UpperButton.objects.filter(published=True),
|
||||
'gpw': GrandPrixW.load(),
|
||||
'gpw': GrandPrixW.get_current(),
|
||||
'posts': Post.objects.filter(published=True),
|
||||
'daneadresowe': Data.load(),
|
||||
'czlonkowie': Member.objects.all(),
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ class Button(OrderableModel):
|
|||
|
||||
if h == reverse_lazy('calendar'):
|
||||
c = Calendar.get_current()
|
||||
elif h in reverse_lazy('membership'):
|
||||
elif h in reverse_lazy('membership') and h != '/':
|
||||
c = Membership.get_current()
|
||||
|
||||
return h + (('#' + str(c.year)) if c is not None else '')
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
{% extends 'base.html' %}
|
||||
<!---->
|
||||
{% block title %}Grand Prix Białegostoku | pdlzbs{% endblock %}
|
||||
<!---->
|
||||
{% load static tailwind_tags wysiwyg %} {% block content %}
|
||||
<div class="flex flex-col gap-8 justify-center lg:flex-row">
|
||||
<article class="p-8 bg-white rounded-md shadow-md prose">
|
||||
{% if focus.show_title %}
|
||||
<h1 class="font-medium text-center">{{ focus.title }}</h1>
|
||||
{% endif %}
|
||||
<div>{% content focus %}</div>
|
||||
<div class="flex flex-wrap gap-4 justify-center items-center">
|
||||
{% buttons focus.buttons %}
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
{% load static tailwind_tags wysiwyg %} {% block content %}
|
||||
<article class="w-full">
|
||||
{% content gpb %}
|
||||
<div class="flex flex-wrap gap-4 items-center justify-center">
|
||||
<div class="flex flex-wrap gap-4 justify-center items-center">
|
||||
{% buttons gpb.buttons %}
|
||||
</div>
|
||||
</article>
|
||||
|
|
|
|||
|
|
@ -1,27 +1,27 @@
|
|||
{% extends 'base.html' %} {% block title %}Strona główna | pdlzbs{% endblock %}
|
||||
{% load static tailwind_tags wysiwyg %} {% block content %}
|
||||
<div class="flex flex-col lg:flex-row justify-center gap-8">
|
||||
<div class="flex flex-col gap-8 justify-center lg:flex-row">
|
||||
<article
|
||||
class="basis-1/2 prose max-w-screen-sm mb-auto bg-white shadow-md rounded-md p-4"
|
||||
class="p-4 mb-auto max-w-screen-sm bg-white rounded-md shadow-md basis-1/2 prose"
|
||||
>
|
||||
{% content gpw %}
|
||||
</article>
|
||||
<div class="basis-1/2 flex flex-col items-center gap-4">
|
||||
<div class="flex flex-col gap-4 items-center basis-1/2">
|
||||
<h1
|
||||
class="text-[2.25rem] font-medium w-full text-center bg-white shadow-md rounded-md px-4 py-2"
|
||||
>
|
||||
Aktualności PodlZBS
|
||||
</h1>
|
||||
<hr class="w-36 border-b border-stone-300 border-dashed" />
|
||||
<hr class="w-36 border-b border-dashed border-stone-300" />
|
||||
{% for post in posts %}
|
||||
<article
|
||||
class="prose max-w-full w-full py-4 bg-white shadow-md rounded-md p-4"
|
||||
class="p-4 py-4 w-full max-w-full bg-white rounded-md shadow-md prose"
|
||||
>
|
||||
{% if post.show_title %}
|
||||
<h2 class="font-medium">{{ post.title }}</h2>
|
||||
{% endif %}
|
||||
<div>{% readmore post %}</div>
|
||||
<div class="flex flex-wrap gap-4 items-center justify-center">
|
||||
<div class="flex flex-wrap gap-4 justify-center items-center">
|
||||
{% buttons post.buttons %}
|
||||
</div>
|
||||
</article>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ def readmore(context, value: str):
|
|||
cntnt = res[0]
|
||||
if len(res) > 1:
|
||||
cntnt += '<br /><br /><p class="text-center">...</p>'
|
||||
cntnt += f'<a href="{reverse_view_url}" style="float: right;" class="button mt-4">Czytaj dalej</a>'
|
||||
cntnt += f'<a href="{reverse_view_url}" style="float: right;" class="mt-4 button">Czytaj dalej</a>'
|
||||
cntnt += '<hr class="not-prose" style="border-color: white; margin: 3rem 0;" />'
|
||||
|
||||
return mark_safe(tableoverflow(cntnt))
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
from django.urls import path
|
||||
from .views import rtpath, tpath
|
||||
|
||||
from db.main.models import Post
|
||||
from db.main.models import Post, GrandPrixW
|
||||
from db.tournaments.models import Tournament
|
||||
from db.youth.models import Youth
|
||||
|
||||
urlpatterns = [
|
||||
tpath('', 'home', {'home': 'active'}),
|
||||
rtpath('grandprixwojewodztwa/<int:id>', 'gpw', GrandPrixW),
|
||||
rtpath('aktualnosci/<int:id>', 'home', Post, {'home': 'active'}),
|
||||
|
||||
tpath('zarzad', 'administration'),
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ def template(filename, ec={}):
|
|||
|
||||
def reverse_template(filename, model, ec={}):
|
||||
def closure(request, id):
|
||||
return render(request, filename+'-reverse.html', {**ec, 'focus': model.objects.get(id=id)})
|
||||
return render(request, filename+'-reverse.html', {**ec, 'focus': model.objects.get(pk=id)})
|
||||
|
||||
return closure
|
||||
|
||||
|
|
|
|||
|
|
@ -11,3 +11,8 @@ class PostModelAdmin(OrderableAdmin, admin.ModelAdmin):
|
|||
list_editable = ['ordering']
|
||||
ordering_field_hide_input = True
|
||||
exclude = ['ordering']
|
||||
|
||||
|
||||
@admin.register(GrandPrixW)
|
||||
class GrandPrixWAdmin(admin.ModelAdmin):
|
||||
list_display = ('__str__', 'link', 'published', 'current')
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
# Generated by Django 4.0.5 on 2023-01-18 21:57
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('main', '0006_grandprixw_buttons_post_buttons'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='grandprixw',
|
||||
name='id',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='grandprixw',
|
||||
name='current',
|
||||
field=models.BooleanField(default=False, verbose_name='Aktualne GP (pokazywane na stronie głównej)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='grandprixw',
|
||||
name='published',
|
||||
field=models.BooleanField(default=True, verbose_name='Grand Prix opublikowane'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='grandprixw',
|
||||
name='year',
|
||||
field=models.IntegerField(default=1, primary_key=True, serialize=False, verbose_name='Rok'),
|
||||
),
|
||||
]
|
||||
|
|
@ -54,14 +54,32 @@ class Post(OrderableModel):
|
|||
verbose_name_plural = 'Aktualności PodlZBS'
|
||||
|
||||
|
||||
class GrandPrixW(SingletonModel):
|
||||
class GrandPrixW(models.Model):
|
||||
published = models.BooleanField('Grand Prix opublikowane', default=True)
|
||||
year = models.IntegerField('Rok', primary_key=True, default=1)
|
||||
content = HTMLField('Tekst GPW', default='', blank=True)
|
||||
buttons = models.TextField(
|
||||
'Przyciski', default='', blank=True, help_text=buttons_help_text)
|
||||
current = models.BooleanField(
|
||||
'Aktualne GP (pokazywane na stronie głównej)', default=False)
|
||||
|
||||
@staticmethod
|
||||
def get_current():
|
||||
return GrandPrixW.objects.filter(current=True, published=True).first()
|
||||
|
||||
def update(self, *args, **kwargs):
|
||||
if self.current is True:
|
||||
GrandPrixW.objects.exclude(year=self.year).update(current=False)
|
||||
|
||||
def __str__(self):
|
||||
return 'Grand Prix Województwa'
|
||||
return f'Grand Prix Województwa {self.year}'
|
||||
|
||||
@property
|
||||
def link(self):
|
||||
href = reverse_lazy('gpw-reverse', args=[self.year])
|
||||
return mark_safe(f'<a href="{href}" target="_blank">{href}</a>')
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Grand Prix Województwa'
|
||||
verbose_name_plural = 'Grand Prix Województwa'
|
||||
ordering = ['-year']
|
||||
|
|
|
|||
|
|
@ -1081,6 +1081,22 @@ select {
|
|||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
border-radius: 0.375rem;
|
||||
border-width: 1px;
|
||||
-webkit-text-decoration-line: none;
|
||||
text-decoration-line: none;
|
||||
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
||||
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;
|
||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
|
||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;
|
||||
transition-duration: 300ms;
|
||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||
}
|
||||
|
||||
.button {
|
||||
display: inline-block;
|
||||
border-radius: 0.375rem;
|
||||
|
|
@ -1295,6 +1311,10 @@ select {
|
|||
margin: 1rem;
|
||||
}
|
||||
|
||||
.m-0 {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.mx-auto {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
|
|
@ -1310,6 +1330,21 @@ select {
|
|||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.my-5 {
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
|
||||
.my-3 {
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.my-6 {
|
||||
margin-top: 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.mb-2 {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
|
@ -1334,6 +1369,10 @@ select {
|
|||
margin-bottom: auto;
|
||||
}
|
||||
|
||||
.ml-2 {
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
|
||||
.block {
|
||||
display: block;
|
||||
}
|
||||
|
|
@ -1366,6 +1405,10 @@ select {
|
|||
display: none;
|
||||
}
|
||||
|
||||
.h-auto {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.h-screen {
|
||||
height: 100vh;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue