Gérer la fin de scolarité #9

Merged
champeno merged 23 commits from Evarin/archicubes into master 2018-09-30 00:03:27 +02:00
champeno commented 2018-04-22 15:56:25 +02:00 (Migrated from git.eleves.ens.fr)

Un adapter django allauth pour gérer les comptes plus en scolarité et la possible réutilisation des logins clippers.

TODO :

  • Problème de l'unicité des adresses mails
  • Tester avec LDAP
  • Vérifier que tout tient la route
Un adapter django allauth pour gérer les comptes plus en scolarité et la possible réutilisation des logins clippers. TODO : * [x] Problème de l'unicité des adresses mails * [x] Tester avec LDAP * [x] Vérifier que tout tient la route
champeno commented 2018-04-22 17:22:41 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

  • cdb9c3c7 - Mail address disambiguation, debug, only one ldap query

Compare with previous version

added 1 commit * cdb9c3c7 - Mail address disambiguation, debug, only one ldap query [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=834&start_sha=021d50fadeb755054ccc6104702e3c60293ec8cf)
champeno commented 2018-04-22 17:23:00 +02:00 (Migrated from git.eleves.ens.fr)

marked the checklist item Problème de l'unicité des adresses mails as completed

marked the checklist item **Problème de l'unicité des adresses mails** as completed
champeno commented 2018-04-22 20:14:08 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * 5a78561d - WIP tests [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=835&start_sha=cdb9c3c722784247f03da32ba5f56e5df845428d)
champeno commented 2018-04-23 00:24:09 +02:00 (Migrated from git.eleves.ens.fr)

added 2 commits

Compare with previous version

added 2 commits * dc8873ca - Tests for adapter ready * 54963e9f - Fix other tests [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=836&start_sha=5a78561d175a869f5212a2bec797ec31fc6183ee)
champeno commented 2018-04-23 00:38:18 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * 1142db73 - Revert "Fix other tests" [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=837&start_sha=54963e9f915c922dc5ed4787e8f4ab5fbe2ee02b)
champeno commented 2018-04-23 00:38:47 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * 6fc012cb - Fix my tests [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=838&start_sha=1142db73f77ae3788ea590a007b6952e1085a8bd)
champeno commented 2018-04-23 00:42:23 +02:00 (Migrated from git.eleves.ens.fr)

assigned to @champeno

assigned to @champeno
champeno commented 2018-04-23 00:42:25 +02:00 (Migrated from git.eleves.ens.fr)

marked the checklist item Vérifier que tout tient la route as completed

marked the checklist item **Vérifier que tout tient la route** as completed
champeno commented 2018-04-23 01:13:23 +02:00 (Migrated from git.eleves.ens.fr)

added 2 commits

Compare with previous version

added 2 commits * 9c3fc72e - One more test case * b6f5acaa - Readme [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=839&start_sha=6fc012cb3926658168d6c548b6dccd5536adb872)
champeno commented 2018-04-24 00:45:00 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

  • f0a73f6e - Util management command to install longtermadapter + fixes

Compare with previous version

added 1 commit * f0a73f6e - Util management command to install longtermadapter + fixes [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=840&start_sha=b6f5acaa46d234c18af2454a3ae8c1343c13fabd)
champeno commented 2018-04-24 18:18:59 +02:00 (Migrated from git.eleves.ens.fr)

marked the checklist item Tester avec LDAP as completed

marked the checklist item **Tester avec LDAP** as completed
champeno commented 2018-04-24 18:19:02 +02:00 (Migrated from git.eleves.ens.fr)

unmarked as a Work In Progress

unmarked as a **Work In Progress**
bclement commented 2018-04-28 15:34:46 +02:00 (Migrated from git.eleves.ens.fr)

s/set on hold/put on hold/

s/set on hold/put on hold/
bclement commented 2018-04-28 15:41:14 +02:00 (Migrated from git.eleves.ens.fr)

Not going to work in python3. infos.get('cn', [b''])[0] if the underlying call is supposed to return bytes. Not sure what the API of ldap says.

Not going to work in python3. `infos.get('cn', [b''])[0]` if the underlying call is supposed to return bytes. Not sure what the API of `ldap` says.
bclement commented 2018-04-28 15:41:54 +02:00 (Migrated from git.eleves.ens.fr)

Why not make this an OrderedDict directly?

Why not make this an `OrderedDict` directly?
bclement commented 2018-04-28 15:43:35 +02:00 (Migrated from git.eleves.ens.fr)

This parsing code is prone to fail when/if the homeDirectory is not /users// which may happen. You should check: if len(dirs) == 4 and dirs[1] == 'users' with a comment about the assumptions on the format.

This parsing code is prone to fail when/if the homeDirectory is not /users/<year>/<dep> which may happen. You should check: `if len(dirs) == 4 and dirs[1] == 'users'` with a comment about the assumptions on the format.
bclement commented 2018-04-28 15:44:14 +02:00 (Migrated from git.eleves.ens.fr)

