Changeset - c929e2fddd46
[Not reviewed]
0 7 1
Joshua Simmons - 6 years ago 2017-08-16 05:16:16
Merge branch 'master' of
5 files changed with 51 insertions and 4 deletions:
0 comments (0 inline, 0 general)
Show inline comments
new file 100644
import re
import warnings

from django import http
from django.conf import settings
from django.utils.deprecation import MiddlewareMixin

class UnprependWWWMiddleware(MiddlewareMixin):
    """ Unprepends www if necessary. """

    response_redirect_class = http.HttpResponsePermanentRedirect

    def process_request(self, request):
        Rewrite the URL based on settings.UNPREPEND_WWW

        unprepend_www = getattr(settings, "UNPREPEND_WWW", False)

        if not unprepend_www:

        # Check for a redirect based on settings.UNPREPEND_WWW
        host = request.get_host()
        must_unprepend = unprepend_www and host and host.lower().startswith('www.')
        wwwless_host = host[4:]
        redirect_url = ('%s://%s' % (request.scheme, wwwless_host)) if must_unprepend else ''

        path = request.get_full_path()

        # Return a redirect if necessary
        if redirect_url or path != request.get_full_path():
            redirect_url += path
            return self.response_redirect_class(redirect_url)
Show inline comments
import os
import dj_database_url


PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__))

DEBUG = bool(int(os.environ.get("DEBUG", "1")))

    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": os.path.join(PROJECT_ROOT, "dev.db"),

UNPREPEND_WWW = bool(os.environ.get("DJANGO_UNPREPEND_WWW", False))

# HEROKU: Update database configuration with $DATABASE_URL.
import dj_database_url
db_from_env = dj_database_url.config()

ALLOWED_HOSTS = ["localhost", "", ""]
ALLOWED_HOSTS = [".localhost", "", ""]

# Local time zone for this installation. Choices can be found here:
# although not all choices may be available on all operating systems.
# On Unix systems, a value of None will cause Django to use the same
# timezone as the operating system.
# If running in a Windows environment this must be set to the same as your
# system time zone.
TIME_ZONE = os.environ.get("TZ", "America/Los_Angeles")


# Use SSLRedirectMiddleware
SSL_ON = os.environ.get("DJANGO_SSL_ON", True)
SSL_ALWAYS = os.environ.get("DJANGO_SSL_ALWAYS", False)

# Language code for this installation. All choices can be found here:

SITE_ID = int(os.environ.get("SITE_ID", 1))

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/"
MEDIA_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "media")

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "", ""
MEDIA_URL = "/site_media/media/"

# Absolute path to the directory static files should be collected to.
# Don"t put anything in this directory yourself; store your static files
# in apps" "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')

