Control: tag -1 + patch Please find attached a possible patch.
---- Sophie Brun
>From 684f46ddd2d25d5eba73fa31797bf3f9bbb7e7fb Mon Sep 17 00:00:00 2001 From: Sophie Brun <sop...@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