retrait de page html redondantes, ajout de la modification des username et affichage des userrname au lieu des noms complets
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
"""Data migration script to fix corrupted username fields.
|
||||
|
||||
This script fixes the bug where user.username was incorrectly set to full_name
|
||||
instead of preserving the actual username. It migrates existing users by:
|
||||
1. Setting username to a slug version of full_name (e.g., 'sarah-johnson')
|
||||
2. Clearing full_name to empty string (will be collected via profile edit)
|
||||
|
||||
Run this script once to fix existing database records.
|
||||
"""
|
||||
|
||||
from app import create_app
|
||||
from extensions import db
|
||||
from models import User
|
||||
|
||||
def slugify(name):
|
||||
"""Convert a name to a username-friendly slug.
|
||||
|
||||
Args:
|
||||
name (str): Full name to convert.
|
||||
|
||||
Returns:
|
||||
str: Slugified username.
|
||||
"""
|
||||
return name.lower().replace(' ', '-').replace("'", '')
|
||||
|
||||
def migrate():
|
||||
"""Migrate existing users to fix corrupted username/full_name fields."""
|
||||
with app.app_context():
|
||||
users = User.query.all()
|
||||
migrated = 0
|
||||
|
||||
for user in users:
|
||||
# If username looks like a full name (contains spaces), migrate it
|
||||
if ' ' in user.username:
|
||||
# Save the current username (which is actually the full name)
|
||||
actual_full_name = user.username
|
||||
# Generate a username from the full name
|
||||
new_username = slugify(actual_full_name)
|
||||
# Ensure uniqueness
|
||||
base_username = new_username
|
||||
counter = 1
|
||||
while User.query.filter_by(username=new_username).first() and User.query.get(user.id).username != new_username:
|
||||
new_username = f"{base_username}-{counter}"
|
||||
counter += 1
|
||||
|
||||
user.username = new_username
|
||||
user.full_name = actual_full_name
|
||||
migrated += 1
|
||||
print(f"Migrated: '{actual_full_name}' -> username='{new_username}', full_name='{actual_full_name}'")
|
||||
|
||||
db.session.commit()
|
||||
print(f"\n[MIGRATION] Migrated {migrated} users")
|
||||
print("Done! Usernames are now properly stored.")
|
||||
print("Users should edit their profile to set a proper username and full name.")
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = create_app()
|
||||
migrate()
|
||||
Reference in New Issue
Block a user