Revision: 8062
http://svn.sourceforge.net/mailman/?rev=8062&view=rev
Author: mindlace23
Date: 2006-10-13 19:03:42 -0700 (Fri, 13 Oct 2006)
Log Message:
-----------
initial schema for db
Added Paths:
-----------
branches/soc2006-webui/Mailman/DB/
branches/soc2006-webui/Mailman/DB/table_schema.py
Added: branches/soc2006-webui/Mailman/DB/table_schema.py
===================================================================
--- branches/soc2006-webui/Mailman/DB/table_schema.py
(rev 0)
+++ branches/soc2006-webui/Mailman/DB/table_schema.py 2006-10-14 02:03:42 UTC
(rev 8062)
@@ -0,0 +1,90 @@
+from sqlalchemy import *
+import commands
+
+
+def uuidgen():
+ """Generate a UUID.
+ supposedly uuidgen is common on unix systems, replace me for windows
support"""
+ return commands.getoutput('uuidgen')
+
+
+db = create_engine('sqlite:///mailman.db')
+
+metadata = BoundMetaData(db)
+
+"""The primary justification for using UUIDs is so that two mailman
installations
+ can be merged without excessive pain; they also allow unambiguous typeless
references"""
+
+user_uuid = Table('user_uuid',metadata,
+ Column('id',String(36),primary_key=True,default=uuidgen)
+ )
+
+email_address = Table('email_address', metadata,
+ Column('user_id', String(36), ForeignKey('user_uuid.id')),
+ Column('string',Unicode(255),unique=True)
+ )
+
+username = Table('username', metadata,
+ Column('user_id', String(36), ForeignKey('user_uuid.id'),
primary_key=True),
+ Column('string',Unicode(255),primary_key=True)
+ )
+
+password = Table('password', metadata,
+ Column('user_id', String(36),
ForeignKey('user_uuid.id'),primary_key=True),
+ Column('string',Unicode(50))
+ )
+
+access = Table('access',metadata,
+ Column('level',Integer,ForeignKey('access_level_type.id')
),
+ Column('holder',String(36), ForeignKey('uuid.id'),
nullable=False),
+ Column('context',String(36)),
+ )
+access_level_type = Table('access_level_type',metadata,
+ Column('id',Integer,primary_key=True),
+ Column('name',String(20),nullable=False,unique=True),
+ )
+
+access_level_types = {0:'anonymous',
+ 1:'authenticated',
+ 2:'member',
+ 3:'moderator',
+ 4:'administrator'}
+
+domain = Table('domain',metadata,
+ Column('id',String(36), default=uuidgen, primary_key=True),
+ Column('name',Unicode(255)),
+ )
+
+list = Table('list',metadata,
+ Column('id',String(36), default=uuidgen, primary_key=True),
+ Column('real_name',Unicode(255),nullable = False),
+ )
+
+setting = Table('setting',metadata,
+ Column('id', String(36), default=uuidgen, primary_key=True),
+ Column('applied_to',String(36)),
+ Column('type',String(36),ForeignKey('setting_type.name') ),
+ Column('boolean_value',Boolean),
+ Column('integer_value',Integer),
+ Column('float_value',Float),
+ Column('text_value',Varchar),
+ Column('applied_by',String(36), ForeignKey('user_uuid.id') ),
+ Column('applied_date',TIMESTAMP),
+ )
+
+"""probably be good to add some stuff to this... validators/etc?"""
+setting_type = Table('setting_type',metadata,
+ Column('name', String(36), primary_key=True),
+ )
+
+past_setting = Table('past_setting',metadata,
+ Column('id', String(36), primary_key=True),
+ Column('applied_to',String(36)),
+ Column('type',String(36),ForeignKey('setting_type.name') ),
+ Column('boolean_value',Boolean),
+ Column('integer_value',Integer),
+ Column('float_value',Float),
+ Column('text_value',Varchar),
+ Column('applied_by',String(36), ForeignKey('user_uuid.id') ),
+ Column('applied_date',TIMESTAMP),
+ )
\ No newline at end of file
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