#50 Permettre au contributeur de prolonger/supprimer sa contribution

Merged
jocelyn merged 13 commits from FFDN/jd-contribution-manage-link into FFDN/master 7 years ago
jocelyn commented 7 years ago

À la soumission d'une contribution :

  • on gère une date de péremption sur chaque contrib
  • on affiche un lien secret permettant à l'utilisateur de gérer lui-même sa contrib :
    • prolonger sa demande d'un an
    • supprimer sa demande
  • on lui envoie un mail de confirmation (si mail fourni) avec le lien secret (cf aussi #45)

Grosse étape pour #27, donc, mais attention, cette PR Ne gère pas la suppression automatique au bout d'un an. Déployer le code en l'état sans dispositif de suppression automatique reste donc mensonger.

À la soumission d'une contribution : - on gère une date de péremption sur chaque contrib - on affiche un lien secret permettant à l'utilisateur de gérer lui-même sa contrib : - prolonger sa demande d'un an - supprimer sa demande - on lui envoie un mail de confirmation (si mail fourni) avec le lien secret (cf aussi #45) Grosse étape pour #27, donc, mais attention, cette PR **Ne gère pas** la suppression automatique au bout d'un an. Déployer le code en l'état sans dispositif de suppression automatique reste donc mensonger.
jocelyn commented 7 years ago
Owner

Tests, relectures et retours plus que bienvenus :-)

Tests, relectures et retours plus que bienvenus :-)
vross commented 7 years ago

Premier test :

sur ma machine, j'ai un problème d'encodage qui survient quand je soumets une nouvelle demande de connexion : The string that could not be encoded/decoded was: > Chèr·e a

Traceback:

File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in get_response
  149.                     response = self.process_exception_by_middleware(e, request)

File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in get_response
  147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "[...]/wifi-with-me/wifiwithme/apps/contribmap/decorators.py" in _wrapped_func
  19.             return func(request, *args, **kwargs)

File "[...]/wifi-with-me/wifiwithme/apps/contribmap/views.py" in add_contrib
  66.                     [contrib.email],

File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/mail/__init__.py" in send_mail
  61.     return mail.send()

File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/mail/message.py" in send
  292.         return self.get_connection(fail_silently).send_messages([self])

File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/mail/backends/console.py" in send_messages
  36.                     self.write_message(message)

File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/mail/backends/console.py" in write_message
  23.         self.stream.write('%s\n' % msg_data)

mais en bidouillant mes locales pour avoir de l'UTF-8, ça se passe mieux.

Premier test : sur ma machine, j'ai un problème d'encodage qui survient quand je soumets une nouvelle demande de connexion : `The string that could not be encoded/decoded was: > Chèr·e a` Traceback: ``` File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in get_response 149. response = self.process_exception_by_middleware(e, request) File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in get_response 147. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "[...]/wifi-with-me/wifiwithme/apps/contribmap/decorators.py" in _wrapped_func 19. return func(request, *args, **kwargs) File "[...]/wifi-with-me/wifiwithme/apps/contribmap/views.py" in add_contrib 66. [contrib.email], File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/mail/__init__.py" in send_mail 61. return mail.send() File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/mail/message.py" in send 292. return self.get_connection(fail_silently).send_messages([self]) File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/mail/backends/console.py" in send_messages 36. self.write_message(message) File "[...]/wifi-with-me/venv/lib/python3.6/site-packages/django/core/mail/backends/console.py" in write_message 23. self.stream.write('%s\n' % msg_data) ``` mais en bidouillant mes locales pour avoir de l'UTF-8, ça se passe mieux.
jocelyn commented 7 years ago
Owner

@vross merci pour le test ! Tu bidouilles quoi exactement pour que ça aille mieux ?

@vross merci pour le test ! Tu bidouilles quoi exactement pour que ça aille mieux ?
vross commented 7 years ago

J'ai tenté un :

export PYTHONIOENCODING=utf-8

hasardeux qui a bien fonctionné, mais sinon, un simple :

export LC_ALL=en_US.UTF-8

semble marcher aussi :)

