mirror of
https://gitlab.crans.org/bde/nk20-scripts
synced 2025-02-25 17:36:33 +00:00
Compare commits
3 Commits
86bc2d2698
...
c4f128786d
Author | SHA1 | Date | |
---|---|---|---|
c4f128786d | |||
861f03eb6d | |||
48d9a8b5d2 |
62
README.md
62
README.md
@ -1,63 +1,3 @@
|
||||
# Script de la NoteKfet 2020
|
||||
|
||||
## Commandes Django
|
||||
|
||||
> les commandes sont documentées:
|
||||
> `./manage.py command --help`
|
||||
|
||||
- `import_nk15` :
|
||||
|
||||
Importe un dump de la NoteKfet 2015.
|
||||
|
||||
- `make_su [--STAFF|-s] [--SUPER|-S]` :
|
||||
|
||||
Rend actifs les pseudos renseignés.
|
||||
|
||||
* Si `--STAFF` ou `-s` est renseigné, donne en plus le statut d'équipe aux pseudos renseignés,
|
||||
permettant l'accès à l'interface admin.
|
||||
* Si `--SUPER` ou `-S` est renseigné, donne en plus le statut de super-utilisateur aux pseudos renseignés,
|
||||
octroyant tous les droits sur la plateforme.
|
||||
|
||||
- `wei_algorithm` :
|
||||
|
||||
Lance l'algorithme de répartition des 1A au dernier WEI. Cela a pour effet de suggérer un bus pour tous les 1A
|
||||
inscrits au dernier WEI en fonction des données rentrées dans le sondage, la validation se faisant ensuite
|
||||
manuellement via l'interface Web.
|
||||
|
||||
- `extract_ml_registrations --type {members, clubs, events, art, sport} [--year|-y YEAR]` :
|
||||
|
||||
Récupère la liste des adresses mail à inscrire à une liste de diffusion donnée.
|
||||
|
||||
* `members` : Liste des adresses mail des utilisateurs ayant une adhésion BDE (et non Kfet) active.
|
||||
* `clubs` : Liste des adresses mail de contact de tous les clubs BDE enregistrés.
|
||||
* `events` : Liste de toutes les adresses mails des utilisateurs inscrits au WEI ayant demandé à s'inscrire sur
|
||||
la liste de diffusion des événements du BDE.
|
||||
* `art` : Liste de toutes les adresses mails des utilisateurs inscrits au WEI ayant demandé à s'inscrire sur
|
||||
la liste de diffusion concertnant les actualités artistiques du BDA.
|
||||
* `sport` : Liste de toutes les adresses mails des utilisateurs inscrits au WEI ayant demandé à s'inscrire sur
|
||||
la liste de diffusion concertnant les actualités sportives du BDS.
|
||||
|
||||
Le champ `--year` est optionnel : il permet de choisir l'année du WEI en question (pour les trois dernières
|
||||
options). Si non renseigné, il s'agit du dernier WEI.
|
||||
|
||||
Par défaut, si `--type` est non renseigné, la liste des adhérents BDE est renvoyée.
|
||||
|
||||
- `extract_wei_registrations [--year|-y YEAR] [--bus|-b BUS] [--team|-t TEAM] [--sep SEP]` :
|
||||
|
||||
Récupère la liste des inscriptions au WEI et l'exporte au format CSV. Arguments possibles, optionnels :
|
||||
|
||||
* `--year YEAR` : sélectionne l'année du WEI. Par défaut, il s'agit du dernier WEI ayant eu lieu.
|
||||
* `--bus BUS` : filtre par bus, en récupérant uniquement les inscriptions sur un bus. Par défaut, on affiche
|
||||
tous les bus.
|
||||
* `--team TEAM` : filtre par équipe, en récupérant uniquement les inscriptions sur une équipe. Par défaut, on
|
||||
affiche toutes les équipes. Entrer `"none"` filtre les inscriptions sans équipe (chefs de bus, ...)
|
||||
* `--sep` : définit le caractère de séparation des colonnes du fichier CSV. Par défaut, il s'agit du caractère `|`.
|
||||
Merci de ne pas rentrer plus d'un caractère.
|
||||
|
||||
|
||||
## Shell
|
||||
|
||||
- Tabula rasa :
|
||||
```shell script
|
||||
sudo -u postgres sh -c "dropdb note_db && psql -c 'CREATE DATABASE note_db OWNER note;'"
|
||||
```
|
||||
La documentation est disponible sur <https://note.crans.org/doc/scripts/>.
|
||||
|
@ -57,13 +57,13 @@ class Command(BaseCommand):
|
||||
if user_id.isnumeric():
|
||||
qs = User.objects.filter(pk=int(user_id))
|
||||
if not qs.exists():
|
||||
self.stderr.write(self.style.WARNING(f"User {user_id} was not found. Ignoring..."))
|
||||
self.stderr.write(self.style.WARNING(f"User {user_id} was not found. Ignoring…"))
|
||||
continue
|
||||
user = qs.get()
|
||||
else:
|
||||
qs = Alias.objects.filter(normalized_name=Alias.normalize(user_id), note__noteuser__isnull=False)
|
||||
if not qs.exists():
|
||||
self.stderr.write(self.style.WARNING(f"User {user_id} was not found. Ignoring..."))
|
||||
self.stderr.write(self.style.WARNING(f"User {user_id} was not found. Ignoring…"))
|
||||
continue
|
||||
user = qs.get().note.user
|
||||
|
||||
@ -80,7 +80,7 @@ class Command(BaseCommand):
|
||||
local_deleted += list(transactions)
|
||||
for tr in transactions:
|
||||
if kwargs['verbosity'] >= 1:
|
||||
self.stdout.write(f"Removing {tr}...")
|
||||
self.stdout.write(f"Removing {tr}…")
|
||||
if force:
|
||||
tr.delete()
|
||||
|
||||
@ -89,7 +89,7 @@ class Command(BaseCommand):
|
||||
local_deleted += list(memberships)
|
||||
if kwargs['verbosity'] >= 1:
|
||||
for membership in memberships:
|
||||
self.stdout.write(f"Removing {membership}...")
|
||||
self.stdout.write(f"Removing {membership}…")
|
||||
if force:
|
||||
memberships.delete()
|
||||
|
||||
@ -98,7 +98,7 @@ class Command(BaseCommand):
|
||||
local_deleted += list(alias_set)
|
||||
if kwargs['verbosity'] >= 1:
|
||||
for alias in alias_set:
|
||||
self.stdout.write(f"Removing alias {alias}...")
|
||||
self.stdout.write(f"Removing alias {alias}…")
|
||||
if force:
|
||||
alias_set.delete()
|
||||
|
||||
@ -110,7 +110,7 @@ class Command(BaseCommand):
|
||||
local_deleted += list(entries)
|
||||
if kwargs['verbosity'] >= 1:
|
||||
for entry in entries:
|
||||
self.stdout.write(f"Removing {entry}...")
|
||||
self.stdout.write(f"Removing {entry}…")
|
||||
if force:
|
||||
entries.delete()
|
||||
|
||||
@ -119,7 +119,7 @@ class Command(BaseCommand):
|
||||
local_deleted += list(guests)
|
||||
if kwargs['verbosity'] >= 1:
|
||||
for guest in guests:
|
||||
self.stdout.write(f"Removing guest {guest}...")
|
||||
self.stdout.write(f"Removing guest {guest}…")
|
||||
if force:
|
||||
guests.delete()
|
||||
|
||||
@ -131,7 +131,7 @@ class Command(BaseCommand):
|
||||
local_deleted += list(credits)
|
||||
if kwargs['verbosity'] >= 1:
|
||||
for credit in credits:
|
||||
self.stdout.write(f"Removing {credit}...")
|
||||
self.stdout.write(f"Removing {credit}…")
|
||||
if force:
|
||||
credits.delete()
|
||||
|
||||
@ -169,9 +169,9 @@ class Command(BaseCommand):
|
||||
deleted += local_deleted
|
||||
|
||||
if deleted_users:
|
||||
message = f"Les utilisateurs {deleted_users} ont été supprimés par {executor}.\n\n"
|
||||
message = f"Les utilisateur⋅rices {deleted_users} ont été supprimé⋅es par {executor}.\n\n"
|
||||
message += "Ont été supprimés en conséquence les objets suivants :\n\n"
|
||||
for obj in deleted:
|
||||
message += f"{repr(obj)} (pk: {obj.pk})\n"
|
||||
if force and kwargs['doit']:
|
||||
mail_admins("Utilisateurs supprimés", message)
|
||||
mail_admins("Utilisateur⋅rices supprimés", message)
|
||||
|
@ -214,7 +214,7 @@ class Command(ImportCommand):
|
||||
pk_alias = Alias.objects.order_by('-id').first().id + 1
|
||||
for idx, row in enumerate(cur):
|
||||
alias_name = row["alias"]
|
||||
alias_name = (alias_name[:252] + '...') if len(alias_name) > 255 else alias_name
|
||||
alias_name = (alias_name[:254] + '…') if len(alias_name) > 255 else alias_name
|
||||
alias_norm = Alias.normalize(alias_name)
|
||||
self.update_line(idx, n, alias_norm)
|
||||
# clean pseudo (normalized pseudo must be unique)
|
||||
|
@ -102,7 +102,7 @@ class Command(ImportCommand):
|
||||
|
||||
def _basic_transaction(self, row, obj_dict, child_dict):
|
||||
if len(row["description"]) > 255:
|
||||
obj_dict["reason"] = obj_dict["reason"][:250] + "...)"
|
||||
obj_dict["reason"] = obj_dict["reason"][:252] + "…)"
|
||||
return obj_dict, None, None
|
||||
|
||||
def _template_transaction(self, row, obj_dict, child_dict):
|
||||
@ -221,7 +221,7 @@ class Command(ImportCommand):
|
||||
"valid": row["valide"],
|
||||
}
|
||||
if len(obj_dict["reason"]) > 255:
|
||||
obj_dict["reason"] = obj_dict["reason"][:252] + "..."
|
||||
obj_dict["reason"] = obj_dict["reason"][:254] + "…"
|
||||
# for child transaction Models
|
||||
child_dict = {"pk": pk_transaction}
|
||||
ttype = row["type"]
|
||||
|
@ -17,10 +17,10 @@ class Command(BaseCommand):
|
||||
user.is_active = True
|
||||
if kwargs['STAFF']:
|
||||
if kwargs['verbosity'] > 0:
|
||||
self.stdout.write(f"Add {user} to staff users...")
|
||||
self.stdout.write(f"Add {user} to staff users…")
|
||||
user.is_staff = True
|
||||
if kwargs['SUPER']:
|
||||
if kwargs['verbosity'] > 0:
|
||||
self.stdout.write(f"Add {user} to superusers...")
|
||||
self.stdout.write(f"Add {user} to superusers…")
|
||||
user.is_superuser = True
|
||||
user.save()
|
||||
|
Loading…
x
Reference in New Issue
Block a user