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:
model (model Class object of the)
- Returns:
Yield strings of possible name fields.
- Return type:
shuup.admin.utils.mass_action module
- class shuup.admin.utils.mass_action.BaseExportCSVMassAction[source]
Bases:
PicotableFileMassAction
- label = 'Export as CSV file'
- model = None
- filename = None
- view_class = None
- 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
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.
- 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:
- 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.
- 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:
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:
Filter
- type = 'choices'
- class shuup.admin.utils.picotable.Select2Filter(choices=None, filter_field=None, default=None)[source]
Bases:
ChoicesFilter
- type = 'select2'
- class shuup.admin.utils.picotable.MPTTFilter(choices=None, filter_field=None, default=None)[source]
Bases:
Select2Filter
- type = 'mptt'
- class shuup.admin.utils.picotable.RangeFilter(min=None, max=None, step=None, field_type=None, filter_field=None)[source]
Bases:
Filter
- Parameters:
- type = 'range'
- class shuup.admin.utils.picotable.DateRangeFilter(*args, **kwargs)[source]
Bases:
RangeFilter
- Parameters:
- class shuup.admin.utils.picotable.TextFilter(field_type=None, placeholder=None, operator='icontains', filter_field=None)[source]
Bases:
Filter
- Parameters:
- type = 'text'
- class shuup.admin.utils.picotable.MultiFieldTextFilter(filter_fields, **kwargs)[source]
Bases:
TextFilter
- Parameters:
filter_field (list<str>) – List of Filter fields (Django query expression).
kwargs – Kwargs for
TextFilter
.
- __init__(filter_fields, **kwargs)[source]
- 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'
- 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:
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:
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:
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:
URLPattern
- __init__(regex, callback, default_args=None, name=None, require_authentication=True, permissions=())[source]
- property 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)[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(model_instance, 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 fails- Parameters:
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, model_instance, 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.urls.get_model_front_url(request, model_instance)[source]
Get a frontend URL for an object.
- Parameters:
request (HttpRequest) – Request.
object (django.db.models.Model) – A model instance.
- Returns:
URL or None.
- Return type:
str|None
shuup.admin.utils.views module
- class shuup.admin.utils.views.CreateOrUpdateView(**kwargs)[source]
Bases:
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:
request (HttpRequest) – Request.
instance (django.db.models.Model) – Model instance.
name_field (str) – Which property to try to read the name from. If None, use
str
.
- Returns:
Title.
- Return type:
- class shuup.admin.utils.views.PicotableListView[source]
Bases:
PicotableViewMixin
,ListView
- 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]
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.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: