[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: