Skip to content

Commit bc3cdd7

Browse files
virogenesisKátia Nakamura
authored andcommitted
Added mission statement and countdown with the Conference mixin (#143)
* Added mission statement and countdown with the Conference mixin * conference: add missing migration Signed-off-by: Bojan Jovanovic <[email protected]>
1 parent 8ad62ef commit bc3cdd7

File tree

11 files changed

+79
-49
lines changed

11 files changed

+79
-49
lines changed

pyconbalkan/conference/abstractions.py

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,21 @@
11
from django.contrib import admin
2-
from django.db import models
32
from django.utils.translation import ugettext_lazy as _
43

54
from pyconbalkan.conference.models import Conference
65

76

8-
def _get_default_conference():
9-
if Conference.objects.exists():
10-
return Conference.objects.first().id
11-
12-
13-
class AbstractConference(models.Model):
14-
conference = models.ForeignKey(
15-
Conference, on_delete=models.CASCADE, default=_get_default_conference
16-
)
17-
18-
class Meta:
19-
abstract = True
20-
21-
227
class ConferenceFilter(admin.SimpleListFilter):
23-
title = _('Conference year')
24-
parameter_name = 'conference'
8+
title = _("Conference year")
9+
parameter_name = "conference"
2510

2611
def choices(self, changelist):
2712
for lookup, title in self.lookup_choices:
2813
yield {
29-
'selected': self.value() is lookup or self.value() == str(lookup),
30-
'query_string': changelist.get_query_string(
14+
"selected": self.value() is lookup or self.value() == str(lookup),
15+
"query_string": changelist.get_query_string(
3116
{self.parameter_name: lookup}
3217
),
33-
'display': title,
18+
"display": title,
3419
}
3520

3621
def lookups(self, request, model_admin):

pyconbalkan/conference/admin.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from django.contrib import admin
22

3+
from pyconbalkan.conference.abstractions import ConferenceAbstractAdmin
34
from pyconbalkan.conference.models import Conference, CountDown, MissionStatement
45
from markdownx.admin import MarkdownxModelAdmin
56

@@ -9,12 +10,12 @@ class Meta:
910
model = Conference
1011

1112

12-
class CountDownAdmin(admin.ModelAdmin):
13+
class CountDownAdmin(ConferenceAbstractAdmin):
1314
class Meta:
1415
model = CountDown
1516

1617

17-
class MissionStatementAdmin(MarkdownxModelAdmin):
18+
class MissionStatementAdmin(ConferenceAbstractAdmin, MarkdownxModelAdmin):
1819
class Meta:
1920
model = MissionStatement
2021

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Generated by Django 2.1.2 on 2019-03-03 18:00
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
import pyconbalkan.conference.models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('conference', '0007_auto_20190227_0738'),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name='countdown',
17+
name='conference',
18+
field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'),
19+
),
20+
migrations.AddField(
21+
model_name='missionstatement',
22+
name='conference',
23+
field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'),
24+
),
25+
]

pyconbalkan/conference/models.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from django.db import models
22
from django_countries.fields import CountryField
3+
from markdownx.models import MarkdownxField
34
from meta.models import ModelMeta
45

56
from pyconbalkan.core.models import SingleActiveModel
6-
from markdownx.models import MarkdownxField
77

88

99
class Conference(SingleActiveModel, ModelMeta):
@@ -53,16 +53,32 @@ def __str__(self):
5353
return '{} {} {}'.format(self.event, self.name, self.year)
5454

5555

56-
class CountDown(SingleActiveModel):
56+
def _get_default_conference():
57+
if Conference.objects.exists():
58+
return Conference.objects.first().id
59+
60+
61+
class AbstractConference(models.Model):
62+
conference = models.ForeignKey(
63+
Conference, on_delete=models.CASCADE, default=_get_default_conference
64+
)
65+
66+
class Meta:
67+
abstract = True
68+
69+
70+
class CountDown(AbstractConference, SingleActiveModel):
5771
title = models.CharField(null=True, blank=True, max_length=100)
5872
count_down = models.DateTimeField(null=True, blank=True)
5973

6074
def __str__(self):
6175
return self.title
6276

6377

