diff options
| author | Magnus Hagander | 2016-01-16 16:10:57 +0000 |
|---|---|---|
| committer | Magnus Hagander | 2016-01-16 16:10:57 +0000 |
| commit | 34ef7b4da6877afff18d50c09c2f504618229c7b (patch) | |
| tree | 423d7cb011b00b48ec0454e841a9f97cda4312f2 /postgresqleu | |
| parent | 862b03b17d43582f45ca8115a5a9883819be6ed1 (diff) | |
Remove all support for mixed content (http/https)
Instead, as of now we run all content over https always. The enforcment of this is
placed in the webserver, which makes it impossible to miss it on some feature.
This retires the setting SITEBASE_SSL, and changes SITEBASE to be https.
It also retires DISABLE_HTTPS_REDIRECTS, which has no use anymore.
And finally, SESSION_COOKIE_SECURE is now set by default, and needs to be turned
off in local development environments.
Diffstat (limited to 'postgresqleu')
27 files changed, 53 insertions, 198 deletions
diff --git a/postgresqleu/accountinfo/views.py b/postgresqleu/accountinfo/views.py index cc1ef12a..a781464d 100644 --- a/postgresqleu/accountinfo/views.py +++ b/postgresqleu/accountinfo/views.py @@ -7,10 +7,9 @@ from django.contrib.auth.models import User import json -from postgresqleu.util.decorators import user_passes_test_or_error, ssl_required +from postgresqleu.util.decorators import user_passes_test_or_error from postgresqleu.auth import user_search, user_import -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) def search(request): @@ -40,7 +39,6 @@ def search(request): 'e': u['e'], } for u in users]), content_type='application/json') -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) @transaction.atomic diff --git a/postgresqleu/accounting/views.py b/postgresqleu/accounting/views.py index 31cc6f5b..6d1b4a5f 100644 --- a/postgresqleu/accounting/views.py +++ b/postgresqleu/accounting/views.py @@ -10,13 +10,12 @@ from django.core.paginator import Paginator from datetime import datetime, date -from postgresqleu.util.decorators import user_passes_test_or_error, ssl_required +from postgresqleu.util.decorators import user_passes_test_or_error from models import JournalEntry, JournalItem, JournalUrl, Year, Object from models import IncomingBalance, Account from forms import JournalEntryForm, JournalItemForm, JournalItemFormset -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('accounting')) def index(request): @@ -60,7 +59,6 @@ class EntryPaginator(Paginator): else: return self.page_range -@ssl_required @login_required @transaction.atomic @user_passes_test_or_error(lambda u: u.has_module_perms('accounting')) @@ -87,7 +85,6 @@ def year(request, year): 'searchterm': searchterm, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic @user_passes_test_or_error(lambda u: u.has_module_perms('accounting')) @@ -115,7 +112,6 @@ def new(request, year): return HttpResponseRedirect('/accounting/e/%s/' % entry.pk) -@ssl_required @login_required @transaction.atomic @user_passes_test_or_error(lambda u: u.has_module_perms('accounting')) @@ -282,7 +278,6 @@ def _collate_results(query, queryparam, numvalues): return (results, totalresult) -@ssl_required @login_required @transaction.atomic @user_passes_test_or_error(lambda u: u.has_module_perms('accounting')) @@ -363,7 +358,6 @@ SELECT ac.name AS acname, ag.name AS agname, anum, a.name, 'accounts': Account.objects.filter(group__accountclass__inbalance=True), }, context_instance=RequestContext(request)) -@ssl_required @login_required @transaction.atomic @user_passes_test_or_error(lambda u: u.has_module_perms('accounting')) diff --git a/postgresqleu/adyen/management/commands/send_adyen_logreport.py b/postgresqleu/adyen/management/commands/send_adyen_logreport.py index 8bb7f214..66dbe054 100755 --- a/postgresqleu/adyen/management/commands/send_adyen_logreport.py +++ b/postgresqleu/adyen/management/commands/send_adyen_logreport.py @@ -45,7 +45,7 @@ class Command(BaseCommand): sio = StringIO() sio.write("The following notifications have not been confirmed in the Adyen integration.\nThese need to be manually processed and then flagged as confirmed!\n\nThis list only contains unconfirmed events older than 24 hours.\n\n\n") for l in lines: - sio.write("%s: %s (%s%s)\n" % (l.eventDate, l.eventCode, settings.SITEBASE_SSL, urlresolvers.reverse('admin:adyen_notification_change', args=(l.id,)))) + sio.write("%s: %s (%s%s)\n" % (l.eventDate, l.eventCode, settings.SITEBASE, urlresolvers.reverse('admin:adyen_notification_change', args=(l.id,)))) send_simple_mail(settings.INVOICE_SENDER_EMAIL, settings.ADYEN_NOTIFICATION_RECEIVER, @@ -62,7 +62,7 @@ class Command(BaseCommand): sio.write("The following payments have been authorized, but not captured for more than %s days.\nThese probably need to be verified manually.\n\n\n" % UNSETTLED_THRESHOLD) for l in lines: - sio.write("%s at %s: %s (%s%s)\n" % (l.pspReference, l.authorizedat, l.amount, settings.SITEBASE_SSL, urlresolvers.reverse('admin:adyen_transactionstatus_change', args=(l.id,)))) + sio.write("%s at %s: %s (%s%s)\n" % (l.pspReference, l.authorizedat, l.amount, settings.SITEBASE, urlresolvers.reverse('admin:adyen_transactionstatus_change', args=(l.id,)))) send_simple_mail(settings.INVOICE_SENDER_EMAIL, settings.ADYEN_NOTIFICATION_RECEIVER, diff --git a/postgresqleu/adyen/views.py b/postgresqleu/adyen/views.py index e742f48b..65095da5 100644 --- a/postgresqleu/adyen/views.py +++ b/postgresqleu/adyen/views.py @@ -8,7 +8,6 @@ from django.views.decorators.csrf import csrf_exempt import base64 -from postgresqleu.util.decorators import ssl_required from postgresqleu.util.payment.adyen import calculate_signature from postgresqleu.util.payment.adyen import AdyenBanktransfer from postgresqleu.invoices.models import Invoice @@ -17,7 +16,6 @@ from postgresqleu.invoices.util import InvoiceManager from models import RawNotification, AdyenLog, ReturnAuthorizationStatus from util import process_raw_adyen_notification -@ssl_required @transaction.atomic def adyen_return_handler(request): sig = calculate_signature(request.GET) @@ -48,9 +46,9 @@ def adyen_return_handler(request): returnurl = processor.get_return_url(invoice) else: if invoice.recipient_user: - returnurl = "%s/invoices/%s/" % (settings.SITEBASE_SSL, invoice.pk) + returnurl = "%s/invoices/%s/" % (settings.SITEBASE, invoice.pk) else: - returnurl = "%s/invoices/%s/%s/" % (settings.SITEBASE_SSL, invoice.pk, invoice.recipient_secret) + returnurl = "%s/invoices/%s/%s/" % (settings.SITEBASE, invoice.pk, invoice.recipient_secret) AdyenLog(pspReference='', message='Return handler received %s result for %s' % (request.GET['authResult'], request.GET['merchantReturnData']), error=False).save() if request.GET['authResult'] == 'REFUSED': @@ -94,7 +92,6 @@ def adyen_return_handler(request): }, context_instance=RequestContext(request)) -@ssl_required @csrf_exempt def adyen_notify_handler(request): # Handle asynchronous notifications from the Adyen payment platform @@ -141,7 +138,6 @@ def _invoice_payment(request, invoice): 'paymenturl': paymenturl, }, RequestContext(request)) -@ssl_required @login_required def invoicepayment(request, invoiceid): invoice = get_object_or_404(Invoice, pk=invoiceid, deleted=False, finalized=True) @@ -150,7 +146,6 @@ def invoicepayment(request, invoiceid): return _invoice_payment(request, invoice) -@ssl_required def invoicepayment_secret(request, invoiceid, secret): invoice = get_object_or_404(Invoice, pk=invoiceid, deleted=False, finalized=True, recipient_secret=secret) return _invoice_payment(request, invoice) diff --git a/postgresqleu/braintreepayment/views.py b/postgresqleu/braintreepayment/views.py index e0bab8c4..d7c52204 100644 --- a/postgresqleu/braintreepayment/views.py +++ b/postgresqleu/braintreepayment/views.py @@ -9,8 +9,6 @@ from datetime import datetime import braintree -from postgresqleu.util.decorators import ssl_required - from postgresqleu.invoices.models import Invoice, InvoicePaymentMethod from postgresqleu.invoices.util import InvoiceManager from postgresqleu.mailqueue.util import send_simple_mail @@ -21,7 +19,6 @@ from util import initialize_braintree class BraintreeProcessingException(Exception): pass -@ssl_required def payment_post(request): nonce = request.POST['payment_method_nonce'] invoice = get_object_or_404(Invoice, pk=request.POST['invoice'], deleted=False, finalized=True) @@ -32,9 +29,9 @@ def payment_post(request): returnurl = processor.get_return_url(invoice) else: if invoice.recipient_user: - returnurl = "%s/invoices/%s/" % (settings.SITEBASE_SSL, invoice.pk) + returnurl = "%s/invoices/%s/" % (settings.SITEBASE, invoice.pk) else: - returnurl = "%s/invoices/%s/%s/" % (settings.SITEBASE_SSL, invoice.pk, invoice.recipient_secret) + returnurl = "%s/invoices/%s/%s/" % (settings.SITEBASE, invoice.pk, invoice.recipient_secret) # Generate the transaction initialize_braintree() @@ -141,7 +138,6 @@ def _invoice_payment(request, invoice): 'token': token, }, RequestContext(request)) -@ssl_required @login_required def invoicepayment(request, invoiceid): invoice = get_object_or_404(Invoice, pk=invoiceid, deleted=False, finalized=True) @@ -150,7 +146,6 @@ def invoicepayment(request, invoiceid): return _invoice_payment(request, invoice) -@ssl_required def invoicepayment_secret(request, invoiceid, secret): invoice = get_object_or_404(Invoice, pk=invoiceid, deleted=False, finalized=True, recipient_secret=secret) return _invoice_payment(request, invoice) diff --git a/postgresqleu/confreg/feedback.py b/postgresqleu/confreg/feedback.py index b5dc2875..8eda5cc6 100644 --- a/postgresqleu/confreg/feedback.py +++ b/postgresqleu/confreg/feedback.py @@ -3,8 +3,6 @@ from django.contrib.auth.decorators import login_required from django.db.models import Count from django.db import connection -from postgresqleu.util.decorators import ssl_required - from models import Conference, ConferenceFeedbackQuestion, ConferenceFeedbackAnswer from views import ConferenceContext @@ -31,7 +29,6 @@ def build_feedback_response(question): r['graphdata'] = build_graphdata(question, 'rateanswer', range(0,6)) return r -@ssl_required @login_required def feedback_report(request, confname): if request.user.is_superuser: @@ -69,7 +66,6 @@ def build_toplists(what, query): tl['list'] = cursor.fetchall() yield tl -@ssl_required @login_required def feedback_sessions(request, confname): if request.user.is_superuser: diff --git a/postgresqleu/confreg/invoicehandler.py b/postgresqleu/confreg/invoicehandler.py index b23ffad0..69e70edd 100644 --- a/postgresqleu/confreg/invoicehandler.py +++ b/postgresqleu/confreg/invoicehandler.py @@ -92,7 +92,7 @@ class InvoiceProcessor(object): reg = ConferenceRegistration.objects.get(pk=invoice.processorid) except ConferenceRegistration.DoesNotExist: raise Exception("Could not find conference registration %s" % invoice.processorid) - return "%s/events/register/%s/" % (settings.SITEBASE_SSL, reg.conference.urlname) + return "%s/events/register/%s/" % (settings.SITEBASE, reg.conference.urlname) @@ -187,7 +187,7 @@ class BulkInvoiceProcessor(object): bp = BulkPayment.objects.get(pk=invoice.processorid) except ConferenceRegistration.DoesNotExist: raise Exception("Could not find bulk payment %s" % invoice.processor) - return "%s/events/bulkpay/%s/%s/" % (settings.SITEBASE_SSL, bp.conference.urlname, invoice.processorid) + return "%s/events/bulkpay/%s/%s/" % (settings.SITEBASE, bp.conference.urlname, invoice.processorid) @@ -238,4 +238,4 @@ class AddonInvoiceProcessor(object): except PendingAdditionalOrder.DoesNotExist: raise Exception("Could not find additional options order %s!" % invoice.processorid) - return "%s/events/register/%s/" % (settings.SITEBASE_SSL, order.reg.conference.urlname) + return "%s/events/register/%s/" % (settings.SITEBASE, order.reg.conference.urlname) diff --git a/postgresqleu/confreg/management/commands/confreg_expire_waitlist.py b/postgresqleu/confreg/management/commands/confreg_expire_waitlist.py index afe5aea8..22da3c27 100644 --- a/postgresqleu/confreg/management/commands/confreg_expire_waitlist.py +++ b/postgresqleu/confreg/management/commands/confreg_expire_waitlist.py @@ -52,7 +52,7 @@ class Command(BaseCommand): 'conference': reg.conference, 'reg': reg, 'offerexpires': w.offerexpires, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })), sendername = reg.conference.conferencename, receivername = u"{0} {1}".format(reg.firstname, reg.lastname), diff --git a/postgresqleu/confreg/management/commands/confreg_send_reminders.py b/postgresqleu/confreg/management/commands/confreg_send_reminders.py index 710071c3..5bd3dffa 100644 --- a/postgresqleu/confreg/management/commands/confreg_send_reminders.py +++ b/postgresqleu/confreg/management/commands/confreg_send_reminders.py @@ -89,7 +89,7 @@ class Command(BaseCommand): template.render(Context({ 'conference': conference, 'sessions': sessions, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })), sendername = conference.conferencename, receivername = speaker.fullname, @@ -123,7 +123,7 @@ class Command(BaseCommand): "Your registration to {0}".format(conference), template.render(Context({ 'conference': conference, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })), sendername = conference.conferencename, receivername = speaker.fullname, @@ -157,7 +157,7 @@ class Command(BaseCommand): template.render(Context({ 'conference': conference, 'reg': reg, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })), sendername = conference.conferencename, receivername = reg.fullname, @@ -185,7 +185,7 @@ class Command(BaseCommand): template.render(Context({ 'conference': conference, 'session': sess, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })), sendername = conference.conferencename, receivername = spk.name, diff --git a/postgresqleu/confreg/pdfschedule.py b/postgresqleu/confreg/pdfschedule.py index a5014d0a..20bcc57e 100644 --- a/postgresqleu/confreg/pdfschedule.py +++ b/postgresqleu/confreg/pdfschedule.py @@ -20,8 +20,6 @@ from reportlab.pdfbase.ttfonts import TTFont from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.units import cm, mm -from postgresqleu.util.decorators import ssl_required - from models import Conference, Room, Track, RegistrationDay, ConferenceSession from views import render_conference_response @@ -331,7 +329,6 @@ class PdfScheduleForm(forms.Form): self.fields['day'].queryset = RegistrationDay.objects.filter(conference=conference) self.fields['tracks'].queryset = alltracks -@ssl_required @login_required def pdfschedule(request, confname): if request.user.is_superuser: diff --git a/postgresqleu/confreg/reporting.py b/postgresqleu/confreg/reporting.py index a2e71e2d..897f07c2 100644 --- a/postgresqleu/confreg/reporting.py +++ b/postgresqleu/confreg/reporting.py @@ -4,7 +4,7 @@ from django.contrib.auth.decorators import login_required from django.contrib import messages from django.db import connection -from postgresqleu.util.decorators import user_passes_test_or_error, ssl_required +from postgresqleu.util.decorators import user_passes_test_or_error from datetime import datetime @@ -19,7 +19,6 @@ class Header(object): def __unicode__(self): return self.hdr -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.is_superuser) def timereport(request): diff --git a/postgresqleu/confreg/util.py b/postgresqleu/confreg/util.py index 0ac3a623..15853544 100644 --- a/postgresqleu/confreg/util.py +++ b/postgresqleu/confreg/util.py @@ -154,7 +154,7 @@ def expire_additional_options(reg): 'reg': reg, 'options': expireset, 'optionscount': len(expireset), - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })), sendername = reg.conference.conferencename, receivername = u"{0} {1}".format(reg.firstname, reg.lastname)) diff --git a/postgresqleu/confreg/views.py b/postgresqleu/confreg/views.py index f08b5722..2642a426 100644 --- a/postgresqleu/confreg/views.py +++ b/postgresqleu/confreg/views.py @@ -36,7 +36,7 @@ from util import get_invoice_autocancel from models import get_status_string from regtypes import confirm_special_reg_type -from postgresqleu.util.decorators import user_passes_test_or_error, ssl_required +from postgresqleu.util.decorators import user_passes_test_or_error from postgresqleu.invoices.models import Invoice, InvoicePaymentMethod, InvoiceRow from postgresqleu.confwiki.models import Wikipage from postgresqleu.invoices.util import InvoiceManager, InvoicePresentationWrapper @@ -167,7 +167,6 @@ def _registration_dashboard(request, conference, reg): 'invoices': invoices, }) -@ssl_required @login_required @transaction.atomic def home(request, confname): @@ -253,7 +252,7 @@ def home(request, confname): return render_conference_response(request, conference, 'confreg/regform_completed.html', { 'reg': reg, - 'invoice': InvoicePresentationWrapper(reg.invoice, "%s/events/register/%s/" % (settings.SITEBASE_SSL, conference.urlname)), + 'invoice': InvoicePresentationWrapper(reg.invoice, "%s/events/register/%s/" % (settings.SITEBASE, conference.urlname)), }) # Else fall through and render the form @@ -263,7 +262,7 @@ def home(request, confname): 'form': form, 'form_is_saved': form_is_saved, 'reg': reg, - 'invoice': InvoicePresentationWrapper(reg.invoice, "%s/events/register/%s/" % (settings.SITEBASE_SSL, conference.urlname)), + 'invoice': InvoicePresentationWrapper(reg.invoice, "%s/events/register/%s/" % (settings.SITEBASE, conference.urlname)), 'additionaloptions': conference.conferenceadditionaloption_set.filter(public=True), 'costamount': reg.regtype and reg.regtype.cost or 0, }) @@ -274,7 +273,6 @@ def feedback_available(request): 'conferences': conferences, }, context_instance=RequestContext(request)) -@ssl_required @login_required @transaction.atomic def reg_add_options(request, confname): @@ -419,7 +417,6 @@ def reg_add_options(request, confname): return HttpResponseRedirect('/invoices/{0}/{1}/'.format(order.invoice.id, order.invoice.recipient_secret)) -@ssl_required @login_required def feedback(request, confname): conference = get_object_or_404(Conference, urlname=confname) @@ -466,7 +463,6 @@ def feedback(request, confname): 'is_tester': is_conf_tester, }) -@ssl_required @login_required def feedback_session(request, confname, sessionid): # Room for optimization: don't get these as separate steps @@ -510,7 +506,6 @@ def feedback_session(request, confname, sessionid): }) -@ssl_required @login_required @transaction.atomic def feedback_conference(request, confname): @@ -738,7 +733,6 @@ def speakerphoto(request, speakerid): speakerphoto = get_object_or_404(Speaker_Photo, pk=speakerid) return HttpResponse(base64.b64decode(speakerphoto.photo), content_type='image/jpg') -@ssl_required @login_required def speakerprofile(request, confurlname=None): speaker = conferences = callforpapers = None @@ -780,7 +774,6 @@ def speakerprofile(request, confurlname=None): 'form': form, }) -@ssl_required @login_required def callforpapers(request, confname): conference = get_object_or_404(Conference, urlname=confname) @@ -832,7 +825,6 @@ def callforpapers(request, confname): }) -@ssl_required @login_required def callforpapers_edit(request, confname, sessionid): conference = get_object_or_404(Conference, urlname=confname) @@ -921,7 +913,6 @@ def callforpapers_edit(request, confname, sessionid): 'savedok': savedok, }) -@ssl_required @login_required @transaction.atomic def callforpapers_confirm(request, confname, sessionid): @@ -959,7 +950,7 @@ def callforpapers_confirm(request, confname, sessionid): template.render(Context({ 'conference': conference, 'session': session, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })), sendername = conference.conferencename, receivername = spk.fullname, @@ -973,7 +964,6 @@ def callforpapers_confirm(request, confname, sessionid): 'session': session, }) -@ssl_required @login_required @transaction.atomic def confirmreg(request, confname): @@ -1135,7 +1125,6 @@ def confirmreg(request, confname): }) -@ssl_required @login_required @transaction.atomic def waitlist_signup(request, confname): @@ -1169,7 +1158,6 @@ def waitlist_signup(request, confname): # which will show the waitlist information. return HttpResponseRedirect("../confirm/") -@ssl_required @login_required @transaction.atomic def waitlist_cancel(request, confname): @@ -1201,13 +1189,11 @@ def waitlist_cancel(request, confname): # which will show the waitlist information. return HttpResponseRedirect("../confirm/") -@ssl_required @login_required def cancelreg(request, confname): conference = get_object_or_404(Conference, urlname=confname) return render_conference_response(request, conference, 'confreg/canceled.html') -@ssl_required @login_required @transaction.atomic def invoice(request, confname, regid): @@ -1238,7 +1224,6 @@ def invoice(request, confname, regid): 'invoice': reg.invoice, }) -@ssl_required @login_required def attendee_mail(request, confname, mailid): conference = get_object_or_404(Conference, urlname=confname) @@ -1251,7 +1236,6 @@ def attendee_mail(request, confname, mailid): 'mail': mail, }) -@ssl_required @login_required @transaction.atomic @user_passes_test_or_error(lambda u: u.has_module_perms('invoicemgr')) @@ -1311,7 +1295,6 @@ def createvouchers(request): 'form': form, }, context_instance=RequestContext(request)) -@ssl_required @login_required @transaction.atomic def viewvouchers(request, batchid): @@ -1338,7 +1321,7 @@ def viewvouchers(request, batchid): vouchermailtext = get_template('confreg/mail/prepaid_vouchers.txt').render(Context({ 'batch': batch, 'vouchers': vouchers, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })) return render_to_response('confreg/prepaid_create_list.html', { @@ -1348,7 +1331,6 @@ def viewvouchers(request, batchid): 'vouchermailtext': vouchermailtext, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic @user_passes_test_or_error(lambda u: u.has_module_perms('invoicemgr')) @@ -1359,7 +1341,7 @@ def emailvouchers(request, batchid): vouchermailtext = get_template('confreg/mail/prepaid_vouchers.txt').render(Context({ 'batch': batch, 'vouchers': vouchers, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })) send_simple_mail(batch.conference.contactaddr, batch.buyer.email, @@ -1370,7 +1352,6 @@ def emailvouchers(request, batchid): ) return HttpResponse('OK') -@ssl_required @login_required @transaction.atomic def bulkpay(request, confname): @@ -1502,7 +1483,6 @@ def bulkpay(request, confname): }) -@ssl_required @login_required def bulkpay_view(request, confname, bulkpayid): conference = get_object_or_404(Conference, urlname=confname) @@ -1542,7 +1522,6 @@ class UnscheduledSession(object): self.ispending = (session.status == 3) -@ssl_required @login_required @transaction.atomic def talkvote(request, confname): @@ -1655,7 +1634,6 @@ def talkvote(request, confname): 'status_choices': STATUS_CHOICES, }, context_instance=RequestContext(request)) -@ssl_required @login_required @csrf_exempt @transaction.atomic @@ -1749,7 +1727,6 @@ def createschedule(request, confname): 'sesswidth': 600 / len(rooms), }, context_instance=RequestContext(request)) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.is_superuser) def publishschedule(request, confname): @@ -1799,7 +1776,6 @@ def publishschedule(request, confname): 'changes': changes, }, context_instance=RequestContext(request)) -@ssl_required @login_required def reports(request, confname): if request.user.is_superuser: @@ -1817,7 +1793,6 @@ def reports(request, confname): }, context_instance=RequestContext(request)) -@ssl_required @login_required def advanced_report(request, confname): if request.user.is_superuser: @@ -1833,7 +1808,6 @@ def advanced_report(request, confname): return build_attendee_report(conference, request.POST ) -@ssl_required @login_required def simple_report(request, confname): if request.user.is_superuser: @@ -1864,7 +1838,6 @@ def simple_report(request, confname): 'data': d, }, RequestContext(request)) -@ssl_required @login_required def admin_dashboard(request): if request.user.is_superuser: @@ -1889,7 +1862,6 @@ def admin_dashboard(request): 'conferences': conferences, }, RequestContext(request)) -@ssl_required @login_required def admin_dashboard_single(request, urlname): if request.user.is_superuser: @@ -1901,7 +1873,6 @@ def admin_dashboard_single(request, urlname): 'conference': conference, }, RequestContext(request)) -@ssl_required @login_required def admin_registration_dashboard(request, urlname): if request.user.is_superuser: @@ -1951,7 +1922,6 @@ def admin_registration_dashboard(request, urlname): 'tables': tables, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def admin_waitlist(request, urlname): @@ -1998,7 +1968,7 @@ def admin_waitlist(request, urlname): 'conference': conference, 'reg': r, 'offerexpires': wl.offerexpires, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })), sendername = conference.conferencename, receivername = u"{0} {1}".format(r.firstname, r.lastname), @@ -2020,7 +1990,6 @@ def admin_waitlist(request, urlname): 'form': form, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def admin_attendeemail(request, urlname): @@ -2045,7 +2014,7 @@ def admin_attendeemail(request, urlname): # Now also send the email out to the currently registered attendees attendees = ConferenceRegistration.objects.filter(conference=conference, payconfirmedat__isnull=False, regtype__regclass__in=form.data.getlist('regclasses')) for a in attendees: - msgtxt = u"{0}\n\n-- \nThis message was sent to attendees of {1}.\nYou can view all communications for this conference at:\n{2}/events/register/{3}/\n".format(msg.message, conference, settings.SITEBASE_SSL, conference.urlname) + msgtxt = u"{0}\n\n-- \nThis message was sent to attendees of {1}.\nYou can view all communications for this conference at:\n{2}/events/register/{3}/\n".format(msg.message, conference, settings.SITEBASE, conference.urlname) send_simple_mail(conference.contactaddr, a.email, u"[{0}] {1}".format(conference, msg.subject), @@ -2064,7 +2033,6 @@ def admin_attendeemail(request, urlname): 'form': form, }, RequestContext(request)) -@ssl_required @login_required def admin_attendeemail_view(request, urlname, mailid): if request.user.is_superuser: @@ -2079,7 +2047,6 @@ def admin_attendeemail_view(request, urlname, mailid): 'mail': mail, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def session_notify_queue(request, urlname): @@ -2102,7 +2069,7 @@ def session_notify_queue(request, urlname): template.render(Context({ 'conference': conference, 'session': s, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })), sendername=conference.conferencename, receivername=spk.fullname, @@ -2121,7 +2088,6 @@ def session_notify_queue(request, urlname): # Send email to attendees of mixed conferences -@ssl_required @login_required @user_passes_test_or_error(lambda u:u.is_superuser) @transaction.atomic @@ -2152,7 +2118,6 @@ def crossmail(request): # Admin view that's used to send email to multiple users -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.is_superuser) @transaction.atomic @@ -2187,7 +2152,6 @@ def admin_email(request): }, RequestContext(request)) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.is_superuser) @transaction.atomic diff --git a/postgresqleu/confsponsor/invoicehandler.py b/postgresqleu/confsponsor/invoicehandler.py index 73358f07..a5914e42 100644 --- a/postgresqleu/confsponsor/invoicehandler.py +++ b/postgresqleu/confsponsor/invoicehandler.py @@ -25,7 +25,7 @@ def confirm_sponsor(sponsor, who): msgtxt = get_template('confsponsor/mail/sponsor_confirmed.txt').render(Context({ 'sponsor': sponsor, 'conference': sponsor.conference, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })) for manager in sponsor.managers.all(): send_simple_mail(sponsor.conference.sponsoraddr, @@ -107,7 +107,7 @@ class InvoiceProcessor(object): sponsor = Sponsor.objects.get(pk=invoice.processorid) except Sponsor.DoesNotExist: raise Exception("Could not find conference sponsorship %s" % invoice.processorid) - return "%s/events/sponsor/%s/" % (settings.SITEBASE_SSL, sponsor.id) + return "%s/events/sponsor/%s/" % (settings.SITEBASE, sponsor.id) # Generate an invoice for sponsorship @@ -202,7 +202,7 @@ class VoucherInvoiceProcessor(object): pv = PurchasedVoucher.objects.get(pk=invoice.processorid) except PurchasedVoucher.DoesNotExist: raise Exception("Could not find voucher order %s" % invoice.processorid) - return "%s/events/sponsor/%s/" % (settings.SITEBASE_SSL, pv.sponsor.id) + return "%s/events/sponsor/%s/" % (settings.SITEBASE, pv.sponsor.id) # Generate an invoice for prepaid vouchers diff --git a/postgresqleu/confsponsor/management/commands/sponsor_generate_discount_invoices.py b/postgresqleu/confsponsor/management/commands/sponsor_generate_discount_invoices.py index 86ea0afd..46190c3d 100644 --- a/postgresqleu/confsponsor/management/commands/sponsor_generate_discount_invoices.py +++ b/postgresqleu/confsponsor/management/commands/sponsor_generate_discount_invoices.py @@ -44,7 +44,7 @@ class Command(BaseCommand): 'code': code, 'sponsor': code.sponsor, 'conference': code.conference, - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })) for manager in code.sponsor.managers.all(): send_simple_mail(code.conference.sponsoraddr, @@ -108,7 +108,7 @@ class Command(BaseCommand): 'invoice': code.invoice, 'curr': settings.CURRENCY_ABBREV, 'expired_time': code.validuntil < date.today(), - 'SITEBASE': settings.SITEBASE_SSL, + 'SITEBASE': settings.SITEBASE, })) for manager in code.sponsor.managers.all(): send_simple_mail(code.conference.sponsoraddr, diff --git a/postgresqleu/confsponsor/views.py b/postgresqleu/confsponsor/views.py index 9f81bbcb..b5b3885a 100644 --- a/postgresqleu/confsponsor/views.py +++ b/postgresqleu/confsponsor/views.py @@ -10,7 +10,6 @@ from django.contrib.auth.models import User from datetime import datetime, timedelta from postgresqleu.auth import user_search, user_import -from postgresqleu.util.decorators import ssl_required from postgresqleu.confreg.models import Conference, PrepaidVoucher, DiscountCode from postgresqleu.mailqueue.util import send_simple_mail @@ -27,7 +26,6 @@ from benefits import get_benefit_class from invoicehandler import create_sponsor_invoice, confirm_sponsor from invoicehandler import create_voucher_invoice -@ssl_required @login_required def sponsor_dashboard(request): # We define "past sponsors" as those older than a month - because we have to pick something. @@ -54,7 +52,6 @@ def _get_sponsor_and_admin(sponsorid, request, onlyconfirmed=True): else: return sponsor, False -@ssl_required @login_required def sponsor_conference(request, sponsorid): sponsor, is_admin = _get_sponsor_and_admin(sponsorid, request, False) @@ -84,7 +81,6 @@ def sponsor_conference(request, sponsorid): 'is_admin': is_admin, }, RequestContext(request)) -@ssl_required @login_required def sponsor_manager_delete(request, sponsorid): sponsor = get_object_or_404(Sponsor, id=sponsorid, managers=request.user, confirmed=True) @@ -99,7 +95,6 @@ def sponsor_manager_delete(request, sponsorid): messages.info(request, "User %s removed as manager." % user.username) return HttpResponseRedirect('../../') -@ssl_required @login_required @transaction.atomic def sponsor_manager_add(request, sponsorid): @@ -134,7 +129,6 @@ def sponsor_manager_add(request, sponsorid): messages.warning(request, "Could not find user with email address %s" % request.POST['email']) return HttpResponseRedirect('../../') -@ssl_required @login_required def sponsor_view_mail(request, sponsorid, mailid): sponsor, is_admin = _get_sponsor_and_admin(sponsorid, request) @@ -146,7 +140,6 @@ def sponsor_view_mail(request, sponsorid, mailid): 'mail': mail, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def sponsor_purchase_voucher(request, sponsorid): @@ -187,7 +180,6 @@ def sponsor_purchase_voucher(request, sponsorid): 'form': form, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def sponsor_purchase_discount(request, sponsorid): @@ -234,7 +226,6 @@ def sponsor_purchase_discount(request, sponsorid): 'form': form, }, RequestContext(request)) -@ssl_required @login_required def sponsor_signup_dashboard(request, confurlname): conference = get_object_or_404(Conference, urlname=confurlname) @@ -252,7 +243,6 @@ def sponsor_signup_dashboard(request, confurlname): 'current': current_signups, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def sponsor_signup(request, confurlname, levelurlname): @@ -314,7 +304,6 @@ def sponsor_signup(request, confurlname, levelurlname): 'form': form, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def sponsor_claim_benefit(request, sponsorid, benefitid): @@ -363,7 +352,7 @@ def sponsor_claim_benefit(request, sponsorid, benefitid): sponsor, sponsor.conference, benefit, - settings.SITEBASE_SSL, + settings.SITEBASE, sponsor.conference.urlname) send_simple_mail(sponsor.conference.sponsoraddr, sponsor.conference.sponsoraddr, @@ -385,7 +374,6 @@ def sponsor_claim_benefit(request, sponsorid, benefitid): }, RequestContext(request)) -@ssl_required @login_required def sponsor_contract(request, contractid): # Our contracts are not secret, are they? Anybody can view them, we just require a login @@ -398,7 +386,6 @@ def sponsor_contract(request, contractid): resp.write(contract.contractpdf.read()) return resp -@ssl_required @login_required def sponsor_admin_dashboard(request, confurlname): if request.user.is_superuser: @@ -495,7 +482,6 @@ def _confirm_benefit(request, benefit): u"Sponsorhip benefit {0} for {1} has been confirmed".format(benefit.benefit, benefit.sponsor) ) -@ssl_required @login_required def sponsor_admin_sponsor(request, confurlname, sponsorid): if request.user.is_superuser: @@ -528,7 +514,6 @@ def sponsor_admin_sponsor(request, confurlname, sponsorid): 'noclaimbenefits': noclaimbenefits, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def sponsor_admin_generateinvoice(request, confurlname, sponsorid): @@ -560,7 +545,6 @@ def sponsor_admin_generateinvoice(request, confurlname, sponsorid): wrapper.email_invoice() return HttpResponseRedirect("../") -@ssl_required @login_required @transaction.atomic def sponsor_admin_confirm(request, confurlname, sponsorid): @@ -575,7 +559,6 @@ def sponsor_admin_confirm(request, confurlname, sponsorid): return HttpResponseRedirect('../') -@ssl_required @login_required def sponsor_admin_benefit(request, confurlname, benefitid): if request.user.is_superuser: @@ -607,7 +590,6 @@ def sponsor_admin_benefit(request, confurlname, benefitid): 'claimdata': claimdata, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def sponsor_admin_send_mail(request, confurlname): @@ -631,7 +613,7 @@ def sponsor_admin_send_mail(request, confurlname): # Now also send the email out to the *current* subscribers sponsors = Sponsor.objects.filter(conference=conference, level__in=form.data.getlist('levels'), confirmed=True) for sponsor in sponsors: - msgtxt = u"{0}\n\n-- \nThis message was sent to sponsors of {1}.\nYou can view all communications for this conference at:\n{2}/events/sponsor/{3}/\n".format(msg.message, conference, settings.SITEBASE_SSL, sponsor.pk) + msgtxt = u"{0}\n\n-- \nThis message was sent to sponsors of {1}.\nYou can view all communications for this conference at:\n{2}/events/sponsor/{3}/\n".format(msg.message, conference, settings.SITEBASE, sponsor.pk) for manager in sponsor.managers.all(): send_simple_mail(conference.sponsoraddr, manager.email, @@ -643,7 +625,7 @@ def sponsor_admin_send_mail(request, confurlname): send_simple_mail(conference.sponsoraddr, conference.sponsoraddr, "Email sent to sponsors", - "An email was sent to sponsors of {0}.\n\nTo view it, go to {1}/events/sponsor/admin/{2}/viewmail/{3}/".format(conference, settings.SITEBASE_SSL, conference.urlname, msg.id), + "An email was sent to sponsors of {0}.\n\nTo view it, go to {1}/events/sponsor/admin/{2}/viewmail/{3}/".format(conference, settings.SITEBASE, conference.urlname, msg.id), sendername=conference.conferencename, receivername=conference.conferencename) @@ -657,7 +639,6 @@ def sponsor_admin_send_mail(request, confurlname): 'form': form, }, RequestContext(request)) -@ssl_required @login_required def sponsor_admin_view_mail(request, confurlname, mailid): if request.user.is_superuser: @@ -672,7 +653,6 @@ def sponsor_admin_view_mail(request, confurlname, mailid): 'admin': True, }, RequestContext(request)) -@ssl_required @login_required def sponsor_admin_imageview(request, benefitid): # Image is fetched as part of a benefit, so find the benefit @@ -696,7 +676,6 @@ def sponsor_admin_imageview(request, benefitid): resp.write(f.read()) return resp -@ssl_required @login_required @transaction.atomic def admin_copy_level(request, levelid): diff --git a/postgresqleu/confwiki/views.py b/postgresqleu/confwiki/views.py index e2bb8658..edcd6446 100644 --- a/postgresqleu/confwiki/views.py +++ b/postgresqleu/confwiki/views.py @@ -11,7 +11,6 @@ from datetime import datetime from cStringIO import StringIO import difflib -from postgresqleu.util.decorators import ssl_required from postgresqleu.mailqueue.util import send_simple_mail from postgresqleu.confreg.models import Conference, ConferenceRegistration @@ -23,7 +22,6 @@ from forms import WikipageEditForm, WikipageAdminEditForm from models import Signup, AttendeeSignup from forms import SignupSubmitForm, SignupAdminEditForm -@ssl_required @login_required def wikipage(request, confurl, wikiurl): conference = get_object_or_404(Conference, urlname=confurl) @@ -46,7 +44,6 @@ def wikipage(request, confurl, wikiurl): 'is_subscribed': is_subscribed, }) -@ssl_required @login_required @transaction.atomic def wikipage_subscribe(request, confurl, wikiurl): @@ -68,7 +65,6 @@ def wikipage_subscribe(request, confurl, wikiurl): return HttpResponseRedirect('../') -@ssl_required @login_required def wikipage_history(request, confurl, wikiurl): conference = get_object_or_404(Conference, urlname=confurl) @@ -113,7 +109,6 @@ def wikipage_history(request, confurl, wikiurl): }) -@ssl_required @login_required @transaction.atomic def wikipage_edit(request, confurl, wikiurl): @@ -157,7 +152,7 @@ def wikipage_edit(request, confurl, wikiurl): conference.contactaddr, subject, body) - body += "\n\nYou are receiving this message because you are subscribed to changes to\nthis page. To stop receiving notifications, please click\n{0}/events/register/{1}/wiki/{2}/sub/\n\n".format(settings.SITEBASE_SSL, conference.urlname, page.url) + body += "\n\nYou are receiving this message because you are subscribed to changes to\nthis page. To stop receiving notifications, please click\n{0}/events/register/{1}/wiki/{2}/sub/\n\n".format(settings.SITEBASE, conference.urlname, page.url) for sub in WikipageSubscriber.objects.filter(page=page): send_simple_mail(conference.contactaddr, reg.email, @@ -183,7 +178,6 @@ def wikipage_edit(request, confurl, wikiurl): 'diff': diff, }) -@ssl_required @login_required def admin(request, urlname): if request.user.is_superuser: @@ -198,7 +192,6 @@ def admin(request, urlname): 'pages': pages, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def admin_edit_page(request, urlname, pageid): @@ -255,7 +248,6 @@ def admin_edit_page(request, urlname, pageid): }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def signup(request, urlname, signupid): @@ -325,7 +317,6 @@ def signup(request, urlname, signupid): 'form': form, }) -@ssl_required @login_required def signup_admin(request, urlname): if request.user.is_superuser: @@ -340,7 +331,6 @@ def signup_admin(request, urlname): 'signups': signups, }, RequestContext(request)) -@ssl_required @login_required @transaction.atomic def signup_admin_edit(request, urlname, signupid): diff --git a/postgresqleu/elections/views.py b/postgresqleu/elections/views.py index 123ae855..d968d5e8 100644 --- a/postgresqleu/elections/views.py +++ b/postgresqleu/elections/views.py @@ -8,8 +8,6 @@ from models import Election, Member, Candidate, Vote from forms import VoteForm from datetime import date, timedelta -from postgresqleu.util.decorators import ssl_required - def home(request): elections = Election.objects.filter(isopen=True).order_by('startdate') open_elections = [e for e in elections if e.startdate<=date.today() and e.enddate>=date.today()] @@ -22,7 +20,6 @@ def home(request): 'upcoming': upcoming_elections, }, context_instance=RequestContext(request)) -@ssl_required def election(request, electionid): election = get_object_or_404(Election, pk=electionid) if not election.isopen: @@ -108,7 +105,6 @@ def candidate(request, election, candidate): 'candidate': candidate, }, context_instance=RequestContext(request)) -@ssl_required @login_required def ownvotes(request, electionid): election = get_object_or_404(Election, pk=electionid) diff --git a/postgresqleu/invoicemgr/views.py b/postgresqleu/invoicemgr/views.py index 6388a5e6..c6d02930 100644 --- a/postgresqleu/invoicemgr/views.py +++ b/postgresqleu/invoicemgr/views.py @@ -11,10 +11,8 @@ from datetime import datetime import os from models import Invoice -from postgresqleu.util.decorators import ssl_required from postgresqleu.confreg.models import Conference, ConferenceRegistration -@ssl_required @login_required @user_passes_test(lambda u: u.has_module_perms('invoicemgr')) def home(request): @@ -23,7 +21,6 @@ def home(request): 'invoices': invoices, }, context_instance=RequestContext(request)) -@ssl_required @login_required @user_passes_test(lambda u: u.has_module_perms('invoicemgr')) def invoice(request, id): @@ -32,7 +29,6 @@ def invoice(request, id): 'invoice': invoice, }) -@ssl_required @login_required @user_passes_test(lambda u: u.has_module_perms('invoicemgr')) def invoicepdf(request, id): diff --git a/postgresqleu/invoices/util.py b/postgresqleu/invoices/util.py index b94420d6..67f13511 100644 --- a/postgresqleu/invoices/util.py +++ b/postgresqleu/invoices/util.py @@ -148,10 +148,10 @@ class InvoiceWrapper(object): # then the recipient can access it. As long as the secret is # included, both the logged in and the not logged in user # can see it. - invoiceurl = '%s/invoices/%s/%s/' % (settings.SITEBASE_SSL, self.invoice.pk, self.invoice.recipient_secret) + invoiceurl = '%s/invoices/%s/%s/' % (settings.SITEBASE, self.invoice.pk, self.invoice.recipient_secret) elif self.invoice.recipient_user: # General URL that shows a normal invoice - invoiceurl = '%s/invoices/%s/' % (settings.SITEBASE_SSL, self.invoice.pk) + invoiceurl = '%s/invoices/%s/' % (settings.SITEBASE, self.invoice.pk) else: invoiceurl = None @@ -308,7 +308,7 @@ class InvoiceManager(object): leaveopen = False else: leaveopen = True - urls = ['%s/invoices/%s/' % (settings.SITEBASE_SSL, invoice.pk),] + urls = ['%s/invoices/%s/' % (settings.SITEBASE, invoice.pk),] if extraurls: urls.extend(extraurls) diff --git a/postgresqleu/invoices/views.py b/postgresqleu/invoices/views.py index 43459f19..cdaf8f7d 100644 --- a/postgresqleu/invoices/views.py +++ b/postgresqleu/invoices/views.py @@ -13,36 +13,31 @@ import base64 import StringIO from datetime import datetime, timedelta -from postgresqleu.util.decorators import user_passes_test_or_error, ssl_required +from postgresqleu.util.decorators import user_passes_test_or_error from models import Invoice, InvoiceRow, InvoicePaymentMethod from forms import InvoiceForm, InvoiceRowForm from util import InvoiceWrapper, InvoiceManager, InvoicePresentationWrapper -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) def all(request): return _homeview(request, Invoice.objects.all()) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) def unpaid(request): return _homeview(request, Invoice.objects.filter(paidat=None, deleted=False, finalized=True), unpaid=True) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) def pending(request): return _homeview(request, Invoice.objects.filter(finalized=False, deleted=False), pending=True) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) def deleted(request): return _homeview(request, Invoice.objects.filter(deleted=True), deleted=True) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) def refunded(request): @@ -73,7 +68,6 @@ def _homeview(request, invoice_objects, unpaid=False, pending=False, deleted=Fal }, context_instance=RequestContext(request)) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) def search(request): @@ -106,7 +100,6 @@ def search(request): messages.info(request, "Showing %s search hits for %s" % (len(invoices), term)) return _homeview(request, invoices, searchterm=term) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) @transaction.atomic @@ -183,7 +176,6 @@ def oneinvoice(request, invoicenum): 'invoice': invoice, }, context_instance=RequestContext(request)) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) @transaction.atomic @@ -217,7 +209,6 @@ def flaginvoice(request, invoicenum): # so we can just return the user right back return HttpResponseRedirect("/invoiceadmin/%s/" % invoice.id) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) @transaction.atomic @@ -237,7 +228,6 @@ def cancelinvoice(request, invoicenum): return HttpResponseRedirect("/invoiceadmin/%s/" % invoice.id) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) @transaction.atomic @@ -256,7 +246,6 @@ def refundinvoice(request, invoicenum): return HttpResponseRedirect("/invoiceadmin/%s/" % invoice.id) -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) def previewinvoice(request, invoicenum): @@ -268,7 +257,6 @@ def previewinvoice(request, invoicenum): r.write(wrapper.render_pdf_invoice(True)) return r -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.has_module_perms('invoices')) @transaction.atomic @@ -305,7 +293,6 @@ def emailinvoice(request, invoicenum): #-------------------------------------------------------------------------- -@ssl_required @login_required def viewinvoice(request, invoiceid): invoice = get_object_or_404(Invoice, pk=invoiceid, deleted=False, finalized=True) @@ -313,18 +300,16 @@ def viewinvoice(request, invoiceid): return HttpResponseForbidden("Access denied") return render_to_response('invoices/userinvoice.html', { - 'invoice': InvoicePresentationWrapper(invoice, "%s/invoices/%s/" % (settings.SITEBASE_SSL, invoice.pk)), + 'invoice': InvoicePresentationWrapper(invoice, "%s/invoices/%s/" % (settings.SITEBASE, invoice.pk)), }, context_instance=RequestContext(request)) -@ssl_required def viewinvoice_secret(request, invoiceid, invoicesecret): invoice = get_object_or_404(Invoice, pk=invoiceid, deleted=False, finalized=True, recipient_secret=invoicesecret) return render_to_response('invoices/userinvoice.html', { - 'invoice': InvoicePresentationWrapper(invoice, "%s/invoices/%s/%s/" % (settings.SITEBASE_SSL, invoice.pk, invoice.recipient_secret)), + 'invoice': InvoicePresentationWrapper(invoice, "%s/invoices/%s/%s/" % (settings.SITEBASE, invoice.pk, invoice.recipient_secret)), 'fromsecret': True, }, context_instance=RequestContext(request)) -@ssl_required @login_required def viewinvoicepdf(request, invoiceid): invoice = get_object_or_404(Invoice, pk=invoiceid) @@ -335,14 +320,12 @@ def viewinvoicepdf(request, invoiceid): r.write(base64.b64decode(invoice.pdf_invoice)) return r -@ssl_required def viewinvoicepdf_secret(request, invoiceid, invoicesecret): invoice = get_object_or_404(Invoice, pk=invoiceid, recipient_secret=invoicesecret) r = HttpResponse(content_type='application/pdf') r.write(base64.b64decode(invoice.pdf_invoice)) return r -@ssl_required @login_required def viewreceipt(request, invoiceid): invoice = get_object_or_404(Invoice, pk=invoiceid) @@ -353,14 +336,12 @@ def viewreceipt(request, invoiceid): r.write(base64.b64decode(invoice.pdf_receipt)) return r -@ssl_required def viewreceipt_secret(request, invoiceid, invoicesecret): invoice = get_object_or_404(Invoice, pk=invoiceid, recipient_secret=invoicesecret) r = HttpResponse(content_type='application/pdf') r.write(base64.b64decode(invoice.pdf_receipt)) return r -@ssl_required @login_required def userhome(request): invoices = Invoice.objects.filter(recipient_user=request.user, deleted=False, finalized=True) @@ -368,7 +349,6 @@ def userhome(request): 'invoices': invoices, }, context_instance=RequestContext(request)) -@ssl_required @login_required def banktransfer(request): return render_to_response('invoices/banktransfer.html', { @@ -377,7 +357,6 @@ def banktransfer(request): 'returnurl': request.GET['ret'], }, context_instance=RequestContext(request)) -@ssl_required @login_required @transaction.atomic def dummy_payment(request, invoiceid, invoicesecret): @@ -390,7 +369,7 @@ def dummy_payment(request, invoiceid, invoicesecret): processor = manager.get_invoice_processor(invoice) returnurl = processor.get_return_url(invoice) else: - returnurl = "%s/invoices/%s/" % (settings.SITEBASE_SSL, invoice.pk) + returnurl = "%s/invoices/%s/" % (settings.SITEBASE, invoice.pk) # We'll just cheat and use the Adyen account manager.process_incoming_payment_for_invoice(invoice, invoice.total_amount, 'Dummy payment', 0, settings.ACCOUNTING_ADYEN_AUTHORIZED_ACCOUNT, 0, None, None, InvoicePaymentMethod.objects.get(classname='postgresqleu.util.payment.dummy.DummyPayment')) diff --git a/postgresqleu/membership/invoicehandler.py b/postgresqleu/membership/invoicehandler.py index cdbd4476..190cfc68 100644 --- a/postgresqleu/membership/invoicehandler.py +++ b/postgresqleu/membership/invoicehandler.py @@ -60,4 +60,4 @@ class InvoiceProcessor(object): # of their payment. In our case, we just return the user directly # to the membership page. def get_return_url(self, invoice): - return "%s/membership/" % settings.SITEBASE_SSL + return "%s/membership/" % settings.SITEBASE diff --git a/postgresqleu/membership/views.py b/postgresqleu/membership/views.py index c89d19aa..08e15f95 100644 --- a/postgresqleu/membership/views.py +++ b/postgresqleu/membership/views.py @@ -10,7 +10,7 @@ from django.db.models import Q from models import Member, MemberLog, Meeting, MemberMeetingKey from forms import MemberForm -from postgresqleu.util.decorators import user_passes_test_or_error, ssl_required +from postgresqleu.util.decorators import user_passes_test_or_error from postgresqleu.invoices.util import InvoiceManager, InvoicePresentationWrapper from postgresqleu.invoices.models import InvoiceProcessor from postgresqleu.confreg.forms import EmailSendForm @@ -21,7 +21,6 @@ import json import base64 import os -@ssl_required @login_required @transaction.atomic def home(request): @@ -99,7 +98,7 @@ def home(request): return render_to_response('membership/index.html', { 'form': form, 'member': member, - 'invoice': InvoicePresentationWrapper(member.activeinvoice, "%s/membership/" % settings.SITEBASE_SSL), + 'invoice': InvoicePresentationWrapper(member.activeinvoice, "%s/membership/" % settings.SITEBASE), 'registration_complete': registration_complete, 'logdata': logdata, 'amount': 10, # price for two years @@ -114,7 +113,6 @@ def userlist(request): # Admin view that's used to send email to multiple users -@ssl_required @login_required @user_passes_test_or_error(lambda u: u.is_superuser) @transaction.atomic @@ -144,7 +142,6 @@ def admin_email(request): 'recipientlist': ', '.join(recipients), }, RequestContext(request)) -@ssl_required @login_required def meetings(request): # Only available for actual members @@ -158,7 +155,6 @@ def meetings(request): 'meetings': meetings, }) -@ssl_required @login_required @transaction.atomic def meeting(request, meetingid): @@ -194,7 +190,6 @@ def meeting(request, meetingid): }) # API calls from meeting bot -@ssl_required def meetingcode(request): secret = request.GET['s'] meetingid = request.GET['m'] @@ -203,7 +198,7 @@ def meetingcode(request): key = MemberMeetingKey.objects.get(key=secret, meeting__pk=meetingid) member = key.member except MemberMeetingKey.DoesNotExist: - return HttpResponse(json.dumps({'err': 'Authentication key not found. Please see %s/membership/meetings/ to get your correct key!' % settings.SITEBASE_SSL}), + return HttpResponse(json.dumps({'err': 'Authentication key not found. Please see %s/membership/meetings/ to get your correct key!' % settings.SITEBASE}), content_type='application/json') # Return a JSON object with information about the member diff --git a/postgresqleu/paypal/views.py b/postgresqleu/paypal/views.py index b9fe676d..6969813c 100644 --- a/postgresqleu/paypal/views.py +++ b/postgresqleu/paypal/views.py @@ -11,12 +11,10 @@ from urllib import urlencode, unquote_plus from postgresqleu.invoices.util import InvoiceManager from postgresqleu.invoices.models import InvoicePaymentMethod -from postgresqleu.util.decorators import ssl_required from postgresqleu.accounting.util import create_accounting_entry from models import TransactionInfo, ErrorLog, SourceAccount -@ssl_required @transaction.atomic def paypal_return_handler(request): tx = 'UNKNOWN' @@ -183,11 +181,11 @@ def paypal_return_handler(request): if i.recipient_user: # Registered to a specific user, so request that users # login on redirect - url = "%s/invoices/%s/" % (settings.SITEBASE_SSL, i.pk) + url = "%s/invoices/%s/" % (settings.SITEBASE, i.pk) else: # No user account registered, so send back to the secret # url version - url = "%s/invoices/%s/%s/" % (settings.SITEBASE_SSL, i.pk, i.recipient_secret) + url = "%s/invoices/%s/%s/" % (settings.SITEBASE, i.pk, i.recipient_secret) return render_to_response('paypal/complete.html', { 'invoice': i, diff --git a/postgresqleu/settings.py b/postgresqleu/settings.py index 6dfeccb6..a7bfdbc6 100644 --- a/postgresqleu/settings.py +++ b/postgresqleu/settings.py @@ -169,10 +169,9 @@ CM_USER_ACCOUNT=None CM_USER_PASSWORD=None # Base URLs for generating absolute URLs -SITEBASE="http://www.postgresql.eu" -SITEBASE_SSL="https://www.postgresql.eu" +SITEBASE="https://www.postgresql.eu" +SESSION_COOKIE_SECURE=True -DISABLE_HTTPS_REDIRECTS=False DATETIME_FORMAT="Y-m-d H:i:s" # Set to true in local_settings.py to enable braintree integrations diff --git a/postgresqleu/util/decorators.py b/postgresqleu/util/decorators.py index 36b7b780..565e4358 100644 --- a/postgresqleu/util/decorators.py +++ b/postgresqleu/util/decorators.py @@ -1,7 +1,6 @@ from functools import wraps from django.utils.decorators import available_attrs -from django.http import HttpResponseForbidden, HttpResponseRedirect -from django.conf import settings +from django.http import HttpResponseForbidden # This is like @user_passes_test, except if the user is logged in # but does not pass the test we give an error instead of a new @@ -18,17 +17,3 @@ def user_passes_test_or_error(test_func): return HttpResponseForbidden('Access denied') return _wrapped_view return decorator - - -# -# This decorator creates a redirect to https if the request arrives -# without it. -def ssl_required(fn): - @wraps(fn) - def _require_ssl(*args, **kwargs): - request = args[0] - if not request.is_secure() and not settings.DISABLE_HTTPS_REDIRECTS: - return HttpResponseRedirect(request.build_absolute_uri().replace('http://', 'https://', 1)) - else: - return fn(*args, **kwargs) - return _require_ssl diff --git a/postgresqleu/util/payment/paypal.py b/postgresqleu/util/payment/paypal.py index 3102d6b2..0166f67c 100644 --- a/postgresqleu/util/payment/paypal.py +++ b/postgresqleu/util/payment/paypal.py @@ -34,7 +34,7 @@ lower fees. 'item_name': invoicestr.encode('utf-8'), 'amount': '%s.00' % invoiceamount, 'invoice': invoiceid, - 'return': '%s/p/paypal_return/' % settings.SITEBASE_SSL, + 'return': '%s/p/paypal_return/' % settings.SITEBASE, }) if returnurl: # If the user cancels, send back to specific URL, instead of |
