Changeset - 04f246d85071
[Not reviewed]
! ! !
Patrick Altman - 8 years ago 2015-10-16 17:53:02
paltman@gmail.com
Initial commit of the PinaxCon demo site
105 files changed:
Changeset was too big and was cut off... Show full diff anyway
0 comments (0 inline, 0 general)
.gitignore
Show inline comments
 
new file 100644
 
*.pyc
 
node_modules/
README.md
Show inline comments
 
new file 100644
 
# PinaxCon
 

	
 
A working demo of Symposion and the Symposion Starter Project.  Online at:
 

	
 
http://conference.pinaxproject.com/
 

	
 

	
 

	
 
## Getting Started
 

	
 
Make sure you are using a virtual environment of some sort (e.g. `virtualenv` or
 
`pyenv`).
 

	
 
```
 
createdb pinaxcon
 
pip install -r requirements.txt
 
./manage.py migrate
 
./manage.py loaddata sites conference proposal_base sitetree sponsor_benefits sponsor_levels
 
./manage.py runserver
 
```
 

	
 

	
 
pinax-boxes
 
pinax-pages
fixtures/conference.json
Show inline comments
 
new file 100644
 
[
 
    {
 
        "pk": 1,
 
        "model": "symposion_conference.conference",
 
        "fields": {
 
            "timezone": "US/Eastern",
 
            "start_date": "2040-01-01",
 
            "end_date": "2040-01-04",
 
            "title": "PinaxCon"
 
        }
 
    },
 
    {
 
        "pk": 1,
 
        "model": "symposion_conference.section",
 
        "fields": {
 
            "conference": 1,
 
            "start_date": "2040-01-01",
 
            "name": "General Sessions",
 
            "end_date": "2040-01-01",
 
            "slug": "general-sessions"
 
        }
 
    }
 
]
fixtures/proposal_base.json
Show inline comments
 
new file 100644
 
[
 
    {
 
        "pk": 1,
 
        "model": "symposion_proposals.proposalsection",
 
        "fields": {
 
            "start": null,
 
            "section": 1,
 
            "end": null,
 
            "closed": null,
 
            "published": null
 
        }
 
    },
 
    {
 
        "pk": 1,
 
        "model": "symposion_proposals.proposalkind",
 
        "fields": {
 
            "section": 1,
 
            "name": "talk",
 
            "slug": "talk"
 
        }
 
    }
 
]
fixtures/sites.json
Show inline comments
 
new file 100644
 
[
 
    {
 
        "pk": 1,
 
        "model": "sites.site",
 
        "fields": {
 
            "domain": "localhost:8000",
 
            "name": "PinaxCon"
 
        }
 
    },
 
    {
 
        "pk": 2,
 
        "model": "sites.site",
 
        "fields": {
 
            "domain": "conference.pinaxproject.com",
 
            "name": "PinaxCon"
 
        }
 
    }
 
]
fixtures/sitetree.json
Show inline comments
 
new file 100644
 
[
 
    {
 
        "pk": 1,
 
        "model": "sitetree.tree",
 
        "fields": {
 
            "alias": "main",
 
            "title": "main"
 
        }
 
    },
 
    {
 
        "pk": 1,
 
        "model": "sitetree.treeitem",
 
        "fields": {
 
            "parent": null,
 
            "access_restricted": false,
 
            "access_permissions": [],
 
            "description": "",
 
            "insitetree": true,
 
            "hint": "",
 
            "url": "pages_page \"about/\"",
 
            "inbreadcrumbs": true,
 
            "title": "About",
 
            "tree": 1,
 
            "access_perm_type": 1,
 
            "alias": null,
 
            "sort_order": 2,
 
            "inmenu": true,
 
            "access_loggedin": false,
 
            "hidden": false,
 
            "urlaspattern": true
 
        }
 
    },
 
    {
 
        "pk": 2,
 
        "model": "sitetree.treeitem",
 
        "fields": {
 
            "parent": null,
 
            "access_restricted": false,
 
            "access_permissions": [],
 
            "description": "",
 
            "insitetree": true,
 
            "hint": "",
 
            "url": "pages_page \"venue/\"",
 
            "inbreadcrumbs": true,
 
            "title": "Venue",
 
            "tree": 1,
 
            "access_perm_type": 1,
 
            "alias": null,
 
            "sort_order": 3,
 
            "inmenu": true,
 
            "access_loggedin": false,
 
            "hidden": false,
 
            "urlaspattern": true
 
        }
 
    },
 
    {
 
        "pk": 3,
 
        "model": "sitetree.treeitem",
 
        "fields": {
 
            "parent": null,
 
            "access_restricted": false,
 
            "access_permissions": [],
 
            "description": "",
 
            "insitetree": true,
 
            "hint": "",
 
            "url": "#",
 
            "inbreadcrumbs": true,
 
            "title": "Sponsors",
 
            "tree": 1,
 
            "access_perm_type": 1,
 
            "alias": null,
 
            "sort_order": 4,
 
            "inmenu": true,
 
            "access_loggedin": false,
 
            "hidden": false,
 
            "urlaspattern": false
 
        }
 
    },
 
    {
 
        "pk": 4,
 
        "model": "sitetree.treeitem",
 
        "fields": {
 
            "parent": null,
 
            "access_restricted": false,
 
            "access_permissions": [],
 
            "description": "",
 
            "insitetree": true,
 
            "hint": "",
 
            "url": "home",
 
            "inbreadcrumbs": true,
 
            "title": "Home",
 
            "tree": 1,
 
            "access_perm_type": 1,
 
            "alias": null,
 
            "sort_order": 1,
 
            "inmenu": true,
 
            "access_loggedin": false,
 
            "hidden": false,
 
            "urlaspattern": true
 
        }
 
    },
 
    {
 
        "pk": 5,
 
        "model": "sitetree.treeitem",
 
        "fields": {
 
            "parent": 3,
 
            "access_restricted": false,
 
            "access_permissions": [],
 
            "description": "",
 
            "insitetree": true,
 
            "hint": "",
 
            "url": "sponsor_apply",
 
            "inbreadcrumbs": true,
 
            "title": "Apply to be a Sponsor",
 
            "tree": 1,
 
            "access_perm_type": 1,
 
            "alias": null,
 
            "sort_order": 6,
 
            "inmenu": true,
 
            "access_loggedin": false,
 
            "hidden": false,
 
            "urlaspattern": true
 
        }
 
    },
 
    {
 
        "pk": 6,
 
        "model": "sitetree.treeitem",
 
        "fields": {
 
            "parent": 3,
 
            "access_restricted": false,
 
            "access_permissions": [],
 
            "description": "",
 
            "insitetree": true,
 
            "hint": "",
 
            "url": "sponsor_list",
 
            "inbreadcrumbs": true,
 
            "title": "{{ SITE_NAME }} Sponsors",
 
            "tree": 1,
 
            "access_perm_type": 1,
 
            "alias": null,
 
            "sort_order": 5,
 
            "inmenu": true,
 
            "access_loggedin": false,
 
            "hidden": false,
 
            "urlaspattern": true
 
        }
 
    }
 
]
fixtures/sponsor_benefits.json
Show inline comments
 
new file 100644
 
[
 
    {
 
        "pk": 2,
 
        "model": "symposion_sponsorship.benefit",
 
        "fields": {
 
            "type": "weblogo",
 
            "name": "Web Logo",
 
            "description": "Logo to appear on the website"
 
        }
 
    },
 
    {
 
        "pk": 3,
 
        "model": "symposion_sponsorship.benefit",
 
        "fields": {
 
            "type": "file",
 
            "name": "Print Logo",
 
            "description": "Logo to appear in print"
 
        }
 
    },
 
    {
 
        "pk": 4,
 
        "model": "symposion_sponsorship.benefit",
 
        "fields": {
 
            "type": "text",
 
            "name": "Sponsor Description",
 
            "description": "Description to appear on website and in print"
 
        }
 
    },
 
    {
 
        "pk": 9,
 
        "model": "symposion_sponsorship.benefitlevel",
 
        "fields": {
 
            "other_limits": "",
 
            "benefit": 4,
 
            "max_words": null,
 
            "level": 1
 
        }
 
    },
 
    {
 
        "pk": 5,
 
        "model": "symposion_sponsorship.benefitlevel",
 
        "fields": {
 
            "other_limits": "",
 
            "benefit": 3,
 
            "max_words": null,
 
            "level": 1
 
        }
 
    },
 
    {
 
        "pk": 1,
 
        "model": "symposion_sponsorship.benefitlevel",
 
        "fields": {
 
            "other_limits": "",
 
            "benefit": 2,
 
            "max_words": null,
 
            "level": 1
 
        }
 
    },
 
    {
 
        "pk": 10,
 
        "model": "symposion_sponsorship.benefitlevel",
 
        "fields": {
 
            "other_limits": "",
 
            "benefit": 4,
 
            "max_words": null,
 
            "level": 2
 
        }
 
    },
 
    {
 
        "pk": 6,
 
        "model": "symposion_sponsorship.benefitlevel",
 
        "fields": {
 
            "other_limits": "",
 
            "benefit": 3,
 
            "max_words": null,
 
            "level": 2
 
        }
 
    },
 
    {
 
        "pk": 2,
 
        "model": "symposion_sponsorship.benefitlevel",
 
        "fields": {
 
            "other_limits": "",
 
            "benefit": 2,
 
            "max_words": null,
 
            "level": 2
 
        }
 
    },
 
    {
 
        "pk": 11,
 
        "model": "symposion_sponsorship.benefitlevel",
 
        "fields": {
 
            "other_limits": "",
 
            "benefit": 4,
 
            "max_words": null,
 
            "level": 3
 
        }
 
    },
 
    {
 
        "pk": 7,
 
        "model": "symposion_sponsorship.benefitlevel",
 
        "fields": {
 
            "other_limits": "",
 
            "benefit": 3,
 
            "max_words": null,
 
            "level": 3
 
        }
 
    },
 
    {
 
        "pk": 3,
 
        "model": "symposion_sponsorship.benefitlevel",
 
        "fields": {
 
            "other_limits": "",
 
            "benefit": 2,
 
            "max_words": null,
 
            "level": 3
 
        }
 
    }
 
]
fixtures/sponsor_levels.json
Show inline comments
 
new file 100644
 
[
 
    {
 
        "pk": 1,
 
        "model": "symposion_sponsorship.sponsorlevel",
 
        "fields": {
 
            "conference": 1,
 
            "description": "",
 
            "cost": 10000,
 
            "name": "Gold",
 
            "order": 0
 
        }
 
    },
 
    {
 
        "pk": 2,
 
        "model": "symposion_sponsorship.sponsorlevel",
 
        "fields": {
 
            "conference": 1,
 
            "description": "",
 
            "cost": 5000,
 
            "name": "Silver",
 
            "order": 1
 
        }
 
    },
 
    {
 
        "pk": 3,
 
        "model": "symposion_sponsorship.sponsorlevel",
 
        "fields": {
 
            "conference": 1,
 
            "description": "",
 
            "cost": 2000,
 
            "name": "Bronze",
 
            "order": 2
 
        }
 
    }
 
]
gondor.yml
Show inline comments
 
new file 100644
 
site: eldarion-conferences/pinaxcon
 
exec:
 
  web: gunicorn --bind=0.0.0.0 --log-file - --workers=4 pinaxcon.wsgi
 
branches:
 
  master: primary
manage.py
Show inline comments
 
new file 100755
 
#!/usr/bin/env python
 

	
 
import os
 
import sys
 

	
 

	
 
if __name__ == "__main__":
 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pinaxcon.settings")
 

	
 
    from django.core.management import execute_from_command_line
 

	
 
    execute_from_command_line(sys.argv)
package.json
Show inline comments
 
new file 100644
 
{
 
  "repository": {
 
    "type": "git",
 
    "url": "https://github.com/pinax/pinax-project"
 
  },
 
  "scripts": {
 
     "build": "./node_modules/.bin/webpack --config=static/webpack.config.js -p",
 
     "watch": "./node_modules/.bin/webpack --config=static/webpack.config.js -w"
 
  },
 
  "dependencies": {
 
    "babel-core": "^5.8.23",
 
    "babel-loader": "^5.3.2",
 
    "bootstrap": "^3.3.5",
 
    "css-loader": "^0.17.0",
 
    "extract-text-webpack-plugin": "^0.8.2",
 
    "file-loader": "^0.8.4",
 
    "font-awesome": "^4.4.0",
 
    "html-webpack-plugin": "^1.6.1",
 
    "jquery": "^2.1.4",
 
    "less": "^2.5.1",
 
    "less-loader": "^2.2.0",
 
    "style-loader": "^0.12.3",
 
    "webpack": "^1.12.1"
 
  }
 
}
pinaxcon/__init__.py
Show inline comments
 
new file 100644
 
# -*- coding: utf-8 -*-
 

	
 
__about__ = """
 
In addition to what is provided by the "zero" project, this project
 
provides thorough integration with django-user-accounts, adding
 
comprehensive account management functionality. It is a foundation
 
suitable for most sites that have user accounts.
 
"""
 

	
 
default_app_config = "pinaxcon.apps.AppConfig"
pinaxcon/apps.py
Show inline comments
 
new file 100644
 
from importlib import import_module
 

	
 
from django.apps import AppConfig as BaseAppConfig
 

	
 

	
 
class AppConfig(BaseAppConfig):
 

	
 
    name = "pinaxcon"
 

	
 
    def ready(self):
 
        import_module("pinaxcon.receivers")
pinaxcon/hooks.py
Show inline comments
 
new file 100644
 
import markdown
 

	
 
import pinax.boxes.hooks
 
import pinax.pages.hooks
 

	
 

	
 
def markup_renderer(content):
 
    return markdown.markdown(content)
 

	
 

	
 
class PinaxBoxesHookSet(pinax.boxes.hooks.DefaultHookSet):
 

	
 
    def parse_content(self, content):
 
        return markup_renderer(content)
 

	
 

	
 
class PinaxPagesHookSet(pinax.pages.hooks.DefaultHookSet):
 

	
 
    def parse_content(self, content):
 
        return markup_renderer(content)
pinaxcon/proposals/__init__.py
Show inline comments
 
new file 100644
pinaxcon/proposals/admin.py
Show inline comments
 
new file 100644
 
from django.contrib import admin
 

	
 
from .models import TalkProposal
 

	
 

	
 
admin.site.register(TalkProposal)
pinaxcon/proposals/forms.py
Show inline comments
 
new file 100644
 
from django import forms
 

	
 
from .models import TalkProposal
 

	
 

	
 
class ProposalForm(forms.ModelForm):
 

	
 
    def clean_description(self):
 
        value = self.cleaned_data["description"]
 
        if len(value) > 400:
 
            raise forms.ValidationError(
 
                u"The description must be less than 400 characters"
 
            )
 
        return value
 

	
 

	
 
class TalkProposalForm(ProposalForm):
 

	
 
    class Meta:
 
        model = TalkProposal
 
        fields = [
 
            "title",
 
            "audience_level",
 
            "description",
 
            "abstract",
 
            "additional_notes",
 
            "recording_release",
 
        ]
pinaxcon/proposals/migrations/0001_initial.py
Show inline comments
 
new file 100644
 
# -*- coding: utf-8 -*-
 
from __future__ import unicode_literals
 

	
 
from django.db import models, migrations
 

	
 

	
 
class Migration(migrations.Migration):
 

	
 
    dependencies = [
 
        ('symposion_proposals', '__first__'),
 
    ]
 

	
 
    operations = [
 
        migrations.CreateModel(
 
            name='TalkProposal',
 
            fields=[
 
                ('proposalbase_ptr', models.OneToOneField(primary_key=True, to='symposion_proposals.ProposalBase', parent_link=True, auto_created=True, serialize=False)),
 
                ('audience_level', models.IntegerField(choices=[(1, b'Novice'), (3, b'Intermediate'), (2, b'Experienced')])),
 
                ('recording_release', models.BooleanField(help_text=b'By submitting your proposal, you agree to give permission to the conference organizers to record, edit, and release audio and/or video of your presentation. If you do not agree to this, please uncheck this box.', default=True)),
 
            ],
 
            options={
 
                'verbose_name': 'talk proposal',
 
            },
 
            bases=('symposion_proposals.proposalbase',),
 
        ),
 
    ]
pinaxcon/proposals/migrations/__init__.py
Show inline comments
 
new file 100644
pinaxcon/proposals/models.py
Show inline comments
 
new file 100644
 
from django.db import models
 

	
 
from symposion.proposals.models import ProposalBase
 

	
 

	
 