J'ai tenté un : ```export PYTHONIOENCODING=utf-8``` hasardeux qui a bien fonctionné, mais sinon, un simple : ```export LC_ALL=en_US.UTF-8``` semble marcher aussi :)
jocelyn commented 7 years ago
Owner

export LC_ALL=en_US.UTF-8

semble marcher aussi :)

C'est marrant ça ; la locale de ton système ne semble pas en UTF-8, avant que tu tripotes ces variables pour contourner le bug, ça dit quoi

env|grep -P '^(LC_|LANG)'

?

Tu es bien en python 3 ? Ça m'intrigue :-).

> export LC_ALL=en_US.UTF-8 > > semble marcher aussi :) C'est marrant ça ; la locale de ton système ne semble pas en UTF-8, avant que tu tripotes ces variables pour contourner le bug, ça dit quoi env|grep -P '^(LC_|LANG)' ? Tu es bien en python 3 ? Ça m'intrigue :-).
vross commented 7 years ago

Ouais, je suis en python 3. Et ça donne : LANG=C (les autres locales LC_... sont pas définies). :p

(Je sais que mon système est pas (bien) configuré à ce niveau-là, j'ai dû zapper un truc à l'install' de mon OS, mais je me disais que tant qu'à avoir ce soucis, et comme ça pourrait affecter d'autres gens, autant le faire remonter. :) )

Ouais, je suis en python 3. Et ça donne : `LANG=C` (les autres locales `LC_...` sont pas définies). :p (Je sais que mon système est pas (bien) configuré à ce niveau-là, j'ai dû zapper un truc à l'install' de mon OS, mais je me disais que tant qu'à avoir ce soucis, et comme ça pourrait affecter d'autres gens, autant le faire remonter. :) )
jocelyn commented 7 years ago
Owner

@vross tu es sous une distro linux ?

@vross tu es sous une distro linux ?
jocelyn commented 7 years ago
Owner

(Je sais que mon système est pas (bien) configuré à ce niveau-là, j'ai dû zapper un truc à l'install' de mon OS, mais je me disais que tant qu'à avoir ce soucis, et comme ça pourrait affecter d'autres gens, autant le faire remonter. :) )

J'avais pas lu la fin de ton message, pardon. Bon, si ta console ne supporte pas l'UTF-8 en 2017, je ne sais pas si j'ai envie de m'embêter à gérer ce cas là :-).

Au cas où tu sois sous une debian-like, dpkg-reconfigure locales t'aidera peut-être à trouver une solution.

> (Je sais que mon système est pas (bien) configuré à ce niveau-là, j'ai dû zapper un truc à l'install' de mon OS, mais je me disais que tant qu'à avoir ce soucis, et comme ça pourrait affecter d'autres gens, autant le faire remonter. :) ) J'avais pas lu la fin de ton message, pardon. Bon, si ta console ne supporte pas l'UTF-8 en 2017, je ne sais pas si j'ai envie de m'embêter à gérer ce cas là :-). Au cas où tu sois sous une debian-like, `dpkg-reconfigure locales` t'aidera peut-être à trouver une solution.
jocelyn commented 7 years ago
Owner

@vross bump : et à part que ta distro est en vrac :p que donnent tes tests ?

@vross bump : et à part que ta distro est en vrac :p que donnent tes tests ?
vross commented 7 years ago

@jocelyn: désolé pour le retard de réponse, tu fais bien de me relancer !

Pour la partie tests : quand j'ai essayé de créer une demande de connexion, puis de changer la date d'expiration, ç'a fonctionné correctement (sauf que j'ai pas de serveur mail sur ma machine de test).

Je ne suis pas familier avec Django, mais j'ai lu le code et à première vue, ça me paraît bien. :)

Même si c'est peut-être pas le coeur du sujet, j'avais quelques remarques sur la formulation :

  • je trouve que c'est pas clair de signer "wifi-with-me" le mail pour la personne qui demande une connexion, donc je voudrais tester et proposer un p'tit patch écrit à l'arrache tout à l'heure pour que le nom du FAI apparaisse + peut-être clarifier une tournure de phrase pour préciser qu'il faut conserver le lien pour l'utiliser ultérieurement dans wifiwithme/apps/contribmap/templates/contribmap/thanks.html
  • pour être tatillon : on passe du tutoiement (dans le mail) au vouvoiement (côté web)

PS : elle est très bien ma distro :p

@jocelyn: désolé pour le retard de réponse, tu fais bien de me relancer ! Pour la partie tests : quand j'ai essayé de créer une demande de connexion, puis de changer la date d'expiration, ç'a fonctionné correctement (sauf que j'ai pas de serveur mail sur ma machine de test). Je ne suis pas familier avec Django, mais j'ai lu le code et à première vue, ça me paraît bien. :) Même si c'est peut-être pas le coeur du sujet, j'avais quelques remarques sur la formulation : * je trouve que c'est pas clair de signer "wifi-with-me" le mail pour la personne qui demande une connexion, donc je voudrais tester et proposer un p'tit patch écrit à l'arrache tout à l'heure pour que le nom du FAI apparaisse + peut-être clarifier une tournure de phrase pour préciser qu'il faut conserver le lien pour l'utiliser ultérieurement dans `wifiwithme/apps/contribmap/templates/contribmap/thanks.html` * pour être tatillon : on passe du tutoiement (dans le mail) au vouvoiement (côté web) PS : elle est très bien ma distro :p
jocelyn commented 7 years ago
Owner

Merci pour le retour :-)

Pour la partie tests : quand j'ai essayé de créer une demande de connexion, puis de changer la date d'expiration, ç'a fonctionné correctement (sauf que j'ai pas de serveur mail sur ma machine de test).

Normalement si tu utilises les paramètres par défaut

Je ne suis pas familier avec Django, mais j'ai lu le code et à première vue, ça me paraît bien. :)

Même si c'est peut-être pas le coeur du sujet, j'avais quelques remarques sur la formulation :

je trouve que c'est pas clair de signer "wifi-with-me" le mail pour la personne qui demande une connexion, donc je voudrais tester et proposer un p'tit patch écrit à l'arrache tout à l'heure pour que le nom du FAI apparaisse + peut-être clarifier une tournure de phrase pour préciser qu'il faut conserver le lien pour l'utiliser ultérieurement dans wifiwithme/apps/contribmap/templates/contribmap/thanks.html
pour être tatillon : on passe du tutoiement (dans le mail) au vouvoiement (côté web)

PS : elle est très bien ma distro :p

Merci pour le retour :-) > Pour la partie tests : quand j'ai essayé de créer une demande de connexion, puis de changer la date d'expiration, ç'a fonctionné correctement (sauf que j'ai pas de serveur mail sur ma machine de test). Normalement si tu utilises les paramètres par défaut > Je ne suis pas familier avec Django, mais j'ai lu le code et à première vue, ça me paraît bien. :) Même si c'est peut-être pas le coeur du sujet, j'avais quelques remarques sur la formulation : je trouve que c'est pas clair de signer "wifi-with-me" le mail pour la personne qui demande une connexion, donc je voudrais tester et proposer un p'tit patch écrit à l'arrache tout à l'heure pour que le nom du FAI apparaisse + peut-être clarifier une tournure de phrase pour préciser qu'il faut conserver le lien pour l'utiliser ultérieurement dans wifiwithme/apps/contribmap/templates/contribmap/thanks.html pour être tatillon : on passe du tutoiement (dans le mail) au vouvoiement (côté web) PS : elle est très bien ma distro :p
jocelyn commented 7 years ago
Owner

Merci pour le retour :-)

Pour la partie tests : quand j'ai essayé de créer une demande de connexion, puis de changer la date d'expiration, ç'a fonctionné correctement (sauf que j'ai pas de serveur mail sur ma machine de test).

Normalement si tu utilises les paramètres par défaut avec le serveur de développement (./manage.py runserver), tu devrais voir les mails s'afficher dans la console du runserver (c'est défini ici). Tu confirmes ?

Je ne suis pas familier avec Django, mais j'ai lu le code et à première vue, ça me paraît bien. :)

Ok, cool :)

Même si c'est peut-être pas le coeur du sujet, j'avais quelques remarques sur la formulation :

Sisi, c'est tout à fait important. Si les gens ne comprennent rien aux interfaces c'est pas la peine de faire des interfaces :-)

