summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2013-05-18 13:07:19 +0200
committerAurélien Bompard <aurelien@bompard.org>2013-05-18 13:14:44 +0200
commit44259cc6b838cdc32aebab98bf8ab6f4123f519b (patch)
tree0ba7af3068df2815d273691f872a5f978fe55a2c
parenta55527aad008d522b98015cd8941ec3fad5d39d5 (diff)
downloadkittystore-44259cc6b838cdc32aebab98bf8ab6f4123f519b.tar.gz
kittystore-44259cc6b838cdc32aebab98bf8ab6f4123f519b.tar.xz
kittystore-44259cc6b838cdc32aebab98bf8ab6f4123f519b.zip
Fix storage of the list's subject prefix
See https://bugs.launchpad.net/mailman/+bug/1181498 Closes: #48
-rw-r--r--kittystore/storm/model.py2
-rw-r--r--kittystore/storm/schema/__init__.py6
-rw-r--r--kittystore/storm/schema/patch_7.py32
-rw-r--r--kittystore/storm/store.py2
4 files changed, 37 insertions, 5 deletions
diff --git a/kittystore/storm/model.py b/kittystore/storm/model.py
index 95a6f7e..2c9cad4 100644
--- a/kittystore/storm/model.py
+++ b/kittystore/storm/model.py
@@ -47,7 +47,7 @@ class List(Storm):
name = Unicode(primary=True)
display_name = Unicode()
- description = Unicode()
+ subject_prefix = Unicode()
def __init__(self, name):
self.name = unicode(name)
diff --git a/kittystore/storm/schema/__init__.py b/kittystore/storm/schema/__init__.py
index d73a49e..5f5deab 100644
--- a/kittystore/storm/schema/__init__.py
+++ b/kittystore/storm/schema/__init__.py
@@ -7,7 +7,7 @@ CREATES = {
CREATE TABLE "list" (
name VARCHAR(255) NOT NULL,
display_name TEXT,
- description TEXT,
+ subject_prefix TEXT,
PRIMARY KEY (name)
);""", """
CREATE TABLE "thread" (
@@ -69,7 +69,7 @@ CREATES = {
CREATE TABLE "list" (
name VARCHAR(255) NOT NULL,
display_name TEXT,
- description TEXT,
+ subject_prefix TEXT,
PRIMARY KEY (name)
);""", """
CREATE TABLE "thread" (
@@ -131,7 +131,7 @@ CREATES = {
CREATE TABLE `list` (
name VARCHAR(255) NOT NULL,
display_name TEXT,
- description TEXT,
+ subject_prefix TEXT,
PRIMARY KEY (name)
);""", """
CREATE TABLE `thread` (
diff --git a/kittystore/storm/schema/patch_7.py b/kittystore/storm/schema/patch_7.py
new file mode 100644
index 0000000..7eb3325
--- /dev/null
+++ b/kittystore/storm/schema/patch_7.py
@@ -0,0 +1,32 @@
+# -*- coding: utf-8 -*-
+
+from __future__ import absolute_import
+
+from . import get_db_type
+
+
+SQL = {
+ "sqlite": [
+ # No 'ALTER TABLE DROP COLUMN' in SQLite
+ 'ALTER TABLE "list" ADD COLUMN subject_prefix TEXT;',
+ 'UPDATE "list" SET subject_prefix = \'[\' || display_name || \']\';'
+ ],
+ "postgres": [
+ 'ALTER TABLE "list" DROP COLUMN "description";',
+ 'ALTER TABLE "list" ADD COLUMN subject_prefix TEXT;',
+ 'UPDATE "list" SET subject_prefix = \'[\' || display_name || \']\';',
+ ],
+ "mysql": [
+ 'ALTER TABLE `list` DROP COLUMN `description`;',
+ 'ALTER TABLE `list` ADD COLUMN subject_prefix TEXT;',
+ 'UPDATE `list`" SET subject_prefix = CONCAT(\'[\', display_name, \']\');',
+ ],
+ }
+
+
+def apply(store):
+ """Add the thread table"""
+ dbtype = get_db_type(store)
+ for statement in SQL[dbtype]:
+ store.execute(statement)
+ store.commit()
diff --git a/kittystore/storm/store.py b/kittystore/storm/store.py
index 7276048..b4e0812 100644
--- a/kittystore/storm/store.py
+++ b/kittystore/storm/store.py
@@ -90,7 +90,7 @@ class StormStore(object):
l = List(list_name)
self.db.add(l)
l.display_name = mlist.display_name
- l.description = mlist.description
+ l.subject_prefix = mlist.subject_prefix
if not message.has_key("Message-Id"):
raise ValueError("No 'Message-Id' header in email", message)
msg_id = unicode(unquote(message['Message-Id']))