class Proposal(ProposalBase):
 

	
 
    AUDIENCE_LEVEL_NOVICE = 1
 
    AUDIENCE_LEVEL_EXPERIENCED = 2
 
    AUDIENCE_LEVEL_INTERMEDIATE = 3
 

	
 
    AUDIENCE_LEVELS = [
 
        (AUDIENCE_LEVEL_NOVICE, "Novice"),
 
        (AUDIENCE_LEVEL_INTERMEDIATE, "Intermediate"),
 
        (AUDIENCE_LEVEL_EXPERIENCED, "Experienced"),
 
    ]
 

	
 
    audience_level = models.IntegerField(choices=AUDIENCE_LEVELS)
 

	
 
    recording_release = models.BooleanField(
 
        default=True,
 
        help_text="By submitting your proposal, you agree to give permission to the conference organizers to record, edit, and release audio and/or video of your presentation. If you do not agree to this, please uncheck this box."
 
    )
 

	
 
    class Meta:
 
        abstract = True
 

	
 

	
 
class TalkProposal(Proposal):
 

	
 
    class Meta:
 
        verbose_name = "talk proposal"
pinaxcon/receivers.py
Show inline comments
 
new file 100644
 
from django.dispatch import receiver
 

	
 
from account.signals import password_changed
 
from account.signals import user_sign_up_attempt, user_signed_up
 
from account.signals import user_login_attempt, user_logged_in
 

	
 
from pinax.eventlog.models import log
 

	
 

	
 
@receiver(user_logged_in)
 
def handle_user_logged_in(sender, **kwargs):
 
    log(
 
        user=kwargs.get("user"),
 
        action="USER_LOGGED_IN",
 
        extra={}
 
    )
 

	
 

	
 
@receiver(password_changed)
 
def handle_password_changed(sender, **kwargs):
 
    log(
 
        user=kwargs.get("user"),
 
        action="PASSWORD_CHANGED",
 
        extra={}
 
    )
 

	
 

	
 
@receiver(user_login_attempt)
 
def handle_user_login_attempt(sender, **kwargs):
 
    log(
 
        user=None,
 
        action="LOGIN_ATTEMPTED",
 
        extra={
 
            "username": kwargs.get("username"),
 
            "result": kwargs.get("result")
 
        }
 
    )
 

	
 

	
 
@receiver(user_sign_up_attempt)
 
def handle_user_sign_up_attempt(sender, **kwargs):
 
    log(
 
        user=None,
 
        action="SIGNUP_ATTEMPTED",
 
        extra={
 
            "username": kwargs.get("username"),
 
            "email": kwargs.get("email"),
 
            "result": kwargs.get("result")
 
        }
 
    )
 

	
 

	
 
@receiver(user_signed_up)
 
def handle_user_signed_up(sender, **kwargs):
 
    log(
 
        user=kwargs.get("user"),
 
        action="USER_SIGNED_UP",
 
        extra={}
 
    )
pinaxcon/settings.py
Show inline comments
 
new file 100644
 
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__))
 
BASE_DIR = PACKAGE_ROOT
 

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

	
 
DATABASES = {
 
    "default": dj_database_url.config(default="postgres://localhost/pinaxcon")
 
}
 

	
 
ALLOWED_HOSTS = [
 
    os.environ.get("GONDOR_INSTANCE_DOMAIN"),
 
    "conference.pinaxproject.com"
 
]
 

	
 
# Local time zone for this installation. Choices can be found here:
 
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
 
# 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 = "UTC"
 

	
 
# Language code for this installation. All choices can be found here:
 
# http://www.i18nguy.com/unicode/language-identifiers.html
 
LANGUAGE_CODE = "en-us"
 

	
 
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.lawrence.com/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: "http://media.lawrence.com/media/", "http://example.com/media/"
 
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/media.lawrence.com/static/"
 
STATIC_ROOT = os.path.join(PACKAGE_ROOT, "site_media", "static")
 

	
 
# URL prefix for static files.
 
# Example: "http://media.lawrence.com/static/"
 
STATIC_URL = "/site_media/static/"
 

	
 
# Additional locations of static files
 
STATICFILES_DIRS = [
 
    os.path.join(PROJECT_ROOT, "static", "dist"),
 
]
 

	
 
# List of finder classes that know how to find static files in
 
# various locations.
 
STATICFILES_FINDERS = [
 
    "django.contrib.staticfiles.finders.FileSystemFinder",
 
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
 
]
 

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

	
 
TEMPLATES = [
 
    {
 
        "BACKEND": "django.template.backends.django.DjangoTemplates",
 
        "DIRS": [
 
            os.path.join(PACKAGE_ROOT, "templates"),
 
        ],
 
        "APP_DIRS": True,
 
        "OPTIONS": {
 
            "debug": DEBUG,
 
            "context_processors": [
 
                "django.contrib.auth.context_processors.auth",
 
                "django.core.context_processors.debug",
 
                "django.core.context_processors.i18n",
 
                "django.core.context_processors.media",
 
                "django.core.context_processors.static",
 
                "django.core.context_processors.tz",
 
                "django.core.context_processors.request",
 
                "django.contrib.messages.context_processors.messages",
 
                "account.context_processors.account",
 
                "pinax_theme_bootstrap.context_processors.theme",
 
                "symposion.reviews.context_processors.reviews",
 
            ],
 
        },
 
    },
 
]
 

	
 
MIDDLEWARE_CLASSES = [
 
    "django.contrib.sessions.middleware.SessionMiddleware",
 
    "django.middleware.common.CommonMiddleware",
 
    "django.middleware.csrf.CsrfViewMiddleware",
 
    "django.contrib.auth.middleware.AuthenticationMiddleware",
 
    "django.contrib.auth.middleware.SessionAuthenticationMiddleware",
 
    "django.contrib.messages.middleware.MessageMiddleware",
 
    "reversion.middleware.RevisionMiddleware",
 
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
 
]
 

	
 
ROOT_URLCONF = "pinaxcon.urls"
 

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

	
 
INSTALLED_APPS = [
 
    "django.contrib.admin",
 
    "django.contrib.auth",
 
    "django.contrib.contenttypes",
 
    "django.contrib.messages",
 
    "django.contrib.sessions",
 
    "django.contrib.sites",
 
    "django.contrib.staticfiles",
 

	
 
    # theme
 
    "bootstrapform",
 
    "pinax_theme_bootstrap",
 

	
 
    # external
 
    "account",
 
    "easy_thumbnails",
 
    "taggit",
 
    "reversion",
 
    "metron",
 
    "sitetree",
 
    "pinax.boxes",
 
    "pinax.eventlog",
 
    "pinax.pages",
 

	
 
    # symposion
 
    "symposion",
 
    "symposion.conference",
 
    "symposion.proposals",
 
    "symposion.reviews",
 
    "symposion.schedule",
 
    "symposion.speakers",
 
    "symposion.sponsorship",
 
    "symposion.teams",
 

	
 
    # project
 
    "pinaxcon",
 
    "pinaxcon.proposals"
 
]
 

	
 
# A sample logging configuration. The only tangible logging
 
# performed by this configuration is to send an email to
 
# the site admins on every HTTP 500 error when DEBUG=False.
 
# See http://docs.djangoproject.com/en/dev/topics/logging for
 
# more details on how to customize your logging configuration.
 
LOGGING = {
 
    "version": 1,
 
    "disable_existing_loggers": False,
 
    "filters": {
 
        "require_debug_false": {
 
            "()": "django.utils.log.RequireDebugFalse"
 
        }
 
    },
 
    "handlers": {
 
        "mail_admins": {
 
            "level": "ERROR",
 
            "filters": ["require_debug_false"],
 
            "class": "django.utils.log.AdminEmailHandler"
 
        }
 
    },
 
    "loggers": {
 
        "django.request": {
 
            "handlers": ["mail_admins"],
 
            "level": "ERROR",
 
            "propagate": True,
 
        },
 
    }
 
}
 

	
 
FIXTURE_DIRS = [
 
    os.path.join(PROJECT_ROOT, "fixtures"),
 
]
 

	
 
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
 

	
 
ACCOUNT_OPEN_SIGNUP = True
 
ACCOUNT_EMAIL_UNIQUE = True
 
ACCOUNT_EMAIL_CONFIRMATION_REQUIRED = False
 
ACCOUNT_LOGIN_REDIRECT_URL = "home"
 
ACCOUNT_LOGOUT_REDIRECT_URL = "home"
 
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 2
 
ACCOUNT_USE_AUTH_AUTHENTICATE = True
 

	
 
AUTHENTICATION_BACKENDS = [
 
    "symposion.teams.backends.TeamPermissionsBackend",
 
    "account.auth_backends.UsernameAuthenticationBackend",
 
]
 

	
 
CONFERENCE_ID = 1
 
PROPOSAL_FORMS = {
 
    "talk": "pinaxcon.proposals.forms.TalkProposalForm",
 
}
 
PINAX_PAGES_HOOKSET = "pinaxcon.hooks.PinaxPagesHookSet"
 
PINAX_BOXES_HOOKSET = "pinaxcon.hooks.PinaxBoxesHookSet"
pinaxcon/templates/_account_bar.html
Show inline comments
 
new file 100644
 
{% load i18n %}
 
{% load account_tags %}
 

	
 

	
 
<ul class="nav navbar-nav pull-right">
 
    {% if request.user.is_authenticated %}
 
        <span class="navbar-text">
 
            <i class="fa fa-user"></i> {% user_display request.user %}
 
        </span>
 
        <li>
 
            <a href="{% url "dashboard" %}"><i class="fa fa-tasks"></i> {% trans "Dashboard" %}</a>
 
        </li>
 
        <li>
 
            <a href="{% url 'account_settings' %}"><i class="fa fa-cog"></i> {% trans "Settings" %}</a>
 
        </li>
 
        <li>
 
            <a id="account_logout" href="{% url 'account_logout' %}"><i class="fa fa-power-off"></i> {% trans "Log out" %}</a>
 
        </li>
 
    {% else %}
 
        <li><a href="{% url 'account_login' %}">{% trans "Log in" %}</a></li>
 
        {% if ACCOUNT_OPEN_SIGNUP %}
 
            <li><a href="{% url 'account_signup' %}">{% trans "Sign up" %}</a></li>
 
        {% endif %}
 
    {% endif %}
 
</ul>
 

	
 
<form id="accountLogOutForm" style="display: none;" action="{% url 'account_logout' %}" method="POST">
 
    {% csrf_token %}
 
</form>
pinaxcon/templates/_default_sidebar.html
Show inline comments
 
new file 100644
 
{% load sponsorship_tags %}
 
{% load thumbnail %}
 
{% load pinax_boxes_tags %}
 

	
 
{% sponsor_levels as levels %}
 

	
 
<h4>Sponsors</h4>
 

	
 
<div class="sponsor-list">
 
    {% box "sponsor-top" %}
 
    {% for level in levels %}
 
        {% if level.sponsors %}
 
            <h3 style="margin-top: 3em;">{{ level.name }}</h3>
 
\
 
            {% for sponsor in level.sponsors %}
 
                <div style="margin: 10px 0;">
 
                    <a href="{{ sponsor.external_url }}">
 
                        <img src="{% thumbnail sponsor.website_logo '100x60' %}" alt="{{ sponsor.name }}" />
 
                    </a>
 
                </div>
 
            {% endfor %}
 
        {% endif %}
 
    {% endfor %}
 
</div>
pinaxcon/templates/_footer.html
Show inline comments
 
new file 100644
 
<div class="pull-left">
 
    &copy;2015
 
</div>
 

	
 
<div class="pull-right">
 
    Site powered by <a href="http://eldarion.com/symposion/"><b>Symposion</b></a>.
 
</div>
pinaxcon/templates/_scripts.html
Show inline comments
 
new file 100644
 
<script src='/site_media/static/js/site.js?45281e7e2f5ad8c9f8a5'></script>
pinaxcon/templates/_styles.html
Show inline comments
 
new file 100644
 
<link href='/site_media/static/css/site.css?45281e7e2f5ad8c9f8a5' rel='stylesheet' />
pinaxcon/templates/dashboard.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load i18n %}
 
{% load proposal_tags %}
 
{% load review_tags %}
 
{% load teams_tags %}
 

	
 
{% block head_title %}Dashboard{% endblock %}
 

	
 
{% block body_class %}auth{% endblock %}
 

	
 
{% block body %}
 
    <div class="panel panel-default">
 
        <div class="panel-heading">
 
            <div class="pull-right">
 
                {% if not user.speaker_profile %}
 
                    <a href="{% url "speaker_create" %}" class="btn btn-xs btn-default">
 
                        <i class="fa fa-plus-sign"></i> Create a speaker profile
 
                    </a>
 
                {% else %}
 
                    <a href="{% url "speaker_edit" %}" class="btn btn-xs btn-default">
 
                        <i class="fa fa-pencil"></i> Edit your speaker profile
 
                    </a>
 
                    <a href="{% url "proposal_submit" %}" class="btn btn-xs btn-default">
 
                        <i class="fa fa-plus-sign"></i> Submit a new proposal
 
                    </a>
 
                {% endif %}
 
            </div>
 
            <h3 class="panel-title">
 
                <i class="fa fa-bullhorn"></i>
 
                {% trans "Speaking" %}
 
            </h3>
 
        </div>
 

	
 
        <div class="panel-body">
 
            {% if not user.speaker_profile %}
 
                <p>To submit a proposal, you must first <a href="{% url "speaker_create" %}">create a speaker profile</a>.</p>
 
            {% else %}
 
                <h4>Your Proposals</h4>
 
                {% if not user.speaker_profile.proposals.exists %}
 
                    <p>No proposals submitted yet.</p>
 
                {% endif %}
 
            {% endif %}
 
        </div>
 
        {% if user.speaker_profile.proposals.exists %}
 
            <table class="table">
 
                <tr>
 
                    <th>Title</th>
 
                    <th>Session type</th>
 
                    <th>Status</th>
 
                    <th>Actions</th>
 
                </tr>
 
                {% for proposal in user.speaker_profile.proposals.all %}
 
                    {% include "symposion/proposals/_proposal_row.html" %}
 
                {% endfor %}
 
            </table>
 
        {% endif %}
 

	
 
        {% if user.speaker_profile %}
 
            {% associated_proposals as associated_proposals %}
 
            {% if associated_proposals %}
 
                <div class="panel-body">
 
                    <h4>Proposals you have joined as an additional speaker</h4>
 
                </div>
 
                <table class="table">
 
                    <tr>
 
                        <th>Title</th>
 
                        <th>Session type</th>
 
                        <th>Status</th>
 
                        <th>Actions</th>
 
                    </tr>
 
                    {% for proposal in associated_proposals %}
 
                        {% include "symposion/proposals/_proposal_row.html" %}
 
                    {% endfor %}
 
                </table>
 
            {% endif %}
 

	
 
            {% pending_proposals as pending_proposals %}
 
            {% if pending_proposals %}
 
                <div class="panel-body"><h4>Proposals you have been invited to join</h4></div>
 
                <table class="table">
 
                    <tr>
 
                        <th>Title</th>
 
                        <th>Session type</th>
 
                        <th>Status</th>
 
                        <th>Actions</th>
 
                    </tr>
 
                    {% for proposal in pending_proposals %}
 
                        {% include "symposion/proposals/_pending_proposal_row.html" %}
 
                    {% endfor %}
 
                </table>
 
            {% endif %}
 
        {% endif %}
 
    </div>
 

	
 
    <div class="panel panel-default">
 
        <div class="panel-heading">
 
            <div class="pull-right header-actions">
 
                {% if not user.sponsorships.exists %}
 
                    <a href="{% url "sponsor_apply" %}" class="btn btn-xs btn-default">
 
                        <i class="fa fa-plus-sign"></i>
 
                        Apply to be a sponsor
 
                    </a>
 
                {% endif %}
 
            </div>
 
            <h3 class="panel-title">
 
                <i class="fa fa-briefcase"></i>
 
                {% trans "Sponsorship" %}
 
            </h3>
 
        </div>
 

	
 
        <div class="panel-body">
 
            {% if not user.sponsorships.exists %}
 
                <p>If you or your organization would be interested in sponsorship opportunities, <a href="{% url "sponsor_apply" %}">use our online form to apply to be a sponsor</a>.
 
            {% else %}
 
                <h4>Your Sponsorship</h4>
 
                <ul class="list-group">
 
                    {% for sponsorship in user.sponsorships.all %}
 
                        <li class="list-group-item">
 
                            <a href="{% url "sponsor_detail" sponsorship.pk %}"><b>{{ sponsorship.name }}</b></a>
 
                            ({{ sponsorship.level }})
 
                            {% if not sponsorship.active %}
 
                                <span class="label label-warning">awaiting approval</span>
 
                            {% endif %}
 
                        </li>
 
                    {% endfor %}
 
                </ul>
 
            {% endif %}
 
            {% if user.is_staff %}
 
                <p>
 
                    As staff, you can directly <a href="{% url "sponsor_add" %}">add a sponsor</a> if the organization isn't
 
                    applying themselves.
 
                </p>
 
            {% endif %}
 
        </div>
 
    </div>
 

	
 
    {% if review_sections %}
 
        <div class="panel panel-default">
 
            <div class="panel-heading">
 
                <h3 class="panel-title">
 
                    <i class="fa fa-briefcase"></i>
 
                    {% trans "Reviews" %}
 
                </h3>
 
            </div>
 
            <div class="panel-body">
 
                <h4>Reviews by Section</h4>
 
                <ul>
 
                    {% for section in review_sections %}
 
                        <h5>{{ section }}</h5>
 
                        <li><a href="{% url "review_section" section.section.slug %}">All</a></li>
 
                        <li><a href="{% url "user_reviewed" section.section.slug %}">Reviewed by you</a></li>
 
                        <li><a href="{% url "user_not_reviewed" section.section.slug %}">Not Reviewed by you</a></li>
 
                    {% endfor %}
 
                </ul>
 

	
 
                {% comment %}
 
                <h4>My Assignments</h4>
 
                <table class="table">
 
                    <thead>
 
                        <td>Proposal Title</td>
 
                        <td>Score</td>
 
                    </thead>
 
                    <tbody>
 
                        <tr>
 
                            <td>Title Three</td>
 
                            <td>-1</td>
 
                        </tr>
 
                        <tr>
 
                            <td>Title Four</td>
 
                            <td>+2</td>
 
                        </tr>
 
                    </tbody>
 
                </table>
 
                {% endcomment %}
 

	
 
            </div>
 
    </div>
 
    {% endif %}
 

	
 
    {% available_teams as available_teams %}
 
    {% if user.memberships.exists or available_teams %}
 
        <div class="panel panel-default">
 
            <div class="panel-heading">
 
                <h3 class="panel-title">
 
                    <i class="fa fa-group"></i>
 
                    {% trans "Teams" %}
 
                </h3>
 
            </div>
 

	
 
            {% if user.memberships.exists %}
 
                <div class="panel-body">
 
                    <h4>Your Teams</h4>
 
                </div>
 
                <table class="table table-striped">
 
                    {% for membership in user.memberships.all %}
 
                        <tr>
 
                            <td>
 
                                <a href="{% url "team_detail" membership.team.slug %}">{{ membership.team.name }}</a>
 
                                {% if membership.team.description %}<br>{{ membership.team.description }}{% endif %}
 
                            </td>
 
                            <td>
 
                                <span class="label{% if membership.state == 'invited' %} label-info{% endif %}">{{ membership.get_state_display }}</span>
 
                            </td>
 
                            <td>
 
                                {% if membership.state == "manager" or user.is_staff %}
 
                                    {% if membership.team.applicants %}{{ membership.team.applicants.count }} applicant{{ membership.team.applicants.count|pluralize }}{% endif %}
 
                                {% endif %}
 
                            </td>
 
                        </tr>
 
                    {% endfor %}
 
                </table>
 
            {% endif %}
 
            {% if available_teams %}
 
                <div class="panel-body">
 
                    <h4>Available Teams</h4>
 
                </div>
 
                <table class="table table-striped">
 
                    {% for team in available_teams %}
 
                        <tr>
 
                            <td>
 
                                <a href="{% url team_detail team.slug %}">{{ team }}</a>
 
                                {% if team.description %}<br>{{ team.description }}{% endif %}
 
                            </td>
 
                            <td>
 
                                <span class="label label-default">{{ team.get_access_display }}</span>
 
                            </td>
 
                        </tr>
 
                    {% endfor %}
 
                </table>
 
            {% endif %}
 
        </div>
 
    {% endif %}
 
