aboutsummaryrefslogtreecommitdiff
path: root/pyaggr3g470r/models
diff options
context:
space:
mode:
Diffstat (limited to 'pyaggr3g470r/models')
-rw-r--r--pyaggr3g470r/models/__init__.py68
-rw-r--r--pyaggr3g470r/models/article.py2
-rw-r--r--pyaggr3g470r/models/feed.py2
3 files changed, 69 insertions, 3 deletions
diff --git a/pyaggr3g470r/models/__init__.py b/pyaggr3g470r/models/__init__.py
index 9584d1f2..42903f4e 100644
--- a/pyaggr3g470r/models/__init__.py
+++ b/pyaggr3g470r/models/__init__.py
@@ -31,5 +31,71 @@ from .role import Role
from .user import User
from .article import Article
-
__all__ = ['Feed', 'Role', 'User', 'Article']
+
+import os
+
+from werkzeug import generate_password_hash
+
+from sqlalchemy.engine import reflection
+from sqlalchemy.schema import (
+ MetaData,
+ Table,
+ DropTable,
+ ForeignKeyConstraint,
+ DropConstraint)
+
+def db_empty(db):
+ "Will drop every datas stocked in db."
+ # From http://www.sqlalchemy.org/trac/wiki/UsageRecipes/DropEverything
+ conn = db.engine.connect()
+
+ # the transaction only applies if the DB supports
+ # transactional DDL, i.e. Postgresql, MS SQL Server
+ trans = conn.begin()
+
+ inspector = reflection.Inspector.from_engine(db.engine)
+
+ # gather all data first before dropping anything.
+ # some DBs lock after things have been dropped in
+ # a transaction.
+ metadata = MetaData()
+
+ tbs = []
+ all_fks = []
+
+ for table_name in inspector.get_table_names():
+ fks = []
+ for fk in inspector.get_foreign_keys(table_name):
+ if not fk['name']:
+ continue
+ fks.append(ForeignKeyConstraint((), (), name=fk['name']))
+ t = Table(table_name, metadata, *fks)
+ tbs.append(t)
+ all_fks.extend(fks)
+
+ for fkc in all_fks:
+ conn.execute(DropConstraint(fkc))
+
+ for table in tbs:
+ conn.execute(DropTable(table))
+
+ trans.commit()
+
+def db_create(db):
+ "Will create the database from conf parameters."
+ db.create_all()
+
+ role_admin = Role(name="admin")
+ role_user = Role(name="user")
+
+ user1 = User(nickname="admin",
+ email=os.environ.get("ADMIN_EMAIL",
+ "root@pyAggr3g470r.localhost"),
+ pwdhash=generate_password_hash(
+ os.environ.get("ADMIN_PASSWORD", "password")),
+ activation_key="")
+ user1.roles.extend([role_admin, role_user])
+
+ db.session.add(user1)
+ db.session.commit() \ No newline at end of file
diff --git a/pyaggr3g470r/models/article.py b/pyaggr3g470r/models/article.py
index f8f9d2d8..58cd0384 100644
--- a/pyaggr3g470r/models/article.py
+++ b/pyaggr3g470r/models/article.py
@@ -4,7 +4,7 @@
# pyAggr3g470r - A Web based news aggregator.
# Copyright (C) 2010-2015 Cédric Bonhomme - https://www.cedricbonhomme.org
#
-# For more information : https://bitbucket.org/cedricbonhomme/pyaggr3g470r/
+# For more information : https://bitbucket.org/cedricbonhomme/pyaggr3g470r
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/pyaggr3g470r/models/feed.py b/pyaggr3g470r/models/feed.py
index a37744d6..a36d9573 100644
--- a/pyaggr3g470r/models/feed.py
+++ b/pyaggr3g470r/models/feed.py
@@ -33,7 +33,7 @@ from sqlalchemy import desc
class Feed(db.Model):
"""
- Represent a station.
+ Represent a feed.
"""
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(), default="No title")
bgstack15