summaryrefslogtreecommitdiff
path: root/db.py
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2011-02-15 23:04:18 +0100
committerJon Bergli Heier <snakebite@jvnv.net>2011-02-15 23:04:18 +0100
commit4989a8e572ea666d3e392a503ee6831b8a9386f9 (patch)
treef1cf0bf4e6744acb45ad3cbd15023916762ecf37 /db.py
Initial commit.
Diffstat (limited to 'db.py')
-rw-r--r--db.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/db.py b/db.py
new file mode 100644
index 0000000..762fc07
--- /dev/null
+++ b/db.py
@@ -0,0 +1,45 @@
+from sqlalchemy import create_engine, Column, Integer, String, DateTime, Text, Index, ForeignKey
+from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.orm import sessionmaker, relation, backref
+from sqlalchemy.orm.exc import NoResultFound
+from sqlalchemy.exc import IntegrityError
+from sqlalchemy.sql import and_
+import settings
+
+engine = create_engine(settings.db_path)
+
+Base = declarative_base(bind = engine)
+
+class User(Base):
+ __tablename__ = 'users'
+
+ id = Column(Integer, primary_key = True)
+ username = Column(String, unique = True, index = True)
+ password = Column(String)
+ files = relation('File', backref = 'user', order_by = 'File.date.desc()')
+
+ def __init__(self, username, password):
+ self.username = username
+ self.password = password
+
+class File(Base):
+ __tablename__ = 'files'
+
+ id = Column(Integer, primary_key = True)
+ hash = Column(String, unique = True, index = True)
+ filename = Column(String)
+ date = Column(DateTime)
+ user_id = Column(Integer, ForeignKey('users.id'), nullable = True)
+
+ def __init__(self, hash, filename, date, user_id = None):
+ self.hash = hash
+ self.filename = filename
+ self.date = date
+ self.user_id = user_id
+
+ def html(self):
+ return '<a href="/f/{hash}/{filename}">{filename}</a> on {date}'.format(
+ hash = self.hash, filename = self.filename, date = self.date.strftime('%Y-%m-%d %H:%M:%S UTC'))
+
+Base.metadata.create_all()
+Session = sessionmaker(bind = engine, autoflush = True, autocommit = False)