Как удалить дублированный переход с одинаковым содержимым в 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()