Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions pyconbalkan/conference/context.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import threading

singleton = threading.local()
15 changes: 15 additions & 0 deletions pyconbalkan/conference/managers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from django.db import models

from pyconbalkan.conference.context import singleton


class ConferenceManager(models.Manager):
def get_queryset(self):
if hasattr(singleton, "conference"):
return (
super(ConferenceManager, self)
.get_queryset()
.filter(conference=singleton.conference)
)
else:
return super(ConferenceManager, self).get_queryset()
6 changes: 2 additions & 4 deletions pyconbalkan/conference/middleware.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import threading
from urllib.parse import urljoin

from django.conf import settings
from django.http import HttpResponseRedirect

from .context import singleton
from pyconbalkan.conference.models import Conference

context = threading.local()


class ConferenceSelectionMiddleware:
def __init__(self, get_response):
Expand Down Expand Up @@ -63,5 +61,5 @@ def __call__(self, request):
#
# Idea taken from: https://stackoverflow.com/a/27694861/548059

context.conference = request.conference
singleton.conference = request.conference
return self.get_response(request)
21 changes: 7 additions & 14 deletions pyconbalkan/conference/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
from markdownx.models import MarkdownxField
from meta.models import ModelMeta

from pyconbalkan.conference.managers import ConferenceManager
from pyconbalkan.core.models import SingleActiveModel


class Conference(SingleActiveModel, ModelMeta):
INTERNATIONAL = 0
NATIONAL = 1
CONF_TYPE = (
(INTERNATIONAL, 'International'),
(NATIONAL, 'National'),
)
CONF_TYPE = ((INTERNATIONAL, "International"), (NATIONAL, "National"))

event = models.CharField(null=True, blank=True, max_length=100)
name = models.CharField(null=True, blank=True, max_length=100)
Expand All @@ -37,20 +35,16 @@ class Conference(SingleActiveModel, ModelMeta):
# timetable
timetable_pdf = models.FileField(blank=True, null=True)


_metadata = {
'title': 'get_meta_title',
'description': 'get_meta_description',
}
_metadata = {"title": "get_meta_title", "description": "get_meta_description"}

def get_meta_title(self):
return '#{} {} {} {}'.format(self.number, self.event, self.name, self.year)
return "#{} {} {} {}".format(self.number, self.event, self.name, self.year)

def get_meta_description(self):
return 'Welcome to {} {} {}! '.format(self.event, self.name, self.year)
return "Welcome to {} {} {}! ".format(self.event, self.name, self.year)

def __str__(self):
return '{} {} {}'.format(self.event, self.name, self.year)
return "{} {} {}".format(self.event, self.name, self.year)


def _get_default_conference():
Expand All @@ -62,6 +56,7 @@ class AbstractConference(models.Model):
conference = models.ForeignKey(
Conference, on_delete=models.CASCADE, default=_get_default_conference
)
objects = ConferenceManager()

class Meta:
abstract = True
Expand All @@ -80,5 +75,3 @@ class MissionStatement(AbstractConference, SingleActiveModel):

def __str__(self):
return self.content


12 changes: 8 additions & 4 deletions pyconbalkan/core/loaders.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@
from django.template import TemplateDoesNotExist
from django.template.loaders.app_directories import Loader

from pyconbalkan.conference.middleware import context
from pyconbalkan.conference.context import singleton


class PyconLoader(Loader):
def get_template(self, template_name, skip=None):
if not hasattr(context, "conference"):
raise TemplateDoesNotExist("Conference object not be found in context, skipping.")
template_basename = "{:d}_{}".format(context.conference.year, path.basename(template_name))
if not hasattr(singleton, "conference"):
raise TemplateDoesNotExist(
"Conference object not be found in context, skipping."
)
template_basename = "{:d}_{}".format(
singleton.conference.year, path.basename(template_name)
)
template_name = path.join(path.dirname(template_name), template_basename)

return super(PyconLoader, self).get_template(template_name, skip=None)
18 changes: 8 additions & 10 deletions pyconbalkan/core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,16 @@


def home(request):
q = Q(conference=request.conference)
count_down = CountDown.objects.filter(active=True)
keynotes = Speaker.objects.filter(active=True, keynote=True).order_by("full_name")

count_down = CountDown.objects.filter(active=True).filter(q)
keynotes = Speaker.objects.filter(active=True, keynote=True).order_by("full_name").filter(q)
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)

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)
mission_statement = MissionStatement.objects.filter(active=True)

context = {
"keynotes": keynotes,
Expand Down
4 changes: 1 addition & 3 deletions pyconbalkan/news/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@ class PostViewSet(viewsets.ModelViewSet):


def news_view(request):
posts = Post.objects.filter(
active=True, published_date__lte=timezone.now(), conference=request.conference
)
posts = Post.objects.filter(active=True, published_date__lte=timezone.now())
context = {"news": posts}
return render(request, "news.html", context)

Expand Down