Zen of python or something says you should do: if pmail: instead.

Zen of python or something says you should do: `if pmail:` instead.
bclement commented 2018-04-28 15:45:07 +02:00 (Migrated from git.eleves.ens.fr)

Those are str already, why the casts?

Those are `str` already, why the casts?
bclement commented 2018-04-28 15:45:54 +02:00 (Migrated from git.eleves.ens.fr)

s/Super/super/

also is this supposed to be compatible with py2? if not you can just do super().pre_social_login(request, sociallogin).

s/Super/super/ also is this supposed to be compatible with py2? if not you can just do `super().pre_social_login(request, sociallogin)`.
bclement commented 2018-04-28 15:48:37 +02:00 (Migrated from git.eleves.ens.fr)

Looks like this is stored on the adapter here so it can get reused in save_user below. Is there any guarantee from socialaccount that those two will always be called sequentially (esp. regarding thread safety) and that we won't see data for another account? Can we store that data on the sociallogin instead?

Looks like this is stored on the adapter here so it can get reused in `save_user` below. Is there any guarantee from socialaccount that those two will always be called sequentially (esp. regarding thread safety) and that we won't see data for another account? Can we store that data on the `sociallogin` instead?
bclement commented 2018-04-28 15:50:55 +02:00 (Migrated from git.eleves.ens.fr)

I think there may be a subtle bug here if the LDAP server is down because then we could end up creating a new SocialAccount in pre_social_login for a user with annee='00'. Probably safer to re-raise an error.

I *think* there may be a subtle bug here if the LDAP server is down because then we could end up creating a new SocialAccount in `pre_social_login` for a user with annee='00'. Probably safer to re-raise an error.
bclement commented 2018-04-28 15:51:39 +02:00 (Migrated from git.eleves.ens.fr)

See comment on the pass in get_ldap_infos; we could end up creating a bogus user if the ldap server failed for a transient reason.

See comment on the `pass` in `get_ldap_infos`; we could end up creating a bogus user if the ldap server failed for a transient reason.
bclement commented 2018-04-28 15:56:03 +02:00 (Migrated from git.eleves.ens.fr)

It looks like this try..except is only supposed to guard the very first line of the block? Can we move the except higher up? In general it is a good thing to make try..except blocks as small as required in order to avoid spurious catches.

It looks like this `try..except` is only supposed to guard the very first line of the block? Can we move the `except` higher up? In general it is a good thing to make `try..except` blocks as small as required in order to avoid spurious catches.
bclement commented 2018-04-28 15:56:03 +02:00 (Migrated from git.eleves.ens.fr)

It looks like this try..except is only supposed to guard the very first line of the block? Can we move the except higher up? In general it is a good thing to make try..except blocks as small as required in order to avoid spurious catches.

It looks like this `try..except` is only supposed to guard the very first line of the block? Can we move the `except` higher up? In general it is a good thing to make `try..except` blocks as small as required in order to avoid spurious catches.
bclement commented 2018-04-28 15:56:42 +02:00 (Migrated from git.eleves.ens.fr)

See comment above; can we store that data on the sociallogin instead of the adapter?

See comment above; can we store that data on the sociallogin instead of the adapter?
bclement commented 2018-04-28 15:57:28 +02:00 (Migrated from git.eleves.ens.fr)

s/o avoid/to avoid/

s/o avoid/to avoid/
bclement commented 2018-04-28 15:57:57 +02:00 (Migrated from git.eleves.ens.fr)

Also s/wer/were/

Also s/wer/were/
champeno commented 2018-04-28 16:19:28 +02:00 (Migrated from git.eleves.ens.fr)

Hmmm that's true I had in mind that an adapter object was unique to the connexion but it's nonsense. It is way more relevant to put it on the sociallogin indeed.

Hmmm that's true I had in mind that an `adapter` object was unique to the connexion but it's nonsense. It is way more relevant to put it on the `sociallogin` indeed.
champeno commented 2018-04-28 16:33:17 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 9 of the diff

