From 4bcaa543307af4e67c1d8acd02eb7e2b0e0cb07d Mon Sep 17 00:00:00 2001 From: Adrian Moennich Date: Fri, 24 Jul 2015 14:11:49 +0200 Subject: [PATCH] Show message instead of sending empty package --- indico/MaKaC/webinterface/rh/conferenceModif.py | 14 +++++++++----- indico/modules/attachments/controllers/event_package.py | 10 ++++++---- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/indico/MaKaC/webinterface/rh/conferenceModif.py b/indico/MaKaC/webinterface/rh/conferenceModif.py index 6c481cf92..ad8503a6c 100644 --- a/indico/MaKaC/webinterface/rh/conferenceModif.py +++ b/indico/MaKaC/webinterface/rh/conferenceModif.py @@ -18,7 +18,7 @@ import os from cStringIO import StringIO import tempfile import types -from flask import session, request +from flask import session, request, flash, redirect from persistent.list import PersistentList from datetime import datetime,timedelta from dateutil.relativedelta import relativedelta @@ -3092,12 +3092,16 @@ class RHMaterialPackage(RHConferenceModifBase, AttachmentPackageGeneratorMixin): def _checkParams(self, params): RHConferenceModifBase._checkParams(self, params) self._contribIds = self._normaliseListParam(params.get("contributions", [])) - self._contribs = map(self._conf.getContributionById, self._contribIds) def _process(self): - if not self._contribs: - return "No contribution selected" - return self._generate_zip_file(self._filter_protected(self._filter_by_contributions(self._contribIds, None))) + if not self._contribIds: + flash(_('You did not select any contributions.'), 'warning') + return redirect(url_for('event_mgmt.confModifContribList', self._conf)) + attachments = self._filter_by_contributions(self._contribIds, None) + if not attachments: + flash(_('The selected contributions do not have any materials.'), 'warning') + return redirect(url_for('event_mgmt.confModifContribList', self._conf)) + return self._generate_zip_file(attachments) class RHAbstractBook( RHConfModifCFABase ): diff --git a/indico/modules/attachments/controllers/event_package.py b/indico/modules/attachments/controllers/event_package.py index b5e614281..a4e514763 100644 --- a/indico/modules/attachments/controllers/event_package.py +++ b/indico/modules/attachments/controllers/event_package.py @@ -22,7 +22,7 @@ from collections import OrderedDict from tempfile import NamedTemporaryFile from zipfile import ZipFile -from flask import session +from flask import session, flash from sqlalchemy import cast, Date from indico.core.config import Config @@ -109,8 +109,6 @@ class AttachmentPackageGeneratorMixin: return query.join(Attachment.file).filter(cast(AttachmentFile.created_dt, Date) >= added_since) def _generate_zip_file(self, attachments): - # XXX: could use a celery task to delay the temporary file after a day or so. - # right now this relies on an external cronjob to do so... temp_file = NamedTemporaryFile(suffix='indico.tmp', dir=Config.getInstance().getTempDir()) with ZipFile(temp_file.name, 'w', allowZip64=True) as zip_handler: self.used = set() @@ -174,7 +172,11 @@ class AttachmentPackageMixin(AttachmentPackageGeneratorMixin): def _process(self): form, skipped_fields = self._prepare_form() if form.validate_on_submit(): - return self._generate_zip_file(self._filter_attachments(form.data)) + attachments = self._filter_attachments(form.data) + if attachments: + return self._generate_zip_file(attachments) + else: + flash(_('There are no materials matching your criteria.'), 'warning') return self.wp.render_template('generate_package.html', self._conf, form=form, skipped_fields=skipped_fields) -- 2.11.4.GIT