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

Reply via email to