{% endblock %}
pinaxcon/templates/homepage.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load i18n %}
 
{% load pinax_boxes_tags %}
 

	
 
{% block head_title %}{% trans "Welcome" %}{% endblock %}
 

	
 
{% block body_class %}home{% endblock %}
 

	
 
{% block body %}
 
    {% box "homepage" %}
 
{% endblock %}
pinaxcon/templates/pinax/boxes/_box.html
Show inline comments
 
new file 100644
 
{% include "pinax/boxes/_box_body.html" %}
pinaxcon/templates/pinax/boxes/_box_body.html
Show inline comments
 
new file 100644
 
{% load i18n %}
 

	
 
{% if form %}
 
    <div id="edit_{{ label }}" class="modal fade">
 
        <div class="modal-dialog">
 
            <div class="modal-content">
 
                <form id="edit_form_{{ label }}" accept-charset="UTF-8" class="modal-form" method="POST" action="{{ form_action }}?next={{ request.path }}">
 
                    <div class="modal-header">
 
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
 
                        <h4 class="modal-title">{% trans "Editing content:" %} {{ label }}</h4>
 
                    </div>
 
                    <div class="modal-body">
 
                        {% csrf_token %}
 
                        {{ form.content }}
 
                    </div>
 
                    <div class="modal-footer">
 
                        <button type="submit" class="btn btn-primary">Save changes</button>
 
                    </div>
 
                </form>
 
            </div>
 
        </div>
 
    </div>
 
{% endif %}
 

	
 
<div id="content_{{ label }}" class="content-box {% if form %}editable{% endif %}">
 
    {% if form %}
 
        <a href="#edit_{{ label }}" data-toggle="modal" class="btn btn-default btn-sm edit-toggle">
 
            <i class="fa fa-pencil"></i>
 
            Edit this content
 
        </a>
 
    {% endif %}
 
    {{ box.content_html|safe }}
 
</div>
pinaxcon/templates/pinax/pages/file_create.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load bootstrap %}
 

	
 
{% block head_title %}Upload File{% endblock %}
 

	
 
{% block body_outer %}
 
    <h1>Upload File</h1>
 
    <form method="POST" action="{% url "file_create" %}" enctype="multipart/form-data">
 
        {% csrf_token %}
 
        {{ form|bootstrap }}
 
        <div class="form-actions">
 
            <button class="btn btn-primary" type="submit">Upload</button>
 
        </div>
 
    </form>
 
{% endblock %}
pinaxcon/templates/pinax/pages/file_list.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% block head_title %}Uploaded Files{% endblock %}
 

	
 
{% block body_outer %}
 
    <h1>Files</h1>
 
    {% for file in files %}
 
        <div style="margin-top: 1em;">
 
            <form class="pull-right" action="{% url "file_delete" file.pk %}" method="post">
 
                {% csrf_token %}
 
                <button type="submit" class="btn btn-error"><i class="fa fa-trash"></i> delete</button>
 
            </form>
 
            <h3><a href="{{ file.download_url }}">{{ file.file }}</a></h3>
 
            <span style="font-style:italic; color: #999;">Uploaded {{ file.created|date:"N j, Y" }}</span>
 
        </div>
 
    {% empty %}
 
        <p>No uploaded files.</p>
 
    {% endfor %}
 
    <div style="margin-top: 2em">
 
        <a class="btn btn-success" href="{% url "file_create" %}">
 
            <i class="fa fa-plus"></i>
 
            Add File
 
        </a>
 
    </div>
 
{% endblock %}
pinaxcon/templates/pinax/pages/page_detail.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load sitetree %}
 
{% load i18n %}
 

	
 
{% block body_class %}cms-page{% endblock %}
 

	
 
{% block head_title %}{{ page.title }}{% endblock %}
 

	
 
{% block breadcrumbs %}{% sitetree_breadcrumbs from "main" %}{% endblock %}
 

	
 
{% block body %}
 
    {% if editable %}
 
        <div class="pull-right">
 
            <a href="{% url 'pages_page_edit' page.path %}" class="btn btn-sm btn-default">
 
                <i class="fa fa-pencil"></i>
 
                Edit this page
 
            </a>
 
        </div>
 
    {% endif %}
 
    <h2>{{ page.title }}</h2>
 

	
 
    <div class="page-content">
 
        {{ page.body_html|safe }}
 
    </div>
 

	
 
{% endblock %}
pinaxcon/templates/pinax/pages/page_edit.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load sitetree %}
 
{% load i18n %}
 
{% load bootstrap %}
 

	
 
{% block body_class %}cms-page{% endblock %}
 

	
 
{% block head_title %}Create Page{% endblock %}
 

	
 
{% block page_title %}{% trans "Edit page at:" %} {{ path }}{% endblock %}
 
{% block breadcrumbs %}{% sitetree_breadcrumbs from "main" %}{% endblock %}
 

	
 
{% block body %}
 
    <form method="POST" action="">
 
        {% csrf_token %}
 
        {{ form|bootstrap }}
 
        <div class="form-actions">
 
            <input class="btn btn-primary" type="submit" value="Save" />
 
        </div>
 
    </form>
 
{% endblock %}
pinaxcon/templates/site_base.html
Show inline comments
 
new file 100644
 
{% extends "theme_bootstrap/base.html" %}
 

	
 
{% load staticfiles %}
 
{% load metron_tags %}
 
{% load i18n %}
 
{% load sitetree %}
 

	
 

	
 
{% block styles %}
 
    {% include "_styles.html" %}
 
{% endblock %}
 

	
 

	
 
{% block extra_head_base %}
 
    {% block extra_head %}{% endblock %}
 
{% endblock %}
 

	
 
{% block nav %}
 
    {% sitetree_menu from "main" include "trunk" template "sitetree/menu_bootstrap3.html" %}
 
{% endblock %}
 

	
 
{% block body_base %}
 
    <section id="content_body">
 
        <div class="container">
 
            {% include "_messages.html" %}
 
            <div class="row">
 
                <div class="col-md-9">
 
                    {% block body %}
 
                    {% endblock %}
 
                </div>
 
                <div class="col-md-3">
 
                    {% block sidebar %}
 
                        {% include "_default_sidebar.html" %}
 
                    {% endblock %}
 
                </div>
 
            </div>
 
        </div>
 
    </section>
 
{% endblock %}
 

	
 

	
 
{% block footer %}
 
    {% include "_footer.html" %}
 
{% endblock %}
 

	
 

	
 
{% block scripts %}
 
    {% include "_scripts.html" %}
 
{% endblock %}
 

	
 
{% block extra_body_base %}
 
    {% analytics %}
 
    {% block extra_body %}{% endblock %}
 
{% endblock %}
pinaxcon/templates/site_base_onecolumn.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 

	
 
{% block body_base %}
 
    <section id="content_body">
 
        <div class="container">
 
            {% include "_messages.html" %}
 
            {% block body %}
 
            {% endblock %}
 
        </div>
 
    </section>
 
{% endblock %}
pinaxcon/templates/symposion/conference/user_list.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load i18n %}
 
{% load sitetree %}
 

	
 
{% block head_title %}User List{% endblock %}
 

	
 
{% block extra_style %}
 
    <style type="text/css">
 
        div.dataTables_length label {
 
            float: left;
 
            text-align: left;
 
        }
 
        div.dataTables_length select {
 
            width: 75px;
 
        }
 
        div.dataTables_filter label {
 
            float: right;
 
        }
 
        div.dataTables_info {
 
            padding-top: 8px;
 
        }
 
        div.dataTables_paginate {
 
            float: right;
 
            margin: 0;
 
        }
 
        table.table {
 
            clear: both;
 
            margin-bottom: 6px !important;
 
            background-color: white;
 
        }
 
        table.table thead .sorting,
 
        table.table thead .sorting_asc,
 
        table.table thead .sorting_desc,
 
        table.table thead .sorting_asc_disabled,
 
        table.table thead .sorting_desc_disabled {
 
            cursor: pointer;
 
            *cursor: hand;
 
        }
 
        table.dataTable th:active {
 
            outline: none;
 
        }
 
    </style>
 
{% endblock %}
 

	
 
{% block body_outer %}
 
    <h1>User List</h1>
 
    <table class="table table-striped table-bordered table-reviews">
 
        <thead>
 
            <th>{% trans "Email" %}</th>
 
            <th>{% trans "Name" %}</th>
 
            <th>{% trans "Speaker Profile?" %}</th>
 
        </thead>
 

	
 
        <tbody>
 
            {% for user in users %}
 
                <tr>
 
                    <td>{{ user.email }}</td>
 
                    <td>{{ user.get_full_name }}</td>
 
                    <td>
 
                        {% if user.speaker_profile %}
 
                            <a href="{% url "speaker_profile" user.speaker_profile.pk %}">{{ user.speaker_profile }}</a>
 
                        {% else %}
 
                            <a href="{% url "speaker_create_staff" user.pk %}" class="btn btn-xs">create</a>
 
                        {% endif %}
 
                    </td>
 
                </tr>
 
            {% endfor %}
 
        </tbody>
 
    </table>
 
{% endblock %}
 

	
 
{% block extra_script %}
 
    <script src="{{ STATIC_URL }}datatables/js/jquery.dataTables.min.js" type="text/javascript"></script>
 
    <script src="{{ STATIC_URL }}tabletools/js/TableTools.min.js" type="text/javascript"></script>
 
    <script src="{{ STATIC_URL }}datatables/js/dataTables.bootstrap.js" type="text/javascript"></script>
 
    <script type="text/javascript">
 
        $(function() {
 
            $(".tip").tooltip();
 
            $("table.table-reviews").dataTable({
 
                "sDom": "<'row'<'col-md-3'l><'col-md-3'T><'col-md-4'f>r>t<'row'<'col-md-3'i><'col-md-5'p>>",
 
                "sPaginationType": "bootstrap",
 
                "bStateSave": true,
 
                "oTableTools": {
 
                    "aButtons": [
 
                        "copy",
 
                        "csv",
 
                        "print"
 
                    ],
 
                    "sSwfPath": "{{ STATIC_URL }}tabletools/swf/copy_csv_xls.swf"
 
                }
 
            });
 
        });
 
    </script>
 
{% endblock %}
pinaxcon/templates/symposion/emails/proposal_new_message/message.html
Show inline comments
 
new file 100644
 
{% load account_tags %}
 
{% load i18n %}
 
{% user_display message.user as user %}
 
<p>
 
  {% blocktrans with title=proposal.title %}<b>{{ user }}</b> has added a message on <b>{{ title }}</b>.{% endblocktrans %}
 
</p>
 
<blockquote>
 
    {{ message.message|safe }}
 
</blockquote>
 
<p>
 
    {% if reviewer %}{% url 'review_detail' proposal.pk as detail_url %}{% else %}{% url 'proposal_detail' proposal.pk as detail_url %}{% endif %}
 
    {% blocktrans %} Respond online at <a href="http://{{ current_site }}{{ detail_url }}#proposal-feedback">http://{{ current_site }}{{ detail_url }}#proposal-feedback</a>{% endblocktrans %}
 
</p>
pinaxcon/templates/symposion/emails/proposal_new_message/subject.txt
Show inline comments
 
new file 100644
 
{% load account_tags i18n %}{% user_display message.user as user %}{% blocktrans with title=proposal.title %}New message on "{{ title }}" from {{ user }}{% endblocktrans %}
pinaxcon/templates/symposion/emails/proposal_updated/message.html
Show inline comments
 
new file 100644
 
{% load account_tags %}
 
{% load i18n %}
 
{% user_display user as username %}
 
<p>
 
  {% blocktrans with title=proposal.title %}<b>{{ username }}</b> has made changes to <b>{{ title }}</b> which you have previously reviewed or commented on.{% endblocktrans %}
 
</p>
 
<p>
 
    {% url 'review_detail' proposal.pk as detail_url %}
 
    {% blocktrans %}View the latest version of the proposal online at <a href="http://{{ current_site }}{{ detail_url }}">http://{{ current_site }}{{ detail_url }}</a>{% endblocktrans %}
 
</p>
pinaxcon/templates/symposion/emails/proposal_updated/subject.txt
Show inline comments
 
new file 100644
 
{% load account_tags i18n %}{% user_display user as username %}{% blocktrans with title=proposal.title %}"{{ title }}" has been updated by {{ username }}{% endblocktrans %}
pinaxcon/templates/symposion/emails/speaker_addition/message.html
Show inline comments
 
new file 100644
 
{% load i18n %}
 
{% url 'dashboard' as dashboard_url %}
 
{% blocktrans with username=proposal.speaker.name site_name=current_site.name title=proposal.title %}
 
<p>{{ username }} attached you as an additional speaker to a
 
    talk proposal for {{ site_name }} entitled "{{ title }}".</p>
 

	
 
<p>For more details, visit the {{ site_name }} speaker dashboard:
 
    <a href="http://{{ current_site }}{{ dashboard_url }}">http://{{ current_site }}{{ dashboard_url ]}</a>
 
</p>
 
{% endblocktrans %}
pinaxcon/templates/symposion/emails/speaker_addition/subject.txt
Show inline comments
 
new file 100644
 
{% load i18n %}{% blocktrans with name=proposal.speaker.name title=proposal.title %}{{ name }} has invited you to join as a speaker on {{ title }}{% endblocktrans %}
pinaxcon/templates/symposion/emails/speaker_invite/message.html
Show inline comments
 
new file 100644
 
{% load i18n %}
 
{% url 'speaker_create_token' token as token_url %}
 
