shuup.admin.utils package¶
Submodules¶
shuup.admin.utils.bs3_renderers module¶
shuup.admin.utils.forms module¶
-
shuup.admin.utils.forms.
filter_form_field_choices
(field, predicate, invert=False)[source]¶ Filter choices of a form field and its widget by predicate.
The predicate may be a callable of the signature
(pair) -> bool
or an iterable of allowable values.Parameters: - field (django.forms.Field) – Form field.
- predicate (function|Iterable) – Predicate.
- invert (bool) – Invert the semantics of the predicate, i.e. items matching it will be rejected.
Returns: Nothing. The field is modified in-place.
-
shuup.admin.utils.forms.
add_form_errors_as_messages
(request, form)[source]¶ Add the form’s errors, if any, into the request as messages.
Parameters: - request (django.http.HttpRequest) – Request to messagify.
- form (django.forms.Form) – The errorful form.
Returns: Number of messages added. May be thousands, for a very unlucky form.
Return type:
-
shuup.admin.utils.forms.
get_possible_name_fields_for_model
(model)[source]¶ Get possible name fields for given model.
This function yields strings of field names that could possible be identified as name fields for model.
For example get_possible_name_fields_for_model(Coupon) yields string “code”
Parameters: Class object of the model (model) – Returns: Yield strings of possible name fields. Return type: str
shuup.admin.utils.mass_action module¶
shuup.admin.utils.permissions module¶
-
shuup.admin.utils.permissions.
get_default_model_permissions
(model)[source]¶ Return a set of all default permissions for a given model.
Parameters: model (django.db.Model) – Model class Returns: Set of default model permissions as strings Return type: set[str]
-
shuup.admin.utils.permissions.
get_missing_permissions
(user, permissions)[source]¶ Return a set of missing permissions for a given iterable of permission strings.
- Check missing permissions using
User.has_perm
-method allows us to use Django model permissions. - Check missing permissions using Shuup admin custom permissions which are stored to configuration items per user group.
Parameters: - user (django.contrib.auth.models.User) – User instance to check for permissions.
- permissions (Iterable[str]) – Iterable of permission strings.
Returns: Set of missing permission strings.
Return type: - Check missing permissions using
-
shuup.admin.utils.permissions.
has_permission
(user, permission)[source]¶ Returns whether user has permission for a given permission string.
Parameters: - user (django.contrib.auth.models.User) – User instance to check for permission.
- permission (str) – Permission string.
Returns: Whether user has permission.
Return type:
-
shuup.admin.utils.permissions.
get_permissions_from_urls
(urls)[source]¶ Return a set of permissions for a given iterable of urls.
Parameters: urls (Iterable[django.urls.RegexURLPattern]) – Iterable of url objects to check for permissions. Returns: Set of permissions for urls as strings. Return type: set[str]
-
shuup.admin.utils.permissions.
get_permission_object_from_string
(permission_string)[source]¶ Given a permission string of the form
app_label.permission_string
, get actual permission object.Parameters: permission_string – Permission string. Returns: Permission object. Return type: django.contrib.auth.models.Permission
-
shuup.admin.utils.permissions.
get_permissions_for_module_url
(admin_module, url_name)[source]¶ Returns a set of permissions for a given admin module that match with
url_name
.If the url_name doesn’t match with any admin url, a blank set is returned
Parameters: - admin_module (shuup.admin.AdminModule) – The admin module to return permissions.
- url_name (string) – the url name.
Returns: Set of permissions for the given module and url.
Return type:
shuup.admin.utils.picotable module¶
-
shuup.admin.utils.picotable.
maybe_callable
(thing, context=None)[source]¶ If
thing
is callable, return it. Ifthing
names a callable attribute ofcontext
, return it.
-
shuup.admin.utils.picotable.
maybe_call
(thing, context, args=None, kwargs=None)[source]¶ If
thing
is callable, call it withargs
andkwargs
and return the value. Ifthing
names a callable attribute ofcontext
, call it with args and kwargs and return the value. Otherwise returnthing
.
-
class
shuup.admin.utils.picotable.
ChoicesFilter
(choices=None, filter_field=None, default=None)[source]¶ Bases:
shuup.admin.utils.picotable.Filter
-
type
= 'choices'¶
-
-
class
shuup.admin.utils.picotable.
Select2Filter
(choices=None, filter_field=None, default=None)[source]¶ Bases:
shuup.admin.utils.picotable.ChoicesFilter
-
type
= 'select2'¶
-
-
class
shuup.admin.utils.picotable.
MPTTFilter
(choices=None, filter_field=None, default=None)[source]¶ Bases:
shuup.admin.utils.picotable.Select2Filter
-
type
= 'mptt'¶
-
-
class
shuup.admin.utils.picotable.
RangeFilter
(min=None, max=None, step=None, field_type=None, filter_field=None)[source]¶ Bases:
shuup.admin.utils.picotable.Filter
Parameters: - filter_field (str|None) – Filter field (Django query expression). If None, column ID is used.
- min – Minimum value.
- max – Maximum value.
- step – Step value. See the HTML5 documentation for semantics.
- field_type (str|None) – Field type string. See the HTML5 documentation for semantics.
-
type
= 'range'¶
-
class
shuup.admin.utils.picotable.
TextFilter
(field_type=None, placeholder=None, operator='icontains', filter_field=None)[source]¶ Bases:
shuup.admin.utils.picotable.Filter
Parameters: - filter_field (str|None) – Filter field (Django query expression). If None, column ID is used.
- field_type (str|None) – Field type string. See the HTML5 documentation for semantics.
- placeholder (str|None) – Field placeholder string.
- operator (str) – Django operator for the queryset.
-
type
= 'text'¶
-
class
shuup.admin.utils.picotable.
MultiFieldTextFilter
(filter_fields, **kwargs)[source]¶ Bases:
shuup.admin.utils.picotable.TextFilter
Parameters: - filter_field (list<str>) – List of Filter fields (Django query expression).
- kwargs – Kwargs for
TextFilter
.
-
class
shuup.admin.utils.picotable.
Picotable
(request, columns, mass_actions, queryset, context)[source]¶ Bases:
object
-
class
shuup.admin.utils.picotable.
PicotableViewMixin
[source]¶ Bases:
object
-
url_identifier
= None¶
-
default_columns
= []¶
-
columns
= []¶
-
mass_actions
= []¶
-
template_name
= 'shuup/admin/base_picotable.jinja'¶
-
mass_actions_provider_key
= None¶
-
get_object_abstract
(instance, item)[source]¶ Get the object abstract lines (used for mobile layouts) for this object.
Supported keys in abstract line dicts are:
- text (required)
- title
- class (CSS class name –
header
for instance) - raw (boolean; whether or not the
text
is raw HTML)
Parameters: - instance – The instance.
- item – The item dict so far. Useful for reusing precalculated values.
Returns: Iterable of dicts to pass through to the picotable javascript.
Return type: Iterable[dict]
-
-
class
shuup.admin.utils.picotable.
PicotableMassAction
[source]¶ Bases:
object
Simple Mass Action.
This action only processes the given id’s in subclass.
Examples: *
shuup.admin.modules.orders.mass_actions.CancelOrderAction
*shuup.admin.modules.products.mass_actions.VisibleMassAction
-
label
= 'Mass Action'¶
-
identifier
= 'mass_action'¶
-
-
class
shuup.admin.utils.picotable.
PicotableFileMassAction
[source]¶ Bases:
shuup.admin.utils.picotable.PicotableMassAction
File Mass Action.
This action returns file as a response.
Examples: *
shuup.admin.modules.orders.mass_actions.OrderConfirmationPdfAction
*shuup.admin.modules.products.mass_actions.ExportProductsCSVAction
-
process
(request, ids)[source]¶ Process and return
HttpResponse
.- Example:
- response = HttpResponse(content_type=”text/csv”) response[‘Content-Disposition’] = ‘attachment; filename=”mass_action.csv”’ writer = csv.writer(response) writer.writerow([‘First row’, ‘Foo’, ‘Bar’, ‘Baz’]) return response
Parameters: - request –
WSGIRequest
- ids – list of ids.
Returns: HttpResponse
-
-
class
shuup.admin.utils.picotable.
PicotableRedirectMassAction
[source]¶ Bases:
shuup.admin.utils.picotable.PicotableMassAction
Redirect Mass Action.
This view saves selected id’s into session which are then further processed in the mass action view.
Redirect of this view is handled in
picotable.js
.To use this action, your admin module must supply admin_url and a view for the action.
Examples: *
shuup.admin.modules.contacts.mass_actions.EditContactsAction
*shuup.admin.modules.products.mass_actions.EditProductAttributesAction
-
redirect_url
= None¶
-
-
class
shuup.admin.utils.picotable.
PicotableJavascriptMassAction
[source]¶ Bases:
shuup.admin.utils.picotable.PicotableMassAction
Javascript Mass Action.
This view saves invokes a pre-defined javascript function with the list of object ids.
Set the function call in
callback
, e.g.deleteProducts
. The mass action will then invoce the callback asdeleteProducts(ids)
-
callback
= None¶
-
shuup.admin.utils.product module¶
shuup.admin.utils.search module¶
shuup.admin.utils.str_utils module¶
-
shuup.admin.utils.str_utils.
camelcase_to_snakecase
(string_to_convert)[source]¶ Convert CamelCase string to snake_case
Original solution in http://stackoverflow.com/questions/1175208/elegant-python-function-to-convert-camelcase-to-snake-case
shuup.admin.utils.tour module¶
shuup.admin.utils.urls module¶
-
class
shuup.admin.utils.urls.
AdminRegexURLPattern
(regex, callback, default_args=None, name=None, require_authentication=True, permissions=())[source]¶ Bases:
django.urls.resolvers.URLPattern
-
callback
¶
-
-
shuup.admin.utils.urls.
admin_url
(regex, view, kwargs=None, name=None, prefix='', require_authentication=True, permissions=None)[source]¶
-
shuup.admin.utils.urls.
get_edit_and_list_urls
(url_prefix, view_template, name_template, permissions=())[source]¶ Get a list of edit/new/list URLs for (presumably) an object type with standardized URLs and names.
Parameters: Returns: List of URLs.
Return type:
-
exception
shuup.admin.utils.urls.
NoModelUrl
[source]¶ Bases:
ValueError
-
shuup.admin.utils.urls.
get_model_url
(object, kind='detail', user=None, required_permissions=None, shop=None, raise_permission_denied=False, **kwargs)[source]¶ Get a an admin object URL for the given object or object class by interrogating each admin module.
If a user is provided, checks whether user has correct permissions before returning URL.
Raises
NoModelUrl
if lookup failsParameters: - object (class) – Model or object class.
- kind (str) – URL kind. Currently “new”, “list”, “edit”, “detail”.
- user (django.contrib.auth.models.User|None) – Optional instance to check for permissions.
- required_permissions (Iterable[str]|None) – Optional iterable of permission strings.
- shop – The shop that owns the resource.
- raise_permission_denied (bool) – raise PermissionDenied exception if the url is found but user has not permission. If false, None will be returned instead. Default is False.
Returns: Resolved URL.
Return type:
-
shuup.admin.utils.urls.
derive_model_url
(model_class, urlname_prefix, object, kind)[source]¶ Try to guess a model URL for the given
object
andkind
.An utility for people implementing
get_model_url
.Parameters: - model_class (class) – The model class the object must be an instance or subclass of.
- urlname_prefix (str) – URLname prefix. For instance,
shuup_admin:shop_product.
- object (django.db.models.Model|class) – The model or model class as passed to
get_model_url
. - kind (str) – URL kind as passed to
get_model_url
.
Returns: Resolved URL or None.
Return type: str|None
shuup.admin.utils.views module¶
-
class
shuup.admin.utils.views.
CreateOrUpdateView
(**kwargs)[source]¶ Bases:
django.views.generic.edit.UpdateView
Constructor. Called in the URLconf; can contain helpful extra keyword arguments, and other things.
-
add_form_errors_as_messages
= False¶
-
-
shuup.admin.utils.views.
get_create_or_change_title
(request, instance, name_field=None)[source]¶ Get a title suitable for an create-or-update view.
Parameters: Returns: Title.
Return type:
-
class
shuup.admin.utils.views.
PicotableListView
[source]¶ Bases:
shuup.admin.utils.picotable.PicotableViewMixin
,django.views.generic.list.ListView
shuup.admin.utils.wizard module¶
-
shuup.admin.utils.wizard.
load_setup_wizard_panes
(shop, request=None, visible_only=True)[source]¶ Load the setup Wizard panes. The result will be a list of valid pane instances.
Parameters: visible_only (bool) – whether to return only visible panes
-
shuup.admin.utils.wizard.
load_setup_wizard_pane
(shop, request, pane_id)[source]¶ Search, load and return a valid Wizard Pane by its identifier.
Parameters: pane_id (str) – the pane identifier Returns: the pane instance or None Return type: shuup.admin.views.wizard.WizardPane|None
-
shuup.admin.utils.wizard.
setup_wizard_complete
(request)[source]¶ Check if shop wizard should be run.
Returns: whether setup wizard needs to be run Return type: boolean
-
shuup.admin.utils.wizard.
setup_wizard_visible_panes
(shop, request)[source]¶ Check if shop wizard has visible panes that require merchant configuration.
Returns: whether the setup wizard has visible panes Return type: Boolean