Added very basic permission system. #71
[zzz-spline-users.git] / migration / versions / 003_Add_permission_tables.py
diff --git a/migration/versions/003_Add_permission_tables.py b/migration/versions/003_Add_permission_tables.py
new file mode 100644 (file)
index 0000000..7245753
--- /dev/null
@@ -0,0 +1,43 @@
+from sqlalchemy import *
+from migrate import *
+import migrate.changeset  # monkeypatches Column
+
+from sqlalchemy import orm
+from sqlalchemy.ext.declarative import declarative_base
+TableBase = declarative_base()
+
+
+class User(TableBase):
+    __tablename__ = 'users'
+    id = Column(Integer, primary_key=True)
+
+
+class Role(TableBase):
+    __tablename__ = 'roles'
+    id = Column(Integer, primary_key=True, nullable=False)
+    name = Column(Unicode(64), nullable=False)
+    icon = Column(Unicode(64), nullable=False)
+
+class UserRole(TableBase):
+    __tablename__ = 'user_roles'
+    user_id = Column(Integer, ForeignKey('users.id'), primary_key=True, nullable=False, autoincrement=False)
+    role_id = Column(Integer, ForeignKey('roles.id'), primary_key=True, nullable=False, autoincrement=False)
+
+class RolePermission(TableBase):
+    __tablename__ = 'role_permissions'
+    id = Column(Integer, nullable=False, primary_key=True)
+    role_id = Column(Integer, ForeignKey('roles.id'), nullable=True)
+    permission = Column(Unicode(64), nullable=False)
+
+
+def upgrade(migrate_engine):
+    TableBase.metadata.bind = migrate_engine
+    Role.__table__.create()
+    UserRole.__table__.create()
+    RolePermission.__table__.create()
+
+def downgrade(migrate_engine):
+    TableBase.metadata.bind = migrate_engine
+    RolePermission.__table__.drop()
+    UserRole.__table__.drop()
+    Role.__table__.drop()