From f5211dc0f3371c52bf0805ac59d4b505a14e4537 Mon Sep 17 00:00:00 2001 From: Ask Solem Date: Fri, 20 Mar 2009 14:33:10 +0100 Subject: Remove previous file if it already exists. --- djangopypi/forms.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/djangopypi/forms.py b/djangopypi/forms.py index 1cf9a9d..54707e0 100644 --- a/djangopypi/forms.py +++ b/djangopypi/forms.py @@ -30,6 +30,7 @@ POSSIBILITY OF SUCH DAMAGE. """ +import os from django import forms from djangopypi.models import Project, Classifier, Release @@ -56,8 +57,23 @@ class ProjectRegisterForm(forms.Form): for classifier in classifiers: project.classifiers.add( Classifier.objects.get_or_create(name=classifier)[0]) - release, c = Release.objects.get_or_create(version=version, - platform=platform, project=project) + + # If the old file already exists, django will append a _ after the + # filename, however with .tar.gz files django does the "wrong" thing + # and saves it as project-0.1.2.tar_.gz. So remove it before + # django sees anything. + try: + previous_entry = Release.objects.get(version=version, + platform=platform, project=project) + except Release.DoesNotExist: + pass + + release, created = Release.objects.get_or_create(version=version, + platform=platform, + project=project) if file: + if not created: + if os.path.exists(release.distribution.path): + os.remove(release.distribution.path) release.distribution.save(file.name, file, save=True) release.save() -- cgit v1.2.3