forked from DGNum/gestioCOF
Merge branch 'thubrecht/date-adhesion' into 'master'
Rajout de la date d'adhésion sur les profils COF Closes #303 See merge request klub-dev-ens/gestioCOF!521
This commit is contained in:
commit
094116e88d
5 changed files with 59 additions and 9 deletions
19
gestioncof/migrations/0019_cofprofile_date_adhesion.py
Normal file
19
gestioncof/migrations/0019_cofprofile_date_adhesion.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 2.2.28 on 2023-05-22 09:01
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("gestioncof", "0018_petitscours_email"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="cofprofile",
|
||||
name="date_adhesion",
|
||||
field=models.DateField(
|
||||
blank=True, null=True, verbose_name="Date d'adhésion"
|
||||
),
|
||||
),
|
||||
]
|
|
@ -50,6 +50,7 @@ class CofProfile(models.Model):
|
|||
"Login clipper", max_length=32, blank=True, unique=True, null=True
|
||||
)
|
||||
is_cof = models.BooleanField("Membre du COF", default=False)
|
||||
date_adhesion = models.DateField("Date d'adhésion", blank=True, null=True)
|
||||
phone = models.CharField("Téléphone", max_length=20, blank=True)
|
||||
occupation = models.CharField(
|
||||
_("Occupation"),
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import uuid
|
||||
from datetime import timedelta
|
||||
from datetime import date, timedelta
|
||||
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth import get_user_model
|
||||
|
@ -484,6 +484,7 @@ class ExportMembersViewTests(CSVResponseMixin, ViewTestCaseMixin, TestCase):
|
|||
u1.last_name = "last"
|
||||
u1.email = "user@mail.net"
|
||||
u1.save()
|
||||
u1.profile.date_adhesion = date(2023, 5, 22)
|
||||
u1.profile.phone = "0123456789"
|
||||
u1.profile.departement = "Dept"
|
||||
u1.profile.save()
|
||||
|
@ -505,8 +506,9 @@ class ExportMembersViewTests(CSVResponseMixin, ViewTestCaseMixin, TestCase):
|
|||
"1A",
|
||||
"Dept",
|
||||
"normalien",
|
||||
"2023-05-22",
|
||||
],
|
||||
[str(u2.pk), "staff", "", "", "", "", "1A", "", "normalien"],
|
||||
[str(u2.pk), "staff", "", "", "", "", "1A", "", "normalien", "None"],
|
||||
],
|
||||
)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import csv
|
||||
import uuid
|
||||
from datetime import timedelta
|
||||
from datetime import date, timedelta
|
||||
from smtplib import SMTPRecipientsRefused
|
||||
from urllib.parse import parse_qs, urlencode, urlparse, urlunparse
|
||||
|
||||
|
@ -86,6 +86,7 @@ class ResetComptes(BuroRequiredMixin, TemplateView):
|
|||
nb_adherents = CofProfile.objects.filter(is_cof=True).count()
|
||||
CofProfile.objects.update(
|
||||
is_cof=False,
|
||||
date_adhesion=None,
|
||||
mailing_cof=False,
|
||||
mailing_bda=False,
|
||||
mailing_bda_revente=False,
|
||||
|
@ -575,6 +576,9 @@ def registration(request):
|
|||
profile = profile_form.save()
|
||||
if profile.is_cof and not was_cof:
|
||||
notify_new_member(request, member)
|
||||
profile.date_adhesion = date.today()
|
||||
profile.save()
|
||||
|
||||
# Enregistrement des inscriptions aux événements
|
||||
for form in event_formset:
|
||||
if "status" not in form.cleaned_data:
|
||||
|
@ -715,6 +719,7 @@ def export_members(request):
|
|||
profile.occupation,
|
||||
profile.departement,
|
||||
profile.type_cotiz,
|
||||
profile.date_adhesion,
|
||||
]
|
||||
writer.writerow([str(bit) for bit in bits])
|
||||
|
||||
|
|
35
shell.nix
35
shell.nix
|
@ -1,5 +1,29 @@
|
|||
{ pkgs ? import <nixpkgs> { }, ... }:
|
||||
|
||||
let
|
||||
python = pkgs.python38;
|
||||
|
||||
django-types = python.pkgs.buildPythonPackage rec {
|
||||
pname = "django-types";
|
||||
version = "0.17.0";
|
||||
|
||||
format = "pyproject";
|
||||
|
||||
src = pkgs.fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-wcQqt4h2xXxyg0LVqwYHJas3H8jcg7uFuuC+BoRqrXA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with python.pkgs; [ poetry-core ];
|
||||
|
||||
# setup.cfg tries to pull in nonexistent LICENSE.txt file
|
||||
# postPatch = "rm setup.cfg";
|
||||
|
||||
# propagatedBuildInputs = [ django typing-extensions ];
|
||||
};
|
||||
in
|
||||
|
||||
|
||||
pkgs.mkShell {
|
||||
shellHook = ''
|
||||
export DJANGO_SETTINGS_MODULE=gestioasso.settings.local
|
||||
|
@ -10,12 +34,11 @@ pkgs.mkShell {
|
|||
pip install -r requirements-devel.txt | grep -v 'Requirement already satisfied:'
|
||||
'';
|
||||
|
||||
packages = with pkgs; [
|
||||
python38
|
||||
python38Packages.pip
|
||||
python38Packages.virtualenv
|
||||
python38Packages.python-ldap
|
||||
];
|
||||
packages = [ python django-types ] ++ (with python.pkgs; [
|
||||
pip
|
||||
virtualenv
|
||||
python-ldap
|
||||
]);
|
||||
|
||||
allowSubstitutes = false;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue