mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-10-31 15:50:03 +01:00 
			
		
		
		
	Memberships are optional for clubs
This commit is contained in:
		| @@ -5,6 +5,7 @@ | ||||
|         "fields": { | ||||
|             "name": "BDE", | ||||
|             "email": "tresorerie.bde@example.com", | ||||
|             "require_memberships":  true, | ||||
|             "membership_fee": 500, | ||||
|             "membership_duration": "396 00:00:00", | ||||
|             "membership_start": "213 00:00:00", | ||||
| @@ -17,6 +18,7 @@ | ||||
|         "fields": { | ||||
|             "name": "Kfet", | ||||
|             "email": "tresorerie.bde@example.com", | ||||
|             "require_memberships":  true, | ||||
|             "membership_fee": 3500, | ||||
|             "membership_duration": "396 00:00:00", | ||||
|             "membership_start": "213 00:00:00", | ||||
|   | ||||
| @@ -77,22 +77,34 @@ class Club(models.Model): | ||||
|     ) | ||||
|  | ||||
|     # Memberships | ||||
|  | ||||
|     # When set to False, the membership system won't be used. | ||||
|     # Useful to create notes for activities or departments. | ||||
|     require_memberships = models.BooleanField( | ||||
|         default=True, | ||||
|         verbose_name=_("require memberships"), | ||||
|     ) | ||||
|  | ||||
|     membership_fee = models.PositiveIntegerField( | ||||
|         default=0, | ||||
|         verbose_name=_('membership fee'), | ||||
|     ) | ||||
|     membership_duration = models.DurationField( | ||||
|         blank=True, | ||||
|         null=True, | ||||
|         verbose_name=_('membership duration'), | ||||
|         help_text=_('The longest time a membership can last ' | ||||
|                     '(NULL = infinite).'), | ||||
|     ) | ||||
|     membership_start = models.DurationField( | ||||
|         blank=True, | ||||
|         null=True, | ||||
|         verbose_name=_('membership start'), | ||||
|         help_text=_('How long after January 1st the members can renew ' | ||||
|                     'their membership.'), | ||||
|     ) | ||||
|     membership_end = models.DurationField( | ||||
|         blank=True, | ||||
|         null=True, | ||||
|         verbose_name=_('membership end'), | ||||
|         help_text=_('How long the membership can last after January 1st ' | ||||
| @@ -100,6 +112,15 @@ class Club(models.Model): | ||||
|                     'membership.'), | ||||
|     ) | ||||
|  | ||||
|     def save(self, force_insert=False, force_update=False, using=None, | ||||
|              update_fields=None): | ||||
|         if not self.require_memberships: | ||||
|             self.membership_fee = 0 | ||||
|             self.membership_duration = None | ||||
|             self.membership_start = None | ||||
|             self.membership_end = None | ||||
|         super().save(force_insert, force_update, update_fields) | ||||
|  | ||||
|     class Meta: | ||||
|         verbose_name = _("club") | ||||
|         verbose_name_plural = _("clubs") | ||||
|   | ||||
| @@ -842,7 +842,7 @@ | ||||
|         35, | ||||
|         36, | ||||
|         39, | ||||
|         40, | ||||
|         40 | ||||
|       ] | ||||
|     } | ||||
|   }, | ||||
|   | ||||
| @@ -9,3 +9,23 @@ | ||||
| <button class="btn btn-primary" type="submit">{% trans "Submit" %}</button> | ||||
| </form> | ||||
| {% endblock %} | ||||
|  | ||||
| {% block extrajavascript %} | ||||
|     <script> | ||||
|         require_memberships_obj = $("#id_require_memberships"); | ||||
|  | ||||
|         if (!require_memberships_obj.is(":checked")) { | ||||
|             $("#div_id_membership_fee").toggle(); | ||||
|             $("#div_id_membership_duration").toggle(); | ||||
|             $("#div_id_membership_start").toggle(); | ||||
|             $("#div_id_membership_end").toggle(); | ||||
|         } | ||||
|  | ||||
|         require_memberships_obj.change(function () { | ||||
|             $("#div_id_membership_fee").toggle(); | ||||
|             $("#div_id_membership_duration").toggle(); | ||||
|             $("#div_id_membership_start").toggle(); | ||||
|             $("#div_id_membership_end").toggle(); | ||||
|         }); | ||||
|     </script> | ||||
| {% endblock %} | ||||
|   | ||||
| @@ -18,26 +18,25 @@ | ||||
|                 <dd class="col-xl-6"> {{ club.parent_club.name}}</dd> | ||||
|             {% endif %} | ||||
|  | ||||
|             <dt class="col-xl-6">{% trans 'membership start'|capfirst %}</dt> | ||||
|             <dd class="col-xl-6">{{ club.membership_start }}</dd> | ||||
|             {% if club.require_memberships %} | ||||
|                 <dt class="col-xl-6">{% trans 'membership start'|capfirst %}</dt> | ||||
|                 <dd class="col-xl-6">{{ club.membership_start }}</dd> | ||||
|  | ||||
|             <dt class="col-xl-6">{% trans 'membership end'|capfirst %}</dt> | ||||
|             <dd class="col-xl-6">{{ club.membership_end }}</dd> | ||||
|                 <dt class="col-xl-6">{% trans 'membership end'|capfirst %}</dt> | ||||
|                 <dd class="col-xl-6">{{ club.membership_end }}</dd> | ||||
|  | ||||
|             <dt class="col-xl-6">{% trans 'membership duration'|capfirst %}</dt> | ||||
|             <dd class="col-xl-6">{{ club.membership_duration }}</dd> | ||||
|                 <dt class="col-xl-6">{% trans 'membership duration'|capfirst %}</dt> | ||||
|                 <dd class="col-xl-6">{{ club.membership_duration }}</dd> | ||||
|  | ||||
|             <dt class="col-xl-6">{% trans 'membership fee'|capfirst %}</dt> | ||||
|             <dd class="col-xl-6">{{ club.membership_fee|pretty_money }}</dd> | ||||
|                 <dt class="col-xl-6">{% trans 'membership fee'|capfirst %}</dt> | ||||
|                 <dd class="col-xl-6">{{ club.membership_fee|pretty_money }}</dd> | ||||
|             {% endif %} | ||||
|              | ||||
|             <dt class="col-xl-6"><a href="{% url 'member:club_alias' club.pk %}">{% trans 'aliases'|capfirst %}</a></dt> | ||||
|             <dd class="col-xl-6 text-truncate">{{ object.note.alias_set.all|join:", " }}</dd> | ||||
|  | ||||
|             <dt class="col-xl-3">{% trans 'email'|capfirst %}</dt> | ||||
|             <dd class="col-xl-9"><a href="mailto:{{ club.email }}">{{ club.email }}</a></dd> | ||||
|  | ||||
|             <dt class="col-xl-6"><a href="{% url 'member:club_linked_note_list' pk=club.pk %}">{% trans 'linked notes'|capfirst %}</a></dt> | ||||
|             <dd class="col-xl-6 text-truncate">{{ club.linked_notes.all|join:", " }}</dd> | ||||
|         </dl> | ||||
|     </div> | ||||
|     <div class="card-footer text-center"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user