forked from CGM_Public/pretix_original
- [x] Data model - [x] Enforce constraint - [x] Filter order list - [x] Set channel on created order - [x] Products API - [x] Order API - [x] Tests - [x] Filter reports - [x] Resellers - [ ] deploy plugins - [ ] posbackend - [ ] resellers - [ ] reports - [x] Ticketlayouts - [x] Support in pretixPOS
67 lines
1.5 KiB
Python
67 lines
1.5 KiB
Python
import logging
|
|
from collections import OrderedDict
|
|
|
|
from django.dispatch import receiver
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from pretix.base.signals import register_sales_channels
|
|
|
|
logger = logging.getLogger(__name__)
|
|
_ALL_CHANNELS = None
|
|
|
|
|
|
class SalesChannel:
|
|
def __repr__(self):
|
|
return '<SalesChannel: {}>'.format(self.identifier)
|
|
|
|
@property
|
|
def identifier(self) -> str:
|
|
"""
|
|
The internal identifier of this sales channel.
|
|
"""
|
|
raise NotImplementedError() # NOQA
|
|
|
|
@property
|
|
def verbose_name(self) -> str:
|
|
"""
|
|
A human-readable name of this sales channel.
|
|
"""
|
|
raise NotImplementedError() # NOQA
|
|
|
|
@property
|
|
def icon(self) -> str:
|
|
"""
|
|
The name of a Font Awesome icon to represent this channel
|
|
"""
|
|
return "circle"
|
|
|
|
|
|
def get_all_sales_channels():
|
|
global _ALL_CHANNELS
|
|
|
|
if _ALL_CHANNELS:
|
|
return _ALL_CHANNELS
|
|
|
|
types = OrderedDict()
|
|
for recv, ret in register_sales_channels.send(None):
|
|
if isinstance(ret, (list, tuple)):
|
|
for r in ret:
|
|
types[r.identifier] = r
|
|
else:
|
|
types[ret.identifier] = ret
|
|
_ALL_CHANNELS = types
|
|
return types
|
|
|
|
|
|
class WebshopSalesChannel(SalesChannel):
|
|
identifier = "web"
|
|
verbose_name = _('Online shop')
|
|
icon = "globe"
|
|
|
|
|
|
@receiver(register_sales_channels, dispatch_uid="base_register_default_sales_channels")
|
|
def base_sales_channels(sender, **kwargs):
|
|
return (
|
|
WebshopSalesChannel(),
|
|
)
|