[damned-lies] Improved copy-release management command
- From: Claude Paroz <claudep src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [damned-lies] Improved copy-release management command
- Date: Fri, 21 Apr 2017 08:21:11 +0000 (UTC)
commit 66e1274876661f18a724dd93659b481ee697f87e
Author: Claude Paroz <claude 2xlibre net>
Date: Fri Apr 21 10:20:32 2017 +0200
Improved copy-release management command
stats/management/commands/copy-release.py | 32 ++++++++++++++++++----------
1 files changed, 20 insertions(+), 12 deletions(-)
---
diff --git a/stats/management/commands/copy-release.py b/stats/management/commands/copy-release.py
index 18d05c8..27f56c0 100644
--- a/stats/management/commands/copy-release.py
+++ b/stats/management/commands/copy-release.py
@@ -1,4 +1,6 @@
from django.core.management.base import BaseCommand, CommandError
+from django.db import transaction
+
from stats.models import Release, Category, Module
@@ -15,17 +17,23 @@ class Command(BaseCommand):
except Release.DoesNotExist:
raise CommandError("No release named '%s'" % options['release_to_copy'])
- new_rel = Release.objects.create(
- name=options['new_release'], description=options['new_release'],
- string_frozen=False, status=rel_to_copy.status
- )
-
- for cat in rel_to_copy.category_set.all():
- if not cat.branch.is_head():
- mod = Module.objects.get(pk=cat.branch.module.id)
- branch = mod.get_head_branch()
- else:
- branch = cat.branch
- new_rel.category_set.add(Category(release=new_rel, branch=branch, name=cat.name))
+ with transaction.atomic():
+ new_rel = Release.objects.create(
+ name=options['new_release'], description=options['new_release'],
+ string_frozen=False, status=rel_to_copy.status
+ )
+
+ branch_seen = set()
+ for cat in rel_to_copy.category_set.all():
+ if not cat.branch.is_head():
+ mod = Module.objects.get(pk=cat.branch.module.id)
+ branch = mod.get_head_branch()
+ else:
+ branch = cat.branch
+ if branch in branch_seen:
+ continue
+ else:
+ Category.objects.create(release=new_rel, branch=branch, name=cat.name)
+ branch_seen.add(branch)
return "New release '%s' created" % new_rel.name
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]