From 11ddbf016965d4e623cd3a39c3baf3d865c407c8 Mon Sep 17 00:00:00 2001 From: augustin64 Date: Fri, 15 Dec 2023 11:36:34 +0100 Subject: [PATCH] Take advice from pylint --- default_config.py | 2 +- partitioncloud/__init__.py | 17 +++-- partitioncloud/modules/admin.py | 8 ++- partitioncloud/modules/albums.py | 76 +++++++++++--------- partitioncloud/modules/auth.py | 18 ++--- partitioncloud/modules/classes/album.py | 7 +- partitioncloud/modules/classes/attachment.py | 6 +- partitioncloud/modules/classes/partition.py | 5 +- partitioncloud/modules/classes/user.py | 13 ++-- partitioncloud/modules/db.py | 10 --- partitioncloud/modules/groupe.py | 28 +++----- partitioncloud/modules/partition.py | 28 +++----- partitioncloud/modules/search.py | 11 ++- partitioncloud/modules/utils.py | 3 +- scripts/hooks/utils.py | 4 +- scripts/hooks/v1.py | 6 +- scripts/migration.py | 17 +++-- 17 files changed, 120 insertions(+), 139 deletions(-) diff --git a/default_config.py b/default_config.py index d7022bd..481464a 100644 --- a/default_config.py +++ b/default_config.py @@ -15,4 +15,4 @@ MAX_ONLINE_QUERIES=3 DISABLE_REGISTER=False # Front URL of the application (for QRCodes generation) -BASE_URL="http://localhost:5000" \ No newline at end of file +BASE_URL="http://localhost:5000" diff --git a/partitioncloud/__init__.py b/partitioncloud/__init__.py index c1892de..0f6a8c6 100644 --- a/partitioncloud/__init__.py +++ b/partitioncloud/__init__.py @@ -32,9 +32,10 @@ app.register_blueprint(partition.bp) try: - result = subprocess.run(["git", "describe", "--tags"], stdout=subprocess.PIPE) + result = subprocess.run(["git", "describe", "--tags"], stdout=subprocess.PIPE, check=True) __version__ = result.stdout.decode('utf8') -except FileNotFoundError: # In case git not found, which would be strange +except (FileNotFoundError, subprocess.CalledProcessError): + # In case git not found or any platform specific weird error __version__ = "unknown" @@ -94,8 +95,11 @@ def add_user(): @app.route("/static/search-thumbnails/.jpg") @login_required def search_thumbnail(uuid): + """ + Renvoie l'apercu d'un résultat de recherche + """ db = get_db() - partition = db.execute( + part = db.execute( """ SELECT uuid, url FROM search_results WHERE uuid = ? @@ -103,7 +107,7 @@ def search_thumbnail(uuid): (uuid,) ).fetchone() - if partition is None: + if part is None: abort(404) if not os.path.exists(os.path.join(app.static_folder, "search-thumbnails", f"{uuid}.jpg")): os.system( @@ -119,9 +123,10 @@ def search_thumbnail(uuid): @app.context_processor def inject_default_variables(): + """Inject the version number in the template variables""" if __version__ == "unknown": - return dict(version="") - return dict(version=__version__) + return {"version": ''} + return {"version": __version__} @app.after_request diff --git a/partitioncloud/modules/admin.py b/partitioncloud/modules/admin.py index 0ce16c4..00bd856 100644 --- a/partitioncloud/modules/admin.py +++ b/partitioncloud/modules/admin.py @@ -2,8 +2,7 @@ """ Admin Panel """ -import os -from flask import Blueprint, abort, send_file, render_template, session +from flask import Blueprint, render_template, session from .db import get_db from .auth import admin_required @@ -15,6 +14,9 @@ bp = Blueprint("admin", __name__, url_prefix="/admin") @bp.route("/") @admin_required def index(): + """ + Admin panel home page + """ current_user = User(user_id=session.get("user_id")) current_user.get_albums() # We need to do that before we close the db db = get_db() @@ -32,4 +34,4 @@ def index(): "admin/index.html", users=users, user=current_user - ) \ No newline at end of file + ) diff --git a/partitioncloud/modules/albums.py b/partitioncloud/modules/albums.py index 6d86464..53705a2 100644 --- a/partitioncloud/modules/albums.py +++ b/partitioncloud/modules/albums.py @@ -6,8 +6,8 @@ import os import shutil from uuid import uuid4 -from flask import (Blueprint, abort, flash, redirect, render_template, request, - send_file, session, current_app) +from flask import (Blueprint, abort, flash, redirect, render_template, + request, session, current_app) from .auth import login_required from .db import get_db @@ -20,13 +20,10 @@ bp = Blueprint("albums", __name__, url_prefix="/albums") @bp.route("/") @login_required def index(): + """ + Albums home page + """ user = User(user_id=session.get("user_id")) - albums = user.get_albums() - - if user.access_level == 1: - max_queries = 10 - else: - max_queries = current_app.config["MAX_ONLINE_QUERIES"] return render_template("albums/index.html", user=user) @@ -34,6 +31,9 @@ def index(): @bp.route("/search", methods=["POST"]) @login_required def search_page(): + """ + Résultats de recherche + """ if "query" not in request.form or request.form["query"] == "": flash("Aucun terme de recherche spécifié.") return redirect("/albums") @@ -98,14 +98,18 @@ def album(uuid): @bp.route("//qr") def qr_code(uuid): + """ + Renvoie le QR Code d'un album + """ return get_qrcode(f"/albums/{uuid}") @bp.route("/create-album", methods=["POST"]) @login_required def create_album(): - current_user = User(user_id=session.get("user_id")) - + """ + Création d'un album + """ name = request.form["name"] db = get_db() error = None @@ -145,8 +149,7 @@ def create_album(): "status": "ok", "uuid": uuid } - else: - return redirect(f"/albums/{uuid}") + return redirect(f"/albums/{uuid}") flash(error) return redirect(request.referrer) @@ -155,6 +158,9 @@ def create_album(): @bp.route("//join") @login_required def join_album(uuid): + """ + Rejoindre un album + """ user = User(user_id=session.get("user_id")) try: user.join_album(uuid) @@ -169,6 +175,9 @@ def join_album(uuid): @bp.route("//quit") @login_required def quit_album(uuid): + """ + Quitter un album + """ user = User(user_id=session.get("user_id")) album = Album(uuid=uuid) users = album.get_users() @@ -182,26 +191,28 @@ def quit_album(uuid): user.quit_album(uuid) flash("Album quitté.") - return redirect(f"/albums") + return redirect("/albums") @bp.route("//delete", methods=["GET", "POST"]) @login_required def delete_album(uuid): - db = get_db() + """ + Supprimer un album + """ album = Album(uuid=uuid) user = User(user_id=session.get("user_id")) if request.method == "GET": return render_template("albums/delete-album.html", album=album, user=user) - + error = None users = album.get_users() if len(users) > 1: error = "Vous n'êtes pas seul dans cet album." elif len(users) == 1 and users[0]["id"] != user.id: error = "Vous ne possédez pas cet album." - + if user.access_level == 1: error = None @@ -218,6 +229,9 @@ def delete_album(uuid): @bp.route("//add-partition", methods=["POST"]) @login_required def add_partition(album_uuid): + """ + Ajouter une partition à un album (par upload) + """ db = get_db() user = User(user_id=session.get("user_id")) album = Album(uuid=album_uuid) @@ -281,7 +295,10 @@ def add_partition(album_uuid): file = request.files["file"] file.save(f"partitioncloud/partitions/{partition_uuid}.pdf") else: - shutil.copyfile(f"partitioncloud/search-partitions/{search_uuid}.pdf", f"partitioncloud/partitions/{partition_uuid}.pdf") + shutil.copyfile( + f"partitioncloud/search-partitions/{search_uuid}.pdf", + f"partitioncloud/partitions/{partition_uuid}.pdf" + ) os.system( f'/usr/bin/convert -thumbnail\ @@ -290,14 +307,6 @@ def add_partition(album_uuid): partitioncloud/partitions/{partition_uuid}.pdf[0] \ partitioncloud/static/thumbnails/{partition_uuid}.jpg' ) - - album_id = db.execute( - """ - SELECT id FROM album - WHERE uuid = ? - """, - (album.uuid,) - ).fetchone()["id"] db.commit() album.add_partition(partition_uuid) @@ -311,14 +320,16 @@ def add_partition(album_uuid): "status": "ok", "uuid": partition_uuid } - else: - flash(f"Partition {request.form['name']} ajoutée") - return redirect(f"/albums/{album.uuid}") + flash(f"Partition {request.form['name']} ajoutée") + return redirect(f"/albums/{album.uuid}") @bp.route("/add-partition", methods=["POST"]) @login_required def add_partition_from_search(): + """ + Ajout d'une partition (depuis la recherche) + """ user = User(user_id=session.get("user_id")) error = None @@ -330,7 +341,7 @@ def add_partition_from_search(): error = "Il est nécessaire de spécifier un type de partition." elif (not user.is_participant(request.form["album-uuid"])) and (user.access_level != 1): error = "Vous ne participez pas à cet album." - + if error is not None: flash(error) return redirect("/albums") @@ -355,7 +366,7 @@ def add_partition_from_search(): return redirect(f"/albums/{album.uuid}") - elif request.form["partition-type"] == "online_search": + if request.form["partition-type"] == "online_search": return render_template( "albums/add-partition.html", album=album, @@ -363,6 +374,5 @@ def add_partition_from_search(): user=user ) - else: - flash("Type de partition inconnu.") - return redirect("/albums") \ No newline at end of file + flash("Type de partition inconnu.") + return redirect("/albums") diff --git a/partitioncloud/modules/auth.py b/partitioncloud/modules/auth.py index da24e80..ccc37cc 100644 --- a/partitioncloud/modules/auth.py +++ b/partitioncloud/modules/auth.py @@ -4,18 +4,9 @@ Authentification module """ import functools -from flask import ( - Blueprint, - flash, - g, - redirect, - render_template, - request, - session, - url_for, - flash, - current_app -) +from flask import (Blueprint, flash, g, redirect, render_template, + request, session, url_for, current_app) + from werkzeug.security import check_password_hash, generate_password_hash from .db import get_db @@ -117,7 +108,8 @@ def register(): except db.IntegrityError: # The username was already taken, which caused the # commit to fail. Show a validation error. - error = f"Le nom d'utilisateur {username} est déjà pris. Vous souhaitez peut-être vous connecter" + error = f"Le nom d'utilisateur {username} est déjà pris. \ + Vous souhaitez peut-être vous connecter" else: # Success, go to the login page. return redirect(url_for("auth.login")) diff --git a/partitioncloud/modules/classes/album.py b/partitioncloud/modules/classes/album.py index e0e2ffd..eaf79e8 100644 --- a/partitioncloud/modules/classes/album.py +++ b/partitioncloud/modules/classes/album.py @@ -1,3 +1,6 @@ +""" +Classe Album +""" import os from ..db import get_db @@ -37,7 +40,7 @@ class Album(): else: raise LookupError - + self.users = None @@ -131,7 +134,7 @@ class Album(): os.remove(f"partitioncloud/partitions/{partition['uuid']}.pdf") if os.path.exists(f"partitioncloud/static/thumbnails/{partition['uuid']}.jpg"): os.remove(f"partitioncloud/static/thumbnails/{partition['uuid']}.jpg") - + partitions = db.execute( """ DELETE FROM partition diff --git a/partitioncloud/modules/classes/attachment.py b/partitioncloud/modules/classes/attachment.py index 9eff7d2..902b264 100644 --- a/partitioncloud/modules/classes/attachment.py +++ b/partitioncloud/modules/classes/attachment.py @@ -1,7 +1,5 @@ import os -from flask import current_app - from ..db import get_db @@ -41,8 +39,8 @@ class Attachment(): (self.uuid,) ) db.commit() - + os.remove(f"partitioncloud/attachments/{self.uuid}.{self.filetype}") def __repr__(self): - return f"{self.name}.{self.filetype}" \ No newline at end of file + return f"{self.name}.{self.filetype}" diff --git a/partitioncloud/modules/classes/partition.py b/partitioncloud/modules/classes/partition.py index 4334758..7caa75c 100644 --- a/partitioncloud/modules/classes/partition.py +++ b/partitioncloud/modules/classes/partition.py @@ -1,5 +1,4 @@ import os -from flask import current_app from ..db import get_db from .user import User @@ -42,7 +41,7 @@ class Partition(): (self.uuid,) ) db.commit() - + os.remove(f"partitioncloud/partitions/{self.uuid}.pdf") if os.path.exists(f"partitioncloud/static/thumbnails/{self.uuid}.jpg"): os.remove(f"partitioncloud/static/thumbnails/{self.uuid}.jpg") @@ -61,7 +60,7 @@ class Partition(): def update(self, name=None, author="", body=""): if name is None: - return Exception("name cannot be None") + raise Exception("name cannot be None") db = get_db() db.execute( diff --git a/partitioncloud/modules/classes/user.py b/partitioncloud/modules/classes/user.py index d222b32..4ae16c0 100644 --- a/partitioncloud/modules/classes/user.py +++ b/partitioncloud/modules/classes/user.py @@ -37,7 +37,7 @@ class User(): if self.id is None and self.username is None: self.username = "" self.access_level = -1 - + else: if self.id is not None: data = db.execute( @@ -55,7 +55,7 @@ class User(): """, (self.username,) ).fetchone() - + self.id = data["id"] self.username = data["username"] self.access_level = data["access_level"] @@ -68,7 +68,7 @@ class User(): def is_participant(self, album_uuid, exclude_groupe=False): db = get_db() - + return (len(db.execute( # Is participant directly in the album """ SELECT album.id FROM album @@ -77,7 +77,7 @@ class User(): WHERE user.id = ? AND album.uuid = ? """, (self.id, album_uuid) - ).fetchall()) == 1 or + ).fetchall()) == 1 or # Is participant in a group that has this album ((not exclude_groupe) and (len(db.execute( """ @@ -165,7 +165,7 @@ class User(): (self.id,), ).fetchall() return self.partitions - + def join_album(self, album_uuid): db = get_db() album = Album(uuid=album_uuid) @@ -226,5 +226,4 @@ class User(): if len(colors) == 0: integer = hash(self.username) % 16777215 return "#" + str(hex(integer))[2:] - else: - return f"var({colors[hash(self.username) %len(colors)]})" \ No newline at end of file + return f"var({colors[hash(self.username) %len(colors)]})" diff --git a/partitioncloud/modules/db.py b/partitioncloud/modules/db.py index 49e5cfa..78fe592 100644 --- a/partitioncloud/modules/db.py +++ b/partitioncloud/modules/db.py @@ -16,13 +16,3 @@ def get_db(): g.db.row_factory = sqlite3.Row return g.db - - -def close_db(e=None): - """If this request connected to the database, close the - connection. - """ - db = g.pop("db", None) - - if db is not None: - db.close() diff --git a/partitioncloud/modules/groupe.py b/partitioncloud/modules/groupe.py index f98d91f..f9bf315 100644 --- a/partitioncloud/modules/groupe.py +++ b/partitioncloud/modules/groupe.py @@ -2,15 +2,12 @@ """ Groupe module """ -import os - -from flask import (Blueprint, abort, flash, redirect, render_template, request, - send_file, session, current_app) +from flask import (Blueprint, abort, flash, redirect, render_template, + request, session) from .auth import login_required from .db import get_db -from .utils import User, Album, get_all_partitions, Groupe, new_uuid, get_qrcode, format_uuid -from . import search +from .utils import User, Album, Groupe, new_uuid, get_qrcode, format_uuid bp = Blueprint("groupe", __name__, url_prefix="/groupe") @@ -37,7 +34,7 @@ def groupe(uuid): groupe.users = [User(user_id=i["id"]) for i in groupe.get_users()] groupe.get_albums() user = User(user_id=session.get("user_id")) - + if user.id is None: # On ne propose pas aux gens non connectés de rejoindre l'album not_participant = False @@ -61,8 +58,6 @@ def album_qr_code(uuid): @bp.route("/create-groupe", methods=["POST"]) @login_required def create_groupe(): - current_user = User(user_id=session.get("user_id")) - name = request.form["name"] db = get_db() error = None @@ -102,8 +97,7 @@ def create_groupe(): "status": "ok", "uuid": uuid } - else: - return redirect(f"/groupe/{uuid}") + return redirect(f"/groupe/{uuid}") flash(error) return redirect(request.referrer) @@ -139,21 +133,20 @@ def quit_groupe(uuid): user.quit_groupe(groupe.uuid) flash("Groupe quitté.") - return redirect(f"/albums") + return redirect("/albums") @bp.route("//delete", methods=["POST"]) @login_required def delete_groupe(uuid): - db = get_db() groupe = Groupe(uuid=uuid) user = User(user_id=session.get("user_id")) - + error = None users = groupe.get_users() if len(users) > 1: error = "Vous n'êtes pas seul dans ce groupe." - + if user.access_level == 1 or user.id not in groupe.get_admins(): error = None @@ -220,8 +213,7 @@ def create_album(groupe_uuid): "status": "ok", "uuid": uuid } - else: - return redirect(f"/groupe/{groupe.uuid}/{uuid}") + return redirect(f"/groupe/{groupe.uuid}/{uuid}") flash(error) return redirect(request.referrer) @@ -277,4 +269,4 @@ def album(groupe_uuid, album_uuid): @bp.route("///qr") def groupe_qr_code(groupe_uuid, album_uuid): - return get_qrcode(f"/groupe/{groupe_uuid}/{album_uuid}") \ No newline at end of file + return get_qrcode(f"/groupe/{groupe_uuid}/{album_uuid}") diff --git a/partitioncloud/modules/partition.py b/partitioncloud/modules/partition.py index 9e57261..1d5dbe7 100644 --- a/partitioncloud/modules/partition.py +++ b/partitioncloud/modules/partition.py @@ -15,13 +15,12 @@ bp = Blueprint("partition", __name__, url_prefix="/partition") @bp.route("/") def partition(uuid): - db = get_db() try: partition = Partition(uuid=uuid) except LookupError: abort(404) - + return send_file( os.path.join("partitions", f"{uuid}.pdf"), download_name = f"{partition.name}.pdf" @@ -29,12 +28,11 @@ def partition(uuid): @bp.route("//attachments") def attachments(uuid): - db = get_db() try: partition = Partition(uuid=uuid) except LookupError: abort(404) - + partition.load_attachments() return render_template( "partition/attachments.html", @@ -65,10 +63,10 @@ def add_attachment(uuid): name = ".".join(request.files["file"].filename.split(".")[:-1]) else: name = request.form["name"] - + if name == "": error = "Pas de nom de fichier" - + else: filename = request.files["file"].filename ext = filename.split(".")[-1] @@ -97,7 +95,7 @@ def add_attachment(uuid): break except db.IntegrityError: - pass + pass if "response" in request.args and request.args["response"] == "json": @@ -105,31 +103,28 @@ def add_attachment(uuid): "status": "ok", "uuid": attachment_uuid } - else: - return redirect(f"/partition/{partition.uuid}/attachments") + return redirect(f"/partition/{partition.uuid}/attachments") @bp.route("/attachment/.") def attachment(uuid, filetype): - db = get_db() try: attachment = Attachment(uuid=uuid) except LookupError: abort(404) assert filetype == attachment.filetype - + return send_file( os.path.join("attachments", f"{uuid}.{attachment.filetype}"), download_name = f"{attachment.name}.{attachment.filetype}" ) - + @bp.route("//edit", methods=["GET", "POST"]) @login_required def edit(uuid): - db = get_db() try: partition = Partition(uuid=uuid) except LookupError: @@ -155,7 +150,7 @@ def edit(uuid): if error is not None: flash(error) return redirect(f"/partition/{ uuid }/edit") - + partition.update( name=request.form["name"], author=request.form["author"], @@ -169,7 +164,6 @@ def edit(uuid): @bp.route("//details", methods=["GET", "POST"]) @admin_required def details(uuid): - db = get_db() try: partition = Partition(uuid=uuid) except LookupError: @@ -202,7 +196,7 @@ def details(uuid): if error is not None: flash(error) return redirect(f"/partition/{ uuid }/details") - + partition.update( name=request.form["name"], author=request.form["author"], @@ -260,4 +254,4 @@ def partition_search(uuid): def index(): partitions = get_all_partitions() user = User(user_id=session.get("user_id")) - return render_template("admin/partitions.html", partitions=partitions, user=user) \ No newline at end of file + return render_template("admin/partitions.html", partitions=partitions, user=user) diff --git a/partitioncloud/modules/search.py b/partitioncloud/modules/search.py index dd79b51..6126572 100644 --- a/partitioncloud/modules/search.py +++ b/partitioncloud/modules/search.py @@ -39,7 +39,7 @@ def local_search(query, partitions): score_partitions = [(score_attribution(partition), partition) for partition in partitions] score_partitions.sort(key=lambda x: x[0], reverse=True) - + selection = [] for score, partition in score_partitions[:5]: if score > 0: @@ -56,8 +56,8 @@ def download_search_result(element): try: urllib.request.urlretrieve(url, f"partitioncloud/search-partitions/{uuid}.pdf") - except (urllib.error.HTTPError, urllib.error.URLError) as e: - with open(f"partitioncloud/search-partitions/{uuid}.pdf",'a') as f: + except (urllib.error.HTTPError, urllib.error.URLError): + with open(f"partitioncloud/search-partitions/{uuid}.pdf", 'a', encoding="utf8") as f: pass # Create empty file @@ -112,7 +112,6 @@ def online_search(query, num_queries): thread.join() for element in partitions: - pass uuid = element["uuid"] url = element["url"] if os.stat(f"partitioncloud/search-partitions/{uuid}.pdf").st_size == 0: @@ -140,7 +139,7 @@ def flush_cache(): db = get_db() expired_cache = db.execute( """ - SELECT uuid FROM search_results + SELECT uuid FROM search_results WHERE creation_time <= datetime('now', '-15 minutes', 'localtime') """ ).fetchall() @@ -161,4 +160,4 @@ def flush_cache(): WHERE creation_time <= datetime('now', '-15 minutes', 'localtime') """ ) - db.commit() \ No newline at end of file + db.commit() diff --git a/partitioncloud/modules/utils.py b/partitioncloud/modules/utils.py index 531ff59..e370df6 100644 --- a/partitioncloud/modules/utils.py +++ b/partitioncloud/modules/utils.py @@ -1,5 +1,4 @@ #!/usr/bin/python3 -import os import io import random import string @@ -71,4 +70,4 @@ def get_all_albums(): "name": a["name"], "uuid": a["uuid"] } for a in albums - ] \ No newline at end of file + ] diff --git a/scripts/hooks/utils.py b/scripts/hooks/utils.py index bdf9c3d..93dce86 100644 --- a/scripts/hooks/utils.py +++ b/scripts/hooks/utils.py @@ -15,7 +15,7 @@ def get_sqlite_data(*args): con = sqlite3.connect("instance/partitioncloud.sqlite") cur = con.cursor() data = cur.execute(*args) - new_data = [i for i in data] + new_data = list(data) con.close() return new_data @@ -24,4 +24,4 @@ def new_uuid(): def format_uuid(uuid): """Format old uuid4 format""" - return uuid.upper()[:6] \ No newline at end of file + return uuid.upper()[:6] diff --git a/scripts/hooks/v1.py b/scripts/hooks/v1.py index 866ebd6..b0dfcc7 100644 --- a/scripts/hooks/v1.py +++ b/scripts/hooks/v1.py @@ -92,7 +92,7 @@ def mass_rename(): (album[0], album[1], utils.format_uuid(album[2])) ) except sqlite3.IntegrityError: - uuid = new_uuid() + uuid = utils.new_uuid() print(f"{Fore.RED}Collision on {album[1]}{Style.RESET_ALL} ({album[2][:10]} renaming to {uuid})") utils.run_sqlite_command( """ @@ -101,7 +101,7 @@ def mass_rename(): """, (album[0], album[1], uuid) ) - + for groupe in groupes: try: utils.run_sqlite_command( @@ -112,7 +112,7 @@ def mass_rename(): (groupe[0], groupe[1], utils.format_uuid(groupe[2])) ) except sqlite3.IntegrityError: - uuid = new_uuid() + uuid = utils.new_uuid() print(f"{Fore.RED}Collision on {groupe[1]}{Style.RESET_ALL} ({groupe[2][:10]} renaming to {uuid})") utils.run_sqlite_command( """ diff --git a/scripts/migration.py b/scripts/migration.py index 78cad01..00540b3 100644 --- a/scripts/migration.py +++ b/scripts/migration.py @@ -11,7 +11,7 @@ from hooks import v1 def get_version(v: str) -> (int, int, int): """Returns a tuple (major, minor, patch from the string v{major}.{minor}.{patch})""" - assert (v[0] == 'v') # Check if the version is correctly formatted + assert v[0] == 'v' # Check if the version is correctly formatted return tuple(map(int, v[1:].split('.'))) @@ -48,10 +48,9 @@ def get_hooks(current, target): def compare(v1: str, v2: str): if is_newer(v2[0], v1[0]): return -1 - elif is_newer(v1[0], v2[0]): + if is_newer(v1[0], v2[0]): return 1 - else: - return 0 + return 0 applied_hooks = [] for hook in hooks: @@ -104,12 +103,12 @@ def apply_hooks(hooks): def migrate(current, target, skip_backup=False, prog_name="scripts/migration.py"): """""" - print(f"Trying to migrate from {args.current} to {args.target}") + print(f"Trying to migrate from {current} to {target}") - assert is_newer(args.target, args.current) + assert is_newer(target, current) - applied_hooks = get_hooks(args.current, args.target) - if (len(applied_hooks) == 0): + applied_hooks = get_hooks(current, target) + if len(applied_hooks) == 0: print(f"{Fore.GREEN}No hook to apply{Style.RESET_ALL}") exit(0) @@ -166,7 +165,7 @@ if __name__ == "__main__": parser.add_argument('-r', '--restore', help='restore from specific version backup, will not apply any hook (vx.y.z)') args = parser.parse_args() - + if args.restore is None: migrate(args.current, args.target, skip_backup=args.skip_backup) else: