We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Registration message in calendar wrong
### Describe the bug
In the calendar, when you have to register for an event, it says in the block; You can register on .......
However, this seems to be the date of when the event will take place (or the registration deadline, can't tell for sure).
See screenshots for an example.

### How to reproduce
Steps to reproduce the behaviour:
1. Go to the calendar and look for an event with a registration.
2. Look at the message in the calendar view
3. Compare with the registration date in the event itself.

### Expected behaviour
The message in the calendar view matches the date of when the registrations will open.

### Screenshots
![image](https://user-images.githubusercontent.com/12615607/139580635-4f56710d-23ae-4680-a45d-ace2376cfeb7.png)
![image](https://user-images.githubusercontent.com/12615607/139580729-88d92dcd-e60d-4d13-8505-107fc2b69b14.png)


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `website/events/api/calendarjs/serializers.py`
Content:
```
1 from datetime import timedelta
2 
3 from django.contrib.humanize.templatetags.humanize import naturaltime
4 from django.template.defaultfilters import date
5 from django.utils import timezone
6 from django.utils.translation import gettext_lazy as _
7 from rest_framework.reverse import reverse
8 
9 from events import services
10 from events.models import Event
11 from thaliawebsite.api.calendarjs.serializers import CalenderJSSerializer
12 
13 
14 class EventsCalenderJSSerializer(CalenderJSSerializer):
15     class Meta(CalenderJSSerializer.Meta):
16         model = Event
17 
18     def _url(self, instance):
19         return reverse("events:event", kwargs={"pk": instance.id})
20 
21     def _class_names(self, instance):
22         if self.context["member"] and services.is_user_registered(
23             self.context["member"], instance
24         ):
25             if services.user_registration_pending(self.context["member"], instance):
26                 return ["regular-event-pending-registration"]
27             else:
28                 return ["regular-event-has-registration"]
29         elif (not instance.registration_required) or instance.registration_allowed:
30             return ["regular-event-registration-open"]
31         else:
32             # I think this handles the case that registration is needed, but not yet possible
33             return ["regular-event-registration-closed"]
34 
35     def _registration_info(self, instance: Event):
36         # If registered in some way
37         if self.context["member"] and services.is_user_registered(
38             self.context["member"], instance
39         ):
40             queue_pos = services.user_registration_pending(
41                 self.context["member"], instance
42             )
43             # In waiting list
44             if type(queue_pos) is int:
45                 return _("In waiting list at position {queue_pos}").format(
46                     queue_pos=queue_pos
47                 )
48             # Actually registered
49             else:
50                 return _("You are registered for this event")
51         # Optional registration possible
52         elif instance.optional_registration_allowed:
53             return _("You can optionally register for this event")
54         # No places left
55         elif instance.reached_participants_limit():
56             return _("You can put yourself on the waiting list for this event")
57         # Registration still possible
58         elif instance.registration_allowed:
59             return _("You can register for this event")
60         # Not registration time yet
61         elif instance.registration_end:
62             now = timezone.now()
63             if instance.registration_end < now:
64                 return _("Registrations have been closed")
65             elif instance.registration_end <= now + timedelta(days=2):
66                 return _("You can register {at_time}").format(
67                     at_time=naturaltime(instance.registration_end)
68                 )
69             else:
70                 return _("You can register on {date}").format(
71                     date=date(instance.registration_end)
72                 )
73 
74 
75 class UnpublishedEventsCalenderJSSerializer(CalenderJSSerializer):
76     """See CalenderJSSerializer, customised classes."""
77 
78     class Meta(CalenderJSSerializer.Meta):
79         model = Event
80 
81     def _class_names(self, instance):
82         return ["unpublished-event"]
83 
84     def _url(self, instance):
85         return reverse("admin:events_event_details", kwargs={"pk": instance.id})
86 
87     def _registration_info(self, instance):
88         return "Unpublished event"
89
```
--- 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/website/events/api/calendarjs/serializers.py b/website/events/api/calendarjs/serializers.py
--- a/website/events/api/calendarjs/serializers.py
+++ b/website/events/api/calendarjs/serializers.py
@@ -50,7 +50,7 @@
                 return _("You are registered for this event")
         # Optional registration possible
         elif instance.optional_registration_allowed:
-            return _("You can optionally register for this event")
+            return _("Registering for this event is optional")
         # No places left
         elif instance.reached_participants_limit():
             return _("You can put yourself on the waiting list for this event")
@@ -62,13 +62,13 @@
             now = timezone.now()
             if instance.registration_end < now:
                 return _("Registrations have been closed")
-            elif instance.registration_end <= now + timedelta(days=2):
-                return _("You can register {at_time}").format(
-                    at_time=naturaltime(instance.registration_end)
+            elif instance.registration_start <= now + timedelta(days=2):
+                return _("Registrations open {at_time}").format(
+                    at_time=naturaltime(instance.registration_start)
                 )
             else:
-                return _("You can register on {date}").format(
-                    date=date(instance.registration_end)
+                return _("Registrations open {date}").format(
+                    date=date(instance.registration_start)
                 )

{"golden_diff": "diff --git a/website/events/api/calendarjs/serializers.py b/website/events/api/calendarjs/serializers.py\n--- a/website/events/api/calendarjs/serializers.py\n+++ b/website/events/api/calendarjs/serializers.py\n@@ -50,7 +50,7 @@\n                 return _(\"You are registered for this event\")\n         # Optional registration possible\n         elif instance.optional_registration_allowed:\n-            return _(\"You can optionally register for this event\")\n+            return _(\"Registering for this event is optional\")\n         # No places left\n         elif instance.reached_participants_limit():\n             return _(\"You can put yourself on the waiting list for this event\")\n@@ -62,13 +62,13 @@\n             now = timezone.now()\n             if instance.registration_end < now:\n                 return _(\"Registrations have been closed\")\n-            elif instance.registration_end <= now + timedelta(days=2):\n-                return _(\"You can register {at_time}\").format(\n-                    at_time=naturaltime(instance.registration_end)\n+            elif instance.registration_start <= now + timedelta(days=2):\n+                return _(\"Registrations open {at_time}\").format(\n+                    at_time=naturaltime(instance.registration_start)\n                 )\n             else:\n-                return _(\"You can register on {date}\").format(\n-                    date=date(instance.registration_end)\n+                return _(\"Registrations open {date}\").format(\n+                    date=date(instance.registration_start)\n                 )\n", "issue": "Registration message in calendar wrong\n### Describe the bug\r\nIn the calendar, when you have to register for an event, it says in the block; You can register on .......\r\nHowever, this seems to be the date of when the event will take place (or the registration deadline, can't tell for sure).\r\nSee screenshots for an example.\r\n\r\n### How to reproduce\r\nSteps to reproduce the behaviour:\r\n1. Go to the calendar and look for an event with a registration.\r\n2. Look at the message in the calendar view\r\n3. Compare with the registration date in the event itself.\r\n\r\n### Expected behaviour\r\nThe message in the calendar view matches the date of when the registrations will open.\r\n\r\n### Screenshots\r\n![image](https://user-images.githubusercontent.com/12615607/139580635-4f56710d-23ae-4680-a45d-ace2376cfeb7.png)\r\n![image](https://user-images.githubusercontent.com/12615607/139580729-88d92dcd-e60d-4d13-8505-107fc2b69b14.png)\r\n\n", "before_files": [{"content": "from datetime import timedelta\n\nfrom django.contrib.humanize.templatetags.humanize import naturaltime\nfrom django.template.defaultfilters import date\nfrom django.utils import timezone\nfrom django.utils.translation import gettext_lazy as _\nfrom rest_framework.reverse import reverse\n\nfrom events import services\nfrom events.models import Event\nfrom thaliawebsite.api.calendarjs.serializers import CalenderJSSerializer\n\n\nclass EventsCalenderJSSerializer(CalenderJSSerializer):\n    class Meta(CalenderJSSerializer.Meta):\n        model = Event\n\n    def _url(self, instance):\n        return reverse(\"events:event\", kwargs={\"pk\": instance.id})\n\n    def _class_names(self, instance):\n        if self.context[\"member\"] and services.is_user_registered(\n            self.context[\"member\"], instance\n        ):\n            if services.user_registration_pending(self.context[\"member\"], instance):\n                return [\"regular-event-pending-registration\"]\n            else:\n                return [\"regular-event-has-registration\"]\n        elif (not instance.registration_required) or instance.registration_allowed:\n            return [\"regular-event-registration-open\"]\n        else:\n            # I think this handles the case that registration is needed, but not yet possible\n            return [\"regular-event-registration-closed\"]\n\n    def _registration_info(self, instance: Event):\n        # If registered in some way\n        if self.context[\"member\"] and services.is_user_registered(\n            self.context[\"member\"], instance\n        ):\n            queue_pos = services.user_registration_pending(\n                self.context[\"member\"], instance\n            )\n            # In waiting list\n            if type(queue_pos) is int:\n                return _(\"In waiting list at position {queue_pos}\").format(\n                    queue_pos=queue_pos\n                )\n            # Actually registered\n            else:\n                return _(\"You are registered for this event\")\n        # Optional registration possible\n        elif instance.optional_registration_allowed:\n            return _(\"You can optionally register for this event\")\n        # No places left\n        elif instance.reached_participants_limit():\n            return _(\"You can put yourself on the waiting list for this event\")\n        # Registration still possible\n        elif instance.registration_allowed:\n            return _(\"You can register for this event\")\n        # Not registration time yet\n        elif instance.registration_end:\n            now = timezone.now()\n            if instance.registration_end < now:\n                return _(\"Registrations have been closed\")\n            elif instance.registration_end <= now + timedelta(days=2):\n                return _(\"You can register {at_time}\").format(\n                    at_time=naturaltime(instance.registration_end)\n                )\n            else:\n                return _(\"You can register on {date}\").format(\n                    date=date(instance.registration_end)\n                )\n\n\nclass UnpublishedEventsCalenderJSSerializer(CalenderJSSerializer):\n    \"\"\"See CalenderJSSerializer, customised classes.\"\"\"\n\n    class Meta(CalenderJSSerializer.Meta):\n        model = Event\n\n    def _class_names(self, instance):\n        return [\"unpublished-event\"]\n\n    def _url(self, instance):\n        return reverse(\"admin:events_event_details\", kwargs={\"pk\": instance.id})\n\n    def _registration_info(self, instance):\n        return \"Unpublished event\"\n", "path": "website/events/api/calendarjs/serializers.py"}], "after_files": [{"content": "from datetime import timedelta\n\nfrom django.contrib.humanize.templatetags.humanize import naturaltime\nfrom django.template.defaultfilters import date\nfrom django.utils import timezone\nfrom django.utils.translation import gettext_lazy as _\nfrom rest_framework.reverse import reverse\n\nfrom events import services\nfrom events.models import Event\nfrom thaliawebsite.api.calendarjs.serializers import CalenderJSSerializer\n\n\nclass EventsCalenderJSSerializer(CalenderJSSerializer):\n    class Meta(CalenderJSSerializer.Meta):\n        model = Event\n\n    def _url(self, instance):\n        return reverse(\"events:event\", kwargs={\"pk\": instance.id})\n\n    def _class_names(self, instance):\n        if self.context[\"member\"] and services.is_user_registered(\n            self.context[\"member\"], instance\n        ):\n            if services.user_registration_pending(self.context[\"member\"], instance):\n                return [\"regular-event-pending-registration\"]\n            else:\n                return [\"regular-event-has-registration\"]\n        elif (not instance.registration_required) or instance.registration_allowed:\n            return [\"regular-event-registration-open\"]\n        else:\n            # I think this handles the case that registration is needed, but not yet possible\n            return [\"regular-event-registration-closed\"]\n\n    def _registration_info(self, instance: Event):\n        # If registered in some way\n        if self.context[\"member\"] and services.is_user_registered(\n            self.context[\"member\"], instance\n        ):\n            queue_pos = services.user_registration_pending(\n                self.context[\"member\"], instance\n            )\n            # In waiting list\n            if type(queue_pos) is int:\n                return _(\"In waiting list at position {queue_pos}\").format(\n                    queue_pos=queue_pos\n                )\n            # Actually registered\n            else:\n                return _(\"You are registered for this event\")\n        # Optional registration possible\n        elif instance.optional_registration_allowed:\n            return _(\"Registering for this event is optional\")\n        # No places left\n        elif instance.reached_participants_limit():\n            return _(\"You can put yourself on the waiting list for this event\")\n        # Registration still possible\n        elif instance.registration_allowed:\n            return _(\"You can register for this event\")\n        # Not registration time yet\n        elif instance.registration_end:\n            now = timezone.now()\n            if instance.registration_end < now:\n                return _(\"Registrations have been closed\")\n            elif instance.registration_start <= now + timedelta(days=2):\n                return _(\"Registrations open {at_time}\").format(\n                    at_time=naturaltime(instance.registration_start)\n                )\n            else:\n                return _(\"Registrations open {date}\").format(\n                    date=date(instance.registration_start)\n                )\n\n\nclass UnpublishedEventsCalenderJSSerializer(CalenderJSSerializer):\n    \"\"\"See CalenderJSSerializer, customised classes.\"\"\"\n\n    class Meta(CalenderJSSerializer.Meta):\n        model = Event\n\n    def _class_names(self, instance):\n        return [\"unpublished-event\"]\n\n    def _url(self, instance):\n        return reverse(\"admin:events_event_details\", kwargs={\"pk\": instance.id})\n\n    def _registration_info(self, instance):\n        return \"Unpublished event\"\n", "path": "website/events/api/calendarjs/serializers.py"}]}