summaryrefslogtreecommitdiffstats
path: root/manas/model/model.py
diff options
context:
space:
mode:
Diffstat (limited to 'manas/model/model.py')
-rw-r--r--manas/model/model.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/manas/model/model.py b/manas/model/model.py
new file mode 100644
index 0000000..9a0fabb
--- /dev/null
+++ b/manas/model/model.py
@@ -0,0 +1,77 @@
+from pylons import config
+from sqlalchemy import *
+from sqlalchemy.types import *
+from sqlalchemy.orm import mapper, relation
+from manas.model import metadata
+
+idea_table = Table("idea", metadata,
+ Column("id", Integer, primary_key=True),
+ Column("title", UnicodeText, unique=True),
+ Column("timestamp", DateTime, nullable=False, default=func.now()),
+ Column("author", UnicodeText, nullable=False),
+ Column("description", UnicodeText, nullable=False),
+ Column("karma", Integer, default=0))
+
+comment_table = Table("comment", metadata,
+ Column("id", Integer, primary_key=True),
+ Column("author", UnicodeText, nullable=False),
+ Column("timestamp", DateTime, nullable=False, default=func.now()),
+ Column("text", UnicodeText, nullable=False),
+ Column("idea_id", Integer, ForeignKey('idea.id')),
+ Column("question_id", Integer, ForeignKey('question.id')))
+
+tag_table = Table("tag", metadata,
+ Column("id", Integer, primary_key=True),
+ Column("name", UnicodeText, nullable=False, unique=True))
+
+idea_tags = Table('idea_tags', metadata,
+ Column('idea_id', Integer, ForeignKey('idea.id')),
+ Column('tag_id', Integer, ForeignKey('tag.id')))
+
+question_table = Table("question", metadata,
+ Column("id", Integer, primary_key=True),
+ Column("title", UnicodeText, unique=True),
+ Column("timestamp", DateTime, nullable=False, default=func.now()),
+ Column("author", UnicodeText, nullable=False),
+ Column("description", UnicodeText, nullable=False),
+ Column("karma", Integer, default=0))
+
+question_tags = Table('question_tags', metadata,
+ Column('question_id', Integer, ForeignKey('question.id')),
+ Column('tag_id', Integer, ForeignKey('tag.id')))
+
+
+class Idea(object):
+ def __init__(self, **kw):
+ """automatically mapping attributes"""
+ for key, value in kw.iteritems():
+ setattr(self, key, value)
+
+class Comment(object):
+ def __init__(self, **kw):
+ """automatically mapping attributes"""
+ for key, value in kw.iteritems():
+ setattr(self, key, value)
+
+class Tag(object):
+ def __init__(self, **kw):
+ """automatically mapping attributes"""
+ for key, value in kw.iteritems():
+ setattr(self, key, value)
+
+class Question(object):
+ def __init__(self, **kw):
+ """automatically mapping attributes"""
+ for key, value in kw.iteritems():
+ setattr(self, key, value)
+
+mapper(Idea, idea_table, properties={
+ 'comments': relation(Comment, backref='idea'),
+ 'tags': relation(Tag, secondary=idea_tags),
+})
+mapper(Question, question_table, properties={
+ 'comments': relation(Comment, backref='question'),
+ 'tags': relation(Tag, secondary=question_tags),
+})
+mapper(Comment, comment_table)
+mapper(Tag, tag_table)