{% blocktrans with invitator=proposal.speaker.name title=proposal.title site_name=current_site.name %}
 
<p>{{ invitator }} attached you as an additional speaker to a
 
    talk proposal for {{ site_name }} entitled "{{ title }}".</p>
 

	
 
<p>Go to</p>
 

	
 
<p><a href="http://{{ current_site }}{{ token_url }}">http://{{ current_site }}{{ token_url }}</a></p>
 

	
 
<p>to confirm.</p>
 

	
 
<p>If you don't have account on the website, you will be asked to create one.</p>
 
{% endblocktrans %}
pinaxcon/templates/symposion/emails/speaker_invite/subject.txt
Show inline comments
 
new file 100644
 
{% load i18n %}{% blocktrans with name=proposal.speaker.name title=proposal.title %}{{ name }} has invited you to join as a speaker on {{ title }}{% endblocktrans %}
pinaxcon/templates/symposion/emails/speaker_no_profile/message.html
Show inline comments
 
new file 100644
 
{% load i18n %}
 
{% url 'speaker_create_token' token as token_url %}
 
{% blocktrans with username=proposal.speaker.name site_name=current_site.name title=proposal.title %}
 
<p>{{ username }} attached you as an additional speaker to a
 
    talk proposal for {{ site_name }} entitled "{{ title }}".</p>
 

	
 
<p>Go to</p>
 

	
 
<p><a href="http://{{ current_site }}{{ token_url }}">http://{{ current_site }}{{ token_url }}</a></p>
 

	
 
<p>to confirm and fill out your speaker profile.</p>
 
{% endblocktrans %}
pinaxcon/templates/symposion/emails/speaker_no_profile/subject.txt
Show inline comments
 
new file 100644
 
{% load i18n %}{% blocktrans with name=proposal.speaker.name title=proposal.title %}{{ name }} has invited you to join as a speaker on {{ title }}{% endblocktrans %}
pinaxcon/templates/symposion/emails/sponsor_signup/message.html
Show inline comments
 
new file 100644
 
{% load i18n %}
 
{% blocktrans with sponsor_name=sponsor.name applicant=sponsor.applicant contact=sponsor.contact_name email=sponsor.contact_email level=sponsor.level %}
 
<p>{{ sponsor_name }} has applied to be a sponsor.</p>
 

	
 
<ul>
 
    <li><b>Applicant</b>: {{ applicant }}</li>
 
    <li><b>Sponsor Name</b>: {{ sponsor_name }}</li>
 
    <li><b>Sponsor Contact</b>: {{ contact }}</li>
 
    <li><b>Sponsor Contact Email</b>: {{ email }}</li>
 
    <li><b>Sponsorship Level</b>: {{ level }}</li>
 
</ul>
 
{% endblocktrans %}
pinaxcon/templates/symposion/emails/sponsor_signup/subject.txt
Show inline comments
 
new file 100644
 
{% load i18n %}{% trans "New Sponsor Application" %}
pinaxcon/templates/symposion/emails/teams_user_applied/message.html
Show inline comments
 
new file 100644
 
{% load i18n account_tags %}
 
{% user_display user as username %}
 
{% blocktrans with team_name=team team_url=team.get_absolute_url site_name=current_site.name site_url=current_site %}
 
    <p>
 
        User "{{ username }}" has applied to join <b>{{ team_name }}</b> on {{ site_name }}.
 
    </p>
 

	
 
    <p>
 
        To accept this application and see any other pending applications, visit the following url:
 
        <a href="http://{{ site_url }}{{ team_url }}">http://{{ site_url }}{{ team_url }}</a>
 
    </p>
 
{% endblocktrans %}
pinaxcon/templates/symposion/emails/teams_user_applied/subject.txt
Show inline comments
 
new file 100644
 
{% load i18n account_tags %}{% user_display user as username %}{% blocktrans %}{{ username}} has applied to to join "{{ team }}"{% endblocktrans %}
...
 
\ No newline at end of file
pinaxcon/templates/symposion/emails/teams_user_invited/message.html
Show inline comments
 
new file 100644
 
{% load i18n account_tags %}
 

	
 
{% blocktrans with team_name=team team_url=team.get_absolute_url site_name=current_site.name site_url=current_site %}
 
    <p>
 
        You have been invited to join <b>{{ team_name }}</b> on {{ site_name }}.
 
    </p>
 

	
 
    <p>
 
        To accept this invitation, visit the following url:
 
        <a href="http://{{ site_url }}{{ team_url }}">http://{{ site_url }}{{ team_url }}</a>
 
    </p>
 
{% endblocktrans %}
...
 
\ No newline at end of file
pinaxcon/templates/symposion/emails/teams_user_invited/subject.txt
Show inline comments
 
new file 100644
 
{% load i18n %}{% blocktrans %}You have been invited to join "{{ team }}"{% endblocktrans %}
...
 
\ No newline at end of file
pinaxcon/templates/symposion/proposals/_pending_proposal_row.html
Show inline comments
 
new file 100644
 
{% load i18n %}
 

	
 
<tr>
 
    <td>
 
        <a href="{% url "proposal_detail" proposal.pk %}">{{ proposal.title }}</a>
 
    </td>
 

	
 
    <td>{{ proposal.kind.name }}</td>
 

	
 
    <td>
 
        {% if proposal.cancelled %}
 
            <span class="label label-danger">{% trans 'Cancelled' %}</span>
 
        {% else %}
 
            {% if request.user == proposal.speaker.user %}
 
                {% if proposal.result.status == "accepted" %}
 
                    <span class="label label-success">{% trans 'Accepted' %}</span>
 
                {% else %}
 
                    <span class="label label-default">{% trans 'Submitted' %}</span>
 
                {% endif %}
 
            {% else %}
 
                <span class="label label-default">{% trans 'Invited' %}</span>
 
            {% endif %}
 
        {% endif %}
 
    </td>
 

	
 
    <td>
 
        {% if not proposal.cancelled %}
 
            <div class="btn-group">
 
                <a class="btn btn-xs dropdown-toggle" data-toggle="dropdown" href="#">
 
                {% trans 'Choose Response' %}
 
                <span class="caret"></span>
 
                </a>
 
                <ul class="dropdown-menu">
 
                    <li><a href="{% url "proposal_pending_join" proposal.id %}">
 
			{% trans 'Accept invitation' %}</a></li>
 
                    <li><a href="{% url "proposal_pending_decline" proposal.id
 
		    %}">{% trans 'Decline invitation' %}</a></li>
 
                </ul>
 
            </div>
 
        {% endif %}
 
    </td>
 
</tr>
pinaxcon/templates/symposion/proposals/_proposal_fields.html
Show inline comments
 
new file 100644
 
{% load i18n %}
 

	
 
<dl class="dl-horizontal">
 
    <dt>{% trans "Submitted by" %}</dt>
 
    <dd>{{ proposal.speaker }}</dd>
 

	
 
    <dt>{% trans "Track" %}</dt>
 
    <dd>{{ proposal.track }}&nbsp;</dd>
 

	
 
    <dt>{% trans "Audience Level" %}</dt>
 
    <dd>{{ proposal.get_audience_level_display }}&nbsp;</dd>
 

	
 
    {% if proposal.additional_speakers.all %}
 
        <dt>{% trans "Additional Speakers" %}</dt>
 
        <dd>
 
            {% for speaker in proposal.additional_speakers.all %}
 
                <li>
 
                    {% if speaker.user %}
 
                        <strong>{{ speaker.name }}</strong> &lt;{{ speaker.email }}&gt;
 
                    {% else %}
 
                        {{ speaker.email }} ({% trans "Invitation Sent" %})
 
                    {% endif %}
 
                </li>
 
            {% endfor %}
 
        </dd>
 
    {% endif %}
 

	
 
    <dt>{% trans "Description" %}</dt>
 
    <dd>{{ proposal.description }}&nbsp;</dd>
 

	
 
    <dt>{% trans "Abstract" %}</dt>
 
    <dd>{{ proposal.abstract|safe }}&nbsp;</dd>
 

	
 
    <dt>{% trans "Notes" %}</dt>
 
    <dd>{{ proposal.additional_notes|safe }}&nbsp;</dd>
 

	
 
    <dt>{% trans "Speaker Bio" %}</dt>
 
    <dd>{{ proposal.speaker.biography|safe }}&nbsp;</dd>
 

	
 
    <dt>{% trans "Documents" %}</dt>
 
    <dd>
 
        {% if proposal.supporting_documents.exists %}
 
            <table class="table table-striped">
 
                {% for document in proposal.supporting_documents.all %}
 
                    <tr>
 
                        <td><a href="{{ document.download_url }}">{{ document.description }}</a></td>
 
                        <td>
 
                        <form style="margin: 0;" method="post" action="{% url "proposal_document_delete" document.pk %}">
 
                            {% csrf_token %}
 
                            <button type="submit" class="btn btn-xs">delete</button>
 
                        </form>
 
                    </td>
 
                    </tr>
 
                {% endfor %}
 
            </table>
 
        {% else %}
 
            No supporting documents attached to this proposal.
 
        {% endif %}
 
    </dd>
 
</dl>
pinaxcon/templates/symposion/proposals/_proposal_row.html
Show inline comments
 
new file 100644
 
<tr>
 
    <td>
 
        <a href="{% url "proposal_detail" proposal.pk %}">{{ proposal.title }}</a>
 
    </td>
 

	
 
    <td>{{ proposal.kind.name }}</td>
 

	
 
    <td>
 
        {% if proposal.cancelled %}
 
            <span class="label label-danger">Cancelled</span>
 
        {% else %}
 
            {% if request.user == proposal.speaker.user %}
 
                {% if proposal.result.status == "accepted" %}
 
                    <span class="label label-success">Accepted</span>
 
                {% else %}
 
                    <span class="label label-default">Submitted</span>
 
                {% endif %}
 
            {% else %}
 
                <span class="label label-default">Associated</span>
 
            {% endif %}
 
        {% endif %}
 
    </td>
 

	
 
    <td>
 
        {% if not proposal.cancelled %}
 
            {% if request.user == proposal.speaker.user and proposal.can_edit %}
 
                <a href="{% url "proposal_edit" proposal.pk %}" class="btn btn-xs"><i class="fa fa-pencil"></i> Edit</a>
 
                <a href="{% url "proposal_speaker_manage" proposal.id %}" class="btn btn-xs"><i class="fa fa-user"></i> Manage Additional Speakers</a>
 
            {% endif %}
 
        {% endif %}
 
    </td>
 
</tr>
pinaxcon/templates/symposion/proposals/base.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% block body_outer %}
 
    {% block body %}{% endblock %}
 
{% endblock %}
pinaxcon/templates/symposion/proposals/document_create.html
Show inline comments
 
new file 100644
 
{% extends "symposion/proposals/base.html" %}
 

	
 
{% load bootstrap %}
 

	
 
{% block page_title %}Upload Document to '{{ proposal.title }}'{% endblock %}
 

	
 
{% block body %}
 
    <form method="POST" action="" enctype="multipart/form-data" class="form form-horizontal">
 
        {% csrf_token %}
 
        <fieldset>
 
            {{ form|bootstrap_horizontal }}
 
        </fieldset>
 
        <div class="form-actions">
 
            <input class="btn btn-primary" type="submit" value="Upload" />
 
        </div>
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/proposals/proposal_cancel.html
Show inline comments
 
new file 100644
 
{% extends "symposion/proposals/base.html" %}
 

	
 
{% load i18n %}
 

	
 
{% block head_title %}{% trans 'Cancel Proposal' %}{% endblock %}
 

	
 
{% block body %}
 
    <h1>Cancel: {{ proposal.title }}</h1>
 

	
 
    <form method="POST" action="" enctype="multipart/form-data">
 
        {% csrf_token %}
 
        <p>Are you sure you want to cancel <b>{{ proposal.title }}</b>?</p>
 
        <input class="btn btn-danger" type="submit" value="I am sure" />
 
        <a class="btn btn-default" href="{% url "proposal_detail" proposal.pk %}">{% trans 'No, keep it for now' %}</a>
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/proposals/proposal_detail.html
Show inline comments
 
new file 100644
 
{% extends "symposion/proposals/base.html" %}
 

	
 
{% load i18n %}
 
{% load account_tags %}
 
{% load bootstrap %}
 

	
 
{% block head_title %}{{ proposal.title }}{% endblock %}
 

	
 
{% block body %}
 
    <div class="pull-right">
 
        {% if not proposal.cancelled %}
 
            {% if request.user == proposal.speaker.user %}
 
                <a href="{% url "proposal_edit" proposal.pk %}" class="btn btn-default">
 
                    {% trans "Edit this proposal" %}
 
                </a>
 
                <a href="{% url "proposal_cancel" proposal.pk %}" class="btn btn-default">
 
                    {% trans "Cancel this proposal" %}
 
                </a>
 
            {% else %}
 
                <a href="{% url "proposal_leave" proposal.pk %}" class="btn btn-default">
 
                    {% trans "Remove me from this proposal" %}
 
                </a>
 
            {% endif %}
 
        {% else %}
 
            {% trans 'Cancelled' }
 
        {% endif %}
 
    </div>
 

	
 
    <h3>#{{ proposal.number }}: {{ proposal.title }} ({{ proposal.speaker }}, Track: {{ proposal.track }})</h3>
 

	
 
    <div class="tabbable">
 
        <ul class="nav nav-tabs">
 
            <li class="active"><a href="#proposal-detail" data-toggle="tab">{% trans "Proposal Details" %}</a></li>
 
            {% if request.user == proposal.speaker.user %}
 
                <li><a href="#proposal-documents" data-toggle="tab">{% trans "Supporting Documents" %}</a></li>
 
            {% endif %}
 
            {% if message_form %}
 
                <li><a href="#proposal-feedback" data-toggle="tab">{% trans "Reviewer Feedback" %} <span class="badge">{{ proposal.messages.all|length }}</span></a></li>
 
            {% endif %}
 
        </ul>
 
        <div class="tab-content">
 
            <div class="tab-pane active" id="proposal-detail">
 
                {% include "symposion/proposals/_proposal_fields.html" %}
 
            </div>
 
            {% if request.user == proposal.speaker.user %}
 
                <div class="tab-pane" id="proposal-documents">
 
                    <h3>{% trans 'Supporting Documents' %}</h3>
 

	
 
                    {% if proposal.supporting_documents.exists %}
 
                        <table class="table table-striped">
 
                            {% for document in proposal.supporting_documents.all %}
 
                                <tr>
 
                                    <td><a href="{{ document.download_url }}">{{ document.description }}</a></td>
 
                                    <td>
 
                                    <form style="margin: 0;" method="post" action="{% url "proposal_document_delete" document.pk %}">
 
                                        {% csrf_token %}
 
                                        <button type="submit" class="btn btn-xs">{% trans 'delete' %}</button>
 
                                    </form>
 
                                </td>
 
                                </tr>
 
                            {% endfor %}
 
                        </table>
 
                    {% else %}
 
                        <p>{% trans 'No supporting documents attached to this proposal.' %}</p>
 
                    {% endif %}
 
                    <a class="btn btn-default btn-sm{% if proposal.cancelled %} btn-disabled{% endif %}" href="{% url "proposal_document_create" proposal.pk %}"><i class="fa fa-upload"></i> {% trans 'Add Document' %}</a>
 
                </div>
 
            {% endif %}
 

	
 
    {% if message_form %}
 
        <div class="tab-pane" id="proposal-feedback">
 

	
 
            <h3>{% trans 'Conversation with Reviewers' %}</h3>
 

	
 
            {% for message in proposal.messages.all %}
 
                <div class="review-box">
 
                    <div class="comment">{{ message.message|safe }}</div>
 
                    <div class="dateline"><b>{% user_display message.user %}</b> {{ message.submitted_at|timesince }} ago</div>
 
                </div>
 
                <div class="clear"></div>
 
            {% endfor %}
 

	
 
            <h3>{% trans 'Leave a Message' %}</h3>
 

	
 
            <p>{% trans 'You can leave a message for the reviewers here.' %}</p>
 

	
 
            <form action="" method="POST" accept-charset="utf-8">
 
                {% csrf_token %}
 
                <fieldset>
 
                    {{ message_form|bootstrap }}
 
                </fieldset>
 
                <div class="actions">
 
                    <button type="submit" name="message_submit" class="btn btn-primary">{% trans 'Submit' %}</button>
 
                </div>
 
            </form>
 
        </div>
 
    {% endif %}
 
    </div>
 
</div>
 
{% endblock %}
 

	
 
{% block extra_script %}
 
    <script src="{{ STATIC_URL }}symposion/js/jquery.history.js"></script>
 
    <script type="text/javascript">
 
        $(function() {
 
            var History = window.History;
 

	
 
            $(window).bind("anchorchange", function() {
 
                $(".nav-tabs a[href='" + location.hash + "']").click();
 
            });
 

	
 
            $('#.nav-tabs a[data-toggle="tab"]').on('shown', function (e) {
 
                if (History.enabled) {
 
                    History.pushState(null, null, $(e.target).attr("href"));
 
                }
 
            });
 
        });
 
    </script>
 
