All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
List all changes after the last release here (newer on top). Each change on a separate bullet point line.
- When updating to this double check your project filters around supplier are working after this Supplire shop->shops change.
- Admin: change the supplier views to update the approved flag for the current shop only
- Core: change the Supplier object manager to consider the approved flag for the given shop
- Core: add new module SupplierShop to store thre M2M relationship between the supplier and the shop with additional attributes
- Importer: fix the product importer to prevent parent sku being the current product or other variation child
- Add Spanish and French (CA) translations from Transifex
- Notify: Add a new
attributes
attribute toshuup.notify.base.Variable
for showing examples of which attributes can be accessed in the script templates. - Notfiy: Show some
Order
related attributes in the notify templates.
- Core: include arbitrary refunds for max refundable amount
- Admin: select product variation in popup window
- Importer: ignore None columns while importing files
- Admin: Show more descriptive error messages in the media uploader in some situations.
- Update Finnish and Swedish translations from Transifex
- Importer: add option to import product variations
- Add option to import product variations
- Improve handle stock to get supplier by supplier name and set the supplier stock managed and update the module identifier.
- Improve handle stock to set the logical count to desired quantity instead adding new stock for the amount. This should help sellers to keep their product stock value correct.
- Preserve newlines in vendor and product descriptions even when
SHUUP_ADMIN_ALLOW_HTML_IN_PRODUCT_DESCRIPTION
andSHUUP_ADMIN_ALLOW_HTML_IN_VENDOR_DESCRIPTION
areFalse
. - Importer: log errors in the importer and use specific exception classes instead of using Exception
- Notify: make the default script language be the fallback from Parler
- Admin: Hide the 'Root' folder from users that do not have the
"media.view-all"
permission.
- Front: fix typo in pagination
- Update Finnish and Swedish translations
- Fix button that removes coupon from the basket by using the correct JS event property
- Update translations strings
- Importer: fix product CSV importer to better match the headers
- Admin: improve product variation management. This release purely amends release 2.1.6.
Admin: add supplier check to product list and edit views Admin: improve product variation management
Remove activate template form field as confusing.
-
Now when add new template: - New empty template is created
-
When you have template selected: - Product variations are saved based on the form - Variation options are updated to the selected template
-
When template is not selected: - Product variations are saved based on the form
- Requirements: require Markdown>=3,<4 instead <3
- Xtheme: Fix social media plugin form initial data population.
- Xtheme: fix social media plugin form populate
- GDPR: Fix anonymization error when an order of a contact had no shipping or billing address.
- Xtheme: fix model choice widget for plugins (django 2)
- Xtheme: fix editor template issue
- Simple CMS: make sure to pass optional parameters through kwargs in form
- Admin: add option to delete attributes
- Xtheme: fix editor template issue and make sure to pass optional parameters through kwargs in form
- Notify: unescape email subject and body to prevent sending broken characters in emails
- shuup.notify: add notification_email_before_send signal to SendMail
- shuup.notify: add event identifier to Context
- Prevent crashing when trying to cache an unpicklable value.
- Fix passing a
reverse_lazy()
URL as theupload_url
argument forFileDnDUploaderWidget
.
- Admin: Make the order editor keep the suppliers of non-product order lines intact.
- Admin: Fix the edit button on the order editor.
-
Admin: user and permission based access to media folders
This means that all vendors can have their own root folder and do what every they want in that folder. But it also allows the admin to give viewing access to one folder for all suppliers.
- Testing: add missing migrations
- CMS: add missing migrations
- Removed Django 1.11 compatible code from the code base
- Admin: fix logout view that was loading the template from Django instead of custom template
- Admin: return
None
when the order source was not correctly initialized in JsonOrderCreator - Core: add parameter in shuup_static to load the version of a given package
- Add initial support for Django 2.2
- Fix issue on arranging menu after reset which sets the configuration None which in the other hand is hard to update as it is not dict.
-
Admin: add option to arrange menu for superuses, staff and suppliers
For now it was only possible to arrange menu per user which is not sufficient while the menu needs to be arranged for the whole group of people like shop staff or vendors.
Allow to create menu custom menu for superusers, staff or suppliers, but remain the possibility to still arrange the menu per user.
Add option to translate each menu arranged for these groups since not all vendors/suppliers necessary speak same language.
- Fix admin order edit tool to use correct id for supplier query
- Admin: limit the Manufacturer delete queryset per shop
- Notify: added email template object to store reusable email templates for SendEmail actions This contains a migration step to move all old body template field to use email templates.
- Xtheme: move CodeMirror JS lib dependence to Admin
- Sanitize product description on save if
SHUUP_ADMIN_ALLOW_HTML_IN_PRODUCT_DESCRIPTION
is set toFalse
- Core: Add dynamic measurement unit system
- New settings for specifying units:
SHUUP_MASS_UNIT
SHUUP_LENGTH_UNIT
- New function for getting the volume unit:
shuup.core.utils.units.get_shuup_volume_unit
- New settings for specifying units:
- BREAKING: Change
Shipment
default weight unit fromkg
tog
- BREAKING: Change
Shipment
default volume unit fromm3
tomm3
- BREAKING: Change
ShipmentProduct
default volume unit fromm3
tomm3
- Remove 'known unit' validation from
MeasurementField
, it can contain any units now
- Front: Add priority attribute to base order form to enable using precedence
- Add signal when an email is sent by a notification
- Fix issue with browser tests
- Add
Dockerfile-dev
for development - Add Docker instructions to docs
- Add theme for the shop in
shuup_init
- Make the shop not be in maintenance mode in
shuup_init
- Make
Dockerfile
useshuup
from PyPi for faster build time
- Move workbench sqlite database location for upcoming Docker setup
- Admin: Add settings for controlling allowing HTML in product and vendor descriptions
- Importer: add context object while initializing a importer class
- Core: use UUID in basket IDs to prevent possible duplicates
- Core: save basket shipping and billing address as dictionary when id is not available
- Front: remove the custom _load() implementation from the basket as it is the same as the core
- Core: ignore lines that are not from the given source while calculating taxes
- Campaigns: do not apply campaigns in baskets configured to a supplier
- Admin: change service admin to list only providers that the current user can access
- Use UUID4 while generating order line ids by default
- Admin: Improve message banners, by:
- Resetting the timeout for hiding the messages when a new message is added.
- Immediately clearing the already hidden messages a when new one is added.
- Not hiding messages when clicking just random background elements.
- Allowing dismissing all of the messages by clicking any one of them anywhere.
- Admin: add improved product copy
- Core: add task runner to support running tasks using 3rd party services like Celery
- Core: add shops and supplier to ServiceProvider and Service models
- Front: add feature for checkout phases to spawn extra phases
- Add custom get_ip method and use it everywhere
- Importer: add permissions for all the diffrent types of importers
- Importer: add context class to data importer
- Travis jobs for Django 1.8 and 1.9
- Removed the kind prefix from feedback messages using Django messages to prevent duplicate strings.
- Fixed the way the permissions identifier are split in admin
- Fixed issue that was importing User model directly
- Core: changed
del
basket command handler to not try to parse the basket line into an integer
- Simple CMS: Fix a bug with the page links plugin
- Front: Ensure company name and tax number is set to both billing and shipping address same way as when filled through company form when customer is not logged in. Company name and tax number at order addresses seems to help with some taxation logic as well as makes things more consistent.
- Admin: Make sure related custom columns are added accrodingly. Fix issue with filtering through columns that are by default hidden
- Front: only show carousel title when there is one
- Notify: Add AccountActivation event. AccountActivation event is triggered only when the user is activated for the first time.
- Front: improve next parameter with registration. Check GET parameter first and then fallback to POST data.
- Admin: fix width issue with picotable images
- Admin: fix bugs in order edit and improve it one step closer to
multivendor world. Now supports situation when vendors does not
share products.
- Add option to make shipping and payment method optional
- Add supplier to pricing context
- Show supplier name on product column
- Make auto add for product select false by default
- Fix product select2 missing URL and data handler since the whole ajax method was passed as attrs.
- Add option to open/close collapsed content sections in mobile
- Core: add option to enable order edit for multiple vendors
- Front: do not stack history on product list when filters are changed. Instead replace state so back-buttons works nicely.
- Front: prevent image Lightbox touching history so you do not need to click back 6 times after you have viewed all images.
- Admin: add error message when upload fails. At media queue complete do not resave product media if the file-count has not changed. This for example prevents media save when the upload itself fails.
- Admin: add option to override dropzone upload path by using data attribute
- Admin: add upload path to browser URLs and use it to fallback on media uploads when the actual media path is not available.
- Admin: Ability to delete manufacturer
- Admin: Ability to login as the selected contact if it's a user
- Admin: Now when activating/deactivating user it's contact will also change
- Admin: New notification for when a account get's reactivated
- Discounts: create different admin module for archived discounts to fix breadcrumbs
- Fix product pagination by not overriding the state with undefined values
- Middleware: fix so it trys to take the users timezone first, then the suppliers, last the projects TIME_ZONE
- Front: customize sort options through settings
- Admin: Notification name when deleteing it
- Admin: Update contact list so that it only shows customers by default
- Front: Fix typo
- Front: Add supplier choice to best selling product context function
- Admin: allow sorting categories by name
- Admin: show product orderability errors as list
- Admin: remove pinned /sa/ URL from scripts to support dynamic admin URLs
- Admin: Fix graphical (incorrect indent) bug in Product / Stock Management
- Admin: add spinner and progressbar options components through Bootstrap 4.
- Issue running category filter browser test with Travis
- Admin: remove pinned /sa/ URL from scripts to support dynamic admin URLs
- Front: keep the current query string parameters as the initial state when refreshing product filters.
- Admin: fix page jumps after reaload
- Admin: make browser urls support urls with parameters
- Core: supplier name max length to 128 from 64
- Add option to send notification event at password recovery
- Improve the admin modals to use flexbox and work better on small devices
- Admin: fix password recovery success URL
- Picotable: render the filters button on small devices, even when there is no data, to allow resetting filters
- Make Admin messages dismissible
- Admin: Fix search results overflowing the canvas
- Admin: fix bug when uploading product media
- Admin: add option to impersonate staff users
- Notify: add option to delete notify scripts
- Admin: Allow shop staff to impersonate regular users
- Notify: Add BCC and CC fields to SendEmail notification action.
- Add the CHANGELOG.md to the root of the code base.
- Xtheme: Improve template injection by checking not wasting time invoking regex for nothing
- Add
MiddlewareMixin
to all middlewares to prepare for Django 2.x - Notify: Changed the Email topology type to support comma-separated list of emails when using constants.
- Front: skip product filter refresh if filters not defined
- GDPR: change "i agree" button to "i understand"
- Front: fix notification template default content
- Admin: improve primary image fallback for product
- Fixed the placeholder of Select2 component in Admin
- FileDnDUploader: Add check for the
data-kind
attribute of the drop zone. If the data-kind isimages
, add an attribute to the hidden input that only allows images to be uploaded. - Front: fix bug with imagelightbox
- CMS: Free page URL on delete
Find older release notes here.