From ffbdaa4351c8d00feebbd49def14b01a7fcf43d6 Mon Sep 17 00:00:00 2001 From: lars Date: Sat, 17 Dec 2011 00:09:47 +0000 Subject: [PATCH] implemented functions for checking "exposed" and "closed" status of a poll export filename prefix is now configurable (default: wortschlucker) --- wortschlucker/src/wortschlucker.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/wortschlucker/src/wortschlucker.py b/wortschlucker/src/wortschlucker.py index b7feb9b..f68457c 100755 --- a/wortschlucker/src/wortschlucker.py +++ b/wortschlucker/src/wortschlucker.py @@ -53,7 +53,7 @@ DATE_FORMAT = "%d.%m.%Y" EXPORT_DATE_FORMAT = "%d.%m.%Y %H:%M:%S" EXPORT_ENCODING = "utf-8" EXPORT_CHARSET = "utf8" -EXPORT_FILENAME_TEMPLATE = "wortschlucker_%%s_%s.csv" % datetime.datetime.now().strftime("%Y-%m-%d") +EXPORT_FILENAME_TEMPLATE = "%%(prefix)s_%%(title)s_%s.csv" % datetime.datetime.now().strftime("%Y-%m-%d") DEFAULT_DATE = datetime.datetime.now() + datetime.timedelta(days=DEFAULT_DAYS_AHEAD) POLL_SETTINGS = { @@ -224,6 +224,15 @@ class Poll(sqlobject.SQLObject): def get_creation_time_string(self): return str(self.timestamp_creation) + def get_submissions_visibility(self): + settings = self.get_settings() + return bool(settings["show_all_submissions"] or (settings["expose_date"] and \ + (settings["expose_date"].date() <= datetime.datetime.now().date()))) + + def is_closed(self): + return bool(self.get_settings()["close_date"] and \ + (self.get_settings()["close_date"].date() < datetime.datetime.now().date())) + class PollMesh: """ generate a mesh of directly or indirectly related polls @@ -492,7 +501,7 @@ def submit_content(hash_key=None, submitter=None, content=None): data = forms.SubmitForm.to_python(data) except formencode.Invalid, errors_packed: errors = errors_packed.unpack_errors() - if errors: + if errors or poll.is_closed(): value_dict["errors"] = errors return render("poll_details.html", input_data=data, **value_dict) else: @@ -547,7 +556,11 @@ def export_poll(admin_hash_key=None): for index in range(len(items)): items[index] = items[index].encode(EXPORT_ENCODING, "ignore") writer.writerow(items) - filename = EXPORT_FILENAME_TEMPLATE % poll.title + try: + export_prefix = config.get("misc", "export_prefix") + except ConfigParser.Error: + export_prefix = "wortschlucker" + filename = EXPORT_FILENAME_TEMPLATE % {"title": poll.title, "prefix": export_prefix} filename = filename.replace(" ", "_") filename = re.sub(r"[^a-zA-Z0-9_\-\.]", "", filename) response.content_disposition = 'attachment; filename=%s' % filename