summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2013-11-15 14:37:08 +0100
committerAurélien Bompard <aurelien@bompard.org>2013-11-15 14:37:08 +0100
commita847708a435eb1954f994f71f671c0c275ad476c (patch)
treefa2c68354c8d028e5ce514c7c5148339c2db8953
parent4a9b981f82aa1572da91f16cbfd6327ee568c32a (diff)
downloadkittystore-a847708a435eb1954f994f71f671c0c275ad476c.tar.gz
kittystore-a847708a435eb1954f994f71f671c0c275ad476c.tar.xz
kittystore-a847708a435eb1954f994f71f671c0c275ad476c.zip
Store the list creation datetime
-rw-r--r--kittystore/storm/model.py3
-rw-r--r--kittystore/storm/schema/__init__.py3
-rw-r--r--kittystore/storm/schema/patch_14.py3
-rw-r--r--kittystore/test/__init__.py2
4 files changed, 10 insertions, 1 deletions
diff --git a/kittystore/storm/model.py b/kittystore/storm/model.py
index 45167d2..f89fb6b 100644
--- a/kittystore/storm/model.py
+++ b/kittystore/storm/model.py
@@ -50,13 +50,14 @@ class List(Storm):
# The following properties are mirrored from Mailman's MailingList instance
mailman_props = ("display_name", "description", "subject_prefix",
- "archive_policy")
+ "archive_policy", "created_at")
name = Unicode(primary=True)
display_name = Unicode()
description = Unicode()
subject_prefix = Unicode()
archive_policy = Enum(ArchivePolicy)
+ created_at = DateTime()
recent_participants_count = Int() # cached computation result
recent_threads_count = Int() # cached computation result
diff --git a/kittystore/storm/schema/__init__.py b/kittystore/storm/schema/__init__.py
index 384e9f3..92c9d16 100644
--- a/kittystore/storm/schema/__init__.py
+++ b/kittystore/storm/schema/__init__.py
@@ -10,6 +10,7 @@ CREATES = {
description TEXT,
subject_prefix TEXT,
archive_policy INTEGER,
+ created_at DATETIME,
recent_participants_count INTEGER,
recent_threads_count INTEGER,
PRIMARY KEY (name)
@@ -102,6 +103,7 @@ CREATES = {
description TEXT,
subject_prefix TEXT,
archive_policy INTEGER,
+ created_at TIMESTAMP WITHOUT TIME ZONE,
recent_participants_count INTEGER,
recent_threads_count INTEGER,
PRIMARY KEY (name)
@@ -205,6 +207,7 @@ CREATES = {
description TEXT,
subject_prefix TEXT,
archive_policy INTEGER,
+ created_at DATETIME,
recent_participants_count INTEGER,
recent_threads_count INTEGER,
PRIMARY KEY (name)
diff --git a/kittystore/storm/schema/patch_14.py b/kittystore/storm/schema/patch_14.py
index 691fc82..9f70fda 100644
--- a/kittystore/storm/schema/patch_14.py
+++ b/kittystore/storm/schema/patch_14.py
@@ -18,6 +18,7 @@ SQL = {
);""",
# No alter table add constraint in SQLite: http://www.sqlite.org/omitted.html
'CREATE INDEX "ix_email_archived_date" ON "email" (archived_date);',
+ 'ALTER TABLE "list" ADD COLUMN created_at DATETIME;',
],
"postgres": ["""
CREATE TABLE "list_month_activity" (
@@ -32,6 +33,7 @@ SQL = {
'ALTER TABLE "thread" ADD CONSTRAINT fk_thread_list FOREIGN KEY (list_name) REFERENCES list(name) ON DELETE CASCADE;',
'ALTER TABLE "email" ADD CONSTRAINT fk_email_list FOREIGN KEY (list_name) REFERENCES list(name) ON DELETE CASCADE;',
'CREATE INDEX "ix_email_archived_date" ON "email" (archived_date);',
+ 'ALTER TABLE "list" ADD COLUMN created_at TIMESTAMP WITHOUT TIME ZONE;',
],
"mysql": ["""
CREATE TABLE `list_month_activity` (
@@ -46,6 +48,7 @@ SQL = {
'ALTER TABLE `thread` ADD CONSTRAINT fk_thread_list FOREIGN KEY (list_name) REFERENCES list(name) ON DELETE CASCADE;',
'ALTER TABLE `email` ADD CONSTRAINT fk_email_list FOREIGN KEY (list_name) REFERENCES list(name) ON DELETE CASCADE;',
'CREATE INDEX `ix_email_archived_date` ON `email` (archived_date);',
+ 'ALTER TABLE `list` ADD COLUMN created_at DATETIME;',
],
}
diff --git a/kittystore/test/__init__.py b/kittystore/test/__init__.py
index 257e3bd..bbea7db 100644
--- a/kittystore/test/__init__.py
+++ b/kittystore/test/__init__.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
import os
+import datetime
from mailman.interfaces.archiver import ArchivePolicy
@@ -21,6 +22,7 @@ class FakeList(object):
description = None
subject_prefix = None
archive_policy = ArchivePolicy.public
+ created_at = datetime.datetime.utcnow()
def __init__(self, name):
self.fqdn_listname = unicode(name)