From 3da9bb6914ebf7447c65017c6ebb96859856364d Mon Sep 17 00:00:00 2001 From: Emmanuel Viennet Date: Mon, 31 May 2021 09:57:23 +0200 Subject: [PATCH] commandes Flask pour creer utilisateurs de test --- app/templates/main/index.html | 14 ++------- app/views/notes.py | 2 +- scodoc.py | 57 +++++++++++++++++++++++++++++++---- 3 files changed, 55 insertions(+), 18 deletions(-) diff --git a/app/templates/main/index.html b/app/templates/main/index.html index 61ec1a72..179c1d6d 100644 --- a/app/templates/main/index.html +++ b/app/templates/main/index.html @@ -23,18 +23,10 @@
  • formsemestre_status : a-t-on le rôle EnsRT ?
  • -
  • sco_exemple?etudid=E123 : test "scodoc", url +
  • Notes/essai : test "notes", url manuelle
  • -
  • sco_exemple2 : test appel - entre vues -
  • - -
  • sco_get_version : test - appel vers ScoDoc interne (arg. REQUEST positionnel). -
  • - -
  • sco_get_version : vue - protégée par perm. VIEW. +
  • Notes/essai2 : permission + ScoImplement dans RT
  • diff --git a/app/views/notes.py b/app/views/notes.py index f0823924..7234d26b 100644 --- a/app/views/notes.py +++ b/app/views/notes.py @@ -160,7 +160,7 @@ def essai2(context): return essai_(context, "sans request") -sco_publish("/essai2", essai2, Permission.ScoView) +sco_publish("/essai2", essai2, Permission.ScoImplement) # --------------------- diff --git a/scodoc.py b/scodoc.py index 68b7b0e8..0ced1001 100755 --- a/scodoc.py +++ b/scodoc.py @@ -10,7 +10,7 @@ from __future__ import print_function from pprint import pprint as pp - +import sys import click import flask @@ -40,7 +40,7 @@ def make_shell_context(): @app.cli.command() -def inituserdb(): +def user_db_init(): """Initialize the users database.""" click.echo("Init the db") # Create roles: @@ -62,14 +62,59 @@ def inituserdb(): @app.cli.command() -def clearuserdb(): +def user_db_clear(): """Erase (drop) all tables of users database !""" - click.echo("Erasing the db !") - _cleardb() + click.echo("Erasing the users database !") + _clear_users_db() -def _cleardb(): +def _clear_users_db(): """Erase (drop) all tables of users database !""" + click.confirm("This will erase all users.\nDo you want to continue?", abort=True) db.reflect() db.drop_all() db.session.commit() + + +@app.cli.command() +@click.argument("username") +@click.argument("role") +@click.argument("dept") +def user_create(username, role, dept): + "Create a new user" + r = Role.get_named_role(role) + if not r: + sys.stderr.write("user_create: role {r} does not exists".format(r=r)) + return 1 + u = User.query.filter_by(username=username).first() + if u: + sys.stderr.write("user_create: user {u} already exists".format(u=u)) + return 2 + u = User(username=username) + u.add_role(r, dept) + db.session.add(u) + db.session.commit() + click.echo( + "created user, login: {u.username}, with role {r} in dept. {dept}".format( + u=u, r=r, dept=dept + ) + ) + + +@app.cli.command() +@click.argument("username") +@click.password_option() +def user_password(username, password=None): + "Set (or change) user's password" + if not password: + sys.stderr.write("user_password: missing password") + return 1 + u = User.query.filter_by(username=username).first() + if not u: + sys.stderr.write("user_password: user {} does not exists".format(username)) + return 1 + + u.set_password(password) + db.session.add(u) + db.session.commit() + click.echo("changed password for user {}".format(u))