Skip to content

Commit c4c2617

Browse files
author
Bojan Jovanovic
committed
Speakers + Sponsors editing enabled.
Signed-off-by: Bojan Jovanovic <[email protected]>
1 parent f7c4dec commit c4c2617

File tree

8 files changed

+95
-7
lines changed

8 files changed

+95
-7
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
*.sqlite3
88
*.py[cod]
99
__pycache__
10-
/core/static
10+
1111
/staticfiles/
Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,49 @@
1+
from django.contrib import admin
12
from django.db import models
3+
from django.utils.translation import ugettext_lazy as _
4+
25
from pyconbalkan.conference.models import Conference
36

47

8+
def _get_default_conference():
9+
return Conference.objects.first().id
10+
11+
512
class AbstractConference(models.Model):
6-
conference = models.ForeignKey(Conference, on_delete=models.CASCADE)
13+
conference = models.ForeignKey(
14+
Conference, on_delete=models.CASCADE, default=_get_default_conference
15+
)
716

817
class Meta:
9-
abstract = True
18+
abstract = True
19+
20+
21+
class ConferenceFilter(admin.SimpleListFilter):
22+
title = _('Conference year')
23+
parameter_name = 'conference'
24+
25+
def choices(self, changelist):
26+
for lookup, title in self.lookup_choices:
27+
yield {
28+
'selected': self.value() is lookup or self.value() == str(lookup),
29+
'query_string': changelist.get_query_string(
30+
{self.parameter_name: lookup}
31+
),
32+
'display': title,
33+
}
34+
35+
def lookups(self, request, model_admin):
36+
choices = []
37+
for _ in Conference.objects.all():
38+
if _ == request.conference:
39+
choices.append((None, "{} Current".format(_)))
40+
else:
41+
choices.append((_.id, str(_)))
42+
return choices
43+
44+
def queryset(self, request, queryset):
45+
return queryset.filter(conference=self.value() or request.conference.pk)
46+
47+
48+
class ConferenceAbstractAdmin(admin.ModelAdmin):
49+
list_filter = (ConferenceFilter,)

pyconbalkan/speaker/admin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
from django.contrib import admin
22
from markdownx.admin import MarkdownxModelAdmin
33

4+
from pyconbalkan.conference.abstractions import ConferenceAbstractAdmin
45
from pyconbalkan.speaker.models import Speaker, SpeakerPhoto
56

67

78
class SpeakerImageInline(admin.TabularInline):
89
model = SpeakerPhoto
910

1011

11-
class SpeakerAdmin(MarkdownxModelAdmin):
12+
class SpeakerAdmin(ConferenceAbstractAdmin, MarkdownxModelAdmin):
1213
inlines = [SpeakerImageInline]
1314

1415

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

pyconbalkan/speaker/models.py

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

4+
from pyconbalkan.conference.abstractions import AbstractConference
45
from pyconbalkan.core.models import Person, ActiveModel
56

67

7-
class Speaker(ActiveModel, Person):
8+
class Speaker(AbstractConference, ActiveModel, Person):
89
keynote = models.BooleanField(default=False)
910

1011
def __str__(self):

pyconbalkan/sponsors/admin.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
from django.contrib import admin
2+
3+
from pyconbalkan.conference.abstractions import ConferenceAbstractAdmin
24
from pyconbalkan.sponsors.models import Package, PackageItem, Sponsor, Sponsoring
35

4-
admin.site.register(Sponsor)
6+
7+
admin.site.register(Sponsor, ConferenceAbstractAdmin)
58
admin.site.register(Sponsoring)
69
admin.site.register(Package)
710
admin.site.register(PackageItem)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 2.1.7 on 2019-03-03 14:42
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
import pyconbalkan.conference.abstractions
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('conference', '0007_auto_20190227_0738'),
12+
('sponsors', '0009_auto_20190303_1426'),
13+
]
14+
15+
operations = [
16+
migrations.AddField(
17+
model_name='sponsor',
18+
name='conference',
19+
field=models.ForeignKey(default=pyconbalkan.conference.abstractions._get_default_conference, on_delete=django.db.models.deletion.CASCADE, to='conference.Conference'),
20+
),
21+
]

pyconbalkan/sponsors/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from markdownx.models import MarkdownxField
66
from djmoney.models.fields import MoneyField
77

8+
from pyconbalkan.conference.abstractions import AbstractConference
89
from pyconbalkan.core.models import ActiveModel
910

1011

@@ -25,7 +26,7 @@ class SponsorshipLevel(DjangoChoices):
2526
}
2627

2728

28-
class Sponsor(models.Model):
29+
class Sponsor(AbstractConference):
2930
name = models.CharField(max_length=256)
3031
description = MarkdownxField()
3132
level = models.CharField(max_length=16, choices=SponsorshipLevel.choices)

0 commit comments

Comments
 (0)