64-
class MissionStatement(SingleActiveModel):
78+
class MissionStatement(AbstractConference, SingleActiveModel):
6579
content = MarkdownxField(null=True, blank=True)
6680

6781
def __str__(self):
6882
return self.content
83+
84+

pyconbalkan/core/views.py

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from django.db.models import Q
12
from django.shortcuts import render
23

34
from pyconbalkan.conference.models import CountDown, MissionStatement
@@ -6,26 +7,28 @@
67

78

89
def home(request):
9-
count_down = CountDown.objects.filter(active=True)
10-
keynotes = Speaker.objects.filter(active=True, keynote=True).order_by('full_name')
10+
q = Q(conference=request.conference)
1111

12-
keystone_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.keystone)
13-
platinum_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.platinum)
14-
gold_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.gold)
15-
silver_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.silver)
16-
partners = Sponsor.objects.filter(level=SponsorshipLevel.partner)
12+
count_down = CountDown.objects.filter(active=True).filter(q)
13+
keynotes = Speaker.objects.filter(active=True, keynote=True).order_by("full_name").filter(q)
1714

18-
mission_statement = MissionStatement.objects.filter(active=True)
15+
keystone_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.keystone).filter(q)
16+
platinum_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.platinum).filter(q)
17+
gold_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.gold).filter(q)
18+
silver_sponsors = Sponsor.objects.filter(level=SponsorshipLevel.silver).filter(q)
19+
partners = Sponsor.objects.filter(level=SponsorshipLevel.partner).filter(q)
20+
21+
mission_statement = MissionStatement.objects.filter(active=True).filter(q)
1922

2023
context = {
21-
'keynotes': keynotes,
22-
'keystone_sponsors': keystone_sponsors,
23-
'platinum_sponsors': platinum_sponsors,
24-
'gold_sponsors': gold_sponsors,
25-
'silver_sponsors': silver_sponsors,
26-
'partners': partners,
27-
'count_down': count_down.first() if count_down else None,
28-
'mission_statement': mission_statement.first() if mission_statement else None,
29-
'meta': request.conference.as_meta(),
24+
"keynotes": keynotes,
25+
"keystone_sponsors": keystone_sponsors,
26+
"platinum_sponsors": platinum_sponsors,
27+
"gold_sponsors": gold_sponsors,
28+
"silver_sponsors": silver_sponsors,
29+
"partners": partners,
30+
"count_down": count_down.first() if count_down else None,
31+
"mission_statement": mission_statement.first() if mission_statement else None,
32+
"meta": request.conference.as_meta(),
3033
}
31-
return render(request, 'home.html', context)
34+
return render(request, "home.html", context)

pyconbalkan/news/migrations/0008_post_conference.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ class Migration(migrations.Migration):
1616
migrations.AddField(
1717
model_name='post',
1818
name='conference',
19-
field=models.ForeignKey(default=pyconbalkan.conference.abstractions._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'),
19+
field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'),
2020
),
2121
]

pyconbalkan/news/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from markdownx.models import MarkdownxField
44
from taggit.managers import TaggableManager
55

6-
from pyconbalkan.conference.abstractions import AbstractConference
6+
from pyconbalkan.conference.models import AbstractConference
77
from pyconbalkan.core.models import ActiveModel
88

99

pyconbalkan/speaker/migrations/0011_speaker_conference.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ class Migration(migrations.Migration):
1616
migrations.AddField(
1717
model_name='speaker',
1818
name='conference',
19-
field=models.ForeignKey(default=pyconbalkan.conference.abstractions._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'),
19+
field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'),
2020
),
2121
]

pyconbalkan/speaker/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.db import models
22
from django.db.models import CASCADE
33

4-
from pyconbalkan.conference.abstractions import AbstractConference
4+
from pyconbalkan.conference.models import AbstractConference
55
from pyconbalkan.core.models import Person, ActiveModel
66

77

pyconbalkan/sponsors/migrations/0010_sponsor_conference.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ class Migration(migrations.Migration):
1616
migrations.AddField(
1717
model_name='sponsor',
1818
name='conference',
19-
field=models.ForeignKey(default=pyconbalkan.conference.abstractions._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'),
19+
field=models.ForeignKey(default=pyconbalkan.conference.models._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'),
2020
),
2121
]

0 commit comments

Comments
 (0)