diff --git a/src/scripts/secretkey_generator.py b/src/scripts/secretkey_generator.py new file mode 100644 index 0000000..1af285c --- /dev/null +++ b/src/scripts/secretkey_generator.py @@ -0,0 +1,65 @@ +""" +Django Secret Key Generator + +Generate secure Django secret keys for different environments. +""" + +import secrets +import string + +from rich.console import Console +from rich.panel import Panel +from rich.table import Table +from rich.text import Text + +from src.scripts.console_ui import UIColors + +console = Console() + + +def generate_secret_key(length: int = 50) -> str: + alphabet = string.ascii_letters + string.digits + "!@#$%^&*(-_=+)" + return "".join(secrets.choice(alphabet) for _ in range(length)) + + +def generate_multiple_keys(count: int = 3, length: int = 50) -> list[str]: + return [generate_secret_key(length) for _ in range(count)] + + +def display_secret_keys(keys: list[str]) -> None: + table = Table( + title="🔐 Django Secret Keys", show_header=True, header_style="bold blue" + ) + table.add_column("Environment", style="cyan", no_wrap=True) + table.add_column("Secret Key", style="dim") + + for i, key in enumerate(keys, 1): + table.add_row(f"Environment {i}", key) + + console.print(table) + console.print() + + +def generate_secret_command(): + keys = generate_multiple_keys(3, 50) + display_secret_keys(keys) + + instructions = Text() + instructions.append("📋 Usage Instructions:\n", style=UIColors.ACCENT) + instructions.append("1. Copy the appropriate secret key for your environment\n") + instructions.append("2. Add it to your .env file:\n") + instructions.append(" SECRET_KEY=your_secret_key_here\n", style=UIColors.CODE) + instructions.append("3. Or set it as an environment variable:\n") + instructions.append( + " export SECRET_KEY=your_secret_key_here\n", style=UIColors.CODE + ) + instructions.append( + "4. Never commit secret keys to version control!\n", style=UIColors.WARNING + ) + + console.print(Panel(instructions, title="💡 How to Use", border_style="blue")) + console.print() + + +if __name__ == "__main__": + generate_secret_command()