{% endblock extra_script %}
pinaxcon/templates/symposion/proposals/proposal_edit.html
Show inline comments
 
new file 100644
 
{% extends "symposion/proposals/base.html" %}
 

	
 
{% load bootstrap %}
 

	
 
{% block head_title %}Editing {{ proposal.title }}{% endblock %}
 

	
 
{% block body %}
 
    <h1>Edit: {{ proposal.title }}</h1>
 

	
 
    <p><a href="{% url "proposal_speaker_manage" proposal.pk %}">Manage speakers</a></p>
 

	
 
    <form method="POST" action="" enctype="multipart/form-data">
 
        {% csrf_token %}
 
        <fieldset>
 
            {{ form|bootstrap }}
 
        </fieldset>
 
        <div class="form-actions">
 
            <input class="btn btn-primary" type="submit" value="Save" />
 
            <a class="btn btn-default" href="{% url "proposal_detail" proposal.pk %}">Cancel</a>
 
        </div>
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/proposals/proposal_leave.html
Show inline comments
 
new file 100644
 
{% extends "symposion/proposals/base.html" %}
 

	
 
{% block body %}
 
    <h3>Leaving {{ proposal.title }}</h3>
 

	
 
    <form method="POST" action="" enctype="multipart/form-data">
 
        {% csrf_token %}
 
        <p>Are you sure you wish to leave as a speaker on <b>{{ proposal.title }}</b>?</p>
 
        <input type="submit" class="btn btn-primary" value="I am sure" />
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/proposals/proposal_speaker_manage.html
Show inline comments
 
new file 100644
 
{% extends "symposion/proposals/base.html" %}
 

	
 
{% load i18n %}
 
{% load bootstrap %}
 

	
 
{% block body %}
 
    <h1>{% trans 'Proposal:' %} {{ proposal.title }}</h1>
 

	
 
    <p>
 
      <a href="{% url "proposal_edit" proposal.pk %}">{% trans 'Edit proposal' %}
 
      </a>
 
    </p>
 

	
 
    <h2>{% trans 'Current Speakers' %}</h2>
 

	
 
    {% for speaker in speakers %}
 
        {% if speaker.user %}
 
            <p><b>{{ speaker.name }}</b> &mdash; {{ speaker.email }}</p>
 
        {% else %}
 
            <p>{{ speaker.email }} &mdash; {% trans 'pending invitation' %}</p>
 
        {% endif %}
 
    {% endfor %}
 

	
 
    <h2>{% trans 'Add another speaker' %}</h2>
 

	
 
    <form method="POST" action="" enctype="multipart/form-data">
 
        {% csrf_token %}
 
        {{ add_speaker_form|bootstrap }}
 
        <div class="form-action">
 
            <input type="submit" value="Add speaker" class="btn btn-primary" />
 
        </div>
 
    </form>
 
{% endblock %}
 

	
 
{% block extra_body %}
 
    <script type="text/javascript">
 
    $(function() {
 
        $("#id_email").focus();
 
    });
 
    </script>
 
{% endblock %}
pinaxcon/templates/symposion/proposals/proposal_submit.html
Show inline comments
 
new file 100644
 
{% extends "symposion/proposals/base.html" %}
 

	
 
{% load pinax_boxes_tags %}
 
{% load i18n %}
 

	
 
{% block page_title %}{% trans "Submit A Proposal" %}{% endblock %}
 

	
 
{% block body %}
 
    {% box "proposal_submit" %}
 

	
 
    {% if kinds %}
 
        <p>Select what kind of proposal you'd like to submit:</p>
 

	
 
        {% for kind in kinds %}
 
            <a href="{% url "proposal_submit_kind" kind.slug %}" class="btn btn-default">{{ kind }}</a>
 
        {% endfor %}
 
    {% else %}
 
        <p>Proposals are not currently open for submission.</p>
 
    {% endif %}
 
{% endblock %}
pinaxcon/templates/symposion/proposals/proposal_submit_kind.html
Show inline comments
 
new file 100644
 
{% extends "symposion/proposals/base.html" %}
 

	
 
{% load bootstrap %}
 
{% load pinax_boxes_tags %}
 
{% load i18n %}
 

	
 
{% block page_title %}Submit a Proposal for a {{ kind.name }}{% endblock %}
 

	
 
{% block body %}
 
    {% box "example_proposal" %}
 

	
 
    <form method="POST" action="" enctype="multipart/form-data" class="form-horizontal">
 
        {% csrf_token %}
 
        <fieldset>
 
            {{ proposal_form|bootstrap_horizontal }}
 
        </fieldset>
 
        <div class="form-actions">
 
            <p>
 
                You will be able to edit your proposal after it has been submitted. The program committee may ask questions, provide feedback, and even suggest changes to your proposal as part of the review processes.
 
            </p>
 
            <input class="btn btn-primary" type="submit" name="finish" value="Save" />
 
            <!-- <span style="float: right; padding: 4px 6px">or</span> -->
 
            <input class="btn btn-default" type="submit" name="add-speakers" value="Save and Add Additional Speakers" />
 
        </div>
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/reviews/_result_notification_prepare_help.html
Show inline comments
 
new file 100644
 
    <b>Body</b> may include the following variables which will be substituted in the email with a value
 
    specific to each proposal:
 
<ul>
 
    <li><code>{% templatetag openvariable %} proposal.title {% templatetag closevariable %}</code> e.g. {{ proposals.0.title }}
 
    <li><code>{% templatetag openvariable %} proposal.kind {% templatetag closevariable %}</code> e.g. {{ proposals.0.kind }}
 
    <li><code>{% templatetag openvariable %} proposal.speaker {% templatetag closevariable %}</code> e.g. {{ proposals.0.speaker }}
 
</ul>
...
 
\ No newline at end of file
pinaxcon/templates/symposion/reviews/_review_table.html
Show inline comments
 
new file 100644
 
{% load i18n %}
 

	
 
<table class="table table-striped table-bordered table-reviews">
 
    <thead>
 
        <th>#</th>
 
        <th>{% trans "Speaker / Title" %}</th>
 
        <th>{% trans "Category" %}</th>
 
        <th><i class="fa fa-comment-alt"></i></th>
 
        <th>{% trans "+1" %}</th>
 
        <th>{% trans "+0" %}</th>
 
        <th>{% trans "-0" %}</th>
 
        <th>{% trans "-1" %}</th>
 
        <th><a href="#" class="tip" title="{% trans "Your Rating" %}"><i class="fa fa-user"></i></a></th>
 
    </thead>
 

	
 
    <tbody>
 
        {% for proposal in proposals %}
 
            <tr class="{{ proposal.user_vote_css }}">
 
                <td>{{ proposal.number }}</td>
 
                <td>
 
                    <a href="{% url "review_detail" proposal.pk %}">
 
                        <small><strong>{{ proposal.speaker }}</strong></small>
 
                        <br />
 
                        {{ proposal.title }}
 
                    </a>
 
                </td>
 
                <td>{{ proposal.track }}</td>
 
                <td>{{ proposal.comment_count }}</td>
 
                <td>{{ proposal.plus_one }}</td>
 
                <td>{{ proposal.plus_zero }}</td>
 
                <td>{{ proposal.minus_zero }}</td>
 
                <td>{{ proposal.minus_one }}</td>
 
                <td>{{ proposal.user_vote|default:"" }}</td>
 
            </tr>
 
        {% endfor %}
 
    </tbody>
 
</table>
pinaxcon/templates/symposion/reviews/access_not_permitted.html
Show inline comments
 
new file 100644
 
{% extends "symposion/reviews/base.html" %}
 

	
 
{% block body %}
 
    <h1>Access Not Permitted</h1>
 

	
 
    <p>
 
        Sorry, you do not have permission to access this page. If you
 
        believe this is a bug, please contact us immediately.
 
    </p>
 
{% endblock %}
pinaxcon/templates/symposion/reviews/base.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load i18n %}
 
{% load sitetree %}
 

	
 
{% block extra_style %}
 
    <style type="text/css">
 
        div.dataTables_length label {
 
            float: left;
 
            text-align: left;
 
        }
 

	
 
        div.dataTables_length select {
 
            width: 75px;
 
        }
 

	
 
        div.dataTables_filter label {
 
            float: right;
 
        }
 

	
 
        div.dataTables_info {
 
            padding-top: 8px;
 
        }
 

	
 
        div.dataTables_paginate {
 
            float: right;
 
            margin: 0;
 
        }
 

	
 
        table.table {
 
            clear: both;
 
            margin-bottom: 6px !important;
 
            background-color: white;
 
        }
 

	
 
        table.table thead .sorting,
 
        table.table thead .sorting_asc,
 
        table.table thead .sorting_desc,
 
        table.table thead .sorting_asc_disabled,
 
        table.table thead .sorting_desc_disabled {
 
            cursor: pointer;
 
            *cursor: hand;
 
        }
 

	
 
        table.dataTable th:active {
 
            outline: none;
 
        }
 
    </style>
 
{% endblock %}
 

	
 
{% block body_class %}reviews{% endblock %}
 

	
 
{% block body_outer %}
 
    <div class="row">
 
        <div class="col-md-2">
 
            {% block sidebar %}
 
                <ul class="nav nav-list well">
 
                    {% for section in review_sections %}
 
                        <li class="nav-header">
 
                            {{ section }}
 
                        </li>
 
                        <li>
 
                            <a href="{% url "review_section" section.section.slug %}">
 
                                {% trans "All Reviews" %}
 
                            </a>
 
                        </li>
 
                        {% comment %}
 
                        <li>
 
                            <a href="{% url "review_section_assignments" section.section.slug %}">
 
                                {% trans "Your Assignments" %}
 
                            </a>
 
                        </li>
 
                        {% endcomment %}
 
                        <li>
 
                            <a href="{% url "review_status" section.section.slug %}">
 
                                {% trans "Voting Status" %}
 
                            </a>
 
                        </li>
 
                        {% if request.user.is_staff %}
 
                            <li>
 
                                <a href="{% url "result_notification" section.section.slug 'accepted' %}">Result Notification</a>
 
                            </li>
 
                        {% endif %}
 
                    {% endfor %}
 
                </ul>
 
            {% endblock %}
 
        </div>
 
        <div class="col-md-10">
 
            {% block body %}
 
            {% endblock %}
 
        </div>
 
    </div>
 
{% endblock %}
 

	
 
{% block extra_script %}
 
    <script src="{{ STATIC_URL }}datatables/js/jquery.dataTables.min.js" type="text/javascript"></script>
 
    <script src="{{ STATIC_URL }}tabletools/js/TableTools.min.js" type="text/javascript"></script>
 
    <script src="{{ STATIC_URL }}datatables/js/dataTables.bootstrap.js" type="text/javascript"></script>
 
    <script type="text/javascript">
 
        $(function() {
 
            $(".tip").tooltip();
 
            $("table.table-reviews").dataTable({
 
                "sDom": "<'row'<'col-md-3'l><'col-md-3'T><'col-md-4'f>r>t<'row'<'col-md-3'i><'col-md-5'p>>",
 
                "sPaginationType": "bootstrap",
 
                "bStateSave": true,
 
                "oTableTools": {
 
                    "aButtons": [
 
                        "copy",
 
                        "csv",
 
                        "print"
 
                    ],
 
                    "sSwfPath": "{{ STATIC_URL }}tabletools/swf/copy_csv_xls.swf"
 
                }
 
            });
 
        });
 
    </script>
 
{% endblock %}
pinaxcon/templates/symposion/reviews/result_notification.html
Show inline comments
 
new file 100644
 
{% extends "symposion/reviews/base.html" %}
 

	
 
{% load i18n %}
 

	
 
{% block extra_style %}
 
    <style type="text/css">
 
        .table-striped tbody tr.selected td {
 
            background-color: #F7F4E6;
 
        }
 
    </style>
 
{% endblock %}
 

	
 
{% block body %}
 

	
 
    <ul class="nav nav-pills">
 
        <li{% if status == 'accepted' %} class="active"{% endif %}><a href="{% url "result_notification" section_slug 'accepted' %}">accepted</a>
 
        <li{% if status == 'rejected' %} class="active"{% endif %}><a href="{% url "result_notification" section_slug 'rejected' %}">rejected</a>
 
        <li{% if status == 'standby' %} class="active"{% endif %}><a href="{% url "result_notification" section_slug 'standby' %}">standby</a>
 
    </ul>
 

	
 
    <h1>Result Notification</h1>
 

	
 
    <form method="post" action="{% url "result_notification_prepare" section_slug status %}">
 

	
 
        {% csrf_token %}
 

	
 
        <p>
 
            Select one or more proposals (<span class="action-counter">0</span> currently selected)
 
            <br/>
 
            then pick an email template
 
            <select name="notification_template">
 
                <option value="">[blank]</option>
 
                {% for template in notification_templates %}
 
                    <option value="{{ template.pk }}">{{ template.label }}</option>
 
                {% endfor %}
 
            </select>
 
            <br/>
 
            <button id="next-button" type="submit" class="btn btn-primary" disabled>Next <i class="fa fa-chevron-right"></i></button>
 
        </p>
 

	
 
        <table class="table table-striped table-bordered">
 
            <thead>
 
                <th><input type="checkbox" id="action-toggle"></th>
 
                <th>#</th>
 
                <th>{% trans "Speaker / Title" %}</th>
 
                <th>{% trans "Category" %}</th>
 
                <th>{% trans "Status" %}</th>
 
                <th>{% trans "Notified?" %}</th>
 
            </thead>
 

	
 
            <tbody>
 
                {% for proposal in proposals %}
 
                    <tr>
 
                        <td><input class="action-select" type="checkbox" name="_selected_action" value="{{ proposal.pk }}"></td>
 
                        <td>{{ proposal.number }}</td>
 
                        <td>
 
                            <a href="{% url "review_detail" proposal.pk %}">
 
                                <small><strong>{{ proposal.speaker }}</strong></small>
 
                                <br />
 
                                {{ proposal.title }}
 
                            </a>
 
                        </td>
 
                        <td>{{ proposal.track }}</td>
 
                        <td>
 
                            {% with proposal.result.status as status %}
 
                                <div class="{{ status }}">
 
                                    {% if status != "undecided" %}
 
                                        <span>{{ status }}</span>
 
                                    {% endif %}
 
                                </div>
 
                            {% endwith %}
 
                        </td>
 
                        <td>
 
                            {% if proposal.notifications.exists %}yes{% endif %}
 
                        </td>
 
                    </tr>
 
                {% endfor %}
 
            </tbody>
 
        </table>
 
    </form>
 
{% endblock %}
 

	
 
{% block extra_script %}
 
    <script type="text/javascript">
 
        (function($) {
 
            $.fn.actions = function(opts) {
 
                var options = $.extend({}, $.fn.actions.defaults, opts);
 
                var actionCheckboxes = $(this);
 
                checker = function(checked) {
 
                    $(actionCheckboxes).prop("checked", checked)
 
                        .parent().parent().toggleClass(options.selectedClass, checked);
 
                }
 
                updateCounter = function() {
 
                    var sel = $(actionCheckboxes).filter(":checked").length;
 
                    $(options.counterContainer).html(sel);
 
                    $(options.allToggle).prop("checked", function() {
 
                        if (sel == actionCheckboxes.length) {
 
                            value = true;
 
                        } else {
 
                            value = false;
 
                        }
 
                        return value;
 
                    });
 
                    if (sel == 0) {
 
                        $("#next-button").prop("disabled", true);
 
                    } else {
 
                        $("#next-button").prop("disabled", false);
 
                    }
 
                }
 
                // Check state of checkboxes and reinit state if needed
 
                $(this).filter(":checked").each(function(i) {
 
                    $(this).parent().parent().toggleClass(options.selectedClass);
 
                    updateCounter();
 
                });
 
                $(options.allToggle).click(function() {
 
                    checker($(this).prop("checked"));
 
                    updateCounter();
 
                });
 
                lastChecked = null;
 
                $(actionCheckboxes).click(function(event) {
 
                    if (!event) { var event = window.event; }
 
                    var target = event.target ? event.target : event.srcElement;
 
                    if (lastChecked && $.data(lastChecked) != $.data(target) && event.shiftKey == true) {
 
                        var inrange = false;
 
                        $(lastChecked).prop("checked", target.checked)
 
                            .parent().parent().toggleClass(options.selectedClass, target.checked);
 
                        $(actionCheckboxes).each(function() {
 
                            if ($.data(this) == $.data(lastChecked) || $.data(this) == $.data(target)) {
 
                                inrange = (inrange) ? false : true;
 
                            }
 
                            if (inrange) {
 
                                $(this).prop("checked", target.checked)
 
                                    .parent().parent().toggleClass(options.selectedClass, target.checked);
 
                            }
 
                        });
 
                    }
 
                    $(target).parent().parent().toggleClass(options.selectedClass, target.checked);
 
                    lastChecked = target;
 
                    updateCounter();
 
                });
 
            }
 
            /* Setup plugin defaults */
 
            $.fn.actions.defaults = {
 
                counterContainer: "span.action-counter",
 
                allToggle: "#action-toggle",
 
                selectedClass: "selected"
 
            }
 
        })($);
 
        $(function() {
 
            $("tr input.action-select").actions();
 
        });
 
    </script>
 
