From 40e71362fc0fef1fe5de4bb9e89c424f552cc691 Mon Sep 17 00:00:00 2001 From: Baptiste BEAUPLAT Date: Sun, 18 Aug 2019 16:37:10 +0200 Subject: [PATCH 1/5] Indent list of binaries built in RFS template --- debexpo/templates/sponsor/rfs_template.mako | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debexpo/templates/sponsor/rfs_template.mako b/debexpo/templates/sponsor/rfs_template.mako index 45fdbf53..a8795b92 100644 --- a/debexpo/templates/sponsor/rfs_template.mako +++ b/debexpo/templates/sponsor/rfs_template.mako @@ -47,8 +47,8 @@ I am looking for a sponsor for my package "hello": It builds those binary packages: -%if c.package: - ${ c.package.description } +%if c.package and c.package.description: + ${ '\n '.join(c.package.description.splitlines()) } %else: hello - friendly greeter %endif -- GitLab From cf4f505bcc654a9a9402afd88a89278cb93d8139 Mon Sep 17 00:00:00 2001 From: Baptiste BEAUPLAT Date: Sun, 18 Aug 2019 21:32:21 +0200 Subject: [PATCH 2/5] Add Vcs field in the default RFS template --- debexpo/templates/sponsor/rfs_template.mako | 1 + 1 file changed, 1 insertion(+) diff --git a/debexpo/templates/sponsor/rfs_template.mako b/debexpo/templates/sponsor/rfs_template.mako index a8795b92..3b355cb7 100644 --- a/debexpo/templates/sponsor/rfs_template.mako +++ b/debexpo/templates/sponsor/rfs_template.mako @@ -38,6 +38,7 @@ I am looking for a sponsor for my package "hello": Upstream Author : [fill in name and email of upstream] * URL : [fill in URL of upstream's web site] * License : [fill in] + * Vcs : [fill in URL of packaging vcs] %endif %if c.package: Section : ${ c.package.package_versions[-1].section } -- GitLab From ee462694b6b28c456a3b6de05aa95acd2f8831cc Mon Sep 17 00:00:00 2001 From: Baptiste BEAUPLAT Date: Mon, 19 Aug 2019 21:03:52 +0200 Subject: [PATCH 3/5] Utilize outcome and severity to pass on info to user in rfstemplate plugin --- debexpo/plugins/rfstemplate.py | 12 +++++++++-- .../templates/plugins/rfstemplate/html.mako | 21 +++++++++++++++++++ .../templates/plugins/rfstemplate/text.mako | 3 +++ 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 debexpo/templates/plugins/rfstemplate/html.mako create mode 100644 debexpo/templates/plugins/rfstemplate/text.mako diff --git a/debexpo/plugins/rfstemplate.py b/debexpo/plugins/rfstemplate.py index 55f76409..c559d637 100644 --- a/debexpo/plugins/rfstemplate.py +++ b/debexpo/plugins/rfstemplate.py @@ -91,6 +91,9 @@ class RfsTemplatePlugin(BasePlugin): upstream_license = "[fill in]" package_changelog = "[your most recent changelog entry]" + outcome = "RFS: license, author and changelog parsed" + severity = constants.PLUGIN_SEVERITY_INFO + package_changelog = self.changes.get('Changes', '').strip() if len(package_changelog.split('\n')) > 2: @@ -100,8 +103,15 @@ class RfsTemplatePlugin(BasePlugin): if 'author' in copyright_info: upstream_author = copyright_info['author'] + else: + outcome = "RFS: author info missing" + severity = constants.PLUGIN_SEVERITY_WARNING + if 'license' in copyright_info: upstream_license = copyright_info['license'] + else: + outcome = "RFS: no dep5 license" + severity = constants.PLUGIN_SEVERITY_ERROR data = { 'upstream-author': upstream_author, @@ -109,8 +119,6 @@ class RfsTemplatePlugin(BasePlugin): 'package-changelog': package_changelog, } - outcome = "RFS template information" - severity = constants.PLUGIN_SEVERITY_INFO self.passed(outcome, data, severity) diff --git a/debexpo/templates/plugins/rfstemplate/html.mako b/debexpo/templates/plugins/rfstemplate/html.mako new file mode 100644 index 00000000..5402f1ce --- /dev/null +++ b/debexpo/templates/plugins/rfstemplate/html.mako @@ -0,0 +1,21 @@ +
+${str(o.outcome)} +
+%if o.rich_data: +%if o.severity != 3: +
+%if o.severity == 2: +Upstream-Contact: was not found in d/copyright.
+RFS will not autocomplete the Upstream author. +%else: +
Author
+
${o.rich_data['upstream-author']}
+%endif +
License
+
${o.rich_data['upstream-license']}
+
Changelog
+
${o.rich_data['package-changelog']}
+ +
+%endif +%endif diff --git a/debexpo/templates/plugins/rfstemplate/text.mako b/debexpo/templates/plugins/rfstemplate/text.mako new file mode 100644 index 00000000..d7edd145 --- /dev/null +++ b/debexpo/templates/plugins/rfstemplate/text.mako @@ -0,0 +1,3 @@ +%for field, contents in sorted(o.rich_data.items()): +${field}: ${contents} +%endfor -- GitLab From 02a76c87e85820d80d11a94ed4eedfa4bd8ca0f7 Mon Sep 17 00:00:00 2001 From: Baptiste BEAUPLAT Date: Wed, 21 Aug 2019 16:45:13 +0200 Subject: [PATCH 4/5] Create dedicated function for gathering rfs info in sponsor controller --- debexpo/controllers/sponsor.py | 59 ++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/debexpo/controllers/sponsor.py b/debexpo/controllers/sponsor.py index 2027018d..4607aa79 100644 --- a/debexpo/controllers/sponsor.py +++ b/debexpo/controllers/sponsor.py @@ -104,6 +104,35 @@ class SponsorController(BaseController): return True def _get_package_rfs_info(self, package_version): + info = None + + rfstemplate = meta.session.query(PackageInfo) \ + .filter_by(package_version_id=package_version.id) \ + .filter_by(from_plugin='rfstemplate') \ + .first() + + if rfstemplate: + info = json.loads(rfstemplate.data) + + control_fields = meta.session.query(PackageInfo) \ + .filter_by(package_version_id=package_version.id) \ + .filter_by(from_plugin='controlfields') \ + .first() + + if rfstemplate and control_fields: + fields = json.loads(control_fields.data) + + if 'Homepage' in fields: + info['upstream-url'] = \ + fields['Homepage'] + + if 'Vcs-Browser' in fields: + info['package-vcs'] = \ + fields['Vcs-Browser'] + + return info + + def _get_package_extra_info(self, package_version): category = [] categories = None severity = None @@ -266,6 +295,7 @@ class SponsorController(BaseController): package = meta.session.query(Package) \ .filter_by(name=packagename) \ .first() + if package: c.package = package c.package_dir = get_package_dir(package.name) @@ -274,32 +304,11 @@ class SponsorController(BaseController): .filter_by(package_id=package.id) \ .order_by(PackageVersion.id.desc()) \ .first() - if latest: - rfstemplate = meta.session.query(PackageInfo) \ - .filter_by(package_version_id=latest.id) \ - .filter_by(from_plugin='rfstemplate') \ - .first() - - if rfstemplate: - c.rfstemplate = json.loads(rfstemplate.data) - control_fields = meta.session.query(PackageInfo) \ - .filter_by(package_version_id=latest.id) \ - .filter_by(from_plugin='controlfields') \ - .first() - - if rfstemplate and control_fields: - fields = json.loads(control_fields.data) - - if 'Homepage' in fields: - c.rfstemplate['upstream-url'] = \ - fields['Homepage'] - - if 'Vcs-Browser' in fields: - c.rfstemplate['package-vcs'] = \ - fields['Vcs-Browser'] - - (c.category, c.severity) = self._get_package_rfs_info(latest) + if latest: + c.rfstemplate = self._get_package_rfs_info(latest) + (c.category, c.severity) = \ + self._get_package_extra_info(latest) # This is a workaround for Thunderbird and some other clients # not handling properly '+' in the mailto body parameter. -- GitLab From c943320a2a66b2ad19054e7a6cdbd55d7ee6c6f4 Mon Sep 17 00:00:00 2001 From: Baptiste BEAUPLAT Date: Wed, 21 Aug 2019 16:55:52 +0200 Subject: [PATCH 5/5] Use description from d/control in RFS template --- debexpo/controllers/sponsor.py | 14 ++++++++++++++ debexpo/plugins/controlfields.py | 9 +++++++-- debexpo/templates/sponsor/rfs_howto.mako | 8 ++++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/debexpo/controllers/sponsor.py b/debexpo/controllers/sponsor.py index 4607aa79..88fff629 100644 --- a/debexpo/controllers/sponsor.py +++ b/debexpo/controllers/sponsor.py @@ -103,6 +103,18 @@ class SponsorController(BaseController): return False return True + def _get_package_description(self, package_version): + control = meta.session.query(PackageInfo) \ + .filter_by(package_version_id=package_version.id) \ + .filter_by(from_plugin='controlfields') \ + .first() + + if control: + info = json.loads(control.data) + + if info: + return info.get('Short-Description') + def _get_package_rfs_info(self, package_version): info = None @@ -290,6 +302,7 @@ class SponsorController(BaseController): c.rfstemplate = None c.category = None c.severity = None + c.description = None if packagename: package = meta.session.query(Package) \ @@ -309,6 +322,7 @@ class SponsorController(BaseController): c.rfstemplate = self._get_package_rfs_info(latest) (c.category, c.severity) = \ self._get_package_extra_info(latest) + c.description = self._get_package_description(latest) # This is a workaround for Thunderbird and some other clients # not handling properly '+' in the mailto body parameter. diff --git a/debexpo/plugins/controlfields.py b/debexpo/plugins/controlfields.py index f4498de5..86dd8f9d 100644 --- a/debexpo/plugins/controlfields.py +++ b/debexpo/plugins/controlfields.py @@ -90,13 +90,18 @@ class ControlFieldsPlugin(BasePlugin): descriptions = [] for package in deb822.Dsc.iter_paragraphs( file(join('extracted', 'debian', 'control'))): - if ('Description' in package and 'Package' in package and - package['Package'] and package['Description']): + if all(package.get(i) for i in ('Package', 'Description')): + if package['Package'] == control.get('Source'): + data['Short-Description'] = \ + package['Description'].split('\n')[0] descriptions.append('{} - {}'.format(package['Package'], package['Description'].split('\n')[0])) data['Description'] = '\n'.join(descriptions) + if 'Short-Description' not in data and descriptions: + data['Short-Description'] = descriptions[0].split(' - ')[1] + self.failed(outcome, data, severity) diff --git a/debexpo/templates/sponsor/rfs_howto.mako b/debexpo/templates/sponsor/rfs_howto.mako index e5e842b5..a6c840c2 100644 --- a/debexpo/templates/sponsor/rfs_howto.mako +++ b/debexpo/templates/sponsor/rfs_howto.mako @@ -40,9 +40,9 @@ list. You can browser other packages and give other people feedback while you ar

%if c.package: %if c.category: - + %else: - + %endif %else: @@ -63,9 +63,9 @@ From: J. Maintainer <j@example.com> To: submit@bugs.debian.org %if c.package: %if c.category: -Subject: RFS: ${ c.package.name }/${ c.package.package_versions[-1].version } ${ c.category } -- ${ c.package.short_description() } +Subject: RFS: ${ c.package.name }/${ c.package.package_versions[-1].version } ${ c.category } -- ${ c.description } %else: -Subject: RFS: ${ c.package.name }/${ c.package.package_versions[-1].version } -- ${ c.package.short_description() } +Subject: RFS: ${ c.package.name }/${ c.package.package_versions[-1].version } -- ${ c.description } %endif %else: Subject: RFS: hello/3.1-4 [put in ITP, ITA, RC, NMU if applicable] -- friendly greeter -- GitLab