Saleor v2.6.0 Release Notes
Release Date: 2019-05-13 // almost 5 years ago-
๐ Welcome to the April 2019 release of Saleor! Read on to learn about the newest changes!
Any color you like, as long as it's Black
๐ Proper code formatting is one of the essential things that help to keep an open-source project universally maintainable and understandable. We had Google's YAPF in Saleor, but the formatting was only applied to some of the newer code, while a lot of the original core was using inconsistent styles. To address this issue, we decided to pick a modern tool that a number of open-source projects have recently adopted. Black is an opinionated code formatting tool for Python that comes with a fixed set of rules which are subject to only limited adjusts. And that's one of the greatest powers of Black. We've also added support for Pre-commit which makes sure that every commit you create contains appropriately formatted code.
Data classes as a universal payment interface
๐ One of our goals for the future is to extract payment gateways to separate repositories and provide a standard interface that'll make implementing new ones easier for the community. We're also investigating ways to have a plugin architecture where integrations can be optionally turned on and off. For that, we want to benefit from Python 3.7's data classes which can be used as standardized objects to pass data between various parts of the system. As data classes are not supported in Python versions before 3.6 (in 3.6 they're available through a third-party library), we decided to drop support for Python 3.5.
Bulk actions in Dashboard 2.0
๐ A useful management Dashboard is one that allows users to perform everyday actions quickly. From now on, users can perform selected actions for multiple objects rather than repeating actions. It currently supports the most common operations, such as deleting items or publishing/unpublishing products and pages, but more will be added in future.
๐ Changelog
API
- โ Add unified filtering interface in resolvers - #3952, #4078 by @korycins
- โ Add mutations for bulk actions - #3935, #3954, #3967, #3969, #3970 by @akjanik
- โ Add mutation for reordering menu items - #3958 by @NyanKiyoshi
- โก๏ธ Optimize queries for single nodes - #3968 @NyanKiyoshi
- ๐จ Refactor error handling in mutations #3891 by @maarcingebala & @akjanik
- Specify mutation permissions through Meta classes - #3980 by @NyanKiyoshi
- Unify pricing access in products and variants - #3948 by @NyanKiyoshi
- Use only_fields instead of exclude_fields in type definitions - #3940 by @michaljelonek
- Prefetch collections when getting sales of a bunch of products - #3961 by @NyanKiyoshi
- โ Remove unnecessary dedents from GraphQL schema so new Playground can work - #4045 by @salwator
- Restrict resolving payment by ID - #4009 @NyanKiyoshi
- โก๏ธ Require
checkoutId
for updating checkout's shipping and billing address - #4074 by @jxltom - ๐ Handle errors in
TokenVerify
mutation - #3981 by @fowczarek - Unify argument names in types and resolvers - #3942 by @NyanKiyoshi
Core
- 0๏ธโฃ Use Black as the default code formatting tool - #3852 by @krzysztofwolski and @NyanKiyoshi
- โฌ๏ธ Dropped Python 3.5 support - #4028 by @korycins
- ๐ Rename Cart to Checkout - #3963 by @michaljelonek
- ๐ Use data classes to exchange data with payment gateways - #4028 by @korycins
- ๐จ Refactor order events - #4018 by @NyanKiyoshi
Dashboard 2.0
- โ Add bulk actions - #3955 by @dominik-zeglen
- โ Add user avatar management - #4030 by @benekex2
- โ Add navigation drawer support on mobile devices - #3839 by @benekex2
- ๐ Fix rendering validation errors in product form - #4024 by @benekex2
- ๐ Move dialog windows to query string rather than router paths - #3953 by @dominik-zeglen
- โก๏ธ Update order events types - #4089 by @jxltom
- Code cleanup by replacing render props with react hooks - #4010 by @dominik-zeglen
Other notable changes
- โ Add setting to enable Django Debug Toolbar - #3983 by @koradon
- ๐ Use newest GraphQL Playground - #3971 by @salwator
- Ensure adding to quantities in the checkout is respecting the limits - #4005 by @NyanKiyoshi
- ๐ Fix country area choices - #4008 by @fowczarek
- Fix price_range_as_dict function - #3999 by @zodiacfireworks
- ๐ Fix the product listing not showing in the voucher when there were products selected - #4062 by @NyanKiyoshi
- ๐ Fix crash in Dashboard 1.0 when updating an order address's phone number - #4061 by @NyanKiyoshi
- โฌ๏ธ Reduce the time of tests execution by using dummy password hasher - #4083 by @korycins
- Set up explicit hash function - #3979 by @akjanik
- โ Unit tests use none as media root - #3975 by @korycins
- ๐ Update file field styles with materializecss template filter - #3998 by @zodiacfireworks
- ๐ New translations:
- Albanian
- Colombian Spanish
- Lithuanian
๐ Future releases
There are a few areas that we're currently working on and planning to ship in the next version:
- Navigation menus management in Dashboard 2.0 - views to create and manage menus displayed in the storefront.
- ๐ Improvements to the payment architecture and currently supported payment gateways.
Thank you
๐ฑ A big thank you ๐ to all contributors, stargazers, and supporters of Saleor!
Contributing
For those of you who are interested in contributing to the project, we prepared a bunch of issues labeled as help wanted. Don't worry if you don't fully understand the problem โ- โour team will try to guide you and answer all your questions. Remember to check our channels on Gitter and Spectrum; they serve best if you have quick questions that don't require opening an issue on GitHub.
๐ Make sure to check out the article about this release on our blog!