# URL prefix for static files.
@@ -87,96 +89,97 @@ STATICFILES_FINDERS = [


# Amazon S3 setup


# Make this unique, and don't share it with anybody.
SECRET_KEY = "6r&z0i#!k-thu4nv^zzx!f$fbp(&#2i5mq_^%%@ihu_qxxotl_"

        "BACKEND": "django.template.backends.django.DjangoTemplates",
        "DIRS": [
            os.path.join(PACKAGE_ROOT, "templates"),
        "APP_DIRS": True,
        "OPTIONS": {
            "debug": DEBUG,
            "context_processors": [



ROOT_URLCONF = "pinaxcon.urls"

# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = "pinaxcon.wsgi.application"


    # theme

    # external

    # symposion

    # Registrasion

    # Registrasion-stipe
Show inline comments
@@ -69,97 +69,97 @@

  <div class="jumbotron homepage-block dark">
    <div class="homepage-block-bg mystic-background"></div>
    <div class="container homepage-block-content">
      <h1>Downtown Petaluma</h1>

      <p>North Bay Python's home is Petaluma, a delightfully quaint dairy town, nestled on a river at the edge of California's Wine Country. Here's what you can look forward to:</p>

        <li>An historic venue with countless restaurants and coffee shops in walking distance</li>
        <li>World-famous craft food and drink producers on your doorstep</li>
        <li>Charming small-town hotels, as close as one block away</li>

      <p>&hellip; and it's only an hour away from San Francisco (on a good day).</p>

    <div class="homepage-block-footer full-width">
      <div class="container">
        <div class="row">
          <div class="btn-group col-md-4">
            <a class="btn btn-lg btn-primary btn-shadow" href="/about/north-bay-python" title="About North Bay Python">Learn More</a>

          <div class="col-md-8 text-right photo-attribution">
            Image credit: <a href="" title="Photo of the Mystic Theatre">Mystic Theatre</a>, &copy; 2017 Christopher Neugebauer (<a href="" title="Creative Commons Attribute Share Alike 2.0 Generic License">CC BY-SA 2.0</a>)

  <div class="jumbotron homepage-block white">
    <div class="container homepage-block-content">

      {% load sponsorship_tags %}
      {% load thumbnail %}

      {% sponsor_levels as levels %}

      <div class="row sponsor-list">
      {% for level in levels %}
          {% if level.sponsors %}
              {% for sponsor in level.sponsors %}
                  <div class="col-md-3">
                  <div class="sponsor">
                      {% if sponsor.website_logo %}
                          <a href="{{ sponsor.external_url }}" title="{{ }}">
                              <img src="{% thumbnail sponsor.website_logo '600x360' %}" alt="{{ }}">
                      {% else %}
                          <a href="{{ sponsor.external_url }}" title="{{ }}">{{ }}</a>
                      {% endif %}
              {% endfor %}
          {% endif %}
      {% endfor %}

    <div class="container homepage-block-footer">
      <div class="btn-group">
        <a class="btn btn-lg btn-primary btn-shadow" href="/sponsors/become-a-sponsor" title="Become a Sponsor">Become a Sponsor</a>

  <div class="jumbotron homepage-block dark">
    <div class="homepage-block-bg djangogirls-background"></div>
    <div class="container homepage-block-content">
      <h1>Inclusion and Diversity</h1>

      <p>North Bay Python is proud to be founded on a commitment to inclusion and diversity. Here's what we commit to:</p>

        <li>A strong Code of Conduct and enforcement policy built on the Python Software Foundation's PyCon US policy.</li>
        <li>Diversity targets for speakers and attendees.</li>
        <li>Financial assistance for speakers who need it.</li>
        <li>Low-cost tickets, with fees enthusiastically waived on request.</li>

    <div class="homepage-block-footer full-width">
      <div class="container">
        <div class="row">
          <div class="btn-group col-md-4">
            <a class="btn btn-lg btn-primary btn-shadow" href="/code-of-conduct" title"North Bay Python Code of Conduct">Read the Code of Conduct</a>

          <div class="col-md-8 text-right photo-attribution">
            Image credit: <a href="" title="Photo from DjangoGirls Brisbane 2014">DjangoGirls Brisbane</a>, &copy; 2014 Richard Jones (<a href="" title="Creative Commons Attribute 2.0 Generic License">CC BY 2.0</a>)
Show inline comments
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib.staticfiles.templatetags.staticfiles import static as _static
from django.views.generic import TemplateView
from django.views.generic import RedirectView


from django.contrib import admin

import symposion.views


urlpatterns = [
    url(r"^$", TemplateView.as_view(template_name="static_pages/homepage.html"), name="home"),

    # about
    url(r"^about/north-bay-python$", TemplateView.as_view(template_name="static_pages/about/north_bay_python.html"), name="about/north-bay-python"),
    # TODO add /about/the-mystic
    # TODO add /about/petaluma
    url(r"^about/team$", TemplateView.as_view(template_name="static_pages/about/team.html"), name="about/team"),
    url(r"^about/colophon$", TemplateView.as_view(template_name="static_pages/about/colophon.html"), name="about/colophon"),

    # program
    # TODO add /program/sessions
    # TODO add /program/events
    url(r"^program/call-for-proposals$", TemplateView.as_view(template_name="static_pages/program/call_for_proposals.html"), name="program/call-for-proposals"),
    url(r"^program/selection-process$", TemplateView.as_view(template_name="static_pages/program/selection_process.html"), name="program/selection-process"),

    # attend
    # TODO add /attend/buy-a-ticket
    # TODO add /attend/volunteer
    # TODO add /attend/financial-assistance
    # TODO add /attend/how-to-pitch-your-manager
    # TODO add /attend/how-to-get-here
    # TODO add /attend/where-to-stay
    url(r"^code-of-conduct$", TemplateView.as_view(template_name="static_pages/code_of_conduct/code_of_conduct.html"), name="code-of-conduct"),
    url(r"^code-of-conduct/harassment-incidents$", TemplateView.as_view(template_name="static_pages/code_of_conduct/harassment_procedure_attendee.html"), name="code-of-conduct/harassment-incidents"),
    url(r"^code-of-conduct/harassment-staff-procedures$", TemplateView.as_view(template_name="static_pages/code_of_conduct/harassment_procedure_staff.html"), name="code-of-conduct/harassment-staff-procedures"),
    url(r"^terms-and-conditions$", TemplateView.as_view(template_name="static_pages/terms_and_conditions.html"), name="terms-and-conditions"),

    # sponsor
    url(r"^sponsors/prospectus$", RedirectView.as_view(url="/static/assets/northbaypython_prospectus.pdf"), name="sponsors/prospectus"),
    url(r"^northbaypython_prospectus.pdf$", RedirectView.as_view(url="/static/assets/northbaypython_prospectus.pdf"), name="northbaypython_prospectus.pdf"),
    url(r"^sponsors/prospectus$", RedirectView.as_view(url=_static("assets/northbaypython_prospectus.pdf")), name="sponsors/prospectus"),
    url(r"^northbaypython_prospectus.pdf$", RedirectView.as_view(url=_static("assets/northbaypython_prospectus.pdf")), name="northbaypython_prospectus.pdf"),
    url(r"^sponsors/become-a-sponsor$", TemplateView.as_view(template_name="static_pages/sponsors/become_a_sponsor.html"), name="sponsors/become-a-sponsor"),

    # news
    url(r"^news$", TemplateView.as_view(template_name="static_pages/news.html"), name="news"),

    # Django, Symposion, and Registrasion URLs

    url(r"^admin/", include(,

    url(r"^account/", include("account.urls")),

    url(r"^dashboard/", symposion.views.dashboard, name="dashboard"),

    url(r"^speaker/", include("symposion.speakers.urls")),
    url(r"^proposals/", include("symposion.proposals.urls")),
    url(r"^sponsors/", include("symposion.sponsorship.urls")),
    url(r"^reviews/", include("")),
    url(r"^schedule/", include("symposion.schedule.urls")),

    url(r"^teams/", include("symposion.teams.urls")),

    # Demo payment gateway and related features
    url(r"^register/pinaxcon/", include("pinaxcon.registrasion.urls")),

    # Demo payment gateway and related features
    url(r"^register/payments/", include("registripe.urls")),

    # Required by registrasion
    url(r'^register/', include('registrasion.urls')),
    url(r'^nested_admin/', include('nested_admin.urls')),

    # Catch-all MUST go last.
    #url(r"^", include("pinax.pages.urls")),

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Show inline comments
@@ -67,98 +67,106 @@ {
        background-color: #e6e6e6;
        border-color: #adadad;
        outline: 0;
        background-image: none;
        box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);

#accountLogOutForm {
    display: none;

.sponsor-list h3 {
    margin-top: 3em;

.sponsor-list > div {
    margin: 10px 0;

body.auth .panel-heading .panel-title span.pull-right {
    margin: 0 auto;

.home {
  margin: 0;
  padding-top: $navbar-height - $navbar-padding-vertical - 8;

.home#content_body {
  margin: 0;
  padding: 0;

#content_body {
  background-color: $background-filter-transparent;
  box-shadow: 0px 0px 2em $background-filter; //, inset 0px -5px 1em rgba(0, 0, 0, 0.8);

$homepage-block-min-height: 480px;

.homepage-block {
  margin-top: 0;
  margin-bottom: 0;
  min-height: $homepage-block-min-height;
  position: relative;
  box-shadow: $box-shadow;
  z-index: 3;

  .sponsor {
    @include make-xs-column(6);
    @include make-sm-column(4);
    @include make-md-column(3);
    max-width: 600px;


.homepage-block-content {
  min-height: ($homepage-block-min-height - 80px);

/* ??? */
.homepage-block-footer {


.homepage-block.light {
  background-color: $background-filter;
  z-index: 2;

.homepage-block.white {
  background-color: white;
  z-index: 1;

.homepage-block-bg {
  top: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  position: absolute;
  background-size: cover;
  background-position: center;
  opacity: 0.3;
  background-blend-mode: multiply;
  z-index: -9999;
  box-shadow: $box-shadow;

.homepage-block.dark {
  background: $gray-base;
  color: white;
  text-shadow: 1px 1px $gray-dark;

  a:not(.btn) {
    color: lighten($brand-primary, 20%);

    &:active {
      color: lighten($brand-primary, 15%);
0 comments (0 inline, 0 general)