mirror of
https://gitlab.crans.org/bde/nk20-scripts
synced 2024-11-27 02:43:02 +00:00
When data is imported from the NK15, prevent users whenever some aliases are deleted
This commit is contained in:
parent
81709539a2
commit
4179cad611
@ -6,6 +6,7 @@ import psycopg2.extras as pge
|
|||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
from django.template.loader import render_to_string
|
||||||
from django.utils.timezone import make_aware, now
|
from django.utils.timezone import make_aware, now
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
@ -33,6 +34,11 @@ MAP_IDBDE = {
|
|||||||
# some Aliases have been created in the fixtures
|
# some Aliases have been created in the fixtures
|
||||||
ALIAS_SET = {a[0] for a in Alias.objects.all().values_list("normalized_name")}
|
ALIAS_SET = {a[0] for a in Alias.objects.all().values_list("normalized_name")}
|
||||||
|
|
||||||
|
# Some people might loose some aliases due to normalization. We warn them on them.
|
||||||
|
LOST_ALIASES = {}
|
||||||
|
# In some rare cases, the username might be in conflict with some others. We change them and warn the users.
|
||||||
|
CHANGED_USERNAMES = []
|
||||||
|
|
||||||
note_user_type = ContentType.objects.get(app_label="note", model="noteuser")
|
note_user_type = ContentType.objects.get(app_label="note", model="noteuser")
|
||||||
note_club_type = ContentType.objects.get(app_label="note", model="noteclub")
|
note_club_type = ContentType.objects.get(app_label="note", model="noteclub")
|
||||||
|
|
||||||
@ -85,9 +91,10 @@ class Command(ImportCommand):
|
|||||||
pseudo = row["pseudo"]
|
pseudo = row["pseudo"]
|
||||||
pseudo_norm = Alias.normalize(pseudo)
|
pseudo_norm = Alias.normalize(pseudo)
|
||||||
self.update_line(idx, n, pseudo)
|
self.update_line(idx, n, pseudo)
|
||||||
# clean pseudo (normalized pseudo must be unique)
|
# clean pseudo (normalized pseudo must be unique and not empty)
|
||||||
if pseudo_norm in ALIAS_SET:
|
if not pseudo_norm or pseudo_norm in ALIAS_SET:
|
||||||
pseudo = pseudo + str(row["idbde"])
|
pseudo = pseudo + str(row["idbde"])
|
||||||
|
CHANGED_USERNAMES.append((pk_note, row[pseudo], pseudo))
|
||||||
else:
|
else:
|
||||||
ALIAS_SET.add(pseudo_norm)
|
ALIAS_SET.add(pseudo_norm)
|
||||||
# clean date
|
# clean date
|
||||||
@ -206,7 +213,9 @@ class Command(ImportCommand):
|
|||||||
alias_norm = Alias.normalize(alias_name)
|
alias_norm = Alias.normalize(alias_name)
|
||||||
self.update_line(idx, n, alias_norm)
|
self.update_line(idx, n, alias_norm)
|
||||||
# clean pseudo (normalized pseudo must be unique)
|
# clean pseudo (normalized pseudo must be unique)
|
||||||
if alias_norm in ALIAS_SET:
|
if not alias_norm or alias_norm in ALIAS_SET:
|
||||||
|
LOST_ALIASES.setdefault(MAP_IDBDE[row["idbde"]], [])
|
||||||
|
LOST_ALIASES[MAP_IDBDE[row["idbde"]]].append(alias_name)
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
ALIAS_SET.add(alias_norm)
|
ALIAS_SET.add(alias_norm)
|
||||||
@ -237,3 +246,20 @@ class Command(ImportCommand):
|
|||||||
filename = kwargs["save"]
|
filename = kwargs["save"]
|
||||||
with open(filename, 'w') as fp:
|
with open(filename, 'w') as fp:
|
||||||
json.dump(MAP_IDBDE, fp, sort_keys=True, indent=2)
|
json.dump(MAP_IDBDE, fp, sort_keys=True, indent=2)
|
||||||
|
|
||||||
|
for pk_user, old_username, new_username in CHANGED_USERNAMES:
|
||||||
|
user = User.objects.get(pk_user)
|
||||||
|
mail_text = render_to_string("scripts/unsupported_username.txt", dict(
|
||||||
|
user=user,
|
||||||
|
old_username=old_username,
|
||||||
|
new_username=new_username,
|
||||||
|
))
|
||||||
|
user.email_user("Transition à la Note Kfet 2020 : pseudo non supporté", mail_text)
|
||||||
|
|
||||||
|
for pk_user, aliases_list in CHANGED_USERNAMES:
|
||||||
|
user = User.objects.get(pk_user)
|
||||||
|
mail_text = render_to_string("scripts/deleted_aliases.txt", dict(
|
||||||
|
user=user,
|
||||||
|
aliases_list=aliases_list,
|
||||||
|
))
|
||||||
|
user.email_user("Transition à la Note Kfet 2020 : suppression d'alias", mail_text)
|
||||||
|
27
templates/scripts/deleted_aliases.txt
Normal file
27
templates/scripts/deleted_aliases.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Bonjour {{ user.first_name }} {{ user.last_name }},
|
||||||
|
|
||||||
|
Ce message vous est envoyé automatiquement par la Note Kfet du BDE de
|
||||||
|
l'ENS Cachan, à laquelle vous êtes inscrit·e. Si vous n'êtes plus
|
||||||
|
adhérent·e, vous n'êtes pas nécessairement concerné·e par la suite
|
||||||
|
de ce message.
|
||||||
|
|
||||||
|
La Note Kfet 2020 vient d'être déployée, succédant à la Note Kfet 2015.
|
||||||
|
Les données ont été migrées.
|
||||||
|
|
||||||
|
Toutefois, la nouvelle note utilise un algorithme de normalisation des alias
|
||||||
|
permettant de rechercher plus facilement un nom de note, et empêchant la
|
||||||
|
création d'un alias trop proche d'un autre.
|
||||||
|
|
||||||
|
Nous vous informons que les alias suivants ont été supprimés de votre compte,
|
||||||
|
jugés trop proches d'autres alias déjà existants :
|
||||||
|
|
||||||
|
{{ aliases_list|join:", " }}
|
||||||
|
|
||||||
|
Nous nous excusons pour le désagrément, et espérons que vous pourrez
|
||||||
|
profiter de la nouvelle Note Kfet.
|
||||||
|
|
||||||
|
Cordialement,
|
||||||
|
|
||||||
|
--
|
||||||
|
Le BDE
|
||||||
|
|
27
templates/scripts/unsupported_username.txt
Normal file
27
templates/scripts/unsupported_username.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Bonjour {{ user.first_name }} {{ user.last_name }},
|
||||||
|
|
||||||
|
Ce message vous est envoyé automatiquement par la Note Kfet du BDE de
|
||||||
|
l'ENS Cachan, à laquelle vous êtes inscrit·e. Si vous n'êtes plus
|
||||||
|
adhérent·e, vous n'êtes pas nécessairement concerné·e par la suite
|
||||||
|
de ce message.
|
||||||
|
|
||||||
|
La Note Kfet 2020 vient d'être déployée, succédant à la Note Kfet 2015.
|
||||||
|
Les données ont été migrées.
|
||||||
|
|
||||||
|
Toutefois, la nouvelle note utilise un algorithme de normalisation des alias
|
||||||
|
permettant de rechercher plus facilement un nom de note, et empêchant la
|
||||||
|
création d'un alias trop proche d'un autre.
|
||||||
|
|
||||||
|
Nous vous informons que votre pseudo {{ old_username }} fait pas partie des
|
||||||
|
alias problématiques. Il a été remplacé par le pseudo {{ new_username }},
|
||||||
|
que vous devrez utiliser pour pouvoir vous connecter. Il sera ensuite
|
||||||
|
possible de modifier votre pseudo.
|
||||||
|
|
||||||
|
Nous nous excusons pour le désagrément, et espérons que vous pourrez
|
||||||
|
profiter de la nouvelle Note Kfet.
|
||||||
|
|
||||||
|
Cordialement,
|
||||||
|
|
||||||
|
--
|
||||||
|
Le BDE
|
||||||
|
|
Loading…
Reference in New Issue
Block a user