mirror of
https://github.com/Dictionarry-Hub/profilarr.git
synced 2026-01-22 19:01:02 +01:00
feat: unlink repo [backend]
This commit is contained in:
@@ -4,6 +4,7 @@ from .regex import bp as regex_bp
|
||||
from .format import bp as format_bp
|
||||
from .settings import bp as settings_bp
|
||||
from .profile import bp as profile_bp
|
||||
from .git.unlink_repo import repo_bp
|
||||
import os
|
||||
|
||||
REGEX_DIR = os.path.join('data', 'db', 'regex_patterns')
|
||||
@@ -13,19 +14,20 @@ PROFILE_DIR = os.path.join('data', 'db', 'profiles')
|
||||
def create_app():
|
||||
app = Flask(__name__)
|
||||
CORS(app, resources={r"/*": {"origins": "*"}})
|
||||
|
||||
|
||||
# Initialize directories to avoid issues with non-existing directories
|
||||
initialize_directories()
|
||||
|
||||
|
||||
# Register Blueprints
|
||||
app.register_blueprint(regex_bp)
|
||||
app.register_blueprint(format_bp)
|
||||
app.register_blueprint(settings_bp)
|
||||
app.register_blueprint(profile_bp)
|
||||
|
||||
app.register_blueprint(repo_bp)
|
||||
|
||||
return app
|
||||
|
||||
def initialize_directories():
|
||||
os.makedirs(REGEX_DIR, exist_ok=True)
|
||||
os.makedirs(FORMAT_DIR, exist_ok=True)
|
||||
os.makedirs(PROFILE_DIR, exist_ok=True)
|
||||
os.makedirs(PROFILE_DIR, exist_ok=True)
|
||||
|
||||
35
backend/app/git/unlink_repo.py
Normal file
35
backend/app/git/unlink_repo.py
Normal file
@@ -0,0 +1,35 @@
|
||||
import os
|
||||
import shutil
|
||||
from flask import Blueprint, jsonify
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
repo_bp = Blueprint('repository', __name__, url_prefix='/repository')
|
||||
|
||||
def unlink_repository(settings_manager):
|
||||
try:
|
||||
# Remove the .git folder
|
||||
git_folder = os.path.join(settings_manager.repo_path, '.git')
|
||||
if os.path.exists(git_folder):
|
||||
shutil.rmtree(git_folder)
|
||||
logger.info(f"Removed .git folder from {settings_manager.repo_path}")
|
||||
|
||||
# Update settings
|
||||
settings_manager.settings.pop('gitRepo', None)
|
||||
settings_manager.settings.pop('gitToken', None)
|
||||
settings_manager.save_settings(settings_manager.settings)
|
||||
logger.info("Updated settings to remove git information")
|
||||
|
||||
return True, "Repository successfully unlinked"
|
||||
except Exception as e:
|
||||
logger.error(f"Error unlinking repository: {str(e)}", exc_info=True)
|
||||
return False, f"Error unlinking repository: {str(e)}"
|
||||
|
||||
@repo_bp.route('/unlink', methods=['POST'])
|
||||
def unlink_repo():
|
||||
success, message = unlink_repository(repo_bp.settings_manager)
|
||||
if success:
|
||||
return jsonify({'success': True, 'message': message}), 200
|
||||
else:
|
||||
return jsonify({'success': False, 'error': message}), 400
|
||||
@@ -9,6 +9,7 @@ import logging
|
||||
from datetime import datetime
|
||||
import json
|
||||
import requests
|
||||
from .git.unlink_repo import repo_bp, unlink_repository
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
logging.getLogger('git').setLevel(logging.WARNING)
|
||||
@@ -572,6 +573,7 @@ class SettingsManager:
|
||||
|
||||
|
||||
settings_manager = SettingsManager()
|
||||
repo_bp.settings_manager = settings_manager
|
||||
|
||||
@bp.route('', methods=['GET'])
|
||||
def handle_settings():
|
||||
|
||||
Reference in New Issue
Block a user