We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Improve push notification form
### Motivation
<!-- A clear and concise description of what the motivation for the new feature is, and what problem it is solving. -->


### Proposed Solution
<!-- A clear and concise description of the feature you would like to add, and how it solves the motivating problem. -->
- [x] Make input field to text area
- [x] Show how many characters are remaining
- [x] Rename "Push-Notifications" to "News" / "Nachrichten"
- [x] Change not sent symbol "x" to text "Message not sent yet"


### Additional Context
![Bildschirmfoto vom 2021-04-13 16-42-11](https://user-images.githubusercontent.com/15608678/114572956-3be7fd00-9c78-11eb-928e-b156602af7ac.png)

Files that need some editing for that issue are:

- src/cms/templates/push_notifications/push_notification_form.html (for everything related to the HTML-Input Field)
- src/cms/locale/de/LC_MESSAGES/django.po (for everything that needs some new translation. Search for "Push Notification" and change the german translation to "Nachricht/Nachrichten"




--- 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/cms/models/push_notifications/push_notification_translation.py`
Content:
```
1 from django.db import models
2 from django.utils import timezone
3 from django.utils.translation import ugettext_lazy as _
4 
5 from ..languages.language import Language
6 from .push_notification import PushNotification
7 
8 
9 class PushNotificationTranslation(models.Model):
10     """
11     Data model representing a push notification translation
12     """
13 
14     title = models.CharField(
15         max_length=250,
16         blank=True,
17         verbose_name=_("title"),
18     )
19     text = models.CharField(
20         max_length=250,
21         blank=True,
22         verbose_name=_("content"),
23     )
24     language = models.ForeignKey(
25         Language,
26         on_delete=models.CASCADE,
27         related_name="push_notification_translations",
28         verbose_name=_("language"),
29     )
30     push_notification = models.ForeignKey(
31         PushNotification,
32         on_delete=models.CASCADE,
33         related_name="translations",
34         verbose_name=_("push notification"),
35     )
36     created_date = models.DateTimeField(
37         default=timezone.now,
38         verbose_name=_("creation date"),
39     )
40     last_updated = models.DateTimeField(
41         auto_now=True,
42         verbose_name=_("modification date"),
43     )
44 
45     def __str__(self):
46         """
47         This overwrites the default Django :meth:`~django.db.models.Model.__str__` method which would return ``PushNotificationTranslation object (id)``.
48         It is used in the Django admin backend and as label for ModelChoiceFields.
49 
50         :return: A readable string representation of the event
51         :rtype: str
52         """
53         return self.title
54 
55     def __repr__(self):
56         """
57         This overwrites the default Django ``__repr__()`` method which would return ``<PushNotificationTranslation: PushNotificationTranslation object (id)>``.
58         It is used for logging.
59 
60         :return: The canonical string representation of the event
61         :rtype: str
62         """
63         return f"<PushNotificationTranslation (id: {self.id}, push_notification_id: {self.push_notification.id}, title: {self.title})>"
64 
65     class Meta:
66         #: The verbose name of the model
67         verbose_name = _("push notification translation")
68         #: The plural verbose name of the model
69         verbose_name_plural = _("push notification translations")
70         #: The default permissions for this model
71         default_permissions = ()
72         #: Sets of field names that, taken together, must be unique
73         unique_together = ["push_notification", "language"]
74
```
--- 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/cms/models/push_notifications/push_notification_translation.py b/src/cms/models/push_notifications/push_notification_translation.py
--- a/src/cms/models/push_notifications/push_notification_translation.py
+++ b/src/cms/models/push_notifications/push_notification_translation.py
@@ -16,7 +16,7 @@
         blank=True,
         verbose_name=_("title"),
     )
-    text = models.CharField(
+    text = models.TextField(
         max_length=250,
         blank=True,
         verbose_name=_("content"),

{"golden_diff": "diff --git a/src/cms/models/push_notifications/push_notification_translation.py b/src/cms/models/push_notifications/push_notification_translation.py\n--- a/src/cms/models/push_notifications/push_notification_translation.py\n+++ b/src/cms/models/push_notifications/push_notification_translation.py\n@@ -16,7 +16,7 @@\n         blank=True,\n         verbose_name=_(\"title\"),\n     )\n-    text = models.CharField(\n+    text = models.TextField(\n         max_length=250,\n         blank=True,\n         verbose_name=_(\"content\"),\n", "issue": "Improve push notification form\n### Motivation\r\n<!-- A clear and concise description of what the motivation for the new feature is, and what problem it is solving. -->\r\n\r\n\r\n### Proposed Solution\r\n<!-- A clear and concise description of the feature you would like to add, and how it solves the motivating problem. -->\r\n- [x] Make input field to text area\r\n- [x] Show how many characters are remaining\r\n- [x] Rename \"Push-Notifications\" to \"News\" / \"Nachrichten\"\r\n- [x] Change not sent symbol \"x\" to text \"Message not sent yet\"\r\n\r\n\r\n### Additional Context\r\n![Bildschirmfoto vom 2021-04-13 16-42-11](https://user-images.githubusercontent.com/15608678/114572956-3be7fd00-9c78-11eb-928e-b156602af7ac.png)\r\n\r\nFiles that need some editing for that issue are:\r\n\r\n- src/cms/templates/push_notifications/push_notification_form.html (for everything related to the HTML-Input Field)\r\n- src/cms/locale/de/LC_MESSAGES/django.po (for everything that needs some new translation. Search for \"Push Notification\" and change the german translation to \"Nachricht/Nachrichten\"\r\n\r\n\r\n\n", "before_files": [{"content": "from django.db import models\nfrom django.utils import timezone\nfrom django.utils.translation import ugettext_lazy as _\n\nfrom ..languages.language import Language\nfrom .push_notification import PushNotification\n\n\nclass PushNotificationTranslation(models.Model):\n    \"\"\"\n    Data model representing a push notification translation\n    \"\"\"\n\n    title = models.CharField(\n        max_length=250,\n        blank=True,\n        verbose_name=_(\"title\"),\n    )\n    text = models.CharField(\n        max_length=250,\n        blank=True,\n        verbose_name=_(\"content\"),\n    )\n    language = models.ForeignKey(\n        Language,\n        on_delete=models.CASCADE,\n        related_name=\"push_notification_translations\",\n        verbose_name=_(\"language\"),\n    )\n    push_notification = models.ForeignKey(\n        PushNotification,\n        on_delete=models.CASCADE,\n        related_name=\"translations\",\n        verbose_name=_(\"push notification\"),\n    )\n    created_date = models.DateTimeField(\n        default=timezone.now,\n        verbose_name=_(\"creation date\"),\n    )\n    last_updated = models.DateTimeField(\n        auto_now=True,\n        verbose_name=_(\"modification date\"),\n    )\n\n    def __str__(self):\n        \"\"\"\n        This overwrites the default Django :meth:`~django.db.models.Model.__str__` method which would return ``PushNotificationTranslation object (id)``.\n        It is used in the Django admin backend and as label for ModelChoiceFields.\n\n        :return: A readable string representation of the event\n        :rtype: str\n        \"\"\"\n        return self.title\n\n    def __repr__(self):\n        \"\"\"\n        This overwrites the default Django ``__repr__()`` method which would return ``<PushNotificationTranslation: PushNotificationTranslation object (id)>``.\n        It is used for logging.\n\n        :return: The canonical string representation of the event\n        :rtype: str\n        \"\"\"\n        return f\"<PushNotificationTranslation (id: {self.id}, push_notification_id: {self.push_notification.id}, title: {self.title})>\"\n\n    class Meta:\n        #: The verbose name of the model\n        verbose_name = _(\"push notification translation\")\n        #: The plural verbose name of the model\n        verbose_name_plural = _(\"push notification translations\")\n        #: The default permissions for this model\n        default_permissions = ()\n        #: Sets of field names that, taken together, must be unique\n        unique_together = [\"push_notification\", \"language\"]\n", "path": "src/cms/models/push_notifications/push_notification_translation.py"}], "after_files": [{"content": "from django.db import models\nfrom django.utils import timezone\nfrom django.utils.translation import ugettext_lazy as _\n\nfrom ..languages.language import Language\nfrom .push_notification import PushNotification\n\n\nclass PushNotificationTranslation(models.Model):\n    \"\"\"\n    Data model representing a push notification translation\n    \"\"\"\n\n    title = models.CharField(\n        max_length=250,\n        blank=True,\n        verbose_name=_(\"title\"),\n    )\n    text = models.TextField(\n        max_length=250,\n        blank=True,\n        verbose_name=_(\"content\"),\n    )\n    language = models.ForeignKey(\n        Language,\n        on_delete=models.CASCADE,\n        related_name=\"push_notification_translations\",\n        verbose_name=_(\"language\"),\n    )\n    push_notification = models.ForeignKey(\n        PushNotification,\n        on_delete=models.CASCADE,\n        related_name=\"translations\",\n        verbose_name=_(\"push notification\"),\n    )\n    created_date = models.DateTimeField(\n        default=timezone.now,\n        verbose_name=_(\"creation date\"),\n    )\n    last_updated = models.DateTimeField(\n        auto_now=True,\n        verbose_name=_(\"modification date\"),\n    )\n\n    def __str__(self):\n        \"\"\"\n        This overwrites the default Django :meth:`~django.db.models.Model.__str__` method which would return ``PushNotificationTranslation object (id)``.\n        It is used in the Django admin backend and as label for ModelChoiceFields.\n\n        :return: A readable string representation of the event\n        :rtype: str\n        \"\"\"\n        return self.title\n\n    def __repr__(self):\n        \"\"\"\n        This overwrites the default Django ``__repr__()`` method which would return ``<PushNotificationTranslation: PushNotificationTranslation object (id)>``.\n        It is used for logging.\n\n        :return: The canonical string representation of the event\n        :rtype: str\n        \"\"\"\n        return f\"<PushNotificationTranslation (id: {self.id}, push_notification_id: {self.push_notification.id}, title: {self.title})>\"\n\n    class Meta:\n        #: The verbose name of the model\n        verbose_name = _(\"push notification translation\")\n        #: The plural verbose name of the model\n        verbose_name_plural = _(\"push notification translations\")\n        #: The default permissions for this model\n        default_permissions = ()\n        #: Sets of field names that, taken together, must be unique\n        unique_together = [\"push_notification\", \"language\"]\n", "path": "src/cms/models/push_notifications/push_notification_translation.py"}]}