Source code for salesman.admin.utils

import json
from decimal import Decimal

from django.contrib.auth import get_user_model
from django.http import HttpRequest
from django.urls import NoReverseMatch, reverse
from django.utils.html import format_html
from django.utils.safestring import mark_safe
from rest_framework.compat import pygments_css, pygments_highlight

from salesman.conf import app_settings
from salesman.orders.models import Order

User = get_user_model()


[docs]def format_json(value: dict, context: dict = {}) -> str: """ Format json and add color using pygments with fallback. Args: value (dict): Dict to be formated to json context (dict, optional): Format context data. Defaults to {}. Returns: str: JSON formated html string """ value = json.dumps(value, indent=2) value = pygments_highlight(value, 'json', 'tango') style = pygments_css('tango') styled = context.get('styled', True) # Used for testing. if styled and style: html = ( f'<style>{style}</style>' f'<pre class="highlight" style="margin: 0; padding: 1em;">{value}</pre>' ) else: html = f'<pre style="margin: 0;">{value}</pre>' return format_html('<div>{}</div>', mark_safe(html))
[docs]def format_price(value: Decimal, order: Order, request: HttpRequest) -> str: """ Wrapper for format price function with order admin context added. Args: value (Decimal): Number value to be formatted order (Order): Order instance request (HttpRequest): Django request Returns: str: Formatted price as a string """ context = { 'request': request, 'order': order, 'admin': True, } return app_settings.SALESMAN_PRICE_FORMATTER(value, context=context)
def format_customer(user: User, context: dict = {}) -> str: """ Format the customer display in admin orders. Args: user (User): Order user. context (dict, optional): Format context data. Defaults to {}. Returns: str: Formatted customer display as string """ if context.get("wagtail", False): url_name = 'wagtailusers_users:edit' else: url_name = 'admin:auth_user_change' try: url = reverse(url_name, args=[user.pk]) return mark_safe(f'<a href="{url}">{user}</a>') except NoReverseMatch: # pragma: no cover return str(user)