diff --git a/apps/activity/forms.py b/apps/activity/forms.py
index 70ff57f3..cf9bc3fc 100644
--- a/apps/activity/forms.py
+++ b/apps/activity/forms.py
@@ -2,6 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
from datetime import timedelta
+from random import shuffle
from django import forms
from django.contrib.contenttypes.models import ContentType
@@ -10,11 +11,23 @@ from django.utils.translation import gettext_lazy as _
from member.models import Club
from note.models import Note, NoteUser
from note_kfet.inputs import Autocomplete, DateTimePickerInput
+from note_kfet.middlewares import get_current_authenticated_user
+from permission.backends import PermissionBackend
from .models import Activity, Guest
class ActivityForm(forms.ModelForm):
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ # By default, the Kfet club is attended
+ self.fields["attendees_club"].initial = Club.objects.get(name="Kfet")
+ self.fields["attendees_club"].widget.attrs["placeholder"] = "Kfet"
+ clubs = list(Club.objects.filter(PermissionBackend
+ .filter_queryset(get_current_authenticated_user(), Club, "view")).all())
+ shuffle(clubs)
+ self.fields["organizer"].widget.attrs["placeholder"] = ", ".join(club.name for club in clubs[:4]) + ", ..."
+
def clean_date_end(self):
date_end = self.cleaned_data["date_end"]
date_start = self.cleaned_data["date_start"]
diff --git a/apps/activity/models.py b/apps/activity/models.py
index 19197559..131cd725 100644
--- a/apps/activity/models.py
+++ b/apps/activity/models.py
@@ -72,6 +72,7 @@ class Activity(models.Model):
max_length=255,
blank=True,
default="",
+ help_text=_("Place where the activity is organized, eg. Kfet."),
)
activity_type = models.ForeignKey(
@@ -92,6 +93,7 @@ class Activity(models.Model):
on_delete=models.PROTECT,
related_name='+',
verbose_name=_('organizer'),
+ help_text=_("Club that organizes the activity. The entry fees will go to this club."),
)
attendees_club = models.ForeignKey(
@@ -99,6 +101,7 @@ class Activity(models.Model):
on_delete=models.PROTECT,
related_name='+',
verbose_name=_('attendees club'),
+ help_text=_("Club that is authorized to join the activity. Mostly the Kfet club."),
)
date_start = models.DateTimeField(
diff --git a/apps/activity/templates/activity/includes/activity_info.html b/apps/activity/templates/activity/includes/activity_info.html
index f4723159..a16ad33b 100644
--- a/apps/activity/templates/activity/includes/activity_info.html
+++ b/apps/activity/templates/activity/includes/activity_info.html
@@ -17,7 +17,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
- {% trans 'description'|capfirst %}
- - {{ activity.description }}
+ - {{ activity.description|linebreaks }}
- {% trans 'type'|capfirst %}
- {{ activity.activity_type }}
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index 1151bb86..783db5fd 100644
--- a/locale/de/LC_MESSAGES/django.po
+++ b/locale/de/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-30 23:24+0200\n"
+"POT-Creation-Date: 2020-08-31 00:13+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,32 +18,32 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: apps/activity/apps.py:10 apps/activity/models.py:142
-#: apps/activity/models.py:158
+#: apps/activity/apps.py:10 apps/activity/models.py:145
+#: apps/activity/models.py:161
msgid "activity"
msgstr ""
-#: apps/activity/forms.py:22 apps/activity/models.py:127
+#: apps/activity/forms.py:35 apps/activity/models.py:130
msgid "The end date must be after the start date."
msgstr ""
-#: apps/activity/forms.py:63 apps/activity/models.py:254
+#: apps/activity/forms.py:76 apps/activity/models.py:257
msgid "You can't invite someone once the activity is started."
msgstr ""
-#: apps/activity/forms.py:66 apps/activity/models.py:257
+#: apps/activity/forms.py:79 apps/activity/models.py:260
msgid "This activity is not validated yet."
msgstr ""
-#: apps/activity/forms.py:76 apps/activity/models.py:265
+#: apps/activity/forms.py:89 apps/activity/models.py:268
msgid "This person has been already invited 5 times this year."
msgstr ""
-#: apps/activity/forms.py:80 apps/activity/models.py:269
+#: apps/activity/forms.py:93 apps/activity/models.py:272
msgid "This person is already invited."
msgstr ""
-#: apps/activity/forms.py:84 apps/activity/models.py:273
+#: apps/activity/forms.py:97 apps/activity/models.py:276
msgid "You can't invite more than 3 people to this activity."
msgstr ""
@@ -98,110 +98,122 @@ msgstr ""
msgid "location"
msgstr ""
-#: apps/activity/models.py:81
+#: apps/activity/models.py:75
+msgid "Place where the activity is organized, eg. Kfet."
+msgstr ""
+
+#: apps/activity/models.py:82
#: apps/activity/templates/activity/includes/activity_info.html:22
#: apps/note/models/notes.py:188 apps/note/models/transactions.py:66
#: apps/permission/models.py:164
msgid "type"
msgstr ""
-#: apps/activity/models.py:87 apps/logs/models.py:22 apps/member/models.py:303
+#: apps/activity/models.py:88 apps/logs/models.py:22 apps/member/models.py:303
#: apps/note/models/notes.py:126 apps/treasury/models.py:267
#: apps/treasury/templates/treasury/sogecredit_detail.html:15
#: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:12
msgid "user"
msgstr ""
-#: apps/activity/models.py:94
+#: apps/activity/models.py:95
#: apps/activity/templates/activity/includes/activity_info.html:36
msgid "organizer"
msgstr ""
-#: apps/activity/models.py:101
+#: apps/activity/models.py:96
+msgid "Club that organizes the activity. The entry fees will go to this club."
+msgstr ""
+
+#: apps/activity/models.py:103
#: apps/activity/templates/activity/includes/activity_info.html:39
msgid "attendees club"
msgstr ""
-#: apps/activity/models.py:105
+#: apps/activity/models.py:104
+msgid "Club that is authorized to join the activity. Mostly the Kfet club."
+msgstr ""
+
+#: apps/activity/models.py:108
#: apps/activity/templates/activity/includes/activity_info.html:25
msgid "start date"
msgstr ""
-#: apps/activity/models.py:109
+#: apps/activity/models.py:112
#: apps/activity/templates/activity/includes/activity_info.html:28
msgid "end date"
msgstr ""
-#: apps/activity/models.py:114
+#: apps/activity/models.py:117
#: apps/activity/templates/activity/includes/activity_info.html:50
#: apps/note/models/transactions.py:146
msgid "valid"
msgstr ""
-#: apps/activity/models.py:119
+#: apps/activity/models.py:122
#: apps/activity/templates/activity/includes/activity_info.html:65
msgid "open"
msgstr ""
-#: apps/activity/models.py:143
+#: apps/activity/models.py:146
msgid "activities"
msgstr ""
-#: apps/activity/models.py:163
+#: apps/activity/models.py:166
msgid "entry time"
msgstr ""
-#: apps/activity/models.py:169 apps/note/apps.py:14
+#: apps/activity/models.py:172 apps/note/apps.py:14
#: apps/note/models/notes.py:60
msgid "note"
msgstr ""
-#: apps/activity/models.py:180
+#: apps/activity/models.py:183
#: apps/activity/templates/activity/activity_entry.html:42
msgid "entry"
msgstr ""
-#: apps/activity/models.py:181
+#: apps/activity/models.py:184
#: apps/activity/templates/activity/activity_entry.html:42
msgid "entries"
msgstr ""
-#: apps/activity/models.py:187
+#: apps/activity/models.py:190
msgid "Already entered on "
msgstr ""
-#: apps/activity/models.py:187 apps/activity/tables.py:59
+#: apps/activity/models.py:190 apps/activity/tables.py:54
msgid "{:%Y-%m-%d %H:%M:%S}"
msgstr ""
-#: apps/activity/models.py:195
+#: apps/activity/models.py:198
msgid "The balance is negative."
msgstr ""
-#: apps/activity/models.py:225
+#: apps/activity/models.py:228
msgid "last name"
msgstr ""
-#: apps/activity/models.py:230
+#: apps/activity/models.py:233
#: apps/member/templates/member/includes/profile_info.html:4
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/templates/wei/weimembership_form.html:14
msgid "first name"
msgstr ""
-#: apps/activity/models.py:237
+#: apps/activity/models.py:240
msgid "inviter"
msgstr ""
-#: apps/activity/models.py:281
+#: apps/activity/models.py:284
msgid "guest"
msgstr ""
-#: apps/activity/models.py:282
+#: apps/activity/models.py:285
msgid "guests"
msgstr ""
-#: apps/activity/models.py:294
+#: apps/activity/models.py:297
msgid "Invitation"
msgstr ""
@@ -213,36 +225,40 @@ msgstr ""
msgid "The validation of the activity is pending."
msgstr ""
-#: apps/activity/tables.py:59
+#: apps/activity/tables.py:41 apps/treasury/tables.py:107
+msgid "Remove"
+msgstr ""
+
+#: apps/activity/tables.py:54
msgid "Entered on "
msgstr ""
-#: apps/activity/tables.py:60
+#: apps/activity/tables.py:56
msgid "remove"
msgstr ""
-#: apps/activity/tables.py:84 apps/note/forms.py:66 apps/treasury/models.py:186
+#: apps/activity/tables.py:80 apps/note/forms.py:66 apps/treasury/models.py:186
msgid "Type"
msgstr ""
-#: apps/activity/tables.py:86 apps/member/forms.py:131
+#: apps/activity/tables.py:82 apps/member/forms.py:131
#: apps/registration/forms.py:81 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:96
msgid "Last name"
msgstr ""
-#: apps/activity/tables.py:88 apps/member/forms.py:136
+#: apps/activity/tables.py:84 apps/member/forms.py:136
#: apps/note/templates/note/transaction_form.html:135
#: apps/registration/forms.py:86 apps/treasury/forms.py:137
#: apps/wei/forms/registration.py:101
msgid "First name"
msgstr ""
-#: apps/activity/tables.py:90 apps/note/models/notes.py:69
+#: apps/activity/tables.py:86 apps/note/models/notes.py:69
msgid "Note"
msgstr ""
-#: apps/activity/tables.py:92 apps/member/tables.py:46
+#: apps/activity/tables.py:88 apps/member/tables.py:46
msgid "Balance"
msgstr ""
@@ -1945,10 +1961,6 @@ msgstr ""
msgid "View"
msgstr ""
-#: apps/treasury/tables.py:107
-msgid "Remove"
-msgstr ""
-
#: apps/treasury/tables.py:146
msgid "Yes"
msgstr ""
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index d27485a3..c031e1d1 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-30 23:24+0200\n"
+"POT-Creation-Date: 2020-08-31 00:13+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,33 +18,33 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: apps/activity/apps.py:10 apps/activity/models.py:142
-#: apps/activity/models.py:158
+#: apps/activity/apps.py:10 apps/activity/models.py:145
+#: apps/activity/models.py:161
msgid "activity"
msgstr "activité"
-#: apps/activity/forms.py:22 apps/activity/models.py:127
+#: apps/activity/forms.py:35 apps/activity/models.py:130
msgid "The end date must be after the start date."
msgstr "La date de fin doit être après celle de début."
-#: apps/activity/forms.py:63 apps/activity/models.py:254
+#: apps/activity/forms.py:76 apps/activity/models.py:257
msgid "You can't invite someone once the activity is started."
msgstr ""
"Vous ne pouvez pas inviter quelqu'un une fois que l'activité a démarré."
-#: apps/activity/forms.py:66 apps/activity/models.py:257
+#: apps/activity/forms.py:79 apps/activity/models.py:260
msgid "This activity is not validated yet."
msgstr "Cette activité n'est pas encore validée."
-#: apps/activity/forms.py:76 apps/activity/models.py:265
+#: apps/activity/forms.py:89 apps/activity/models.py:268
msgid "This person has been already invited 5 times this year."
msgstr "Cette personne a déjà été invitée 5 fois cette année."
-#: apps/activity/forms.py:80 apps/activity/models.py:269
+#: apps/activity/forms.py:93 apps/activity/models.py:272
msgid "This person is already invited."
msgstr "Cette personne est déjà invitée."
-#: apps/activity/forms.py:84 apps/activity/models.py:273
+#: apps/activity/forms.py:97 apps/activity/models.py:276
msgid "You can't invite more than 3 people to this activity."
msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
@@ -99,110 +99,122 @@ msgstr "description"
msgid "location"
msgstr "lieu"
-#: apps/activity/models.py:81
+#: apps/activity/models.py:75
+msgid "Place where the activity is organized, eg. Kfet."
+msgstr "Lieu où l'activité est organisée, par exemple la Kfet."
+
+#: apps/activity/models.py:82
#: apps/activity/templates/activity/includes/activity_info.html:22
#: apps/note/models/notes.py:188 apps/note/models/transactions.py:66
#: apps/permission/models.py:164
msgid "type"
msgstr "type"
-#: apps/activity/models.py:87 apps/logs/models.py:22 apps/member/models.py:303
+#: apps/activity/models.py:88 apps/logs/models.py:22 apps/member/models.py:303
#: apps/note/models/notes.py:126 apps/treasury/models.py:267
#: apps/treasury/templates/treasury/sogecredit_detail.html:15
#: apps/wei/models.py:160 apps/wei/templates/wei/survey.html:12
msgid "user"
msgstr "utilisateur"
-#: apps/activity/models.py:94
+#: apps/activity/models.py:95
#: apps/activity/templates/activity/includes/activity_info.html:36
msgid "organizer"
msgstr "organisateur"
-#: apps/activity/models.py:101
+#: apps/activity/models.py:96
+msgid "Club that organizes the activity. The entry fees will go to this club."
+msgstr "Le club qui organise l'activité. Les coûts d'invitation iront pour ce club."
+
+#: apps/activity/models.py:103
#: apps/activity/templates/activity/includes/activity_info.html:39
msgid "attendees club"
msgstr "club attendu"
-#: apps/activity/models.py:105
+#: apps/activity/models.py:104
+msgid "Club that is authorized to join the activity. Mostly the Kfet club."
+msgstr "Club qui est autorisé à rejoindre l'activité. Très souvent le club Kfet."
+
+#: apps/activity/models.py:108
#: apps/activity/templates/activity/includes/activity_info.html:25
msgid "start date"
msgstr "date de début"
-#: apps/activity/models.py:109
+#: apps/activity/models.py:112
#: apps/activity/templates/activity/includes/activity_info.html:28
msgid "end date"
msgstr "date de fin"
-#: apps/activity/models.py:114
+#: apps/activity/models.py:117
#: apps/activity/templates/activity/includes/activity_info.html:50
#: apps/note/models/transactions.py:146
msgid "valid"
msgstr "valide"
-#: apps/activity/models.py:119
+#: apps/activity/models.py:122
#: apps/activity/templates/activity/includes/activity_info.html:65
msgid "open"
msgstr "ouvrir"
-#: apps/activity/models.py:143
+#: apps/activity/models.py:146
msgid "activities"
msgstr "activités"
-#: apps/activity/models.py:163
+#: apps/activity/models.py:166
msgid "entry time"
msgstr "heure d'entrée"
-#: apps/activity/models.py:169 apps/note/apps.py:14
+#: apps/activity/models.py:172 apps/note/apps.py:14
#: apps/note/models/notes.py:60
msgid "note"
msgstr "note"
-#: apps/activity/models.py:180
+#: apps/activity/models.py:183
#: apps/activity/templates/activity/activity_entry.html:42
msgid "entry"
msgstr "entrée"
-#: apps/activity/models.py:181
+#: apps/activity/models.py:184
#: apps/activity/templates/activity/activity_entry.html:42
msgid "entries"
msgstr "entrées"
-#: apps/activity/models.py:187
+#: apps/activity/models.py:190
msgid "Already entered on "
msgstr "Déjà rentré le "
-#: apps/activity/models.py:187 apps/activity/tables.py:59
+#: apps/activity/models.py:190 apps/activity/tables.py:54
msgid "{:%Y-%m-%d %H:%M:%S}"
msgstr "{:%d/%m/%Y %H:%M:%S}"
-#: apps/activity/models.py:195
+#: apps/activity/models.py:198
msgid "The balance is negative."
msgstr "La note est en négatif."
-#: apps/activity/models.py:225
+#: apps/activity/models.py:228
msgid "last name"
msgstr "nom de famille"
-#: apps/activity/models.py:230
+#: apps/activity/models.py:233
#: apps/member/templates/member/includes/profile_info.html:4
#: apps/registration/templates/registration/future_profile_detail.html:16
#: apps/wei/templates/wei/weimembership_form.html:14
msgid "first name"
msgstr "prénom"
-#: apps/activity/models.py:237
+#: apps/activity/models.py:240
msgid "inviter"
msgstr "hôte"
-#: apps/activity/models.py:281
+#: apps/activity/models.py:284
msgid "guest"
msgstr "invité"
-#: apps/activity/models.py:282
+#: apps/activity/models.py:285
msgid "guests"
msgstr "invités"
-#: apps/activity/models.py:294
+#: apps/activity/models.py:297
msgid "Invitation"
msgstr "Invitation"
@@ -214,36 +226,40 @@ msgstr "Cette activité est actuellement ouverte."
msgid "The validation of the activity is pending."
msgstr "La validation de cette activité est en attente."
-#: apps/activity/tables.py:59
+#: apps/activity/tables.py:41 apps/treasury/tables.py:107
+msgid "Remove"
+msgstr "Supprimer"
+
+#: apps/activity/tables.py:54
msgid "Entered on "
msgstr "Entré le "
-#: apps/activity/tables.py:60
+#: apps/activity/tables.py:56
msgid "remove"
msgstr "supprimer"
-#: apps/activity/tables.py:84 apps/note/forms.py:66 apps/treasury/models.py:186
+#: apps/activity/tables.py:80 apps/note/forms.py:66 apps/treasury/models.py:186
msgid "Type"
msgstr "Type"
-#: apps/activity/tables.py:86 apps/member/forms.py:131
+#: apps/activity/tables.py:82 apps/member/forms.py:131
#: apps/registration/forms.py:81 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:96
msgid "Last name"
msgstr "Nom de famille"
-#: apps/activity/tables.py:88 apps/member/forms.py:136
+#: apps/activity/tables.py:84 apps/member/forms.py:136
#: apps/note/templates/note/transaction_form.html:135
#: apps/registration/forms.py:86 apps/treasury/forms.py:137
#: apps/wei/forms/registration.py:101
msgid "First name"
msgstr "Prénom"
-#: apps/activity/tables.py:90 apps/note/models/notes.py:69
+#: apps/activity/tables.py:86 apps/note/models/notes.py:69
msgid "Note"
msgstr "Note"
-#: apps/activity/tables.py:92 apps/member/tables.py:46
+#: apps/activity/tables.py:88 apps/member/tables.py:46
msgid "Balance"
msgstr "Solde du compte"
@@ -2010,10 +2026,6 @@ msgstr "Nombre de transactions"
msgid "View"
msgstr "Voir"
-#: apps/treasury/tables.py:107
-msgid "Remove"
-msgstr "Supprimer"
-
#: apps/treasury/tables.py:146
msgid "Yes"
msgstr "Oui"