Pinax 18.01: Django 2.0, Stripe Connect, Templates, and Patches
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:
- move templates from the app to
pinax-templates
- “semantify” the template code so that the templates are agnostic to any CSS framework
- 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.
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 \ Python | 2.7 | 3.4 | 3.5 | 3.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.