Bug#754891: store incoming news even when the package doesn't exist yet
Control: tag -1 + patch
Please find attached a possible patch.
----
Sophie Brun
>From 684f46ddd2d25d5eba73fa31797bf3f9bbb7e7fb Mon Sep 17 00:00:00 2001
From: Sophie Brun <sophie@freexian.com>
Date: Tue, 9 Sep 2014 16:33:30 +0200
Subject: [PATCH 1/2] Store incoming news even if package doesn't exist yet
---
distro_tracker/vendor/debian/rules.py | 6 +++---
distro_tracker/vendor/debian/tests.py | 8 +++++---
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/distro_tracker/vendor/debian/rules.py b/distro_tracker/vendor/debian/rules.py
index 54a168d..9a79730 100644
--- a/distro_tracker/vendor/debian/rules.py
+++ b/distro_tracker/vendor/debian/rules.py
@@ -17,6 +17,7 @@ from django.utils.http import urlencode, urlquote
from django.conf import settings
from distro_tracker.core.models import PackageBugStats
from distro_tracker.core.models import EmailNews
+from distro_tracker.core.models import PackageName
from distro_tracker.core.models import SourcePackageName
from distro_tracker.core.models import BinaryPackageBugStats
from distro_tracker.core.models import PackageExtractedInfo
@@ -663,9 +664,8 @@ def create_news_from_email_message(message):
# Only source uploads should be considered.
return
package_name = subject_words[1]
- package = get_or_none(SourcePackageName, name=package_name)
- if package:
- return [EmailNews.objects.create_email_news(message, package)]
+ package, _ = PackageName.objects.get_or_create(name=package_name)
+ return [EmailNews.objects.create_email_news(message, package)]
# DAK rm?
elif 'X-DAK' in message:
return _create_news_from_dak_email(message)
diff --git a/distro_tracker/vendor/debian/tests.py b/distro_tracker/vendor/debian/tests.py
index 05ba1dd..3b6de9e 100644
--- a/distro_tracker/vendor/debian/tests.py
+++ b/distro_tracker/vendor/debian/tests.py
@@ -727,8 +727,9 @@ class DebianNewsFromEmailTest(TestCase):
def test_source_upload_package_does_not_exist(self):
"""
- Tests that no news are created when the notification of a new source
- upload for a package not tracked by Distro Tracker is received.
+ Tests that a news and the associated source package are created when
+ the notification of a new source upload for a package not yet tracked by
+ Distro Tracker is received.
"""
subject = self.get_accepted_subject('no-exist', '1.0.0')
self.set_subject(subject)
@@ -737,7 +738,8 @@ class DebianNewsFromEmailTest(TestCase):
self.process_mail()
- self.assertEqual(0, News.objects.count())
+ self.assertTrue(PackageName.objects.filter(name='no-exist').exists())
+ self.assertEqual(1, News.objects.count())
def test_dak_rm_news(self):
"""
--
2.1.0
Reply to: