Revision: 8072
          http://svn.sourceforge.net/mailman/?rev=8072&view=rev
Author:   mindlace23
Date:     2006-10-18 10:23:30 -0700 (Wed, 18 Oct 2006)

Log Message:
-----------
Simplified schema, enhanced object mappers.

Modified Paths:
--------------
    branches/soc2006-webui/Mailman/DB/object_mappers.py
    branches/soc2006-webui/Mailman/DB/table_schema.py

Modified: branches/soc2006-webui/Mailman/DB/object_mappers.py
===================================================================
--- branches/soc2006-webui/Mailman/DB/object_mappers.py 2006-10-18 16:41:02 UTC 
(rev 8071)
+++ branches/soc2006-webui/Mailman/DB/object_mappers.py 2006-10-18 17:23:30 UTC 
(rev 8072)
@@ -1,3 +1,5 @@
+import types
+
 from sqlalchemy import *
 
 """Data mappers providing object-oriented access to the schema."""
@@ -15,7 +17,27 @@
 mapper(EmailAddress,db.email_address)
 
 class Setting(object):
-    pass
+    def _set_value(self, value):
+        if type(value) is types.BooleanType:
+            self.boolean_value = value
+        elif type(value) is types.IntType:
+            self.integer_value = value
+        elif type(value) is types.FloatType:
+            self.float_value = value
+        else:
+            self.text_value = value
+    
+    def _get_value(self):
+        if self.boolean_value in (True, False):
+            return self.boolean_value
+        if self.integer_value is not None:
+            return self.integer_value
+        if self.float_value is not None:
+            return self.float_value
+        if self.text_value is not None:
+            return self.text_value
+    value = property(_get_value,_set_value)
+
 mapper(Setting,db.setting)
 
 class User(object):

Modified: branches/soc2006-webui/Mailman/DB/table_schema.py
===================================================================
--- branches/soc2006-webui/Mailman/DB/table_schema.py   2006-10-18 16:41:02 UTC 
(rev 8071)
+++ branches/soc2006-webui/Mailman/DB/table_schema.py   2006-10-18 17:23:30 UTC 
(rev 8072)
@@ -53,7 +53,7 @@
                 
Column('target_user',String(36),ForeignKey('user_id_pass.uuid') ),
                 Column('target_list',String(36),ForeignKey('list.uuid') ),
                 Column('target_domain',String(36),ForeignKey('domain.uuid') ),
-                Column('type',String(36),ForeignKey('setting_type.name') ),
+                Column('type',String(50),nullable=False),
                 Column('boolean_value',Boolean),
                 Column('integer_value',Integer),
                 Column('float_value',Float),
@@ -61,18 +61,13 @@
                 Column('applied_by',String(36), 
ForeignKey('user_id_pass.uuid') ),
                 Column('applied_at',TIMESTAMP),
                 )
-        self.setting_type = Table('setting_type',self.metadata,
-                     Column('id',Integer, primary_key=True),
-                     Column('name', String(36), primary_key=True),
-                     )
 
-        self.setting_past = Table('setting',self.metadata,
+        self.setting_past = Table('setting_past',self.metadata,
                 Column('uuid', String(36), primary_key=True,default=uuidgen),
                 
Column('target_user',String(36),ForeignKey('user_id_pass.uuid') ),
                 Column('target_list',String(36),ForeignKey('list.uuid') ),
                 Column('target_domain',String(36),ForeignKey('domain.uuid') ),
-                Column('type',String(36),ForeignKey('setting_type.name') ),
-                Column('boolean_value',Boolean),
+                Column('type',Integer,ForeignKey('setting_type.id') ),         
       Column('boolean_value',Boolean),
                 Column('integer_value',Integer),
                 Column('float_value',Float),
                 Column('text_value',TEXT),


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to