Skip to content

Commit a946eb5

Browse files
author
Bojan Jovanovic
committed
Cleanup + localhost does not redirect 🙏
Signed-off-by: Bojan Jovanovic <[email protected]>
1 parent 4cef491 commit a946eb5

File tree

4 files changed

+30
-29
lines changed

4 files changed

+30
-29
lines changed

pyconbalkan/conference/middleware.py

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@ def __init__(self, get_response):
1111
self.get_response = get_response
1212

1313
def __call__(self, request):
14-
# Code to be executed for each request before
15-
# the view (and later middleware) are called.
14+
"""
15+
Code to be executed for each request before
16+
the view (and later middleware) are called.
17+
Domain format : 2019.pyconbalkan.com
1618
17-
# Domain format : 2019.pyconbalkan.com
18-
domain = request.META['HTTP_HOST']
19+
Every request will have an atribute `conference` in it
20+
`conference` is the conference.models.Conference object for the
21+
respective year fetched from it's domain.
22+
"""
23+
24+
domain = request.META.get('HTTP_HOST', 'localhost')
1925
try:
2026
domain_year = int(domain.split('.')[0])
2127
q = {
@@ -24,19 +30,20 @@ def __call__(self, request):
2430
if not request.user.is_superuser:
2531
q['active'] = True
2632

27-
conference = Conference.objects.get(**q)
33+
request.conference = Conference.objects.get(**q)
2834
except (Conference.DoesNotExist, ValueError):
29-
conference = Conference.objects.filter(active=True).first()
35+
request.conference = Conference.objects.filter(active=True).first()
36+
37+
conference_domain = "{}.{}".format(
38+
request.conference.year,
39+
settings.META_SITE_DOMAIN
40+
)
3041

31-
conference_domain = conference.year + "." + settings.META_SITE_DOMAIN
32-
if conference_domain != request.META['HTTP_HOST']:
42+
if settings.DEBUG is False and conference_domain != request.META['HTTP_HOST']:
3343
return HttpResponseRedirect(
34-
urljoin()
44+
urljoin(
45+
"{}://{}".format(settings.META_SITE_PROTOCOL, conference_domain
46+
), "/")
3547
)
3648

37-
# Every request will have an atribute `conference` in it
38-
# `conference` is the conference.models.Conference object for the
39-
# respective year fetched from it's domain
40-
request.conference = conference
41-
response = self.get_response(request)
42-
return response
49+
return self.get_response(request)

pyconbalkan/core/views.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
from django.shortcuts import render
22

3-
from pyconbalkan.conference.models import Conference, CountDown, MissionStatement
3+
from pyconbalkan.conference.models import CountDown, MissionStatement
44
from pyconbalkan.speaker.models import Speaker
55
from pyconbalkan.sponsors.models import Sponsor, SponsorshipLevel
66

77

88
def home(request):
9-
conference = request.conference
109
count_down = CountDown.objects.filter(active=True)
1110
keynotes = Speaker.objects.filter(active=True, keynote=True).order_by('full_name')
1211

@@ -27,6 +26,6 @@ def home(request):
2726
'partners': partners,
2827
'count_down': count_down.first() if count_down else None,
2928
'mission_statement': mission_statement.first() if mission_statement else None,
30-
'meta': conference.as_meta(),
29+
'meta': request.conference.as_meta(),
3130
}
3231
return render(request, 'home.html', context)

pyconbalkan/timetable/views.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
from django.shortcuts import render, redirect
33
from rest_framework import viewsets
44

5-
from pyconbalkan.conference.models import Conference
65
from pyconbalkan.timetable.models import Room, Slot, Timetable
76
from pyconbalkan.timetable.serializers import TimetableSerializer
87

@@ -13,9 +12,8 @@ class TimetableViewSet(viewsets.ModelViewSet):
1312

1413

1514
def timetable_pdf_view(request):
16-
conference = request.conference
17-
if conference and conference.timetable_pdf:
18-
return redirect(conference.timetable_pdf.url)
15+
if request.conference and request.conference.timetable_pdf:
16+
return redirect(request.conference.timetable_pdf.url)
1917
return redirect('/')
2018

2119

pyconbalkan/urls.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
from django.contrib import admin
33
from django.urls import path
44
from django.views.generic import TemplateView
5-
from django.views.static import serve
6-
75
from markdownx import urls as markdownx
6+
87
from pyconbalkan.about.api_urls import router as about
98
from pyconbalkan.about.views import about_view
109
from pyconbalkan.cfp.api_urls import router as cfp
@@ -15,21 +14,19 @@
1514
from pyconbalkan.contact.api_urls import router as contact
1615
from pyconbalkan.contact.views import contact_view
1716
from pyconbalkan.core import routers, views
17+
from pyconbalkan.faq.api_urls import router as faq
18+
from pyconbalkan.faq.views import faq_view
1819
from pyconbalkan.info.views import info_view
1920
from pyconbalkan.news.api_urls import router as news
2021
from pyconbalkan.news.views import *
2122
from pyconbalkan.organizers.api_urls import router as organizers
2223
from pyconbalkan.organizers.views import (organizer_view, organizers_list,
2324
volunteers_createview)
24-
from pyconbalkan.settings import PDF_ROOT
2525
from pyconbalkan.speaker.api_urls import router as speaker
2626
from pyconbalkan.speaker.views import *
2727
from pyconbalkan.sponsors.api_urls import router as sponsors
28-
29-
from pyconbalkan.timetable.views import timetable_view, timetable_pdf_view
30-
from pyconbalkan.faq.views import faq_view
31-
from pyconbalkan.faq.api_urls import router as faq
3228
from pyconbalkan.sponsors.views import sponsor_view, sponsoring_view, sponsors_view
29+
from pyconbalkan.timetable.views import timetable_view, timetable_pdf_view
3330

3431
router = routers.DefaultRouter()
3532
router.extend(conference)

0 commit comments

Comments
 (0)