def to_representation(self, instance: OrderPosition): res = {} ev = instance.subevent or instance.order.event # This needs to have some extra performance improvements to avoid creating hundreds of queries when # we serialize a list. if 'vars' not in self.context: self.context['vars'] = get_variables(self.context['request'].event) for k, f in self.context['vars'].items(): res[k] = f['evaluate'](instance, instance.order, ev) if not hasattr(ev, '_cached_meta_data'): ev._cached_meta_data = ev.meta_data for k, v in ev._cached_meta_data.items(): res['meta:' + k] = v return res
def get_variables(self): return get_variables(self.request.event)
def __init__(self, event, override_layout=None, override_background=None): self.override_layout = override_layout self.override_background = override_background self.variables = get_variables(event) super().__init__(event)