je trouve que c'est pas clair de signer "wifi-with-me" le mail pour la personne qui demande une connexion

C'est vrai ça. Merci de me relever le nez du guidon.

  • peut-être clarifier une tournure de phrase pour préciser qu'il faut conserver le lien pour l'utiliser ultérieurement dans wifiwithme/apps/contribmap/templates/contribmap/thanks.html

tout à fait d'accord

donc je voudrais tester et proposer un p'tit patch écrit à l'arrache tout à l'heure pour que le nom du FAI apparaisse

pour être tatillon : on passe du tutoiement (dans le mail) au vouvoiement (côté web)

Ah oui, vrai… Ben pour être cohérent avec ce qui existe, on pourrait vouvoyer dans le mail, du coup.

(par contre à terme, pour ma part, je préfèrerais qu'on tutoie partout. Mais chaque chose en son temps)

donc je voudrais tester et proposer un p'tit patch écrit à l'arrache tout à l'heure pour que le nom du FAI apparaisse

OK, j'attends ton patch :-) (tu dois pouvoir faire une PR vers ma branche).

Ciao,

Jocelyn

Merci pour le retour :-) > Pour la partie tests : quand j'ai essayé de créer une demande de connexion, puis de changer la date d'expiration, ç'a fonctionné correctement (sauf que j'ai pas de serveur mail sur ma machine de test). Normalement si tu utilises les paramètres par défaut avec le serveur de développement (`./manage.py runserver`), tu devrais voir les mails s'afficher dans la console du runserver (c'est défini [ici](https://code.ffdn.org/FFDN/wifi-with-me/src/master/wifiwithme/settings/dev.py#L17)). Tu confirmes ? > Je ne suis pas familier avec Django, mais j'ai lu le code et à première vue, ça me paraît bien. :) Ok, cool :) > Même si c'est peut-être pas le coeur du sujet, j'avais quelques remarques sur la formulation : Sisi, c'est tout à fait important. Si les gens ne comprennent rien aux interfaces c'est pas la peine de faire des interfaces :-) > je trouve que c'est pas clair de signer "wifi-with-me" le mail pour la personne qui demande une connexion C'est vrai ça. Merci de me relever le nez du guidon. > + peut-être clarifier une tournure de phrase pour préciser qu'il faut conserver le lien pour l'utiliser ultérieurement dans wifiwithme/apps/contribmap/templates/contribmap/thanks.html tout à fait d'accord > donc je voudrais tester et proposer un p'tit patch écrit à l'arrache tout à l'heure pour que le nom du FAI apparaisse > pour être tatillon : on passe du tutoiement (dans le mail) au vouvoiement (côté web) Ah oui, vrai… Ben pour être cohérent avec ce qui existe, on pourrait vouvoyer dans le mail, du coup. (par contre à terme, pour ma part, je préfèrerais qu'on tutoie partout. Mais chaque chose en son temps) > donc je voudrais tester et proposer un p'tit patch écrit à l'arrache tout à l'heure pour que le nom du FAI apparaisse OK, j'attends ton patch :-) (tu dois pouvoir faire une PR vers ma branche). Ciao, Jocelyn
vross commented 7 years ago

En effet, le mail s'affiche bien dans la console. :)

Je préfère aussi qu'on tutoie partout (c'est important que ça fasse pas "service clientèle" et ça fait moins distant, je trouve), je veux bien essayer de faire ça si j'ai le temps.

Je fais la PR dans la foulée.

Tschüs

Vross

En effet, le mail s'affiche bien dans la console. :) Je préfère aussi qu'on tutoie partout (c'est important que ça fasse pas "service clientèle" et ça fait moins distant, je trouve), je veux bien essayer de faire ça si j'ai le temps. Je fais la PR dans la foulée. Tschüs Vross
jocelyn commented 7 years ago
Owner

Intégré la PR de @vross, passé au vouvoiement et fusion !

Intégré la PR de @vross, passé au vouvoiement et fusion !
This pull request has been merged successfully!
Sign in to join this conversation.
No Milestone
No assignee
2 Participants
Loading...
Cancel
Save
There is no content yet.