We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Add event name to admin notification
When recieving an admin notification, e.g. when an order is placed, only the order number is displayed in the mail. It would be great to also see the event, right now you have to look it up in the "Detail" button url.

I thought this could be an easy task by adding `n.add_attribute(_('Event'), order.event.name)` to `src/pretix/base/notifications.py`, but unfortunately I was not successful.

Thanks for your work!

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `src/pretix/base/notifications.py`
Content:
```
1 import logging
2 from collections import OrderedDict, namedtuple
3 
4 from django.dispatch import receiver
5 from django.utils.formats import date_format
6 from django.utils.translation import ugettext_lazy as _
7 
8 from pretix.base.models import Event, LogEntry
9 from pretix.base.signals import register_notification_types
10 from pretix.base.templatetags.money import money_filter
11 from pretix.helpers.urls import build_absolute_uri
12 
13 logger = logging.getLogger(__name__)
14 _ALL_TYPES = None
15 
16 
17 NotificationAttribute = namedtuple('NotificationAttribute', ('title', 'value'))
18 NotificationAction = namedtuple('NotificationAction', ('label', 'url'))
19 
20 
21 class Notification:
22     """
23     Represents a notification that is sent/shown to a user. A notification consists of:
24 
25     * one ``event`` reference
26     * one ``title`` text that is shown e.g. in the email subject or in a headline
27     * optionally one ``detail`` text that may or may not be shown depending on the notification method
28     * optionally one ``url`` that should be absolute and point to the context of an notification (e.g. an order)
29     * optionally a number of attributes consisting of a title and a value that can be used to add additional details
30       to the notification (e.g. "Customer: ABC")
31     * optionally a number of actions that may or may not be shown as buttons depending on the notification method,
32       each consisting of a button label and an absolute URL to point to.
33     """
34 
35     def __init__(self, event: Event, title: str, detail: str=None, url: str=None):
36         self.title = title
37         self.event = event
38         self.detail = detail
39         self.url = url
40         self.attributes = []
41         self.actions = []
42 
43     def add_action(self, label, url):
44         """
45         Add an action to the notification, defined by a label and an url. An example could be a label of "View order"
46         and an url linking to the order detail page.
47         """
48         self.actions.append(NotificationAction(label, url))
49 
50     def add_attribute(self, title, value):
51         """
52         Add an attribute to the notification, defined by a title and a value. An example could be a title of
53         "Date" and a value of "2017-12-14".
54         """
55         self.attributes.append(NotificationAttribute(title, value))
56 
57 
58 class NotificationType:
59     def __init__(self, event: Event = None):
60         self.event = event
61 
62     def __repr__(self):
63         return '<NotificationType: {}>'.format(self.action_type)
64 
65     @property
66     def action_type(self) -> str:
67         """
68         The action_type string that this notification handles, for example
69         ``"pretix.event.order.paid"``. Only one notification type should be registered
70         per action type.
71         """
72         raise NotImplementedError()  # NOQA
73 
74     @property
75     def verbose_name(self) -> str:
76         """
77         A human-readable name of this notification type.
78         """
79         raise NotImplementedError()  # NOQA
80 
81     @property
82     def required_permission(self) -> str:
83         """
84         The permission a user needs to hold for the related event to receive this
85         notification.
86         """
87         raise NotImplementedError()  # NOQA
88 
89     def build_notification(self, logentry: LogEntry) -> Notification:
90         """
91         This is the main function that you should override. It is supposed to turn a log entry
92         object into a notification object that can then be rendered e.g. into an email.
93         """
94         return Notification(
95             logentry.event,
96             logentry.display()
97         )
98 
99 
100 def get_all_notification_types(event=None):
101     global _ALL_TYPES
102 
103     if event is None and _ALL_TYPES:
104         return _ALL_TYPES
105 
106     types = OrderedDict()
107     for recv, ret in register_notification_types.send(event):
108         if isinstance(ret, (list, tuple)):
109             for r in ret:
110                 types[r.action_type] = r
111         else:
112             types[ret.action_type] = ret
113     if event is None:
114         _ALL_TYPES = types
115     return types
116 
117 
118 class ActionRequiredNotificationType(NotificationType):
119     required_permission = "can_change_orders"
120     action_type = "pretix.event.action_required"
121     verbose_name = _("Administrative action required")
122 
123     def build_notification(self, logentry: LogEntry):
124         control_url = build_absolute_uri(
125             'control:event.requiredactions',
126             kwargs={
127                 'organizer': logentry.event.organizer.slug,
128                 'event': logentry.event.slug,
129             }
130         )
131 
132         n = Notification(
133             event=logentry.event,
134             title=_('Administrative action required'),
135             detail=_('Something happened in your event that our system cannot handle automatically, e.g. an external '
136                      'refund. You need to resolve it manually or choose to ignore it, depending on the issue at hand.'),
137             url=control_url
138         )
139         n.add_action(_('View all unresolved problems'), control_url)
140         return n
141 
142 
143 class ParametrizedOrderNotificationType(NotificationType):
144     required_permission = "can_view_orders"
145 
146     def __init__(self, event, action_type, verbose_name, title):
147         self._action_type = action_type
148         self._verbose_name = verbose_name
149         self._title = title
150         super().__init__(event)
151 
152     @property
153     def action_type(self):
154         return self._action_type
155 
156     @property
157     def verbose_name(self):
158         return self._verbose_name
159 
160     def build_notification(self, logentry: LogEntry):
161         order = logentry.content_object
162 
163         order_url = build_absolute_uri(
164             'control:event.order',
165             kwargs={
166                 'organizer': logentry.event.organizer.slug,
167                 'event': logentry.event.slug,
168                 'code': order.code
169             }
170         )
171 
172         n = Notification(
173             event=logentry.event,
174             title=self._title.format(order=order, event=logentry.event),
175             url=order_url
176         )
177         n.add_attribute(_('Order code'), order.code)
178         n.add_attribute(_('Order total'), money_filter(order.total, logentry.event.currency))
179         n.add_attribute(_('Order date'), date_format(order.datetime, 'SHORT_DATETIME_FORMAT'))
180         n.add_attribute(_('Order status'), order.get_status_display())
181         n.add_attribute(_('Order positions'), str(order.positions.count()))
182         n.add_action(_('View order details'), order_url)
183         return n
184 
185 
186 @receiver(register_notification_types, dispatch_uid="base_register_default_notification_types")
187 def register_default_notification_types(sender, **kwargs):
188     return (
189         ParametrizedOrderNotificationType(
190             sender,
191             'pretix.event.order.placed',
192             _('New order placed'),
193             _('A new order has been placed: {order.code}'),
194         ),
195         ParametrizedOrderNotificationType(
196             sender,
197             'pretix.event.order.paid',
198             _('Order marked as paid'),
199             _('Order {order.code} has been marked as paid.')
200         ),
201         ParametrizedOrderNotificationType(
202             sender,
203             'pretix.event.order.canceled',
204             _('Order canceled'),
205             _('Order {order.code} has been canceled.')
206         ),
207         ParametrizedOrderNotificationType(
208             sender,
209             'pretix.event.order.expired',
210             _('Order expired'),
211             _('Order {order.code} has been marked as expired.'),
212         ),
213         ParametrizedOrderNotificationType(
214             sender,
215             'pretix.event.order.modified',
216             _('Order information changed'),
217             _('The ticket information of order {order.code} has been changed.')
218         ),
219         ParametrizedOrderNotificationType(
220             sender,
221             'pretix.event.order.contact.changed',
222             _('Order contact address changed'),
223             _('The contact address of order {order.code} has been changed.')
224         ),
225         ParametrizedOrderNotificationType(
226             sender,
227             'pretix.event.order.changed',
228             _('Order changed'),
229             _('Order {order.code} has been changed.')
230         ),
231         ParametrizedOrderNotificationType(
232             sender,
233             'pretix.event.order.refunded',
234             _('Order refunded'),
235             _('Order {order.code} has been refunded.')
236         ),
237         ActionRequiredNotificationType(
238             sender,
239         )
240     )
241
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/src/pretix/base/notifications.py b/src/pretix/base/notifications.py
--- a/src/pretix/base/notifications.py
+++ b/src/pretix/base/notifications.py
@@ -174,6 +174,7 @@
             title=self._title.format(order=order, event=logentry.event),
             url=order_url
         )
+        n.add_attribute(_('Event'), order.event.name)
         n.add_attribute(_('Order code'), order.code)
         n.add_attribute(_('Order total'), money_filter(order.total, logentry.event.currency))
         n.add_attribute(_('Order date'), date_format(order.datetime, 'SHORT_DATETIME_FORMAT'))

{"golden_diff": "diff --git a/src/pretix/base/notifications.py b/src/pretix/base/notifications.py\n--- a/src/pretix/base/notifications.py\n+++ b/src/pretix/base/notifications.py\n@@ -174,6 +174,7 @@\n             title=self._title.format(order=order, event=logentry.event),\n             url=order_url\n         )\n+        n.add_attribute(_('Event'), order.event.name)\n         n.add_attribute(_('Order code'), order.code)\n         n.add_attribute(_('Order total'), money_filter(order.total, logentry.event.currency))\n         n.add_attribute(_('Order date'), date_format(order.datetime, 'SHORT_DATETIME_FORMAT'))\n", "issue": "Add event name to admin notification\nWhen recieving an admin notification, e.g. when an order is placed, only the order number is displayed in the mail. It would be great to also see the event, right now you have to look it up in the \"Detail\" button url.\r\n\r\nI thought this could be an easy task by adding `n.add_attribute(_('Event'), order.event.name)` to `src/pretix/base/notifications.py`, but unfortunately I was not successful.\r\n\r\nThanks for your work!\n", "before_files": [{"content": "import logging\nfrom collections import OrderedDict, namedtuple\n\nfrom django.dispatch import receiver\nfrom django.utils.formats import date_format\nfrom django.utils.translation import ugettext_lazy as _\n\nfrom pretix.base.models import Event, LogEntry\nfrom pretix.base.signals import register_notification_types\nfrom pretix.base.templatetags.money import money_filter\nfrom pretix.helpers.urls import build_absolute_uri\n\nlogger = logging.getLogger(__name__)\n_ALL_TYPES = None\n\n\nNotificationAttribute = namedtuple('NotificationAttribute', ('title', 'value'))\nNotificationAction = namedtuple('NotificationAction', ('label', 'url'))\n\n\nclass Notification:\n    \"\"\"\n    Represents a notification that is sent/shown to a user. A notification consists of:\n\n    * one ``event`` reference\n    * one ``title`` text that is shown e.g. in the email subject or in a headline\n    * optionally one ``detail`` text that may or may not be shown depending on the notification method\n    * optionally one ``url`` that should be absolute and point to the context of an notification (e.g. an order)\n    * optionally a number of attributes consisting of a title and a value that can be used to add additional details\n      to the notification (e.g. \"Customer: ABC\")\n    * optionally a number of actions that may or may not be shown as buttons depending on the notification method,\n      each consisting of a button label and an absolute URL to point to.\n    \"\"\"\n\n    def __init__(self, event: Event, title: str, detail: str=None, url: str=None):\n        self.title = title\n        self.event = event\n        self.detail = detail\n        self.url = url\n        self.attributes = []\n        self.actions = []\n\n    def add_action(self, label, url):\n        \"\"\"\n        Add an action to the notification, defined by a label and an url. An example could be a label of \"View order\"\n        and an url linking to the order detail page.\n        \"\"\"\n        self.actions.append(NotificationAction(label, url))\n\n    def add_attribute(self, title, value):\n        \"\"\"\n        Add an attribute to the notification, defined by a title and a value. An example could be a title of\n        \"Date\" and a value of \"2017-12-14\".\n        \"\"\"\n        self.attributes.append(NotificationAttribute(title, value))\n\n\nclass NotificationType:\n    def __init__(self, event: Event = None):\n        self.event = event\n\n    def __repr__(self):\n        return '<NotificationType: {}>'.format(self.action_type)\n\n    @property\n    def action_type(self) -> str:\n        \"\"\"\n        The action_type string that this notification handles, for example\n        ``\"pretix.event.order.paid\"``. Only one notification type should be registered\n        per action type.\n        \"\"\"\n        raise NotImplementedError()  # NOQA\n\n    @property\n    def verbose_name(self) -> str:\n        \"\"\"\n        A human-readable name of this notification type.\n        \"\"\"\n        raise NotImplementedError()  # NOQA\n\n    @property\n    def required_permission(self) -> str:\n        \"\"\"\n        The permission a user needs to hold for the related event to receive this\n        notification.\n        \"\"\"\n        raise NotImplementedError()  # NOQA\n\n    def build_notification(self, logentry: LogEntry) -> Notification:\n        \"\"\"\n        This is the main function that you should override. It is supposed to turn a log entry\n        object into a notification object that can then be rendered e.g. into an email.\n        \"\"\"\n        return Notification(\n            logentry.event,\n            logentry.display()\n        )\n\n\ndef get_all_notification_types(event=None):\n    global _ALL_TYPES\n\n    if event is None and _ALL_TYPES:\n        return _ALL_TYPES\n\n    types = OrderedDict()\n    for recv, ret in register_notification_types.send(event):\n        if isinstance(ret, (list, tuple)):\n            for r in ret:\n                types[r.action_type] = r\n        else:\n            types[ret.action_type] = ret\n    if event is None:\n        _ALL_TYPES = types\n    return types\n\n\nclass ActionRequiredNotificationType(NotificationType):\n    required_permission = \"can_change_orders\"\n    action_type = \"pretix.event.action_required\"\n    verbose_name = _(\"Administrative action required\")\n\n    def build_notification(self, logentry: LogEntry):\n        control_url = build_absolute_uri(\n            'control:event.requiredactions',\n            kwargs={\n                'organizer': logentry.event.organizer.slug,\n                'event': logentry.event.slug,\n            }\n        )\n\n        n = Notification(\n            event=logentry.event,\n            title=_('Administrative action required'),\n            detail=_('Something happened in your event that our system cannot handle automatically, e.g. an external '\n                     'refund. You need to resolve it manually or choose to ignore it, depending on the issue at hand.'),\n            url=control_url\n        )\n        n.add_action(_('View all unresolved problems'), control_url)\n        return n\n\n\nclass ParametrizedOrderNotificationType(NotificationType):\n    required_permission = \"can_view_orders\"\n\n    def __init__(self, event, action_type, verbose_name, title):\n        self._action_type = action_type\n        self._verbose_name = verbose_name\n        self._title = title\n        super().__init__(event)\n\n    @property\n    def action_type(self):\n        return self._action_type\n\n    @property\n    def verbose_name(self):\n        return self._verbose_name\n\n    def build_notification(self, logentry: LogEntry):\n        order = logentry.content_object\n\n        order_url = build_absolute_uri(\n            'control:event.order',\n            kwargs={\n                'organizer': logentry.event.organizer.slug,\n                'event': logentry.event.slug,\n                'code': order.code\n            }\n        )\n\n        n = Notification(\n            event=logentry.event,\n            title=self._title.format(order=order, event=logentry.event),\n            url=order_url\n        )\n        n.add_attribute(_('Order code'), order.code)\n        n.add_attribute(_('Order total'), money_filter(order.total, logentry.event.currency))\n        n.add_attribute(_('Order date'), date_format(order.datetime, 'SHORT_DATETIME_FORMAT'))\n        n.add_attribute(_('Order status'), order.get_status_display())\n        n.add_attribute(_('Order positions'), str(order.positions.count()))\n        n.add_action(_('View order details'), order_url)\n        return n\n\n\n@receiver(register_notification_types, dispatch_uid=\"base_register_default_notification_types\")\ndef register_default_notification_types(sender, **kwargs):\n    return (\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.placed',\n            _('New order placed'),\n            _('A new order has been placed: {order.code}'),\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.paid',\n            _('Order marked as paid'),\n            _('Order {order.code} has been marked as paid.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.canceled',\n            _('Order canceled'),\n            _('Order {order.code} has been canceled.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.expired',\n            _('Order expired'),\n            _('Order {order.code} has been marked as expired.'),\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.modified',\n            _('Order information changed'),\n            _('The ticket information of order {order.code} has been changed.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.contact.changed',\n            _('Order contact address changed'),\n            _('The contact address of order {order.code} has been changed.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.changed',\n            _('Order changed'),\n            _('Order {order.code} has been changed.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.refunded',\n            _('Order refunded'),\n            _('Order {order.code} has been refunded.')\n        ),\n        ActionRequiredNotificationType(\n            sender,\n        )\n    )\n", "path": "src/pretix/base/notifications.py"}], "after_files": [{"content": "import logging\nfrom collections import OrderedDict, namedtuple\n\nfrom django.dispatch import receiver\nfrom django.utils.formats import date_format\nfrom django.utils.translation import ugettext_lazy as _\n\nfrom pretix.base.models import Event, LogEntry\nfrom pretix.base.signals import register_notification_types\nfrom pretix.base.templatetags.money import money_filter\nfrom pretix.helpers.urls import build_absolute_uri\n\nlogger = logging.getLogger(__name__)\n_ALL_TYPES = None\n\n\nNotificationAttribute = namedtuple('NotificationAttribute', ('title', 'value'))\nNotificationAction = namedtuple('NotificationAction', ('label', 'url'))\n\n\nclass Notification:\n    \"\"\"\n    Represents a notification that is sent/shown to a user. A notification consists of:\n\n    * one ``event`` reference\n    * one ``title`` text that is shown e.g. in the email subject or in a headline\n    * optionally one ``detail`` text that may or may not be shown depending on the notification method\n    * optionally one ``url`` that should be absolute and point to the context of an notification (e.g. an order)\n    * optionally a number of attributes consisting of a title and a value that can be used to add additional details\n      to the notification (e.g. \"Customer: ABC\")\n    * optionally a number of actions that may or may not be shown as buttons depending on the notification method,\n      each consisting of a button label and an absolute URL to point to.\n    \"\"\"\n\n    def __init__(self, event: Event, title: str, detail: str=None, url: str=None):\n        self.title = title\n        self.event = event\n        self.detail = detail\n        self.url = url\n        self.attributes = []\n        self.actions = []\n\n    def add_action(self, label, url):\n        \"\"\"\n        Add an action to the notification, defined by a label and an url. An example could be a label of \"View order\"\n        and an url linking to the order detail page.\n        \"\"\"\n        self.actions.append(NotificationAction(label, url))\n\n    def add_attribute(self, title, value):\n        \"\"\"\n        Add an attribute to the notification, defined by a title and a value. An example could be a title of\n        \"Date\" and a value of \"2017-12-14\".\n        \"\"\"\n        self.attributes.append(NotificationAttribute(title, value))\n\n\nclass NotificationType:\n    def __init__(self, event: Event = None):\n        self.event = event\n\n    def __repr__(self):\n        return '<NotificationType: {}>'.format(self.action_type)\n\n    @property\n    def action_type(self) -> str:\n        \"\"\"\n        The action_type string that this notification handles, for example\n        ``\"pretix.event.order.paid\"``. Only one notification type should be registered\n        per action type.\n        \"\"\"\n        raise NotImplementedError()  # NOQA\n\n    @property\n    def verbose_name(self) -> str:\n        \"\"\"\n        A human-readable name of this notification type.\n        \"\"\"\n        raise NotImplementedError()  # NOQA\n\n    @property\n    def required_permission(self) -> str:\n        \"\"\"\n        The permission a user needs to hold for the related event to receive this\n        notification.\n        \"\"\"\n        raise NotImplementedError()  # NOQA\n\n    def build_notification(self, logentry: LogEntry) -> Notification:\n        \"\"\"\n        This is the main function that you should override. It is supposed to turn a log entry\n        object into a notification object that can then be rendered e.g. into an email.\n        \"\"\"\n        return Notification(\n            logentry.event,\n            logentry.display()\n        )\n\n\ndef get_all_notification_types(event=None):\n    global _ALL_TYPES\n\n    if event is None and _ALL_TYPES:\n        return _ALL_TYPES\n\n    types = OrderedDict()\n    for recv, ret in register_notification_types.send(event):\n        if isinstance(ret, (list, tuple)):\n            for r in ret:\n                types[r.action_type] = r\n        else:\n            types[ret.action_type] = ret\n    if event is None:\n        _ALL_TYPES = types\n    return types\n\n\nclass ActionRequiredNotificationType(NotificationType):\n    required_permission = \"can_change_orders\"\n    action_type = \"pretix.event.action_required\"\n    verbose_name = _(\"Administrative action required\")\n\n    def build_notification(self, logentry: LogEntry):\n        control_url = build_absolute_uri(\n            'control:event.requiredactions',\n            kwargs={\n                'organizer': logentry.event.organizer.slug,\n                'event': logentry.event.slug,\n            }\n        )\n\n        n = Notification(\n            event=logentry.event,\n            title=_('Administrative action required'),\n            detail=_('Something happened in your event that our system cannot handle automatically, e.g. an external '\n                     'refund. You need to resolve it manually or choose to ignore it, depending on the issue at hand.'),\n            url=control_url\n        )\n        n.add_action(_('View all unresolved problems'), control_url)\n        return n\n\n\nclass ParametrizedOrderNotificationType(NotificationType):\n    required_permission = \"can_view_orders\"\n\n    def __init__(self, event, action_type, verbose_name, title):\n        self._action_type = action_type\n        self._verbose_name = verbose_name\n        self._title = title\n        super().__init__(event)\n\n    @property\n    def action_type(self):\n        return self._action_type\n\n    @property\n    def verbose_name(self):\n        return self._verbose_name\n\n    def build_notification(self, logentry: LogEntry):\n        order = logentry.content_object\n\n        order_url = build_absolute_uri(\n            'control:event.order',\n            kwargs={\n                'organizer': logentry.event.organizer.slug,\n                'event': logentry.event.slug,\n                'code': order.code\n            }\n        )\n\n        n = Notification(\n            event=logentry.event,\n            title=self._title.format(order=order, event=logentry.event),\n            url=order_url\n        )\n        n.add_attribute(_('Event'), order.event.name)\n        n.add_attribute(_('Order code'), order.code)\n        n.add_attribute(_('Order total'), money_filter(order.total, logentry.event.currency))\n        n.add_attribute(_('Order date'), date_format(order.datetime, 'SHORT_DATETIME_FORMAT'))\n        n.add_attribute(_('Order status'), order.get_status_display())\n        n.add_attribute(_('Order positions'), str(order.positions.count()))\n        n.add_action(_('View order details'), order_url)\n        return n\n\n\n@receiver(register_notification_types, dispatch_uid=\"base_register_default_notification_types\")\ndef register_default_notification_types(sender, **kwargs):\n    return (\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.placed',\n            _('New order placed'),\n            _('A new order has been placed: {order.code}'),\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.paid',\n            _('Order marked as paid'),\n            _('Order {order.code} has been marked as paid.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.canceled',\n            _('Order canceled'),\n            _('Order {order.code} has been canceled.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.expired',\n            _('Order expired'),\n            _('Order {order.code} has been marked as expired.'),\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.modified',\n            _('Order information changed'),\n            _('The ticket information of order {order.code} has been changed.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.contact.changed',\n            _('Order contact address changed'),\n            _('The contact address of order {order.code} has been changed.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.changed',\n            _('Order changed'),\n            _('Order {order.code} has been changed.')\n        ),\n        ParametrizedOrderNotificationType(\n            sender,\n            'pretix.event.order.refunded',\n            _('Order refunded'),\n            _('Order {order.code} has been refunded.')\n        ),\n        ActionRequiredNotificationType(\n            sender,\n        )\n    )\n", "path": "src/pretix/base/notifications.py"}]}