Pinax 18.01: Django 2.0, Stripe Connect, Templates, and Patches

Two years ago today, we announced our Pinax distribution plan. Since Pinax is no one app or project but an ecosystem of applications that work together to make building new web applications fast and fun, having a distribution allows us to provide a known working set of compatible versions.

2017 was a blur with no distributions but we are back in the saddle this year with a great distribution that brings lots of improvements to Pinax.

Pinax 18.01 brings support for Django 1.11 and 2.0 alongside Python 2.7, 3.4, 3.5, and 3.6. Documentation has moved from various places that were harder to maintain to each app’s README. We improved the entire CI process and test coverage, moving from Travis CI to Circle CI.

Some additional highlights:

  • a major upgrade for pinax-stripe, now with Stripe Connect support for building marketplaces
  • introducing pinax-templates with default semantic templates for many Pinax apps
  • a new template preview site that is always running the latest pinax-templates
  • amazing app “patches” — hexagonal tiles, lovingly crafted to evoke the spirit of each Pinax app

A Community Effort

Since the last Pinax release in August 2016, open-source developers made a huge contribution to the Pinax ecosystem. Based on GitHub records, we saw:

  • Forty-eight (48) contributors
  • 1460 commits
  • 185 closed issues
  • 356 closed pull requests

Thanks so much to all the Pinax community members who helped make this release possible!

New Apps

Two Pinax apps were upgraded and supported by demonstration and/or starter projects:

pinax-invitations

A site invitation app for inviting others to join your site.

pinax-notifications

A user notification management app which informs users when events have occurred

Updated Template Management

Managing templates for reusable apps is a chore and there are lots of conflicting options. You can ship templates in the app itself. You can just provide documentation on what template variables are sent and require the site developer provide the templates. You can ship a package of templates as another Django app. We did the latter for years via pinax-theme-bootstrap with Bootstrap classes in the markup.

This path not only locked folks into Bootstrap, but more importantly made templates hard to maintain when new versions of Bootstrap came out.

With 18.01, Pinax moved away from pinax-theme-bootstrap to a semantic approach demonstrated in pinax-templates. Read more about this change in our Semantic Templates blog post.

Adding app templates to pinax-templates is a three step process:

  1. move templates from the app to pinax-templates
  2. “semantify” the template code so that the templates are agnostic to any CSS framework
  3. demonstrate template use in pinax_theme_tester (seen online at http://templates.pinaxproject.com)

If you have a favorite Pinax app which does not have pinax-template support, remember PRs are the best way to help. We can provide guidance for updating pinax_theme_tester and welcome your assistance!

The theme tester displays templates used by each Pinax app supported by pinax-templates. The tester displays source code, snippets, and templatetag usage.Read more about its design in our Pinax Theme Tester blog post.

App patches brighten your day.

In the pinax-design repo we added assets for Pinax branding, including a new set of Patches for each app. We wanted to add a little fun as well as branding to each Pinax app. We blogged about this last September.

The new Pinax Patches

Updated Apps

In December 2017, Django released v2.0. This presented challenges as the extensive Django v2.0 release notes testify.

Pinax app continuous integration configurations were updated following Eldarion’s Code Quality guidance and code massaged until all tests passed for all supported Django/Python combinations.

In addition, Eldarion’s 10 Tips For Upgrading to Django 2.0 provided guidance for knocking out the most common upgrade issues. Pinax apps also gained a new Import Ordering Standard, with a handy technique for standardizing import ordering.

App documentation is now standardized in a single README.md file available in each repository for all but the largest apps. The documentation is re-organized, updated, and improved in many ways. It’s much better than before but not every app has complete documentation. Documentation pull requests are welcome!

All updated Pinax apps support the following pairings: Django 1.11 on Python 2.7, 3.4, 3.5, and 3.6, and Django 2.0 on Python 3.4, 3.5, and 3.6.

Django \ Python2.73.43.53.6
1.11****
2.0***

pinax-stripe

pinax-stripe improved tremendously, gaining Stripe Connect support. Read our Pinax Stripe 4.0.0 blog post for more details. Even with the new capabilities pinax-stripe test coverage remains consistently above 99%!

Updated Starter Projects

All starter projects are updated to Django 2.0 standards. Projects requiring Javascript support now use npm and package.json for JS dependencies. Read our Simplifying the Static Build Process blog post for more details.

All starter project dependencies are updated to the latest Pinax app releases defined in this distribution.

Updated Demonstration Projects

All code is updated to Django 2.0 standards.

cloudspotting2

Rebuilt from scratch using starter project account, and using package.json and npm. Uses pinax-templates. Integrates pinax-invitations to invite new users, and pinax-notifications to notify inviters when their invitees accept.

Read more about the original project in Building Cloudspotting, Part 1 and Part 2 blog posts.

pinax-calendars-demo

Updated for Django 2.0, pinax-calendars-demo demonstrates output from pinax-calendars.

Updated Tools

pinax-cli

Now supports project creation in the directory of your choosing with the --location <path> option. This is useful if you use pipenv with your project.

Deprecations

  • Drop Django 1.8, 1.9, and 1.10 support, following the Django Project release timeline.
  • Drop Python 3.3 support, following the Python Project release schedule.

In Closing

This distribution delivers a solid foundation of mature apps to help you build your next great web application. With full support for Django 2.0, high-quality community-driven code, and a fantastic contributor community, we hope you will join us for your next project.

If you haven’t already, join us in Slack and say hello. We’d love to know what you are building.