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 json
|
||||
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils.timezone import make_aware, now
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
@ -33,6 +34,11 @@ MAP_IDBDE = {
|
||||
# some Aliases have been created in the fixtures
|
||||
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_club_type = ContentType.objects.get(app_label="note", model="noteclub")
|
||||
|
||||
@ -85,9 +91,10 @@ class Command(ImportCommand):
|
||||
pseudo = row["pseudo"]
|
||||
pseudo_norm = Alias.normalize(pseudo)
|
||||
self.update_line(idx, n, pseudo)
|
||||
# clean pseudo (normalized pseudo must be unique)
|
||||
if pseudo_norm in ALIAS_SET:
|
||||
# clean pseudo (normalized pseudo must be unique and not empty)
|
||||
if not pseudo_norm or pseudo_norm in ALIAS_SET:
|
||||
pseudo = pseudo + str(row["idbde"])
|
||||
CHANGED_USERNAMES.append((pk_note, row[pseudo], pseudo))
|
||||
else:
|
||||
ALIAS_SET.add(pseudo_norm)
|
||||
# clean date
|
||||
@ -206,7 +213,9 @@ class Command(ImportCommand):
|
||||
alias_norm = Alias.normalize(alias_name)
|
||||
self.update_line(idx, n, alias_norm)
|
||||
# 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
|
||||
else:
|
||||
ALIAS_SET.add(alias_norm)
|
||||
@ -237,3 +246,20 @@ class Command(ImportCommand):
|
||||
filename = kwargs["save"]
|
||||
with open(filename, 'w') as fp:
|
||||
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