changed this line in [version 9 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1#561b88e19de321ca62c7590bbb350765fb110905_186_186)
champeno commented 2018-04-28 16:33:18 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 9 of the diff

changed this line in [version 9 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1#f9a92a37689457ac7fb5252a28611ff440fa60b9_44_44)
champeno commented 2018-04-28 16:33:18 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 9 of the diff

changed this line in [version 9 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1#f9a92a37689457ac7fb5252a28611ff440fa60b9_15_15)
champeno commented 2018-04-28 16:33:18 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 9 of the diff

changed this line in [version 9 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1#f9a92a37689457ac7fb5252a28611ff440fa60b9_62_63)
champeno commented 2018-04-28 16:33:18 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 9 of the diff

changed this line in [version 9 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1#f9a92a37689457ac7fb5252a28611ff440fa60b9_75_76)
champeno commented 2018-04-28 16:33:18 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 9 of the diff

changed this line in [version 9 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1#f9a92a37689457ac7fb5252a28611ff440fa60b9_96_97)
champeno commented 2018-04-28 16:33:18 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 9 of the diff

changed this line in [version 9 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1#f9a92a37689457ac7fb5252a28611ff440fa60b9_106_103)
champeno commented 2018-04-28 16:33:18 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 9 of the diff

changed this line in [version 9 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1#f9a92a37689457ac7fb5252a28611ff440fa60b9_108_103)
champeno commented 2018-04-28 16:33:19 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 9 of the diff

changed this line in [version 9 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1#f9a92a37689457ac7fb5252a28611ff440fa60b9_185_187)
champeno commented 2018-04-28 16:33:19 +02:00 (Migrated from git.eleves.ens.fr)

added 2 commits

  • a1671a3d - Fixes from Elarnon's review
  • bfc0bb42 - Add ldap query counting to tests

Compare with previous version

added 2 commits * a1671a3d - Fixes from Elarnon&#x27;s review * bfc0bb42 - Add ldap query counting to tests [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=845&start_sha=f0a73f6ef686998444c734a7bc189ef8cc8926c1)
champeno commented 2018-04-28 16:34:25 +02:00 (Migrated from git.eleves.ens.fr)

I have to check I don't get errors with ldap in practice but should be resolved

I have to check I don't get errors with ldap in practice but should be resolved
champeno commented 2018-04-28 16:34:50 +02:00 (Migrated from git.eleves.ens.fr)

We do want the py2 compatibility

We do want the py2 compatibility
champeno commented 2018-04-28 16:57:03 +02:00 (Migrated from git.eleves.ens.fr)

Well, it was actually the intended behaviour for local testing (with no access to the LDAP server), but it may not be relevant to keep it this way. As the LDAP query is done only for new connexion or previously deprecated account, it may be indeed better to block the connexion process. Though, rather than raising an exception here, we could handle that in the get_username function: if we have no annee in the LDAP data, we raise an error. This way, it could be customized easily by the user in an "error-free" mode?

Well, it was actually the intended behaviour for local testing (with no access to the LDAP server), but it may not be relevant to keep it this way. As the LDAP query is done only for new connexion or previously deprecated account, it may be indeed better to block the connexion process. Though, rather than raising an exception here, we could handle that in the `get_username` function: if we have no `annee` in the LDAP data, we raise an error. This way, it could be customized easily by the user in an "error-free" mode?
bclement commented 2018-04-28 17:04:52 +02:00 (Migrated from git.eleves.ens.fr)

That's also a valid way of doing things I suppose, but I would return None here in that case to avoid the possibility of depending on a (possibly bogus) 'email' field.

That's also a valid way of doing things I suppose, but I would return `None` here in that case to avoid the possibility of depending on a (possibly bogus) `'email'` field.
bclement commented 2018-04-28 17:07:08 +02:00 (Migrated from git.eleves.ens.fr)

Needs b'/' for py3 I guess :)

Needs `b'/'` for py3 I guess :)
champeno commented 2018-04-29 01:29:08 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 10 of the diff

changed this line in [version 10 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=846&start_sha=bfc0bb42ad48e127d3e8d54d9c57f9171855b884#f9a92a37689457ac7fb5252a28611ff440fa60b9_157_165)
champeno commented 2018-04-29 01:29:09 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 10 of the diff

changed this line in [version 10 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=846&start_sha=bfc0bb42ad48e127d3e8d54d9c57f9171855b884#f9a92a37689457ac7fb5252a28611ff440fa60b9_51_55)
champeno commented 2018-04-29 01:29:10 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

  • 787efe96 - LDAP error propagation + README + tox update and corrections

Compare with previous version

added 1 commit * 787efe96 - LDAP error propagation + README + tox update and corrections [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=846&start_sha=bfc0bb42ad48e127d3e8d54d9c57f9171855b884)
champeno commented 2018-04-29 01:33:31 +02:00 (Migrated from git.eleves.ens.fr)

Adopted the proposed strategy : get_ldap_infos returns an empty dict if no info is available ; the default mail address is generated elsewhere ; get_username raises a ValueError if it does not find a annee field in the LDAP data ; the example website(s version is patched so that it does not fail when no access to the LDAP.

Adopted the proposed strategy : `get_ldap_infos` returns an empty dict if no info is available ; the default mail address is generated elsewhere ; `get_username` raises a ValueError if it does not find a `annee` field in the LDAP data ; the example website(s version is patched so that it does not fail when no access to the LDAP.
champeno commented 2018-04-29 01:34:04 +02:00 (Migrated from git.eleves.ens.fr)

Should be fixed (as well as for the email field

Should be fixed (as well as for the `email` field
delobell commented 2018-05-17 15:49:00 +02:00 (Migrated from git.eleves.ens.fr)

Whitespaces

Whitespaces
delobell commented 2018-05-17 15:49:09 +02:00 (Migrated from git.eleves.ens.fr)

Thanks

Thanks
delobell commented 2018-05-17 15:50:07 +02:00 (Migrated from git.eleves.ens.fr)

You can add a new section Adapters.

You can add a new section `Adapters`.
delobell commented 2018-05-17 15:51:07 +02:00 (Migrated from git.eleves.ens.fr)

And there are many whitespaces in this section.
Can you also separate manually the lines (below, or a few above, 80 cols) ?

And there are many whitespaces in this section. Can you also separate manually the lines (below, or a few above, 80 cols) ?
delobell commented 2018-05-17 15:52:00 +02:00 (Migrated from git.eleves.ens.fr)

Typo: SociallAccount -> SocialAccount

Typo: `SociallAccount` -> `SocialAccount`
delobell commented 2018-05-17 15:53:23 +02:00 (Migrated from git.eleves.ens.fr)

I think it's better to give a more specific name to this setting. CLIPPER_LDAP_SERVER ?

I think it's better to give a more specific name to this setting. `CLIPPER_LDAP_SERVER` ?
delobell commented 2018-05-17 15:53:58 +02:00 (Migrated from git.eleves.ens.fr)

Is there a reason for this option to be set globally ?

Is there a reason for this option to be set globally ?
delobell commented 2018-05-17 15:55:56 +02:00 (Migrated from git.eleves.ens.fr)

data={} is error-prone and can result in invalid returned value in this case.
BTW, this paramater doesn't seem necessary according to the use cases.

`data={}` is error-prone and can result in invalid returned value in this case. BTW, this paramater doesn't seem necessary according to the use cases.
delobell commented 2018-05-17 15:56:16 +02:00 (Migrated from git.eleves.ens.fr)

Unused vars

Unused vars
delobell commented 2018-05-17 16:00:39 +02:00 (Migrated from git.eleves.ens.fr)

I think it's better to store values individually : data['entrance_year'], data['department_code'] (lowerised), data['department'] (labelised).

I think it's better to store values individually : `data['entrance_year']`, `data['department_code']` (lowerised), `data['department']` (labelised).
delobell commented 2018-05-17 16:07:07 +02:00 (Migrated from git.eleves.ens.fr)

Better with doc:

"""
If a clipper connection has already existed with the uid, it checks
that this connection still belongs to the user it was associated with.

This check is performed by comparing the data returned by the LDAP with
the data stored with the connection.

If the check succeeds, it simply reactivates the clipper connection as
belonging to the associated user.

If the check fails, it frees the elements (as the clipper email
address) which will be assigned to the new connection later.
"""

Note that this docstring is falsy at this time, see comment below.

Better with doc: ``` """ If a clipper connection has already existed with the uid, it checks that this connection still belongs to the user it was associated with. This check is performed by comparing the data returned by the LDAP with the data stored with the connection. If the check succeeds, it simply reactivates the clipper connection as belonging to the associated user. If the check fails, it frees the elements (as the clipper email address) which will be assigned to the new connection later. """ ``` Note that this docstring is falsy at this time, see comment below.
delobell commented 2018-05-17 16:13:15 +02:00 (Migrated from git.eleves.ens.fr)

a -> old_conn, clearer ?

`a` -> `old_conn`, clearer ?
delobell commented 2018-05-17 16:13:24 +02:00 (Migrated from git.eleves.ens.fr)

clipper -> clipper_uid, clearer ?

`clipper` -> `clipper_uid`, clearer ?
delobell commented 2018-05-17 16:14:42 +02:00 (Migrated from git.eleves.ens.fr)

Should we use a better test ? The username can be changed and it can be pretty hard for the staff to remember not doing this.
Can we test a.extra_data['entrance_year/annee'] != ldap_data['entrance_year/annee']` ?

Should we use a better test ? The username can be changed and it can be pretty hard for the staff to remember not doing this. Can we test `a.extra_data['entrance_year/annee'] != `ldap_data['entrance_year/annee']` ?
delobell commented 2018-05-17 16:15:46 +02:00 (Migrated from git.eleves.ens.fr)

[Nitpicking Warning, yeah another one]
I don't know if we need a new SocialAccount, but we can't reuse this one (or shouldn't).

[Nitpicking Warning, yeah another one] I don't know if we need a new SocialAccount, but we can't reuse this one (or shouldn't).
delobell commented 2018-05-17 16:19:32 +02:00 (Migrated from git.eleves.ens.fr)

A new file allauth_ens/utils.py with (for the beginning, note that _init_ldap, _get_infos_from_ldap and a few others could go there):

def get_clipper_email(clipper):
    return '{}@clipper.ens.fr'.format(clipper.strip().lower())

The same appears below in this file, and also in the allauth_ens.providers.clipper.provider module.

A new file `allauth_ens/utils.py` with (for the beginning, note that _init_ldap, _get_infos_from_ldap and a few others could go there): ``` def get_clipper_email(clipper): return '{}@clipper.ens.fr'.format(clipper.strip().lower()) ``` The same appears below in this file, and also in the `allauth_ens.providers.clipper.provider` module.
delobell commented 2018-05-17 16:22:02 +02:00 (Migrated from git.eleves.ens.fr)

Let's extract this code in its own function (in allauth_ens.utils ?), then it becomes testable (and we all love that):

def remove_email(user, email):
    """
    Removes a mail of a user.

    If it is his primary email address, it sets another email address as
    primary, preferably verified.
    """
    u_mailaddrs = user.email_address_set.filter(user=user)
    try:
        mailaddr = user.email_address_set.get(email=email)
    except EmailAddress.DoesNotExist:
        return

    if mailaddr.primary:
        others = u_mailaddrs.filter(primary=False)

        # Prefer a verified mail.
        new_primary = (
            others.filter(verified=True).last() or
            others.last()
        )

        if new_primary:
            # It also updates 'user.EMAIL_FIELD'.
            new_primary.set_as_primary()
        else:
            user_email(user, '')
            user.save()

    mailaddr.delete()
Let's extract this code in its own function (in `allauth_ens.utils` ?), then it becomes testable (and we all love that): ``` def remove_email(user, email): """ Removes a mail of a user. If it is his primary email address, it sets another email address as primary, preferably verified. """ u_mailaddrs = user.email_address_set.filter(user=user) try: mailaddr = user.email_address_set.get(email=email) except EmailAddress.DoesNotExist: return if mailaddr.primary: others = u_mailaddrs.filter(primary=False) # Prefer a verified mail. new_primary = ( others.filter(verified=True).last() or others.last() ) if new_primary: # It also updates 'user.EMAIL_FIELD'. new_primary.set_as_primary() else: user_email(user, '') user.save() mailaddr.delete() ```
delobell commented 2018-05-17 16:23:09 +02:00 (Migrated from git.eleves.ens.fr)

allauth is magic! So cool…

`allauth` is magic! So cool…
delobell commented 2018-05-17 16:25:06 +02:00 (Migrated from git.eleves.ens.fr)

If we change as I propose above, it's only useful to avoid username clashes.

If we change as I propose above, it's only useful to avoid username clashes.
delobell commented 2018-05-17 16:32:36 +02:00 (Migrated from git.eleves.ens.fr)

data.get('annee', '00') -> `data['annee'] ?

`data.get('annee', '00')` -> `data['annee'] ?
delobell commented 2018-05-17 16:40:39 +02:00 (Migrated from git.eleves.ens.fr)

No need to .strip().lower() here ? Maybe we can add the case where uid is in ldap infos to _extract_infos_from_ldap.

No need to `.strip().lower()` here ? Maybe we can add the case where `uid` is in ldap infos to `_extract_infos_from_ldap`.
delobell commented 2018-05-17 16:42:04 +02:00 (Migrated from git.eleves.ens.fr)

Why the name key is always here, eventually blank, while the others are not here ?

if 'cn' in infos:
    ...
Why the `name` key is always here, eventually blank, while the others are not here ? ``` if 'cn' in infos: ... ```
champeno commented 2018-06-03 18:02:33 +02:00 (Migrated from git.eleves.ens.fr)

No idea, I think it only comes from the code I copy-pasted a long time ago to make LDAP work, I will test without.

No idea, I think it only comes from the code I copy-pasted a long time ago to make LDAP work, I will test without.
champeno commented 2018-06-03 18:13:05 +02:00 (Migrated from git.eleves.ens.fr)

So far, the problem is that extra_data is overwritten with a blank dict at each connexion without a LDAP query, that's why I use the username. I thought about preventing that but iirc it would need some arguable hooks in the provider code, or deeper tweaks to the adapter...

So far, the problem is that `extra_data` is overwritten with a blank dict at each connexion without a LDAP query, that's why I use the username. I thought about preventing that but iirc it would need some arguable hooks in the provider code, or deeper tweaks to the adapter...
champeno commented 2018-06-03 22:11:58 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_59_13)
champeno commented 2018-06-03 22:11:59 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_89_13)
champeno commented 2018-06-03 22:12:00 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#561b88e19de321ca62c7590bbb350765fb110905_183_187)
champeno commented 2018-06-03 22:12:00 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_32_13)
champeno commented 2018-06-03 22:12:00 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_33_13)
champeno commented 2018-06-03 22:12:00 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_46_13)
champeno commented 2018-06-03 22:12:00 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_52_13)
champeno commented 2018-06-03 22:12:00 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_63_13)
champeno commented 2018-06-03 22:12:01 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_107_44)
champeno commented 2018-06-03 22:12:01 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_105_42)
champeno commented 2018-06-03 22:12:01 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_118_55)
champeno commented 2018-06-03 22:12:01 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_120_57)
champeno commented 2018-06-03 22:12:01 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_123_57)
champeno commented 2018-06-03 22:12:01 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_137_57)
champeno commented 2018-06-03 22:12:01 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_155_80)
champeno commented 2018-06-03 22:12:01 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_234_157)
champeno commented 2018-06-03 22:12:02 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 11 of the diff

changed this line in [version 11 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d#f9a92a37689457ac7fb5252a28611ff440fa60b9_48_13)
champeno commented 2018-06-03 22:12:02 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

  • 17fef409 - More readable and organized code

Compare with previous version

added 1 commit * 17fef409 - More readable and organized code [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=861&start_sha=787efe96d04c0362a0fc676f233cfd66bc1c1b7d)
champeno commented 2018-06-03 22:15:25 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * 5ee1c774 - Better README display? [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=862&start_sha=17fef409a8aed1ffd8e479779b022281d665943d)
champeno commented 2018-06-03 22:17:23 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * 4cf633ed - Actually no, too bad [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=863&start_sha=5ee1c774ac5975780f446d26f019da31aab84abb)
champeno commented 2018-06-03 22:30:00 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

  • 08a47150 - Populate user model with promotion infos

Compare with previous version

added 1 commit * 08a47150 - Populate user model with promotion infos [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=864&start_sha=4cf633ed8167dd46d43d661693a2e31bfebca4bb)
delobell commented 2018-06-16 16:56:33 +02:00 (Migrated from git.eleves.ens.fr)

assigned to @delobell

assigned to @delobell
champeno commented 2018-06-19 19:15:32 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

Compare with previous version

added 1 commit * 35a3bc3e - Small fix to example site [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=870&start_sha=08a47150db9fd84c30f0002619213b55db354a26)
champeno commented 2018-06-24 19:57:09 +02:00 (Migrated from git.eleves.ens.fr)

changed this line in version 16 of the diff

changed this line in [version 16 of the diff](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=873&start_sha=35a3bc3e2dd9112952459d8d238d2c08c0014712#f9a92a37689457ac7fb5252a28611ff440fa60b9_76_80)
champeno commented 2018-06-24 19:57:09 +02:00 (Migrated from git.eleves.ens.fr)

added 2 commits

  • 534e0b18 - LongTermClipper preserving LDAP data
  • 6e77b31e - Merge branch 'aureplop/archicubes_keep-ldap' into 'Evarin/archicubes'

Compare with previous version

added 2 commits * 534e0b18 - LongTermClipper preserving LDAP data * 6e77b31e - Merge branch &#x27;aureplop&#x2F;archicubes_keep-ldap&#x27; into &#x27;Evarin&#x2F;archicubes&#x27; [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=873&start_sha=35a3bc3e2dd9112952459d8d238d2c08c0014712)
champeno commented 2018-06-24 20:00:21 +02:00 (Migrated from git.eleves.ens.fr)

Your MR solved this discussion, I resolve it.

Your MR solved this discussion, I resolve it.
champeno commented 2018-06-24 20:02:43 +02:00 (Migrated from git.eleves.ens.fr)

It works with actual LDAP, so it's resolved.

It works with actual LDAP, so it's resolved.
delobell commented 2018-09-29 22:53:02 +02:00 (Migrated from git.eleves.ens.fr)

resolved all discussions

resolved all discussions
delobell commented 2018-09-29 22:53:16 +02:00 (Migrated from git.eleves.ens.fr)

On se la tente ? @champeno

On se la tente ? @champeno
champeno commented 2018-09-29 22:57:43 +02:00 (Migrated from git.eleves.ens.fr)

Allez j'y crois

Allez j'y crois
delobell commented 2018-09-29 23:05:02 +02:00 (Migrated from git.eleves.ens.fr)

Presque...

flake8 runtests: commands[0] | flake8 allauth_ens tests
allauth_ens/utils.py:23:1: E302 expected 2 blank lines, found 1
allauth_ens/utils.py:24:80: E501 line too long (84 > 79 characters)
allauth_ens/utils.py:27:5: E741 ambiguous variable name 'l'
allauth_ens/utils.py:37:1: E302 expected 2 blank lines, found 1
allauth_ens/utils.py:39:1: W293 blank line contains whitespace
allauth_ens/utils.py:60:1: W293 blank line contains whitespace
allauth_ens/utils.py:64:1: W293 blank line contains whitespace
allauth_ens/utils.py:67:1: E302 expected 2 blank lines, found 1
allauth_ens/utils.py:71:9: E741 ambiguous variable name 'l'
allauth_ens/utils.py:88:1: E302 expected 2 blank lines, found 1
allauth_ens/utils.py:91:1: E302 expected 2 blank lines, found 1
allauth_ens/adapter.py:13:80: E501 line too long (102 > 79 characters)
allauth_ens/adapter.py:17:1: E302 expected 2 blank lines, found 1
allauth_ens/adapter.py:80:80: E501 line too long (80 > 79 characters)
allauth_ens/adapter.py:96:44: E127 continuation line over-indented for visual indent
allauth_ens/adapter.py:154:5: E741 ambiguous variable name 'l'
allauth_ens/tests.py:180:44: E741 ambiguous variable name 'l'
allauth_ens/tests.py:283:9: F841 local variable 'r' is assigned to but never used
allauth_ens/tests.py:307:50: E251 unexpected spaces around keyword / parameter equals
allauth_ens/tests.py:308:17: E128 continuation line under-indented for visual indent
allauth_ens/tests.py:316:9: E741 ambiguous variable name 'l'
allauth_ens/tests.py:330:50: E251 unexpected spaces around keyword / parameter equals
allauth_ens/tests.py:331:17: E128 continuation line under-indented for visual indent
allauth_ens/tests.py:338:9: E741 ambiguous variable name 'l'
Presque... ``` flake8 runtests: commands[0] | flake8 allauth_ens tests allauth_ens/utils.py:23:1: E302 expected 2 blank lines, found 1 allauth_ens/utils.py:24:80: E501 line too long (84 > 79 characters) allauth_ens/utils.py:27:5: E741 ambiguous variable name 'l' allauth_ens/utils.py:37:1: E302 expected 2 blank lines, found 1 allauth_ens/utils.py:39:1: W293 blank line contains whitespace allauth_ens/utils.py:60:1: W293 blank line contains whitespace allauth_ens/utils.py:64:1: W293 blank line contains whitespace allauth_ens/utils.py:67:1: E302 expected 2 blank lines, found 1 allauth_ens/utils.py:71:9: E741 ambiguous variable name 'l' allauth_ens/utils.py:88:1: E302 expected 2 blank lines, found 1 allauth_ens/utils.py:91:1: E302 expected 2 blank lines, found 1 allauth_ens/adapter.py:13:80: E501 line too long (102 > 79 characters) allauth_ens/adapter.py:17:1: E302 expected 2 blank lines, found 1 allauth_ens/adapter.py:80:80: E501 line too long (80 > 79 characters) allauth_ens/adapter.py:96:44: E127 continuation line over-indented for visual indent allauth_ens/adapter.py:154:5: E741 ambiguous variable name 'l' allauth_ens/tests.py:180:44: E741 ambiguous variable name 'l' allauth_ens/tests.py:283:9: F841 local variable 'r' is assigned to but never used allauth_ens/tests.py:307:50: E251 unexpected spaces around keyword / parameter equals allauth_ens/tests.py:308:17: E128 continuation line under-indented for visual indent allauth_ens/tests.py:316:9: E741 ambiguous variable name 'l' allauth_ens/tests.py:330:50: E251 unexpected spaces around keyword / parameter equals allauth_ens/tests.py:331:17: E128 continuation line under-indented for visual indent allauth_ens/tests.py:338:9: E741 ambiguous variable name 'l' ```
delobell commented 2018-09-29 23:05:34 +02:00 (Migrated from git.eleves.ens.fr)

Et aussi :

isort runtests: commands[0] | isort --recursive --check-only --diff allauth_ens tests
ERROR: /home/aurelien/perso/django-allauth-ens/allauth_ens/adapter.py Imports are incorrectly sorted.
--- /home/aurelien/perso/django-allauth-ens/allauth_ens/adapter.py:before	2018-09-29 22:54:10.455471
+++ /home/aurelien/perso/django-allauth-ens/allauth_ens/adapter.py:after	2018-09-29 22:59:58.724390
@@ -10,7 +10,10 @@
 
 import ldap
 
-from .utils import extract_infos_from_ldap, get_ldap_infos, get_clipper_email, remove_email, init_ldap
+from .utils import (
+    extract_infos_from_ldap, get_clipper_email, get_ldap_infos, init_ldap,
+    remove_email,
+)
 
 User = get_user_model()
Et aussi : ``` isort runtests: commands[0] | isort --recursive --check-only --diff allauth_ens tests ERROR: /home/aurelien/perso/django-allauth-ens/allauth_ens/adapter.py Imports are incorrectly sorted. --- /home/aurelien/perso/django-allauth-ens/allauth_ens/adapter.py:before 2018-09-29 22:54:10.455471 +++ /home/aurelien/perso/django-allauth-ens/allauth_ens/adapter.py:after 2018-09-29 22:59:58.724390 @@ -10,7 +10,10 @@ import ldap -from .utils import extract_infos_from_ldap, get_ldap_infos, get_clipper_email, remove_email, init_ldap +from .utils import ( + extract_infos_from_ldap, get_clipper_email, get_ldap_infos, init_ldap, + remove_email, +) User = get_user_model() ```
delobell commented 2018-09-29 23:07:39 +02:00 (Migrated from git.eleves.ens.fr)

Et plusieurs tests foirent avec Python 3.4 seulement. Toujours à cause de _setup_ldap :

  File "/home/aurelien/perso/django-allauth-ens/allauth_ens/tests.py", line 175, in _setup_ldap
    'homeDirectory': [b'/users/%d/phy/test/' % promo],
TypeError: unsupported operand type(s) for %: 'bytes' and 'int'
Et plusieurs tests foirent avec **Python 3.4 seulement**. Toujours à cause de `_setup_ldap` : ``` File "/home/aurelien/perso/django-allauth-ens/allauth_ens/tests.py", line 175, in _setup_ldap 'homeDirectory': [b'/users/%d/phy/test/' % promo], TypeError: unsupported operand type(s) for %: 'bytes' and 'int' ```
delobell commented 2018-09-29 23:09:34 +02:00 (Migrated from git.eleves.ens.fr)

Pour éviter de se faire toute la matrice de tox :

$ tox -e flake8
$ tox -e isort
$ tox -e django111-py34

Je vais tenter d'ajouter la CI

Pour éviter de se faire toute la matrice de tox : ``` $ tox -e flake8 $ tox -e isort $ tox -e django111-py34 ``` Je vais tenter d'ajouter la CI
champeno commented 2018-09-29 23:36:38 +02:00 (Migrated from git.eleves.ens.fr)

added 2 commits

  • b189c114 - Detoxify + debug py34
  • 6a79b02f - Merge branch 'Evarin/archicubes' of…

Compare with previous version

added 2 commits * b189c114 - Detoxify + debug py34 * 6a79b02f - Merge branch &#x27;Evarin&#x2F;archicubes&#x27; of… [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=923&start_sha=6e77b31e0dfed7659776d2b572e1c8621250f77e)
champeno commented 2018-09-29 23:37:05 +02:00 (Migrated from git.eleves.ens.fr)

Damnit

Damnit
champeno commented 2018-09-29 23:37:47 +02:00 (Migrated from git.eleves.ens.fr)

J'ai pas pu tester en py34 (Error interpreter not found, et je peux pas apt-get install py34), mais ça devrait être résolu.

J'ai pas pu tester en py34 (Error interpreter not found, et je peux pas apt-get install py34), mais ça devrait être résolu.
delobell commented 2018-09-29 23:53:56 +02:00 (Migrated from git.eleves.ens.fr)
  File "/home/aurelien/perso/django-allauth-ens/allauth_ens/tests.py", line 175, in _setup_ldap
    'homeDirectory': [bytes('/users/%d/phy/test/' % promo)],
TypeError: string argument without an encoding

Il faudrait bytes("..." % ..., encoding="utf-8") pour py3.
Et s'en tenir à b"..." % ... pour py2 (bytes prend pas encoding...).

Tu dois avoir import six; six.PY2 or six.PY3.

Au passage, c'est le moment où pyenv peut se rendre utile.

``` File "/home/aurelien/perso/django-allauth-ens/allauth_ens/tests.py", line 175, in _setup_ldap 'homeDirectory': [bytes('/users/%d/phy/test/' % promo)], TypeError: string argument without an encoding ``` Il faudrait `bytes("..." % ..., encoding="utf-8")` pour py3. Et s'en tenir à `b"..." % ...` pour py2 (bytes prend pas `encoding`...). Tu dois avoir `import six; six.PY2 or six.PY3`. Au passage, c'est le moment où [pyenv](https://github.com/pyenv/pyenv) peut se rendre utile.
champeno commented 2018-09-29 23:58:39 +02:00 (Migrated from git.eleves.ens.fr)

added 1 commit

  • a812a43a - Compatibilite des tests en py2

Compare with previous version

added 1 commit * a812a43a - Compatibilite des tests en py2 [Compare with previous version](https://git.eleves.ens.fr/cof-geek/django-allauth-ens/merge_requests/3/diffs?diff_id=924&start_sha=6a79b02fa8beb7d96e507891600a8ba9a7c05b04)
champeno commented 2018-09-30 00:00:12 +02:00 (Migrated from git.eleves.ens.fr)

En fait deux lignes plus haut je gérais ça proprement pour le username, j'ai copié, ça marche en py27 et py35.

En fait deux lignes plus haut je gérais ça proprement pour le username, j'ai copié, ça marche en py27 et py35.
delobell commented 2018-09-30 00:01:06 +02:00 (Migrated from git.eleves.ens.fr)

J'attends que tout tox tourne. Si c'est ok je ferme les yeux et je merge ;-)

J'attends que tout tox tourne. Si c'est ok je ferme les yeux et je merge ;-)
delobell commented 2018-09-30 00:02:27 +02:00 (Migrated from git.eleves.ens.fr)

resolved all discussions

resolved all discussions
delobell commented 2018-09-30 00:03:27 +02:00 (Migrated from git.eleves.ens.fr)

merged

merged
delobell commented 2018-09-30 00:03:27 +02:00 (Migrated from git.eleves.ens.fr)

mentioned in commit bc2b606288

mentioned in commit bc2b60628823a9c26d494ae251e4f68eadbd9a97
delobell commented 2018-09-30 00:19:08 +02:00 (Migrated from git.eleves.ens.fr)

mentioned in merge request !2

mentioned in merge request !2
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: DGNum/django-allauth-ens#9
No description provided.