Changeset - 7d17ee1ef234
[Not reviewed]
0 3 0
Christopher Neugebauer - 5 years ago 2019-08-31 01:38:04
_@chrisjrn.com
Add updated ticket sales info
3 files changed with 25 insertions and 22 deletions:
0 comments (0 inline, 0 general)
pinaxcon/registrasion/management/commands/populate_inventory.py
Show inline comments
...
 
@@ -2,25 +2,25 @@ from collections import namedtuple
 
from datetime import datetime
 
from datetime import timedelta
 
from decimal import Decimal
 
from django.contrib.auth.models import Group
 
from django.core.exceptions import ObjectDoesNotExist
 
from django.core.management.base import BaseCommand, CommandError
 

	
 
from registrasion.models import inventory as inv
 
from registrasion.models import conditions as cond
 
from symposion import proposals
 

	
 
class Command(BaseCommand):
 
    help = 'Populates the inventory with the NBPy2018 inventory model'
 
    help = 'Populates the inventory with the NBPy2019 inventory model'
 

	
 
    def add_arguments(self, parser):
 
        pass
 

	
 
    def handle(self, *args, **options):
 

	
 
        kinds = []
 
        for i in ("talk", ):
 
            kinds.append(proposals.models.ProposalKind.objects.get(name=i))
 
        self.main_conference_proposals = kinds
 

	
 
        self.populate_groups()
...
 
@@ -56,36 +56,38 @@ class Command(BaseCommand):
 
        self.ticket = self.find_or_make(
 
            inv.Category,
 
            ("name",),
 
            name="Ticket",
 
            description="Each type of ticket has different included products. "
 
                        "For details of what products are included, see our "
 
                        "<a href='/attend'>ticket sales page</a>.",
 
            required = True,
 
            render_type=inv.Category.RENDER_TYPE_RADIO,
 
            limit_per_user=1,
 
            order=1,
 
        )
 
        '''
 
        self.t_shirt = self.find_or_make(
 
            inv.Category,
 
            ("name",),
 
            name="T-Shirt",
 
            description="Commemorative conference t-shirts, featuring secret "
 
                        "North Bay Python 2018 artwork. Details of sizing and "
 
                        "manufacturer are on our <a href='/attend/tshirt'>"
 
                        "t-shirts page</a>",
 
            required = False,
 
            render_type=inv.Category.RENDER_TYPE_ITEM_QUANTITY,
 
            order=40,
 
        )
 
        '''
 
        self.extras = self.find_or_make(
 
            inv.Category,
 
            ("name",),
 
            name="Extras",
 
            description="Other items that can improve your conference "
 
                        "experience.",
 
            required = False,
 
            render_type=inv.Category.RENDER_TYPE_QUANTITY,
 
            order=60,
 
        )
 

	
 
        # Tickets
...
 
@@ -173,24 +175,25 @@ class Command(BaseCommand):
 
        )
 
        self.ticket_volunteer = self.find_or_make(
 
            inv.Product,
 
            ("name", "category",),
 
            category=self.ticket,
 
            name="Conference Volunteer",
 
            price=Decimal("00.00"),
 
            reservation_duration=hours(24),
 
            order=90,
 
        )
 

	
 
        # Shirts
 
        '''
 
        ShirtGroup = namedtuple("ShirtGroup", ("prefix", "sizes"))
 
        shirt_names = {
 
            "mens": ShirtGroup(
 
                "Men's/Straight Cut Size",
 
                ("S", "M", "L", "XL", "2XL", "3XL", "5XL"),
 
            ),
 
            "womens_classic": ShirtGroup(
 
                "Women's Relaxed Fit",
 
                ("XS", "S", "M", "L", "XL", "2XL", "3XL"),
 
            ),
 
            "womens_semi": ShirtGroup(
 
                "Women's Semi-Fitted",
...
 
@@ -206,24 +209,25 @@ class Command(BaseCommand):
 
            for size in group.sizes:
 
                product_name = "%s %s" % (prefix, size)
 
                order += 10
 
                self.shirts[name][size] = self.find_or_make(
 
                    inv.Product,
 
                    ("name", "category",),
 
                    name=product_name,
 
                    category=self.t_shirt,
 
                    price=Decimal("30.00"),
 
                    reservation_duration=hours(1),
 
                    order=order,
 
                )
 
        '''
 

	
 
    def populate_restrictions(self):
 

	
 
        # Hide the products that will eventually need a voucher
 
        hide_voucher_products = self.find_or_make(
 
            cond.GroupMemberFlag,
 
            ("description", ),
 
            description="Can see hidden products",
 
            condition=cond.FlagBase.ENABLE_IF_TRUE,
 
        )
 
        hide_voucher_products.group.set([self.group_unpublish])
 
        hide_voucher_products.products.set([
...
 
@@ -352,25 +356,25 @@ class Command(BaseCommand):
 
                ("discount", "category",),
 
                discount=parent_discount,
 
                category=category,
 
                percentage=Decimal("100.00"),
 
                quantity=quantity,
 
            )
 

	
 
        # Early Bird Discount (general public)
 
        early_bird = self.find_or_make(
 
            cond.TimeOrStockLimitDiscount,
 
            ("description", ),
 
            description="Early Bird",
 
            end_time=datetime(year=2018, month=9, day=30),
 
            end_time=datetime(year=2019, month=9, day=20),
 
            limit=100,  # Across all users
 
        )
 
        add_early_birds(early_bird)
 

	
 
        # Early bird rates for speakers
 
        speaker_ticket_discounts = self.find_or_make(
 
            cond.SpeakerDiscount,
 
            ("description", ),
 
            description="Speaker Ticket Discount",
 
            is_presenter=True,
 
            is_copresenter=True,
 
        )
...
 
@@ -383,48 +387,52 @@ class Command(BaseCommand):
 
        ticket_prolike_inclusions = self.find_or_make(
 
            cond.IncludedProductDiscount,
 
            ("description", ),
 
            description="Complimentary for ticket holder (Supporter-level and above)",
 
        )
 
        ticket_prolike_inclusions.enabling_products.set([
 
            self.ticket_ind_sponsor,
 
            self.ticket_corporate,
 
            self.ticket_supporter,
 
            self.ticket_sponsor,
 
            self.ticket_speaker,
 
        ])
 
        free_category(ticket_prolike_inclusions, self.t_shirt)
 
        # free_category(ticket_prolike_inclusions, self.t_shirt)
 

	
 
        # Team & volunteer ticket inclusions
 
        ticket_staff_inclusions = self.find_or_make(
 
            cond.IncludedProductDiscount,
 
            ("description", ),
 
            description="Complimentary for ticket holder (staff/volunteer)",
 
        )
 
        ticket_staff_inclusions.enabling_products.set([
 
            self.ticket_team,
 
            self.ticket_volunteer,
 
        ])
 

	
 
        '''
 

	
 
        # Team & volunteer t-shirts, regardless of ticket type
 
        staff_t_shirts = self.find_or_make(
 
            cond.GroupMemberDiscount,
 
            ("description", ),
 
            description="T-shirts complimentary for staff and volunteers",
 
        )
 
        staff_t_shirts.group.set([
 
            self.group_team,
 
            self.group_volunteers,
 
        ])
 
        free_category(staff_t_shirts, self.t_shirt, quantity=2)
 
        free_category(staff_t_shirts, self.t_shirt, quantity=2
 

	
 
        '''
 

	
 
    def find_or_make(self, model, search_keys, **k):
 
        ''' Either makes or finds an object of type _model_, with the given
 
        kwargs.
 

	
 
        Arguments:
 
            search_keys ([str, ...]): A sequence of keys that are used to search
 
            for an existing version in the database. The remaining arguments are
 
            only used when creating a new object.
 
        '''
 

	
 
        try:
pinaxcon/templates/static_pages/attend/attend.html
Show inline comments
...
 
@@ -18,43 +18,43 @@
 

	
 
<p>To buy a ticket, <a href="/dashboard">create an account, and go to the dashboard</a>. If you've already bought a ticket, you can check out our information on <a href="/attend/hotels">where to stay</a> and <a href="/attend/travel">how to get here</a>.
 

	
 
<p>We also have guides on <a href="/go/fly">how to fly to North Bay Python</a>, <a href="/go/day-trip">how to make day trips from elsewhere in the Bay Area</a>, and <a href="/go/stay">how to make a weekend of it and stay around Petaluma</a>.</p>
 

	
 
<p><strong>Attendees should fill out their own registration form</strong>. When you complete the form, you'll receive a link that you can pass on if someone is paying on your behalf.</p>
 

	
 
<br />
 

	
 
<div class="pull-right"><a class="btn btn-lg btn-primary" href="/tickets/buy">Buy a Ticket</a></div>
 
<h2>Which Ticket?</h2>
 

	
 
<p><em><a href="/attend/tshirt">T-shirts</a> are only available for tickets bought before October 9th.</em></p>
 
<p><em>Early Bird Discounts are available for the first 50 tickets sold tickets bought before September 20th.</em></p>
 

	
 
<h3>Corporate <small>$200</small></h3>
 

	
 
<p><strong>For company employees, and individuals who can claim the cost of attending the conference as a business expense or other tax deduction</strong>.</p>
 

	
 
<p>Includes a free t-shirt, and recognition of your affiliation on your conference badge and on the conference supporters list. Group discounts are available for organizations that buy 5 or more tickets.</p>
 
<p>Includes recognition of your affiliation on your conference badge and on the conference supporters list. Group discounts are available for organizations that buy 5 or more tickets.</p>
 

	
 
<h3>Individual Supporter <small>$100</small></h3>
 

	
 
<p><strong>For individuals who want to financially contribute to the success of the conference.</strong></p>
 

	
 
<p>This ticket includes a free t-shirt, and recognition of your Free and Open Source Software, hobby, or nonprofit project on your conference badge.</p>
 
<p>This ticket includes recognition of your of your affiliation on your conference badge.</p>
 

	
 
<h3>Unaffiliated Individual <small>$50</small></h3>
 

	
 
<p><strong>For students, hobbyists, and unemployed/underemployed people who are coming to North Bay Python at their own expense.</strong></p>
 

	
 
<p>The cheapest ticket we can offer. You can add a t-shirt for $30.</p>
 
<p>The cheapest ticket we can offer.</p>
 

	
 

	
 
<h3>Special Tickets</h3>
 

	
 
<h4>Individual Sponsor <small>$500</small></h4>
 

	
 
<p>This ticket includes all of the benefits of a Corporate ticket, but we’ll also give the ticket holder special thanks during our conference plenary sessions. You can also provide us with a promotional item to put in each attendee’s swag bag.</p>
 

	
 
<p>This ticket is for individuals who want to sponsor the conference. For company-level sponsorships, please see our <a href="/sponsors/become-a-sponsor">sponsorships page</a>.</p>
 

	
 

	
 
<h4>Group Discount Corporate <small>$180 for 5+ tickets</small></h4>
...
 
@@ -79,30 +79,27 @@
 
<tr>
 
  <th>Group Discount</th>
 
  <td> - </td><td>- </td><td>$180/ticket for 5+ tickets</td><td> -</td></tr>
 
<tr>
 
  <th>Conference access</th>
 
  <td>  Yes </td><td>  Yes </td><td>  Yes </td><td>  Yes </td></tr>
 
<tr>
 
  <th>Morning refreshments</th>
 
  <td> TBA </td><td> TBA </td><td> TBA </td><td> TBA </td></tr>
 
<tr>
 
  <th>Free Lunch</th>
 
  <td> No </td><td> No </td><td> No </td><td> No </td></tr>
 
<tr>
 
  <th>T-Shirt</th>
 
  <td>$30 each</td><td>1 free</br>Extras $30 each</td><td>1 free</br>Extras $30 each</td><td>1 free</br>Extras $30 each</td></tr>
 
<tr>
 
  <th>Affiliation on your badge</th>
 
  <td> No </td><td>Personal projects only</td><td> Yes </td><td>Yes</td></tr>
 
  <td> No </td><td>Yes</td><td> Yes </td><td>Yes</td></tr>
 
<tr>
 
  <th>Supporter recognition</th>
 
  <td> None </td><td>For you </td><td>For you and your company </td><td>Top billing for you and your company or project</td></tr>
 
  <tr>
 
    <th>Sponsor benefits</th>
 
    <td> No </td><td>No</td><td> No </td><td>Yes</td></tr>
 
<tr>
 
  <th>Childcare</th>
 
  <td> Yes </td><td>Yes</td><td> Yes </td><td>Yes</td></tr>
 
</table>
 

	
 
<p>If you can’t afford to attend on these prices, please email <a href="mailto:hello@northbaypython.org">hello@northbaypython.org</a> – we’ll enthusiastically waive ticket fees for people who need it.</em></p>
...
 
@@ -111,45 +108,43 @@
 
  <a class="btn btn-lg btn-primary" href="/tickets/buy">Buy a Ticket</a>
 
</div>
 

	
 

	
 
<h2>Benefits</h2>
 

	
 
<h3>Conference access</h3>
 
<p>Two days of high-caliber talks about Python, and meeting new Pythonistas at North Bay Python.</p>
 

	
 
<h3>Lunch</h3>
 
<p>In order to keep ticket costs as low as possible, we don't cater lunch.</p>
 

	
 
<p>To make up for it, we’ve located our conference right in the middle of Historic Downtown Petaluma’s restaurant district. You can find everything from market delis and barbecue, through to Michelin-rated restaurants, all within 5 minutes walk. You’ll get a better lunch than we’d ever be able to cater, for much less. We'll have a locals' guide to Petaluma to help you find places to eat.</p>
 
<p>To make up for it, we’ve located our conference right in the middle of Historic Downtown Petaluma’s restaurant district. You can find everything from market delis and California barbecue, through to Michelin-recommended restaurants, all within 5 minutes walk. You’ll get a better lunch than we’d ever be able to cater, for much less. We'll have a locals' guide to Petaluma to help you find places to eat.</p>
 

	
 
<h3>Morning Refreshments</h3>
 
<p>We'll provide coffee, tea, hot chocolate, and some light snacks in the morning before proceedings kick off on both days.</p>
 

	
 
<h3>T-Shirt</h3>
 
<p>We’ll be designing a collectible North Bay Python t-shirt for you to pick up at the conference, and they’ll be <a href="/attend/tshirt">available in a variety of sizes, cuts and colors</a>. Each t-shirt costs $30, and for supporter, corporate, and sponsor ticket holders, you’ll get your first t-shirt free!</p>
 

	
 
<p>T-shirts are available only for tickets purchased by Wednesday, October 9th.</p>
 
<p>We’ll be designing a collectible North Bay Python t-shirt for sale on-line by the time the conference comes around, and they’ll be available in a variety of sizes, cuts and colors.</p>
 

	
 

	
 
<h3>Affiliation</h3>
 
<p>Every attendee gets their very own lanyard and a badge with their name on it. For higher-paying ticket holders, you’ll get your project’s name (supporter and above) or company name (corporate or sponsor levels only) on your badge, just below your name.</p>
 

	
 
<h3>Supporter Recognition</h3>
 
<p>On our website, we’ll have a list of our conference supporters. You can choose to have your name on that list.</p>
 

	
 
<p>For our corporate and sponsor ticket holders, we’ll also include your company name as part of those thanks.</p>
 

	
 
<h3>Sponsor Benefits</h3>
 
<p>Sponsor tickets come with sponsor benefits. To find out more, see our <a href="/sponsors/become-a-sponsor">Sponsors page</a>.</p>
 

	
 

	
 
<h3>Childcare</h3>
 
<p>We'll be offering childcare at a nearby venue. If you have children, we'll have qualified care providers available to take care of them. Parents can find more useful information on our <a href="/accommodations">Accommodations</a> page.</p>
 

	
 
<h3>Accessibility and Accommodations</h3>
 
<p>Please check out our <a href="/accessibility">Accessibility and Accommodations</a> page. Whether you have mobility, hearing, or vision issues, or a service animal, dietary restrictions, or something else you need to consider to navigate North Bay Python, we've got you covered. Please don't hesitate to <a href="mailto:hello@northbaypython.org">reach out</a> if you have questions we can help answer!</p>
 

	
 
<h3>Financial Aid</h3>
 
<p>If you don't have an employer paying to send you to North Bay Python, we encourage you to <a href="/attend/finaid">apply for financial aid</a>. We can help defray the cost of travel, food, and lodging, as our goal is for attending North Bay Python to cost you about as much as staying home.</p>
 
<h3>Opportunity grants</h3>
 
<p>If you don't have an employer paying to send you to North Bay Python, we encourage you to <a href="/attend/finaid">apply for an opportunity grant</a>. We can help defray the cost of travel, food, and lodging, as our goal is for attending North Bay Python to cost you about as much as staying home.</p>
 

	
 
{% endblock %}
pinaxcon/templates/static_pages/homepage.html
Show inline comments
...
 
@@ -34,28 +34,28 @@
 
    </div>
 
    <div class="homepage-block-bloop">
 
      <div class="grey-gradient main"></div>
 
      <div class="clouds main"></div>
 
    </div>
 
  </div>
 

	
 
  <div class="jumbotron homepage-block dark shallow">
 
    <div class="container homepage-block-footer">
 
      <div class="row">
 
        <div class="col-md-8">
 
          <p class="">
 
            <span class="wrap-break">Ticket Sales open soon!</span>
 
            {%comment%}
 
            <span class="wrap-break"><a href="/speak">Submit your proposal now!</a></span>
 
            {%endcomment%}
 
            {% comment %}
 
            <span class="wrap-break"><a href="/attend">Early Bird Tickets on sale now!</a></span>
 
            <span class="wrap-break">Session and Headline Speakers announced soon.</span>
 
            {% endcomment %}
 
          </p>
 
        </div>
 
        <div class="col-md-4  email-signup-panel">
 
          <div class="panel panel-default">
 
            <div class="panel-heading">
 
              <h2 class="panel-title homepage-title">Sign up for our newsletter</h4>
 
            </div>
 
            <div class="panel-body">
 
              <form
 
                class="form-inline"
 
                action="https://tinyletter.com/northbaypython" method="post" target="popupwindow" onsubmit="window.open('https://tinyletter.com/northbaypython', 'popupwindow', 'scrollbars=yes,width=800,height=600');return true">
 
                <div class="form-group">
0 comments (0 inline, 0 general)