{% endblock %}
pinaxcon/templates/symposion/reviews/result_notification_prepare.html
Show inline comments
 
new file 100644
 
{% extends "symposion/reviews/base.html" %}
 

	
 
{% load i18n %}
 

	
 
{% block body %}
 
    <h1>Result Notification Prepare</h1>
 

	
 
    <div class="row">
 
        <div class="col-md-4">
 
            <h2>Proposals</h2>
 
            <table class="table table-striped table-compact">
 
                {% for proposal in proposals %}
 
                    <tr>
 
                        <td>
 
                            <strong>{{ proposal.speaker }}</strong> ({{ proposal.speaker.email }})
 
                            <br />
 
                            {{ proposal.title }}
 
                        </td>
 
                    </tr>
 
                {% endfor %}
 
            </table>
 
        </div>
 
        <div class="col-md-6">
 
            <h2>Email</h2>
 

	
 
            <form method="post" action="{% url "result_notification_send" section_slug status %}">
 

	
 
                {% csrf_token %}
 

	
 
                <label>From Address</label>
 
                <input type="text" name="from_address" class="span5" value="{{ notification_template.from_address }}" />
 
                <br/>
 
                <label>Subject</label>
 
                <input type="text" name="subject" class="span5" value="{{ notification_template.subject }}" />
 
                <br/>
 
                <label>Body</label>
 
                <textarea class="span5" rows="10" name="body">{{ notification_template.body }}</textarea>
 
                <br/>
 
                <input type="hidden" name="notification_template" value="{{ notification_template.pk }}" />
 
                <input type="hidden" name="proposal_pks" value="{{ proposal_pks }}" />
 

	
 
                {% include "symposion/reviews/_result_notification_prepare_help.html" %}
 

	
 
                <button type="submit" class="btn btn-primary">Send {{ proposals|length }} Email{{ proposals|length|pluralize }}</button>
 
                <a class="btn" href="{% url "result_notification" section_slug status %}">Cancel</a>
 
            </form>
 
        </div>
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/reviews/review_admin.html
Show inline comments
 
new file 100644
 
{% extends "symposion/reviews/base.html" %}
 

	
 
{% block body %}
 
    <h1>Reviewers</h1>
 

	
 
    <table class="table table-striped">
 
        <tr>
 
            <th>
 
                Reviewer
 
            </th>
 
            <th>
 
                Proposals<br/>Reviewed
 
            </td>
 
            <th>
 
                Comments
 
            </th>
 
            <th>
 
                +1
 
            </th>
 
            <th>
 
                +0
 
            </th>
 
            <th>
 
                &minus;0
 
            </th>
 
            <th>
 
                &minus;1
 
            </th>
 
        </tr>
 
        {% for reviewer in reviewers %}
 
        <tr>
 
            <td>
 
                <a href="{% url "review_list_user" section_slug reviewer.pk %}">{{ reviewer.get_full_name }}</a>
 
            </td>
 
            <td>
 
                {{ reviewer.total_votes }}
 
            </td>
 
            <td>
 
                {{ reviewer.comment_count }}
 
            </td>
 
            <td>
 
                {{ reviewer.plus_one }}
 
            </td>
 
            <td>
 
                {{ reviewer.plus_zero }}
 
            </td>
 
            <td>
 
                {{ reviewer.minus_zero }}
 
            </td>
 
            <td>
 
                {{ reviewer.minus_one }}
 
            </td>
 
        </tr>
 
        {% endfor %}
 
    </table>
 
{% endblock %}
pinaxcon/templates/symposion/reviews/review_assignment.html
Show inline comments
 
new file 100644
 
{% extends "symposion/reviews/base.html" %}
 

	
 
{% block body %}
 
    <h1>Review Assignments</h1>
 

	
 
    {% if assignments %}
 
        <table>
 
            <tr>
 
                <th>Proposal</th>
 
                <th>Opted out</th>
 
                <th>Opt out</th>
 
            </tr>
 
            {% for assignment in assignments %}
 
                <tr>
 
                    <td>
 
                        <a href="{% url review_detail assignment.proposal.pk %}">
 
                            {{ assignment.proposal.title }}
 
                        </a>
 
                    </td>
 
                    <td>
 
                        <form method="post" action="{% url "review_assignment_opt_out" assignment.pk %}">
 
                            {% csrf_token %}
 
                            <input type="submit" value="Opt-out" />
 
                        </form>
 
                    </td>
 
                </tr>
 
            {% endfor %}
 
        </table>
 
    {% else %}
 
        <p>You do not have any assignments.</p>
 
    {% endif %}
 
{% endblock %}
pinaxcon/templates/symposion/reviews/review_bulk_accept.html
Show inline comments
 
new file 100644
 
{% extends "symposion/reviews/base.html" %}
 

	
 
{% load bootstrap %}
 

	
 
{% block body %}
 

	
 
    <h1>Bulk Accept</h1>
 
    <form action="" method="POST" class="uniForm" accept-charset="utf-8">
 
        {% csrf_token %}
 
        {{ form|bootstrap }}
 
        <div class="form-actions">
 
            <input class="btn btn-primary" type="submit" name="submit" value="submit" />
 
        </div>
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/reviews/review_comment.html
Show inline comments
 
new file 100644
 
{{ proposal }}: proposal obj
 
{{ form }}: comment form obj
pinaxcon/templates/symposion/reviews/review_detail.html
Show inline comments
 
new file 100644
 
{% extends "symposion/reviews/base.html" %}
 

	
 
{% load i18n %}
 
{% load bootstrap %}
 
{% load account_tags %}
 

	
 

	
 
{% block body %}
 
    {% if request.user.is_staff %}
 
        <div class="pull-right">
 
            <form class="result-form form-inline" method="POST" action="">
 
                {% csrf_token %}
 
                <div class="btn-group">
 
                    {% if proposal.result.status == "accepted" %}
 
                        <a class="btn dropdown-toggle btn-success" data-toggle="dropdown" href="#">Accepted <span class="caret"></span></a>
 
                        <div class="dropdown-menu pull-right" style="width: 200px; padding-left: 10px;">
 
                            <div class="btn-group">
 
                                <input type="submit" name="result_submit" value="reject" class="btn btn-xs btn-danger" />
 
                                <input type="submit" name="result_submit" value="standby" class="btn btn-xs" />
 
                                <input type="submit" name="result_submit" value="undecide" class="btn btn-default btn-xs" />
 
                            </div>
 
                        </div>
 
                    {% else %}
 
                        {% if proposal.result.status == "rejected" %}
 
                            <a class="btn dropdown-toggle btn-danger" data-toggle="dropdown" href="#">Rejected <span class="caret"></span></a>
 
                            <div class="dropdown-menu pull-right" style="width: 200px; padding-left: 10px;">
 
                                <div class="btn-group">
 
                                    <input type="submit" name="result_submit" value="accept" class="btn btn-xs btn-success" />
 
                                    <input type="submit" name="result_submit" value="standby" class="btn btn-xs" />
 
                                    <input type="submit" name="result_submit" value="undecide" class="btn btn-default btn-xs" />
 
                                </div>
 
                            </div>
 
                        {% else %}
 
                            {% if proposal.result.status == "standby" %}
 
                                <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">Standby <span class="caret"></span></a>
 
                                <div class="dropdown-menu pull-right" style="width: 200px; padding-left: 10px;">
 
                                    <div class="btn-group">
 
                                        <input type="submit" name="result_submit" value="accept" class="btn btn-xs btn-success" />
 
                                        <input type="submit" name="result_submit" value="reject" class="btn btn-xs btn-danger" />
 
                                        <input type="submit" name="result_submit" value="undecide" class="btn btn-default btn-xs" />
 
                                    </div>
 
                                </div>
 
                            {% else %}
 
                                <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">Undecided <span class="caret"></span></a>
 
                                <div class="dropdown-menu pull-right" style="width: 200px; padding-left: 10px;">
 
                                    <div class="btn-group">
 
                                        <input type="submit" name="result_submit" value="accept" class="btn btn-xs btn-success" />
 
                                        <input type="submit" name="result_submit" value="reject" class="btn btn-xs btn-danger" />
 
                                        <input type="submit" name="result_submit" value="standby" class="btn btn-default btn-xs" />
 
                                    </div>
 
                                </div>
 
                            {% endif %}
 
                        {% endif %}
 
                    {% endif %}
 
                </div>
 
            </form>
 
        </div>
 
    {% endif %}
 

	
 
    <h3>#{{ proposal.number }}: {{ proposal.title }} ({{ proposal.speaker }})</h3>
 

	
 
    <div class="tabbable">
 
        <ul class="nav nav-tabs">
 
            <li class="active"><a href="#proposal-detail" data-toggle="tab">{% trans "Proposal Details" %}</a></li>
 
            <li><a href="#proposal-reviews" data-toggle="tab">{% trans "Reviews" %} <span class="badge">{{ reviews|length }}</span></a></li>
 
            <li><a href="#proposal-feedback" data-toggle="tab">{% trans "Speaker Feedback" %} <span class="badge">{{ proposal.messages.all|length }}</span></a></li>
 
        </ul>
 
        <div class="tab-content">
 
            <div class="tab-pane active" id="proposal-detail">
 
                {% include "symposion/proposals/_proposal_fields.html" %}
 
            </div>
 
            <div class="tab-pane" id="proposal-reviews">
 

	
 
                <h4>{% trans "Current Results" %}</h4>
 
                <table class="table table-striped">
 
                    <thead>
 
                        <th>+1 votes</th>
 
                        <th>+0 votes</th>
 
                        <th>-0 votes</th>
 
                        <th>-1 votes</th>
 
                        <th>{% trans "Total Responses" %}
 
                    </thead>
 
                    <tbody>
 
                        <tr>
 
                            <td>{{ proposal.plus_one }}</td>
 
                            <td>{{ proposal.plus_zero }}</td>
 
                            <td>{{ proposal.minus_zero }}</td>
 
                            <td>{{ proposal.minus_one }}</td>
 
                            <td>{{ proposal.total_votes }}</td>
 
                        </tr>
 
                    </tbody>
 
                </table>
 

	
 
                <hr />
 

	
 
                {% if review_form %}
 
                    <form method="POST" action="" class="review-form">
 
                        <legend>{% trans "Submit Review" %}</legend>
 
                        <p>Enter your vote and any comment to go along with it. You can revise your vote or comment multiple times with an existing vote (your previously recorded score will be replaced during calculations). <b>Your vote and comments are not public and will only be viewable by other reviewers.</b></p>
 
                        {% csrf_token %}
 
                            {{ review_form|bootstrap }}
 
                            <div class="form-action">
 
                                <input type="submit" class="btn btn-primary" name="vote_submit" value="Submit Review" />
 
                            </div>
 
                    </form>
 
                {% else %}
 
                    <p>You do not have permission to vote on this proposal.</p>
 
                {% endif %}
 

	
 
                {% if reviews %}
 
                    <h5>Review Comments</h5>
 
                    {% for review in reviews %}
 
                        <div class="review-box">
 
                            <div class="vote pull-left">
 
                                <span>{{ review.vote }}</span>
 
                            </div>
 
                            {% if is_manager %}
 
                                <div class="pull-right">
 
                                    <form class="form-inline" action="{% url "review_delete" review.id %}" method="POST">
 
                                        {% csrf_token %}
 
                                        <button class="btn btn-xs btn-danger" type="submit">Delete</button>
 
                                    </form>
 
                                </div>
 
                            {% endif %}
 
                            <div class="review-content">
 
                                <b>{% user_display review.user %}</b>
 
                                {{ review.submitted_at|timesince }} ago <br />
 
                                {{ review.comment|safe }}
 
                            </div>
 
                        </div>
 
                    {% endfor %}
 
                {% endif %}
 
            </div>
 
            <div class="tab-pane" id="proposal-feedback">
 
                {% if review_messages %}
 
                    <h3>{% trans "Conversation with the submitter" %}</h3>
 
                    {% for message in review_messages %}
 
                        <div class="comment-box">
 
                            <div class="commment-content">
 
                                <b>{% user_display message.user %}</b>
 
                                {{ message.submitted_at|timesince }} ago <br />
 
                                {{ message.message|safe }}
 
                            </div>
 
                        </div>
 
                    {% endfor %}
 
                    <hr />
 
                {% endif %}
 

	
 
                <form action="" method="POST"accept-charset="utf-8">
 
                    <legend>{% trans "Send a message" %}</legend>
 
                    <p>
 
                        {% blocktrans %}
 
                            If you'd like to communicate with the submitter, use the following form and he or she will be
 
                            notified and given the opportunity to respond.
 
                        {% endblocktrans %}
 
                    </p>
 
                    {% csrf_token %}
 
                    {{ message_form|bootstrap }}
 
                    <div class="form-actions">
 
                        <input type="submit" class="btn btn-primary" name="message_submit" value="Send Message" />
 
                    </div>
 
                </form>
 
            </div>
 
        </div>
 
    </div>
 
{% endblock %}
 

	
 
{% block extra_script %}
 
    <script src="{{ STATIC_URL }}symposion/js/jquery.history.js"></script>
 
    <script type="text/javascript">
 
        $(function() {
 
            var History = window.History;
 

	
 
            $(window).bind("anchorchange", function() {
 
                $(".nav-tabs a[href='" + location.hash + "']").click();
 
            });
 

	
 
            $('#.nav-tabs a[data-toggle="tab"]').on('shown', function (e) {
 
                if (History.enabled) {
 
                    History.pushState(null, null, $(e.target).attr("href"));
 
                }
 
            });
 
        });
 
    </script>
 

	
 
{% endblock %}
pinaxcon/templates/symposion/reviews/review_list.html
Show inline comments
 
new file 100644
 
{% extends "symposion/reviews/base.html" %}
 

	
 
{% block body %}
 
	<h3>{{ section }}</h3>
 
	{% if reviewed == 'all_reviews' %}
 
    	<h4>All proposals</h4>
 
    {% elif reviewed == 'user_reviewed' %}
 
    	<h4>Proposals you have reviewed</h4>
 
    {% else %}
 
    	<h4>Proposals you have not yet reviewed</h4>
 
    {% endif %}
 

	
 
    {% include "symposion/reviews/_review_table.html" %}
 
{% endblock %}
pinaxcon/templates/symposion/reviews/review_review.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load bootstrap %}
 

	
 
{% block body_class %}review{% endblock %}
 

	
 
