Как удалить дублированный переход с одинаковым содержимым в django

если мы создали процедуру в проекте django, а затем нам нужно изменить переменные или любые изменения в содержимом. тогда процедура с таким же именем дублируется. нам нужно удалить ее

0002_удалить_кого_можно_утвердить_на_уровне_и_более

0004_удалить_кого_можно_утвердить_на_уровне_и_более

эти 2 одинаковые, тогда удалите первую

def extract_sql_content(filepath): """Извлечение содержимого SQL из файла миграции.""" try: with open(filepath, "r") as f: content = f.read() match = SQL_PATTERN.search(content) if match: return match.group( 0 ) # Возвращаем строку определения функции SQL except Exception as e: print(f "Ошибка чтения файла {filepath}: {e}") return None

def get_migration_files(directory): """Возвращает список файлов миграции в каталоге.""" return [ f for f in os.listdir(directory) if FILE_PATTERN.match(f) ]

def group_by_sql_content(migration_files):

content_groups = defaultdict(list)
for filename in migration_files:
    filepath = os.path.join(DIR, filename)
    sql_content = extract_sql_content(filepath)
    if sql_content:
        content_groups[sql_content].append(filename)
return content_groups

def keep_latest_and_remove_others(content_groups):

for files in content_groups.values():
    if len(files) > 1:
        
        files.sort(reverse=True)
        for old_file in files[1:]:
            old_file_path = os.path.join(DIR, old_file)
            try:
                os.remove(old_file_path)
                print(f"Removed: {old_file}")
            except Exception as e:
                print(f"Error removing file {old_file}: {e}")

def main():

migration_files = get_migration_files(DIR)

content_groups = group_by_sql_content(migration_files)

keep_latest_and_remove_others(content_groups)

if name == "main": main()

Вернуться на верх