diff --git a/pyconbalkan/conference/abstractions.py b/pyconbalkan/conference/abstractions.py index b58a0ae8..aeef99ee 100644 --- a/pyconbalkan/conference/abstractions.py +++ b/pyconbalkan/conference/abstractions.py @@ -1,36 +1,21 @@ from django.contrib import admin -from django.db import models from django.utils.translation import ugettext_lazy as _ from pyconbalkan.conference.models import Conference -def _get_default_conference(): - if Conference.objects.exists(): - return Conference.objects.first().id - - -class AbstractConference(models.Model): - conference = models.ForeignKey( - Conference, on_delete=models.CASCADE, default=_get_default_conference - ) - - class Meta: - abstract = True - - class ConferenceFilter(admin.SimpleListFilter): - title = _('Conference year') - parameter_name = 'conference' + title = _("Conference year") + parameter_name = "conference" def choices(self, changelist): for lookup, title in self.lookup_choices: yield { - 'selected': self.value() is lookup or self.value() == str(lookup), - 'query_string': changelist.get_query_string( + "selected": self.value() is lookup or self.value() == str(lookup), + "query_string": changelist.get_query_string( {self.parameter_name: lookup} ), - 'display': title, + "display": title, } def lookups(self, request, model_admin): diff --git a/pyconbalkan/conference/admin.py b/pyconbalkan/conference/admin.py index d8fdca7c..910c22d4 100644 --- a/pyconbalkan/conference/admin.py +++ b/pyconbalkan/conference/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin +from pyconbalkan.conference.abstractions import ConferenceAbstractAdmin from pyconbalkan.conference.models import Conference, CountDown, MissionStatement from markdownx.admin import MarkdownxModelAdmin @@ -9,12 +10,12 @@ class Meta: model = Conference -class CountDownAdmin(admin.ModelAdmin): +class CountDownAdmin(ConferenceAbstractAdmin): class Meta: model = CountDown -class MissionStatementAdmin(MarkdownxModelAdmin): +class MissionStatementAdmin(ConferenceAbstractAdmin, MarkdownxModelAdmin): class Meta: model = MissionStatement diff --git a/pyconbalkan/conference/migrations/0008_auto_20190303_1800.py b/pyconbalkan/conference/migrations/0008_auto_20190303_1800.py new file mode 100644 index 00000000..c68bc5f0 --- /dev/null +++ b/pyconbalkan/conference/migrations/0008_auto_20190303_1800.py @@ -0,0 +1,25 @@ +# Generated by Django 2.1.2 on 2019-03-03 18:00 + +from django.db import migrations, models +import django.db.models.deletion +import pyconbalkan.conference.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('conference', '0007_auto_20190227_0738'), + ] + + operations = [ + migrations.AddField( + model_name='countdown', + name='conference', + field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'), + ), + migrations.AddField( + model_name='missionstatement', + name='conference', + field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'), + ), + ] diff --git a/pyconbalkan/conference/models.py b/pyconbalkan/conference/models.py index 02dc1163..ddb66606 100644 --- a/pyconbalkan/conference/models.py +++ b/pyconbalkan/conference/models.py @@ -1,9 +1,9 @@ from django.db import models from django_countries.fields import CountryField +from markdownx.models import MarkdownxField from meta.models import ModelMeta from pyconbalkan.core.models import SingleActiveModel -from markdownx.models import MarkdownxField class Conference(SingleActiveModel, ModelMeta): @@ -53,7 +53,21 @@ def __str__(self): return '{} {} {}'.format(self.event, self.name, self.year) -class CountDown(SingleActiveModel): +def _get_default_conference(): + if Conference.objects.exists(): + return Conference.objects.first().id + + +class AbstractConference(models.Model): + conference = models.ForeignKey( + Conference, on_delete=models.CASCADE, default=_get_default_conference + ) + + class Meta: + abstract = True + + +class CountDown(AbstractConference, SingleActiveModel): title = models.CharField(null=True, blank=True, max_length=100) count_down = models.DateTimeField(null=True, blank=True) @@ -61,8 +75,10 @@ def __str__(self): return self.title -class MissionStatement(SingleActiveModel): +class MissionStatement(AbstractConference, SingleActiveModel): content = MarkdownxField(null=True, blank=True) def __str__(self): return self.content + + diff --git a/pyconbalkan/core/views.py b/pyconbalkan/core/views.py index 3ad87d69..37439fce 100644 --- a/pyconbalkan/core/views.py +++ b/pyconbalkan/core/views.py @@ -1,3 +1,4 @@ +from django.db.models import Q from django.shortcuts import render from pyconbalkan.conference.models import CountDown, MissionStatement @@ -6,26 +7,28 @@ def home(request): - count_down = CountDown.objects.filter(active=True) - keynotes = Speaker.objects.filter(active=True, keynote=True).order_by('full_name') + q = Q(conference=request.conference) - keystone_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.keystone) - platinum_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.platinum) - gold_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.gold) - silver_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.silver) - partners = Sponsor.objects.filter(level=SponsorshipLevel.partner) + count_down = CountDown.objects.filter(active=True).filter(q) + keynotes = Speaker.objects.filter(active=True, keynote=True).order_by("full_name").filter(q) - mission_statement = MissionStatement.objects.filter(active=True) + keystone_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.keystone).filter(q) + platinum_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.platinum).filter(q) + gold_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.gold).filter(q) + silver_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.silver).filter(q) + partners = Sponsor.objects.filter(level=SponsorshipLevel.partner).filter(q) + + mission_statement = MissionStatement.objects.filter(active=True).filter(q) context = { - 'keynotes': keynotes, - 'keystone_sponsors': keystone_sponsors, - 'platinum_sponsors': platinum_sponsors, - 'gold_sponsors': gold_sponsors, - 'silver_sponsors': silver_sponsors, - 'partners': partners, - 'count_down': count_down.first() if count_down else None, - 'mission_statement': mission_statement.first() if mission_statement else None, - 'meta': request.conference.as_meta(), + "keynotes": keynotes, + "keystone_sponsors": keystone_sponsors, + "platinum_sponsors": platinum_sponsors, + "gold_sponsors": gold_sponsors, + "silver_sponsors": silver_sponsors, + "partners": partners, + "count_down": count_down.first() if count_down else None, + "mission_statement": mission_statement.first() if mission_statement else None, + "meta": request.conference.as_meta(), } - return render(request, 'home.html', context) + return render(request, "home.html", context) diff --git a/pyconbalkan/news/migrations/0008_post_conference.py b/pyconbalkan/news/migrations/0008_post_conference.py index 5ea07730..d4302de6 100644 --- a/pyconbalkan/news/migrations/0008_post_conference.py +++ b/pyconbalkan/news/migrations/0008_post_conference.py @@ -16,6 +16,6 @@ class Migration(migrations.Migration): migrations.AddField( model_name='post', name='conference', - field=models.ForeignKey(default=pyconbalkan.conference.abstractions._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'), + field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'), ), ] diff --git a/pyconbalkan/news/models.py b/pyconbalkan/news/models.py index 5e52d847..fb7bbd22 100644 --- a/pyconbalkan/news/models.py +++ b/pyconbalkan/news/models.py @@ -3,7 +3,7 @@ from markdownx.models import MarkdownxField from taggit.managers import TaggableManager -from pyconbalkan.conference.abstractions import AbstractConference +from pyconbalkan.conference.models import AbstractConference from pyconbalkan.core.models import ActiveModel diff --git a/pyconbalkan/speaker/migrations/0011_speaker_conference.py b/pyconbalkan/speaker/migrations/0011_speaker_conference.py index b3f238e0..b6892a12 100644 --- a/pyconbalkan/speaker/migrations/0011_speaker_conference.py +++ b/pyconbalkan/speaker/migrations/0011_speaker_conference.py @@ -16,6 +16,6 @@ class Migration(migrations.Migration): migrations.AddField( model_name='speaker', name='conference', - field=models.ForeignKey(default=pyconbalkan.conference.abstractions._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'), + field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'), ), ] diff --git a/pyconbalkan/speaker/models.py b/pyconbalkan/speaker/models.py index 444da30b..01581121 100644 --- a/pyconbalkan/speaker/models.py +++ b/pyconbalkan/speaker/models.py @@ -1,7 +1,7 @@ from django.db import models from django.db.models import CASCADE -from pyconbalkan.conference.abstractions import AbstractConference +from pyconbalkan.conference.models import AbstractConference from pyconbalkan.core.models import Person, ActiveModel diff --git a/pyconbalkan/sponsors/migrations/0010_sponsor_conference.py b/pyconbalkan/sponsors/migrations/0010_sponsor_conference.py index 89f28c4e..d853cfde 100644 --- a/pyconbalkan/sponsors/migrations/0010_sponsor_conference.py +++ b/pyconbalkan/sponsors/migrations/0010_sponsor_conference.py @@ -16,6 +16,6 @@ class Migration(migrations.Migration): migrations.AddField( model_name='sponsor', name='conference', - field=models.ForeignKey(default=pyconbalkan.conference.abstractions._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'), + field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'), ), ] diff --git a/pyconbalkan/sponsors/models.py b/pyconbalkan/sponsors/models.py index de5ddb68..4248e997 100644 --- a/pyconbalkan/sponsors/models.py +++ b/pyconbalkan/sponsors/models.py @@ -5,7 +5,7 @@ from markdownx.models import MarkdownxField from djmoney.models.fields import MoneyField -from pyconbalkan.conference.abstractions import AbstractConference +from pyconbalkan.conference.models import AbstractConference from pyconbalkan.core.models import ActiveModel