{% block body %}
 
    <h1>Proposal Review</h1>
 

	
 
    <div class="proposal">
 
        <h2>{{ proposal.title }}</h2>
 

	
 
        <p>
 
            {% if proposal.cancelled %}
 
                Cancelled
 
            {% endif %}
 
        </p>
 

	
 
        <div>
 
            {{ proposal.description }}
 
        </div>
 

	
 
        <p><b>Type</b>: {{ proposal.get_session_type_display }}</p>
 

	
 
        <h3>Abstract</h3>
 
        <div class="abstract">
 
            {{ proposal.abstract_html|safe }}
 
        </div>
 

	
 
        <p><b>Audience level</b>: {{ proposal.get_audience_level_display }}</p>
 

	
 
        <p><b>Submitting speaker</b>: {{ proposal.speaker }}</p> {# @@@ bio? #}
 

	
 
        {% if proposal.additional_speakers.all %}
 
            <p><b>Additional speakers</b>:</p>
 
            <ul>
 
            {% for speaker in proposal.additional_speakers.all %}
 
                {% if speaker.user %}
 
                    <li><b>{{ speaker.name }}</b> &mdash; {{ speaker.email }}</li>
 
                {% else %}
 
                    <li>{{ speaker.email }} &mdash; pending invitation</li>
 
                {% endif %}
 
            {% endfor %}
 
            </ul>
 
        {% endif %}
 

	
 
        <h3>Additional Notes (private from submitter)</h3>
 
        <div class="additional_notes">
 
            {{ proposal.additional_notes }}
 
        </div>
 
    </div>
 

	
 
    <h2>Review</h2>
 

	
 
    <form method="POST" action="{% url "review_review" proposal.pk %}" class="form">
 
        {% csrf_token %}
 
        <fieldset class="inlineLabels">
 
            {{ review_form|bootstrap }}
 
            <div class="form_block">
 
                <input type="submit" value="Submit" />
 
            </div>
 
        </fieldset>
 
    </form>
 

	
 
    <h2>Comment</h2>
 

	
 
    <form method="POST" action="{% url "review_comment" proposal.pk %}" class="form">
 
        {% csrf_token %}
 
        <fieldset>
 
            {{ comment_form|bootstrap }}
 
            <div class="form_block">
 
                <input type="submit" value="Submit" />
 
            </div>
 
        </fieldset>
 
    </form>
 

	
 
{% endblock %}
pinaxcon/templates/symposion/reviews/review_stats.html
Show inline comments
 
new file 100644
 
{% extends "symposion/reviews/base.html" %}
 

	
 
{% block body %}
 
    <h1>Voting Status ({{ section_slug }})</h1>
 

	
 
    {% if key %}
 
        <div class="breadcrumbs">
 
            <a href="{% url "review_status" section_slug "positive" %}">Positive</a> |
 
            <a href="{% url "review_status" section_slug "negative" %}">Negative</a> |
 
            <a href="{% url "review_status" section_slug "indifferent" %}">Indifferent</a> |
 
            <a href="{% url "review_status" section_slug "controversial" %}">Controversial</a>  |
 
            <a href="{% url "review_status" section_slug "too_few" %}">Too Few</a>
 
        </div>
 

	
 
        <div>
 
            {% if key == "positive" %}
 
                <h3>Positive
 
                <small>proposals with at least {{ vote_threshold }} vote{{ vote_threshold|pluralize }} and at least one +1 and no &minus;1s</small></h3>
 
            {% endif %}
 
            {% if key == "negative" %}
 
                <h3>Negative
 
                <small>proposals with at least {{ vote_threshold }} vote{{ vote_threshold|pluralize }} and at least one &minus;1 and no +1s</small></h3>
 
            {% endif %}
 
            {% if key == "indifferent" %}
 
                <h3>Indifferent
 
                <small>proposals with at least {{ vote_threshold }} vote{{ vote_threshold|pluralize }} and neither a +1 or a &minus;1</small></h3>
 
            {% endif %}
 
            {% if key == "controversial" %}
 
                <h3>Controversial
 
                <small>proposals with at least {{ vote_threshold }} vote{{ vote_threshold|pluralize }} and both a +1 and &minus;1</small></h3>
 
            {% endif %}
 
            {% if key == "too_few" %}
 
                <h3>Too Few Reviews
 
                <small>proposals with fewer than {{ vote_threshold }} vote{{ vote_threshold|pluralize }}</small></h3>
 
            {% endif %}
 

	
 
            {% include "symposion/reviews/_review_table.html" %}
 

	
 
        </div>
 
    {% else %}
 
        <p>Reviews are placed into one of five buckets depending on the state of their votes:</p>
 

	
 
        <dl>
 
            <dt>
 
                <a href="{% url "review_status" section_slug "positive" %}">Positive</a>
 
                <span class="badge">{{ proposals.positive|length }}</span>
 
            </dt>
 
            <dd>
 
                proposals with at least {{ vote_threshold }} vote{{ vote_threshold|pluralize }} and at least one +1 and no &minus;1s
 
            </dd>
 
            <dt>
 
                <a href="{% url "review_status" section_slug "negative" %}">Negative</a>
 
                <span class="badge">{{ proposals.negative|length }}</span>
 
            </dt>
 
            <dd>
 
                proposals with at least {{ vote_threshold }} vote{{ vote_threshold|pluralize }} and at least one &minus;1 and no +1s
 
            </dd>
 
            <dt>
 
                <a href="{% url "review_status" section_slug "indifferent" %}">Indifferent</a>
 
                <span class="badge">{{ proposals.indifferent|length }}</span>
 
            </dt>
 
            <dd>
 
                proposals with at least {{ vote_threshold }} vote{{ vote_threshold|pluralize }} and neither a +1 or a &minus;1
 
            </dd>
 
            <dt>
 
                <a href="{% url "review_status" section_slug "controversial" %}">Controversial</a>
 
                <span class="badge">{{ proposals.controversial|length }}</span>
 
            </dt>
 
            <dd>
 
                proposals with at least {{ vote_threshold }} vote{{ vote_threshold|pluralize }} and both a +1 and &minus;1
 
            </dd>
 
            <dt>
 
                <a href="{% url "review_status" section_slug "too_few" %}">Too Few Reviews</a>
 
                <span class="badge">{{ proposals.too_few|length }}</span>
 
            </dt>
 
            <dd>
 
                proposals with fewer than {{ vote_threshold }} vote{{ vote_threshold|pluralize }}
 
            </dd>
 
        </dl>
 
    {% endif %}
 

	
 
{% endblock %}
pinaxcon/templates/symposion/schedule/_edit_grid.html
Show inline comments
 
new file 100644
 
<table class="calendar table table-bordered">
 
    <thead>
 
        <tr>
 
            <th class="time">&nbsp;</th>
 
            {% for room in timetable.rooms %}
 
                <th>{{ room.name }}</th>
 
            {% endfor %}
 
        </tr>
 
    </thead>
 
    <tbody>
 
        {% for row in timetable %}
 
            <tr>
 
                <td class="time">{{ row.time|date:"h:iA" }}</td>
 
                {% for slot in row.slots %}
 
                    <td class="slot slot-{{ slot.kind.label }}" colspan="{{ slot.colspan }}" rowspan="{{ slot.rowspan }}">
 
                        {% if slot.kind.label == "talk" or slot.kind.label == "tutorial" %}
 
                            {% if not slot.content %}
 
                                <a class="btn btn-xs edit-slot" data-action="{% url "schedule_slot_edit" schedule.section.slug slot.pk %}" href="#">+</a>
 
                            {% else %}
 
                                <span class="title"><a class="edit-slot" data-action="{% url "schedule_slot_edit" schedule.section.slug slot.pk %}" href="#">{{ slot.content.title }}</a></span>
 
                                <span class="speaker">{{ slot.content.speaker }}</span>
 
                            {% endif %}
 
                        {% else %}
 
                            {% if slot.content_override.raw %}
 
                                {{ slot.content_override.rendered|safe }}
 
                            {% else %}
 
                                {{ slot.kind.label }}
 
                            {% endif %}
 
                            &mdash; <a class="edit-slot" data-action="{% url "schedule_slot_edit" schedule.section.slug slot.pk %}" href="#">edit</a>
 
                        {% endif %}
 
                    </td>
 
                {% endfor %}
 
                {% if forloop.last %}
 
                    <td colspan="{{ timetable.rooms|length }}"></td>
 
                {% endif %}
 
            </tr>
 
        {% endfor %}
 
    </tbody>
 
</table>
pinaxcon/templates/symposion/schedule/_grid.html
Show inline comments
 
new file 100644
 
<table class="calendar table table-bordered">
 
    <thead>
 
        <tr>
 
            <th class="time">&nbsp;</th>
 
            {% for room in timetable.rooms %}
 
                <th>{{ room.name }}</th>
 
            {% endfor %}
 
        </tr>
 
    </thead>
 
    <tbody>
 
        {% for row in timetable %}
 
            <tr>
 
                <td class="time">{{ row.time|date:"h:iA" }}</td>
 
                {% for slot in row.slots %}
 
                    <td class="slot slot-{{ slot.kind.label }}" colspan="{{ slot.colspan }}" rowspan="{{ slot.rowspan }}">
 
                        {% if slot.kind.label == "talk" or slot.kind.label == "tutorial" %}
 
                            {% if not slot.content %}
 
                            {% else %}
 
                                <span class="title">
 
                                    <a href="{% url "schedule_presentation_detail" slot.content.pk %}">{{ slot.content.title }}</a>
 
                                </span>
 
                                <span class="speaker">
 
                                    {{ slot.content.speakers|join:", " }}
 
                                </span>
 
                            {% endif %}
 
                        {% else %}
 
                            {% if slot.content_override.raw %}
 
                                {{ slot.content_override.rendered|safe }}
 
                            {% else %}
 
                                {{ slot.kind.label }}
 
                            {% endif %}
 
                        {% endif %}
 
                    </td>
 
                {% endfor %}
 
                {% if forloop.last %}
 
                    <td colspan="{{ timetable.rooms|length }}"></td>
 
                {% endif %}
 
            </tr>
 
        {% endfor %}
 
    </tbody>
 
</table>
pinaxcon/templates/symposion/schedule/_slot_edit.html
Show inline comments
 
new file 100644
 
{% load i18n bootstrap %}
 
<form id="slotEditForm" class="modal-form" method="POST" action="{% url "schedule_slot_edit" slug slot.pk %}">
 
    <div class="modal-header">
 
        <a class="close" data-dismiss="modal">&times;</a>
 
        <h3>{% trans "Edit Slot" %}</h3>
 
    </div>
 
    <div class="modal-body" style="height:350px">
 
        {% csrf_token %}
 
        {{ form|bootstrap }}
 
    </div>
 
    <div class="modal-footer">
 
        <button type="submit" class="btn btn-primary">Save</button>
 
    </div>
 
</form>
pinaxcon/templates/symposion/schedule/presentation_detail.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load sitetree %}
 

	
 
{% block head_title %}Presentation: {{ presentation.title }}{% endblock %}
 

	
 
{% block breadcrumbs %}{% sitetree_breadcrumbs from "main" %}{% endblock %}
 

	
 
{% block body %}
 
    {% if presentation.slot %}
 
        <h4>
 
            {{ presentation.slot.day.date|date:"l" }}
 
            {{ presentation.slot.start}}&ndash;{{ presentation.slot.end }}
 
        </h4>
 
    {% endif %}
 
    <h2>{{ presentation.title }}</h2>
 

	
 
    <h4>
 
        {% for speaker in presentation.speakers %}
 
            <a href="{% url "speaker_profile" speaker.pk %}">{{ speaker }}</a>{% if not forloop.last %}, {% endif %}{% endfor %}
 
    </h4>
 

	
 
    <dl class="dl-horizontal">
 
        <dt>Audience level:</dt>
 
        <dd style="margin-bottom: 0;">{{ presentation.proposal.get_audience_level_display }}</dd>
 
    </dl>
 

	
 
    <h3>Description</h3>
 

	
 
    <div class="description">{{ presentation.description }}</div>
 

	
 
    <h3>Abstract</h3>
 

	
 
    <div class="abstract">{{ presentation.abstract|safe }}</div>
 
{% endblock %}
pinaxcon/templates/symposion/schedule/schedule_conference.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load i18n %}
 
{% load pinax_boxes_tags %}
 
{% load cache %}
 

	
 
{% block head_title %}Conference Schedule{% endblock %}
 

	
 
{% block body_class %}full{% endblock %}
 

	
 
{% block right %}
 
{% endblock %}
 

	
 
{% block body_outer %}
 
    <div class="page-head">
 
        <h1>Conference Schedule</h1>
 
        {% block breadcrumbs %}{% endblock %}
 
    </div>
 
    {% box "schedule_top" %}
 

	
 
    {% for section in sections %}
 
        {% cache 600 "schedule-table" section.schedule.section %}
 
            {% for timetable in section.days %}
 
                <h3>{{ section.schedule.section.name }} — {{ timetable.day.date }}</h3>
 
                {% include "symposion/schedule/_grid.html" %}
 
            {% endfor %}
 
        {% endcache %}
 
    {% endfor %}
 

	
 
    {% box "schedule_bottom" %}
 
{% endblock %}
pinaxcon/templates/symposion/schedule/schedule_detail.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load i18n %}
 
{% load pinax_boxes_tags %}
 
{% load cache %}
 
{% load sitetree %}
 

	
 
{% block head_title %}Conference Schedule{% endblock %}
 

	
 
{% block body_class %}full{% endblock %}
 

	
 
{% block right %}
 
{% endblock %}
 

	
 
{% block body_outer %}
 
    <div class="page-head">
 
        <h1>{{ schedule.section }} Schedule</h1>
 
        {% block breadcrumbs %}{% sitetree_breadcrumbs from "main" %}{% endblock %}
 
    </div>
 
    {% box "schedule_top_"|add:schedule.section.name|slugify %}
 

	
 
    {% cache 600 "schedule-table" schedule.section %}
 
        {% for timetable in days %}
 
            <h3>{{ timetable.day.date }}</h3>
 
            {% include "symposion/schedule/_grid.html" %}
 
        {% endfor %}
 
    {% endcache %}
 

	
 
    {% box "schedule_bottom" %}
 
{% endblock %}
pinaxcon/templates/symposion/schedule/schedule_edit.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load i18n %}
 

	
 
{% block head_title %}Conference Schedule Edit{% endblock %}
 

	
 
{% block body_class %}full{% endblock %}
 

	
 
{% block right %}
 
{% endblock %}
 

	
 
{% block extra_head %}
 
    <link rel="stylesheet" href="{{ STATIC_URL }}chosen/chosen.css" />
 
{% endblock %}
 

	
 
{% block body_outer %}
 
    <h1>Schedule Edit</h1>
 

	
 
    {% for timetable in days %}
 
        <h2>{{ timetable.day.date }}</h2>
 
        {% include "symposion/schedule/_edit_grid.html" %}
 
    {% endfor %}
 
    <form id="schedule-builder" action="." method="post" enctype="multipart/form-data">{% csrf_token %}
 
        {{ form.as_p }}
 
        <input type="submit" name="submit" value="Submit" />
 
        <input type="submit" id="delete" name="delete" value="Delete Schedule" />
 
    </form>
 
    <div class="modal fade hide in" id="slotEditModal"></div>
 
{% endblock %}
 

	
 
{% block extra_script %}
 
    <script src="{{ STATIC_URL }}chosen/chosen.jquery.min.js" type="text/javascript"></script>
 
    <script type="text/javascript">
 
        $(function() {
 
            $("a.edit-slot").click(function(e) {
 
                $("#slotEditModal").load($(this).data("action"), function() {
 
                    $("#id_presentation").chosen();
 
                    $("#slotEditModal").modal("show");
 
                });
 
                e.preventDefault();
 
            });
 
        });
 
        $(function() {
 
           //submit event handler
 
            $("form#schedule-builder :submit").click(function(e) {
 
                var name = this.name;
 
                if(name == 'delete') {
 
                    if (!confirm("Are you sure you want to delete the schedule?"))
 
                        {
 
                            e.preventDefault();
 
                            return;
 
                        }
 
                }
 
            });
 
        });
 

	
 
    </script>
 
{% endblock %}
pinaxcon/templates/symposion/schedule/schedule_list.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load i18n %}
 
{% load cache %}
 
{% load sitetree %}
 

	
 
{% block head_title %}Presentation Listing{% endblock %}
 

	
 
{% block extra_head %}
 
    <style>
 
        .presentation {
 

	
 
        }
 
        .presentation h3 {
 
            line-height: 1.1em;
 
            font-weight: bold;
 
        }
 
        .presentation h4 {
 

	
 
        }
 
        .presentation p {
 
            margin-bottom: 0.5em;
 
            line-height: 1.2em;
 
        }
 
    </style>
 
{% endblock %}
 

	
 
{% block breadcrumbs %}{% sitetree_breadcrumbs from "main" %}{% endblock %}
 

	
 
{% block body %}
 
    <h2>Accepted {{ schedule.section.name }}</h2>
 
    {% cache 600 "schedule-list" schedule.section.name %}
 
        {% for presentation in presentations %}
 
            <div class="row">
 
                <div class="col-md-8 presentation well">
 
                    <h3><a href="{% url "schedule_presentation_detail" presentation.pk %}">{{ presentation.title }}</a></h3>
 
                    <h4>{{ presentation.speakers|join:", " }}</h4>
 
                    {{ presentation.description }}
 
                    {% if presentation.slot %}
 
                        <h4>
 
                            {{ presentation.slot.day.date|date:"l" }}
 
                            {{ presentation.slot.start}}&ndash;{{ presentation.slot.end }}
 
                            in
 
                            {{ presentation.slot.rooms|join:", " }}
 
                        </h4>
 
                    {% endif %}
 
                </div>
 
            </div>
 
        {% endfor %}
 
    {% endcache %}
 
{% endblock %}
pinaxcon/templates/symposion/speakers/base.html
Show inline comments
 
new file 100644
 
{% extends "site_base_onecolumn.html" %}
pinaxcon/templates/symposion/speakers/speaker_create.html
Show inline comments
 
new file 100644
 
{% extends "symposion/speakers/base.html" %}
 

	
 
{% load bootstrap %}
 
{% load i18n %}
 
{% load pinax_boxes_tags %}
 

	
 
{% block page_title %}{% trans "Create Speaker Profile" %}{% endblock %}
 

	
 
{% block body %}
 
    {% box "speaker-profile" %}
 

	
 
    <form method="POST" action="" enctype="multipart/form-data">
 
        {% csrf_token %}
 
        <legend>{% trans "Create Speaker Profile" %}</legend>
 
        <fieldset>
 
            {{ speaker_form|bootstrap }}
 
        </fieldset>
 
        <div class="form-actions">
 
            <input class="btn btn-primary" type="submit" value="Save" />
 
            <a class="btn btn-default" href="{% url "dashboard" %}">Cancel</a>
 
        </div>
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/speakers/speaker_edit.html
Show inline comments
 
