We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Cannot enter float number as contribution during benefactor renewal
### Describe the bug
Cannot enter float number as contribution during benefactor renewal

### How to reproduce
Steps to reproduce the behaviour:
1. Go to http://localhost:8000/user/membership/
2. Add a benefactor membership renewal 
3. The form will not error when trying to send

### Expected behaviour
Can enter float numbers as contribution. Like 7.69.

### Screenshots
<img width="691" alt="Screenshot 2021-06-20 at 18 48 35" src="https://user-images.githubusercontent.com/1799914/122682192-4edaf880-d1f8-11eb-99e2-26eaf5379ae8.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/registrations/forms.py`
Content:
```
1 """The forms defined by the registrations package."""
2 from django import forms
3 from django.core.exceptions import NON_FIELD_ERRORS, ValidationError
4 from django.forms import TypedChoiceField
5 from django.urls import reverse_lazy
6 from django.utils import timezone
7 from django.utils.safestring import mark_safe
8 from django.utils.text import capfirst
9 from django.utils.translation import gettext_lazy as _
10 
11 from members.models import Membership
12 from payments.widgets import SignatureWidget
13 from registrations import services
14 from .models import Registration, Renewal, Reference
15 
16 
17 class BaseRegistrationForm(forms.ModelForm):
18     """Base form for membership registrations."""
19 
20     birthday = forms.DateField(
21         widget=forms.widgets.SelectDateWidget(
22             years=range(timezone.now().year - 50, timezone.now().year - 10)
23         ),
24         label=capfirst(_("birthday")),
25     )
26 
27     privacy_policy = forms.BooleanField(required=True,)
28 
29     def __init__(self, *args, **kwargs):
30         super().__init__(*args, **kwargs)
31         self.fields["privacy_policy"].label = mark_safe(
32             _('I accept the <a href="{}">privacy policy</a>.').format(
33                 reverse_lazy("singlepages:privacy-policy")
34             )
35         )
36 
37 
38 class RegistrationAdminForm(forms.ModelForm):
39     """Custom admin form for Registration model to add the widget for the signature."""
40 
41     class Meta:
42         fields = "__all__"
43         model = Registration
44         widgets = {
45             "signature": SignatureWidget(),
46         }
47 
48 
49 class MemberRegistrationForm(BaseRegistrationForm):
50     """Form for member registrations."""
51 
52     this_year = timezone.now().year
53     years = reversed(
54         [(x, "{} - {}".format(x, x + 1)) for x in range(this_year - 20, this_year + 1)]
55     )
56 
57     starting_year = TypedChoiceField(
58         choices=years,
59         coerce=int,
60         empty_value=this_year,
61         required=False,
62         help_text=_("What lecture year did you start studying at Radboud University?"),
63     )
64 
65     class Meta:
66         model = Registration
67         widgets = {
68             "signature": SignatureWidget(),
69         }
70         fields = (
71             "length",
72             "first_name",
73             "last_name",
74             "birthday",
75             "email",
76             "phone_number",
77             "student_number",
78             "programme",
79             "starting_year",
80             "address_street",
81             "address_street2",
82             "address_postal_code",
83             "address_city",
84             "address_country",
85             "optin_birthday",
86             "optin_mailinglist",
87             "membership_type",
88             "direct_debit",
89             "initials",
90             "iban",
91             "bic",
92             "signature",
93         )
94 
95 
96 class BenefactorRegistrationForm(BaseRegistrationForm):
97     """Form for benefactor registrations."""
98 
99     icis_employee = forms.BooleanField(
100         required=False, label=_("I am an employee of iCIS")
101     )
102 
103     class Meta:
104         model = Registration
105         widgets = {
106             "signature": SignatureWidget(),
107         }
108         fields = (
109             "length",
110             "first_name",
111             "last_name",
112             "birthday",
113             "email",
114             "phone_number",
115             "student_number",
116             "address_street",
117             "address_street2",
118             "address_postal_code",
119             "address_city",
120             "address_country",
121             "optin_birthday",
122             "optin_mailinglist",
123             "contribution",
124             "membership_type",
125             "direct_debit",
126             "initials",
127             "iban",
128             "bic",
129             "signature",
130         )
131 
132 
133 class RenewalForm(forms.ModelForm):
134     """Form for membership renewals."""
135 
136     privacy_policy = forms.BooleanField(required=True,)
137 
138     icis_employee = forms.BooleanField(
139         required=False, label=_("I am an employee of iCIS")
140     )
141 
142     contribution = forms.IntegerField(required=False,)
143 
144     def __init__(self, *args, **kwargs):
145         super().__init__(*args, **kwargs)
146         self.fields["privacy_policy"].label = mark_safe(
147             _('I accept the <a href="{}">privacy policy</a>.').format(
148                 reverse_lazy("singlepages:privacy-policy")
149             )
150         )
151 
152     class Meta:
153         model = Renewal
154         fields = (
155             "member",
156             "length",
157             "contribution",
158             "membership_type",
159             "no_references",
160             "remarks",
161         )
162 
163 
164 class ReferenceForm(forms.ModelForm):
165     def clean(self):
166         super().clean()
167         membership = self.cleaned_data["member"].current_membership
168         if membership and membership.type == Membership.BENEFACTOR:
169             raise ValidationError(_("Benefactors cannot give references."))
170 
171         membership = self.cleaned_data["member"].latest_membership
172         if (
173             membership
174             and membership.until
175             and membership.until < services.calculate_membership_since()
176         ):
177             raise ValidationError(
178                 _(
179                     "It's not possible to give references for "
180                     "memberships that start after your own "
181                     "membership's end."
182                 )
183             )
184 
185     class Meta:
186         model = Reference
187         fields = "__all__"
188         error_messages = {
189             NON_FIELD_ERRORS: {
190                 "unique_together": _(
191                     "You've already given a reference for this person."
192                 ),
193             }
194         }
195
```
--- 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/registrations/forms.py b/website/registrations/forms.py
--- a/website/registrations/forms.py
+++ b/website/registrations/forms.py
@@ -139,7 +139,7 @@
         required=False, label=_("I am an employee of iCIS")
     )
 
-    contribution = forms.IntegerField(required=False,)
+    contribution = forms.DecimalField(required=False, max_digits=5, decimal_places=2,)
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)

{"golden_diff": "diff --git a/website/registrations/forms.py b/website/registrations/forms.py\n--- a/website/registrations/forms.py\n+++ b/website/registrations/forms.py\n@@ -139,7 +139,7 @@\n         required=False, label=_(\"I am an employee of iCIS\")\n     )\n \n-    contribution = forms.IntegerField(required=False,)\n+    contribution = forms.DecimalField(required=False, max_digits=5, decimal_places=2,)\n \n     def __init__(self, *args, **kwargs):\n         super().__init__(*args, **kwargs)\n", "issue": "Cannot enter float number as contribution during benefactor renewal\n### Describe the bug\r\nCannot enter float number as contribution during benefactor renewal\r\n\r\n### How to reproduce\r\nSteps to reproduce the behaviour:\r\n1. Go to http://localhost:8000/user/membership/\r\n2. Add a benefactor membership renewal \r\n3. The form will not error when trying to send\r\n\r\n### Expected behaviour\r\nCan enter float numbers as contribution. Like 7.69.\r\n\r\n### Screenshots\r\n<img width=\"691\" alt=\"Screenshot 2021-06-20 at 18 48 35\" src=\"https://user-images.githubusercontent.com/1799914/122682192-4edaf880-d1f8-11eb-99e2-26eaf5379ae8.png\">\r\n\r\n\n", "before_files": [{"content": "\"\"\"The forms defined by the registrations package.\"\"\"\nfrom django import forms\nfrom django.core.exceptions import NON_FIELD_ERRORS, ValidationError\nfrom django.forms import TypedChoiceField\nfrom django.urls import reverse_lazy\nfrom django.utils import timezone\nfrom django.utils.safestring import mark_safe\nfrom django.utils.text import capfirst\nfrom django.utils.translation import gettext_lazy as _\n\nfrom members.models import Membership\nfrom payments.widgets import SignatureWidget\nfrom registrations import services\nfrom .models import Registration, Renewal, Reference\n\n\nclass BaseRegistrationForm(forms.ModelForm):\n    \"\"\"Base form for membership registrations.\"\"\"\n\n    birthday = forms.DateField(\n        widget=forms.widgets.SelectDateWidget(\n            years=range(timezone.now().year - 50, timezone.now().year - 10)\n        ),\n        label=capfirst(_(\"birthday\")),\n    )\n\n    privacy_policy = forms.BooleanField(required=True,)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.fields[\"privacy_policy\"].label = mark_safe(\n            _('I accept the <a href=\"{}\">privacy policy</a>.').format(\n                reverse_lazy(\"singlepages:privacy-policy\")\n            )\n        )\n\n\nclass RegistrationAdminForm(forms.ModelForm):\n    \"\"\"Custom admin form for Registration model to add the widget for the signature.\"\"\"\n\n    class Meta:\n        fields = \"__all__\"\n        model = Registration\n        widgets = {\n            \"signature\": SignatureWidget(),\n        }\n\n\nclass MemberRegistrationForm(BaseRegistrationForm):\n    \"\"\"Form for member registrations.\"\"\"\n\n    this_year = timezone.now().year\n    years = reversed(\n        [(x, \"{} - {}\".format(x, x + 1)) for x in range(this_year - 20, this_year + 1)]\n    )\n\n    starting_year = TypedChoiceField(\n        choices=years,\n        coerce=int,\n        empty_value=this_year,\n        required=False,\n        help_text=_(\"What lecture year did you start studying at Radboud University?\"),\n    )\n\n    class Meta:\n        model = Registration\n        widgets = {\n            \"signature\": SignatureWidget(),\n        }\n        fields = (\n            \"length\",\n            \"first_name\",\n            \"last_name\",\n            \"birthday\",\n            \"email\",\n            \"phone_number\",\n            \"student_number\",\n            \"programme\",\n            \"starting_year\",\n            \"address_street\",\n            \"address_street2\",\n            \"address_postal_code\",\n            \"address_city\",\n            \"address_country\",\n            \"optin_birthday\",\n            \"optin_mailinglist\",\n            \"membership_type\",\n            \"direct_debit\",\n            \"initials\",\n            \"iban\",\n            \"bic\",\n            \"signature\",\n        )\n\n\nclass BenefactorRegistrationForm(BaseRegistrationForm):\n    \"\"\"Form for benefactor registrations.\"\"\"\n\n    icis_employee = forms.BooleanField(\n        required=False, label=_(\"I am an employee of iCIS\")\n    )\n\n    class Meta:\n        model = Registration\n        widgets = {\n            \"signature\": SignatureWidget(),\n        }\n        fields = (\n            \"length\",\n            \"first_name\",\n            \"last_name\",\n            \"birthday\",\n            \"email\",\n            \"phone_number\",\n            \"student_number\",\n            \"address_street\",\n            \"address_street2\",\n            \"address_postal_code\",\n            \"address_city\",\n            \"address_country\",\n            \"optin_birthday\",\n            \"optin_mailinglist\",\n            \"contribution\",\n            \"membership_type\",\n            \"direct_debit\",\n            \"initials\",\n            \"iban\",\n            \"bic\",\n            \"signature\",\n        )\n\n\nclass RenewalForm(forms.ModelForm):\n    \"\"\"Form for membership renewals.\"\"\"\n\n    privacy_policy = forms.BooleanField(required=True,)\n\n    icis_employee = forms.BooleanField(\n        required=False, label=_(\"I am an employee of iCIS\")\n    )\n\n    contribution = forms.IntegerField(required=False,)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.fields[\"privacy_policy\"].label = mark_safe(\n            _('I accept the <a href=\"{}\">privacy policy</a>.').format(\n                reverse_lazy(\"singlepages:privacy-policy\")\n            )\n        )\n\n    class Meta:\n        model = Renewal\n        fields = (\n            \"member\",\n            \"length\",\n            \"contribution\",\n            \"membership_type\",\n            \"no_references\",\n            \"remarks\",\n        )\n\n\nclass ReferenceForm(forms.ModelForm):\n    def clean(self):\n        super().clean()\n        membership = self.cleaned_data[\"member\"].current_membership\n        if membership and membership.type == Membership.BENEFACTOR:\n            raise ValidationError(_(\"Benefactors cannot give references.\"))\n\n        membership = self.cleaned_data[\"member\"].latest_membership\n        if (\n            membership\n            and membership.until\n            and membership.until < services.calculate_membership_since()\n        ):\n            raise ValidationError(\n                _(\n                    \"It's not possible to give references for \"\n                    \"memberships that start after your own \"\n                    \"membership's end.\"\n                )\n            )\n\n    class Meta:\n        model = Reference\n        fields = \"__all__\"\n        error_messages = {\n            NON_FIELD_ERRORS: {\n                \"unique_together\": _(\n                    \"You've already given a reference for this person.\"\n                ),\n            }\n        }\n", "path": "website/registrations/forms.py"}], "after_files": [{"content": "\"\"\"The forms defined by the registrations package.\"\"\"\nfrom django import forms\nfrom django.core.exceptions import NON_FIELD_ERRORS, ValidationError\nfrom django.forms import TypedChoiceField\nfrom django.urls import reverse_lazy\nfrom django.utils import timezone\nfrom django.utils.safestring import mark_safe\nfrom django.utils.text import capfirst\nfrom django.utils.translation import gettext_lazy as _\n\nfrom members.models import Membership\nfrom payments.widgets import SignatureWidget\nfrom registrations import services\nfrom .models import Registration, Renewal, Reference\n\n\nclass BaseRegistrationForm(forms.ModelForm):\n    \"\"\"Base form for membership registrations.\"\"\"\n\n    birthday = forms.DateField(\n        widget=forms.widgets.SelectDateWidget(\n            years=range(timezone.now().year - 50, timezone.now().year - 10)\n        ),\n        label=capfirst(_(\"birthday\")),\n    )\n\n    privacy_policy = forms.BooleanField(required=True,)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.fields[\"privacy_policy\"].label = mark_safe(\n            _('I accept the <a href=\"{}\">privacy policy</a>.').format(\n                reverse_lazy(\"singlepages:privacy-policy\")\n            )\n        )\n\n\nclass RegistrationAdminForm(forms.ModelForm):\n    \"\"\"Custom admin form for Registration model to add the widget for the signature.\"\"\"\n\n    class Meta:\n        fields = \"__all__\"\n        model = Registration\n        widgets = {\n            \"signature\": SignatureWidget(),\n        }\n\n\nclass MemberRegistrationForm(BaseRegistrationForm):\n    \"\"\"Form for member registrations.\"\"\"\n\n    this_year = timezone.now().year\n    years = reversed(\n        [(x, \"{} - {}\".format(x, x + 1)) for x in range(this_year - 20, this_year + 1)]\n    )\n\n    starting_year = TypedChoiceField(\n        choices=years,\n        coerce=int,\n        empty_value=this_year,\n        required=False,\n        help_text=_(\"What lecture year did you start studying at Radboud University?\"),\n    )\n\n    class Meta:\n        model = Registration\n        widgets = {\n            \"signature\": SignatureWidget(),\n        }\n        fields = (\n            \"length\",\n            \"first_name\",\n            \"last_name\",\n            \"birthday\",\n            \"email\",\n            \"phone_number\",\n            \"student_number\",\n            \"programme\",\n            \"starting_year\",\n            \"address_street\",\n            \"address_street2\",\n            \"address_postal_code\",\n            \"address_city\",\n            \"address_country\",\n            \"optin_birthday\",\n            \"optin_mailinglist\",\n            \"membership_type\",\n            \"direct_debit\",\n            \"initials\",\n            \"iban\",\n            \"bic\",\n            \"signature\",\n        )\n\n\nclass BenefactorRegistrationForm(BaseRegistrationForm):\n    \"\"\"Form for benefactor registrations.\"\"\"\n\n    icis_employee = forms.BooleanField(\n        required=False, label=_(\"I am an employee of iCIS\")\n    )\n\n    class Meta:\n        model = Registration\n        widgets = {\n            \"signature\": SignatureWidget(),\n        }\n        fields = (\n            \"length\",\n            \"first_name\",\n            \"last_name\",\n            \"birthday\",\n            \"email\",\n            \"phone_number\",\n            \"student_number\",\n            \"address_street\",\n            \"address_street2\",\n            \"address_postal_code\",\n            \"address_city\",\n            \"address_country\",\n            \"optin_birthday\",\n            \"optin_mailinglist\",\n            \"contribution\",\n            \"membership_type\",\n            \"direct_debit\",\n            \"initials\",\n            \"iban\",\n            \"bic\",\n            \"signature\",\n        )\n\n\nclass RenewalForm(forms.ModelForm):\n    \"\"\"Form for membership renewals.\"\"\"\n\n    privacy_policy = forms.BooleanField(required=True,)\n\n    icis_employee = forms.BooleanField(\n        required=False, label=_(\"I am an employee of iCIS\")\n    )\n\n    contribution = forms.DecimalField(required=False, max_digits=5, decimal_places=2,)\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.fields[\"privacy_policy\"].label = mark_safe(\n            _('I accept the <a href=\"{}\">privacy policy</a>.').format(\n                reverse_lazy(\"singlepages:privacy-policy\")\n            )\n        )\n\n    class Meta:\n        model = Renewal\n        fields = (\n            \"member\",\n            \"length\",\n            \"contribution\",\n            \"membership_type\",\n            \"no_references\",\n            \"remarks\",\n        )\n\n\nclass ReferenceForm(forms.ModelForm):\n    def clean(self):\n        super().clean()\n        membership = self.cleaned_data[\"member\"].current_membership\n        if membership and membership.type == Membership.BENEFACTOR:\n            raise ValidationError(_(\"Benefactors cannot give references.\"))\n\n        membership = self.cleaned_data[\"member\"].latest_membership\n        if (\n            membership\n            and membership.until\n            and membership.until < services.calculate_membership_since()\n        ):\n            raise ValidationError(\n                _(\n                    \"It's not possible to give references for \"\n                    \"memberships that start after your own \"\n                    \"membership's end.\"\n                )\n            )\n\n    class Meta:\n        model = Reference\n        fields = \"__all__\"\n        error_messages = {\n            NON_FIELD_ERRORS: {\n                \"unique_together\": _(\n                    \"You've already given a reference for this person.\"\n                ),\n            }\n        }\n", "path": "website/registrations/forms.py"}]}