new file 100644
 
{% extends "symposion/speakers/base.html" %}
 

	
 
{% load bootstrap %}
 
{% load i18n %}
 
{% load pinax_boxes_tags %}
 

	
 
{% block page_title %}{% trans "Edit Speaker Profile" %}{% endblock %}
 

	
 
{% block body %}
 
    {% box "speaker-profile" %}
 

	
 
    <form method="POST" action="" enctype="multipart/form-data">
 
        {% csrf_token %}
 
        <legend>{% trans "Edit Speaker Profile" %}</legend>
 
        <fieldset>
 
            {{ speaker_form|bootstrap }}
 
        </fieldset>
 
        <div class="form-actions">
 
            <input class="btn btn-primary" type="submit" value="Save" />
 
            <a class="btn btn-default" href="{% url "dashboard" %}">Cancel</a>
 
        </div>
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/speakers/speaker_profile.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load i18n %}
 
{% load thumbnail %}
 

	
 

	
 
{% block head_title %}{{ speaker.name }}{% endblock %}
 

	
 
{% block body %}
 
    <div class="row">
 
        <div class="col-md-2">
 
            {% if speaker.photo %}
 
                <img src="{% thumbnail speaker.photo '128x128' %}" alt="{{ speaker.name }}" />
 
            {% else %}
 
                &nbsp;
 
            {% endif %}
 
        </div>
 
        <div class="col-md-6">
 
            {% if speaker.user == request.user or request.user.is_staff %}
 
                <a class="btn btn-default pull-right" href="{% url "speaker_edit" speaker.pk %}">Edit</a>
 
            {% endif %}
 
            <h1>{{ speaker.name }}</h1>
 
            <div class="bio">{{ speaker.biography|safe }}</div>
 

	
 
            <h2>Presentations</h2>
 
            {% for presentation in presentations %}
 
                <h3><a href="{% url "schedule_presentation_detail" presentation.pk %}">{{ presentation.title }}</a></h3>
 
                {% if presentation.slot %}
 
                    <p>
 
                        {{ presentation.slot.day.date|date:"l" }}
 
                        {{ presentation.slot.start}}&ndash;{{ presentation.slot.end }}
 
                        in
 
                        {{ presentation.slot.rooms|join:", " }}
 
                    </p>
 
                {% endif %}
 
            {% empty %}
 
                <p>No presentations. This page is only visible to staff until there is a presentation.<p>
 
            {% endfor %}
 
        </div>
 
    </div>
 
{% endblock %}
pinaxcon/templates/symposion/sponsorship/_horizontal_by_level.html
Show inline comments
 
new file 100644
 
{% load sponsorship_tags %}
 

	
 
{% sponsor_levels as levels %}
 

	
 
<div class="sponsor-list">
 
{% for level in levels %}
 
    <h3>{{ level.name }}</h3>
 
    {% for sponsor in level.sponsors %}
 
        {% include "symposion/sponsorship/_sponsor_link.html" with sponsor=sponsor %}
 
    {% endfor %}
 
{% endfor %}
 
</div>
pinaxcon/templates/symposion/sponsorship/_sponsor_link.html
Show inline comments
 
new file 100644
 
{% load thumbnail %}
 

	
 
{% spaceless %}
 
<a href="{{ sponsor.external_url }}">
 
    {% if dimensions %}
 
        <img id="sponsor_{{ sponsor.pk }}" src="{% thumbnail sponsor.logo dimensions %}" alt="{{ sponsor.name }}" />
 
    {% else %}
 
        <img id="sponsor_{{ sponsor.pk }}" src="{% thumbnail sponsor.logo '150x150' %}" alt="{{ sponsor.name }}" />
 
    {% endif %}
 
</a>
 
{% endspaceless %}
pinaxcon/templates/symposion/sponsorship/_vertical_by_level.html
Show inline comments
 
new file 100644
 
{% load sponsorship_tags %}
 

	
 
{% sponsor_levels as levels %}
 

	
 
<div class="sponsor-list">
 
{% for level in levels %}
 
    <h3>{{ level.name }}</h3>
 
    {% for sponsor in level.sponsors %}
 
        <div>
 
            {% include "symposion/sponsorship/_sponsor_link.html" with sponsor=sponsor %}
 
        </div>
 
    {% endfor %}
 
{% endfor %}
 
</div>
pinaxcon/templates/symposion/sponsorship/_wall.html
Show inline comments
 
new file 100644
 
{% load sponsorship_tags %}
 

	
 
{% sponsors as sponsors %}
 

	
 
<div class="sponsor-wall">
 
{% for sponsor in sponsors %}
 
    {% include "symposion/sponsorship/_sponsor_link.html" with sponsor=sponsor %}
 
{% endfor %}
 
</div>
pinaxcon/templates/symposion/sponsorship/add.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load bootstrap %}
 
{% load i18n %}
 
{% load pinax_boxes_tags %}
 

	
 
{% block head_title %}{% trans "Add a Sponsor" %}{% endblock %}
 

	
 
{% block body_class %}sponsorships{% endblock %}
 

	
 
{% block body %}
 
    <form method="POST" action="{% url "sponsor_add" %}" class="form-horizontal">
 
        {% csrf_token %}
 
        <legend>{% trans "Add a Sponsor" %}</legend>
 
        {{ form|bootstrap_horizontal }}
 
        <div class="form-actions">
 
            <input class="btn btn-primary" type="submit" value="Add" />
 
            <a class="btn btn-default" href="{% url "dashboard" %}">Cancel</a>
 
        </div>
 
    </form>
 

	
 
{% endblock %}
pinaxcon/templates/symposion/sponsorship/apply.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load bootstrap %}
 
{% load i18n %}
 
{% load pinax_boxes_tags %}
 

	
 
{% block head_title %}{% trans "Apply to be a Sponsor" %}{% endblock %}
 

	
 
{% block body_class %}sponsorships{% endblock %}
 

	
 
{% block body %}
 

	
 
    {% box "sponsorship-apply" %}
 

	
 
    <form method="POST" action="" class="form-horizontal">
 
        {% csrf_token %}
 
        <legend>{% trans "Apply to Be a Sponsor" %}</legend>
 
        {{ form|bootstrap_horizontal }}
 
        <div class="form-actions">
 
            <input class="btn btn-primary" type="submit" value="Apply" />
 
            <a class="btn btn-default" href="{% url "dashboard" %}">Cancel</a>
 
            <p class="help-block">
 
                <small>By submitting this sponsor application you are agreeing to the <a href="{% url "pages_page" "sponsor/terms/" %}" target="_blank">terms and conditions</a>.</small>
 
            </p>
 
        </div>
 
    </form>
 

	
 
{% endblock %}
pinaxcon/templates/symposion/sponsorship/detail.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load bootstrap %}
 
{% load i18n %}
 

	
 
{% block head_title %}{{ sponsor }}{% endblock %}
 

	
 
{% block page_title %}{% trans "Sponsorship" %}{% endblock %}
 

	
 
{% block body %}
 
    <h2>{{ sponsor.name }} ({{ sponsor.level }})</h2>
 

	
 
    <form enctype="multipart/form-data" method="POST" action="" class="form-horizontal">
 
        {% csrf_token %}
 
        <fieldset>
 
            {{ form|bootstrap_horizontal }}
 
        </fieldset>
 

	
 
        <h3>{{ sponsor.level }} Sponsor Benefits</h3>
 

	
 
        {{ formset.management_form }}
 
        {{ formset.non_form_errors }}
 

	
 
        {% for form in formset.forms %}
 
            <div class="control-group">
 
                <label class="control-label">{{ form.instance.benefit }}</label>
 
                <div class="controls">
 
                    {{ form }}
 
                    <p class="help-block">{{ form.instance.benefit.description }}</p>
 
                </div>
 
            </div>
 
        {% endfor %}
 

	
 
        <div class="form-actions">
 
            <input class="btn btn-primary" type="submit" value="Save" />
 
            <a class="btn btn-default" href="{% url "dashboard" %}">Cancel</a>
 
        </div>
 

	
 
    </form>
 
{% endblock %}
pinaxcon/templates/symposion/sponsorship/list.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

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

	
 
{% block head_title %}{% trans "About Our Sponsors" %}{% endblock %}
 

	
 
{% block body_class %}sponsorships{% endblock %}
 

	
 
{% block body_outer %}
 
    <h1>{% trans "About Our Sponsors" %}</h1>
 
    <a href="{% url "pages_page" "sponsors/prospectus/" %}" class="btn">Learn how to become a sponsor <span class="arrow"></span></a>
 

	
 
    {% sponsor_levels as levels %}
 
    {% for level in levels %}
 
        {% if level.sponsors %}
 
            <h3>{{ level.name }}</h3>
 

	
 
            {% for sponsor in level.sponsors %}
 
                {% if sponsor.website_logo %}
 
                    <div class="row">
 
                        <div class="col-md-2">
 
                            <h2>
 
                                <a href="{{ sponsor.external_url }}">
 
                                    <img src="{% thumbnail sponsor.website_logo '150x80' %}" alt="{{ sponsor.name }}" />
 
                                </a>
 
                            </h2>
 
                        </div>
 
                        <div class="col-md-10">
 
                            <h5>{{ sponsor.name }}</h5>
 
                            <p><a href="{{ sponsor.external_url }}">{{ sponsor.external_url }}</a></p>
 
                            <p>{{ sponsor.listing_text|urlize|linebreaks }}</p>
 
                        </div>
 
                    </div>
 
                {% endif %}
 
            {% endfor %}
 
        {% endif %}
 
    {% endfor %}
 
{% endblock %}
pinaxcon/templates/symposion/teams/team_detail.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load bootstrap %}
 

	
 
{% block head_title %}{{ team.name }}{% endblock %}
 

	
 
{% block body_outer %}
 
    <div class="pull-right">
 
    {% if can_join %}
 
        <form method="post" action="{% url "team_join" team.slug %}">
 
            {% csrf_token %}
 
            <input type="submit" class="btn btn-primary" value="join">
 
        </form>
 
    {% endif %}
 

	
 
    {% if can_leave %}
 
        <form method="post" action="{% url "team_leave" team.slug %}">
 
            {% csrf_token %}
 
            <input type="submit" class="btn btn-default" value="leave">
 
        </form>
 
    {% endif %}
 

	
 
    {% if can_apply %}
 
        <form method="post" action="{% url "team_apply" team.slug %}">
 
            {% csrf_token %}
 
            <input type="submit" class="btn btn-primary" value="apply">
 
        </form>
 
    {% endif %}
 
    </div>
 

	
 
    <h1>{{ team.name }}{% if state %} <span class="label">{{ state }}</span>{% endif %}</h1>
 

	
 
    {% if team.description %}<p>{{ team.description }}</p>{% endif %}
 

	
 
    {% if state == "invited" %}<p>You have been invited to join this team. Click <b>join</b> to the right to accept.</p>{% endif %}
 

	
 
    {% if user.is_staff or state == "manager" %}
 
        {% if team.managers %}
 
            <h2>Managers</h2>
 
            <table class="table table-striped">
 
                {% for membership in team.managers %}
 
                    <tr>
 
                        <td>{{ membership.user.email }}{% if user == membership.user %} <span class="label label-info">you</span>{% endif %}</td>
 
                        <td>
 
                            <form style="margin: 0;" method="post" action="{% url "team_demote" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-xs">demote</button></form>
 
                        </td>
 
                    </tr>
 
                {% endfor %}
 
            </table>
 
        {% endif %}
 
        {% if team.members %}
 
            <h2>Team Members</h2>
 
            <table class="table table-striped">
 
                {% for membership in team.members %}
 
                    <tr>
 
                        <td>{{ membership.user.email }}{% if user == membership.user %} <span class="label label-info">you</span>{% endif %}</td>
 
                        <td>
 
                            <form style="margin: 0;" method="post" action="{% url "team_promote" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-xs">promote</button></form>
 
                        </td>
 
                    </tr>
 
                {% endfor %}
 
            </table>
 
        {% endif %}
 
        {% if team.applicants and team.access == "application" %}
 
            <h2>Applicants</h2>
 
            <table class="table table-striped">
 
                {% for membership in team.applicants %}
 
                    <tr>
 
                        <td>{{ membership.user.email }}</td>
 
                        <td>
 
                            <form style="margin: 0; float: left;" method="post" action="{% url "team_accept" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-xs">accept</button></form>
 
                            <form style="margin: 0; float: left;" method="post" action="{% url "team_reject" membership.pk %}">{% csrf_token %}<button type="submit" class="btn btn-xs">reject</button></form>
 
                        </td>
 
                    </tr>
 
                {% endfor %}
 
            </table>
 
        {% endif %}
 
        {% if team.invitees %}
 
            <h2>Invitees</h2>
 
            <table class="table table-striped">
 
                {% for membership in team.invitees %}
 
                    <tr>
 
                        <td>{{ membership.user.email }}</td>
 
                    </tr>
 
                {% endfor %}
 
            </table>
 
        {% endif %}
 
        {% if invite_form %}
 
            <form method="POST" action="" class="form-horizontal">
 
                {% csrf_token %}
 
                <legend>Invite User to Team</legend>
 
                {{ invite_form|bootstrap_horizontal }}
 
                <div class="form-actions">
 
                    <input class="btn btn-primary" type="submit" value="Invite" />
 
                </div>
 
            </form>
 
        {% endif %}
 
    {% endif %}
 
{% endblock %}
pinaxcon/urls.py
Show inline comments
 
new file 100644
 
from django.conf import settings
 
from django.conf.urls import patterns, include, url
 
from django.conf.urls.static import static
 
from django.views.generic import TemplateView
 

	
 
from django.contrib import admin
 

	
 
import symposion.views
 

	
 

	
 
urlpatterns = patterns(
 
    "",
 
    url(r"^$", TemplateView.as_view(template_name="homepage.html"), name="home"),
 
    url(r"^admin/", include(admin.site.urls)),
 

	
 
    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("symposion.reviews.urls")),
 
    url(r"^schedule/", include("symposion.schedule.urls")),
 

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

	
 
    url(r"^boxes/", include("pinax.boxes.urls")),
 
    url(r"^", include("pinax.pages.urls")),
 
)
 

	
 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
pinaxcon/wsgi.py
Show inline comments
 
new file 100644
 
import os
 

	
 
os.environ.setdefault("DEBUG", "0")
 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pinaxcon.settings")
 

	
 
from django.core.wsgi import get_wsgi_application  # noqa
 

	
 
from dj_static import Cling, MediaCling  # noqa
 

	
 
application = Cling(MediaCling(get_wsgi_application()))
requirements.txt
Show inline comments
 
new file 100644
 
Django==1.8.5
 
pinax-theme-bootstrap==7.1.1
 
django-user-accounts==1.2
 
metron==1.3.5
 
pinax-eventlog==1.0.0
 
django-jsonfield==0.9.15
 
dj-static==0.0.6
 
dj-database-url==0.3.0
 
gunicorn==19.3.0
 
psycopg2==2.6.1
 
pinax-pages==0.3.0
 
pinax-boxes==2.1.0
 

	
 
# run off of master for now
 
git+https://github.com/pinax/symposion.git
static/STATIC_README.md
Show inline comments
 
new file 100644
 
# Static Media
 

	
 
We are using `webpack` and `npm` for our static build process. A configuration
 
that should work for most cases has already been configured and statics come
 
pre-built so you don't need to do anything unless you change anything in the
 
`src/` directory.
 

	
 
Do NOT edit anything in the `dist/` directory.
 

	
 
Local development uses media from `dist/` and we are firm believers in building
 
static assets and committing them to the repo before deployments. This way we
 
always are testing and exercise exactly what will be served in production. It
 
also makes our deployment simpler.
 

	
 
## Images
 

	
 
If you want to add images to be referenced in your site's HTML or CSS there are
 
a couple things you need to be aware of.
 

	
 
You should first create a folder under `src/` called `images` (you can change
 
the name of this by updating your `webpack.config.js` to look for something
 
else). Store all your source images in this folder (or subfolders).
 

	
 
### CSS
 

	
 
Whether you use SASS or LESS, you will reference your images using relative
 
urls:
 

	
 
```css
 
div {
 
    background-image: url(../images/background.png);
 
}
 
```
 

	
 
### HTML
 

	
 
If you want to use an `img` tag you will need to do a couple things:
 

	
 
```html
 
<img src="{% static "images/picture.png" %}" />
 
```
 

	
 
then in your `src/js/main.js` you need to tell `webpack` that you are going to
 
reference that image:
 

	
 
```js
 
require("../images/picture.png");
 
```

Changeset was too big and was cut off... Show full diff anyway

0 comments (0 inline, 0 general)