コード例 #1
0
def create_passwordreset():
    """
    Create the passwordreset table in the database.
    """
    with app.app_context():
        conn = db.session.connection()
        table = PasswordReset.metadata.tables['passwordreset']
        table.create(bind=db.engine)
コード例 #2
0
def migrate():
    """
    Add columns 'location', 'org', and 'mult' to patroncontact table.
    """
    with app.app_context():
        conn = db.session.connection()
        with conn.begin() as transaction:
            conn.execute('ALTER TABLE patroncontact ADD COLUMN location TEXT')
            conn.execute('ALTER TABLE patroncontact ADD COLUMN org TEXT')
            conn.execute('ALTER TABLE patroncontact ADD COLUMN mult BOOLEAN CHECK (mult IN (0, 1))')
コード例 #3
0
def update_passwords():
    """
    Update the plain-text passwords to bcrypt. Checks to see if already hashed,
    however admin should check if this needs to be run first.
    """
    with app.app_context():
        conn = db.session.connection()

        for staff in Staff.query.all():
            plaintext = staff.password.hashed

            # Make some attempt not to hash already hashed passwords
            if ishashed(plaintext):
                continue

            hashed = hashpassword(plaintext)

            # Have to sneak around the Staff class to get at the literal database value.
            sql = text('update staff set password = :hashed where username = :username')
            conn.execute(sql, hashed=hashed, username=staff.username)

        db.session.commit()
コード例 #4
0
ファイル: manage.py プロジェクト: KovalKt/test-library
def add_records_for_test():
    '''Add few test records to table Author and Book '''
    from . import app, db
    from models import Author, Book
    with app.app_context():
        author1 = Author('Ivan', 'Ivanov')
        book1 = Book('PROLOG', 1993)
        author1.books.append(book1)
        book2 = Book('ADA95', 1995)
        author1.books.append(book2)
        author2 = Author('Vasil', 'Petrov')
        author2.books.append(book1)
        book3 = Book('Pascal', 1998)
        author3 = Author('Serey', 'Guk')
        author3.books.append(book3)
        db.session.add(author1)
        db.session.add(book1)
        db.session.add(author2)
        db.session.add(book2)
        db.session.add(author3)
        db.session.add(book3)
        db.session.commit()
コード例 #5
0
def update_passwords():
    """
    Update the plain-text passwords to bcrypt. Checks to see if already hashed,
    however admin should check if this needs to be run first.
    """
    with app.app_context():
        conn = db.session.connection()

        for staff in Staff.query.all():
            plaintext = staff.password.hashed

            # Make some attempt not to hash already hashed passwords
            if ishashed(plaintext):
                continue

            hashed = hashpassword(plaintext)

            # Have to sneak around the Staff class to get at the literal database value.
            sql = text(
                'update staff set password = :hashed where username = :username'
            )
            conn.execute(sql, hashed=hashed, username=staff.username)

        db.session.commit()
コード例 #6
0
def migrate():
    """
    Add database-level cascading deletes on foreign keys.
    """
    with app.app_context():
        conn = db.session.connection()
        with conn.begin() as transaction:
            # add ON DELETE to table `passwordreset`
            conn.execute(
                'CREATE TEMP TABLE passwordreset_backup('
                'secret VARCHAR NOT NULL,created DATETIME,username VARCHAR);')
            conn.execute(
                'INSERT INTO passwordreset_backup'
                ' SELECT secret, created, username FROM passwordreset;')
            conn.execute('DROP TABLE passwordreset;')
            conn.execute(
                'CREATE TABLE passwordreset ('
                'secret VARCHAR NOT NULL,created DATETIME,username VARCHAR,'
                'PRIMARY KEY (secret),'
                'FOREIGN KEY(username) REFERENCES staff (username) ON DELETE CASCADE);'
            )
            conn.execute(
                'INSERT INTO passwordreset'
                ' SELECT secret, created, username FROM passwordreset_backup;')
            conn.execute('DROP TABLE passwordreset_backup;')
            # add ON DELETE to table `readinglist`
            conn.execute('CREATE TEMP TABLE readinglist_backup('
                         '"RLID" INTEGER NOT NULL,"ISBN" TEXT,recdate DATE,'
                         'username VARCHAR,book TEXT,author TEXT,comment TEXT,'
                         'sticky BOOLEAN,category TEXT);')
            conn.execute(
                'INSERT INTO readinglist_backup'
                ' SELECT "RLID", "ISBN", recdate, username, book'
                ' ,author, comment, sticky, category FROM readinglist;')
            conn.execute('DROP TABLE readinglist;')
            conn.execute(
                'CREATE TABLE readinglist('
                '"RLID" INTEGER NOT NULL,"ISBN" TEXT,recdate DATE,'
                'username VARCHAR,book TEXT,author TEXT,comment TEXT, '
                'sticky BOOLEAN,category TEXT,'
                'PRIMARY KEY ("RLID"), '
                'FOREIGN KEY(username) REFERENCES staff (username) ON DELETE CASCADE, '
                'CHECK (sticky IN (0, 1)));')
            conn.execute(
                'INSERT INTO readinglist'
                ' SELECT "RLID", "ISBN", recdate, username, book,'
                ' author, comment, sticky, category FROM readinglist_backup;')
            conn.execute('DROP TABLE readinglist_backup;')
            # add ON DELETE to table `patroncontact`
            conn.execute(
                'CREATE TEMP TABLE patroncontact_backup('
                '"PCID" INTEGER NOT NULL,reqdate TEXT,username VARCHAR,'
                'name TEXT,email TEXT,contact TEXT,phone TEXT,'
                'times TEXT,likes TEXT,dislikes TEXT,comment TEXT,'
                'audience TEXT,format_pref TEXT,chat TEXT,handle TEXT,'
                'location TEXT,org TEXT,mult BOOLEAN,status TEXT);')
            conn.execute(
                'INSERT INTO patroncontact_backup'
                ' SELECT "PCID", reqdate, username, name, email, contact, phone'
                ', times, likes, dislikes, comment, audience, format_pref, chat'
                ', handle, location, org, mult, status FROM patroncontact;')
            conn.execute('DROP TABLE patroncontact;')
            conn.execute(
                'CREATE TABLE patroncontact ('
                '"PCID" INTEGER NOT NULL, reqdate TEXT, username VARCHAR, '
                'name TEXT, email TEXT, contact TEXT, phone TEXT, '
                'times TEXT, likes TEXT, dislikes TEXT, comment TEXT, '
                'audience TEXT, format_pref TEXT, chat TEXT, handle TEXT, '
                'location TEXT, org TEXT, mult BOOLEAN, status TEXT, '
                'PRIMARY KEY ("PCID"), '
                'FOREIGN KEY(username) REFERENCES staff (username) ON DELETE CASCADE, '
                'CHECK (mult IN (0, 1)));')
            conn.execute(
                'INSERT INTO patroncontact'
                ' SELECT "PCID", reqdate, username, name, email, contact, phone'
                ' ,times, likes, dislikes, comment, audience, format_pref, chat'
                ' ,handle, location, org, mult, status'
                ' FROM patroncontact_backup;')
            conn.execute('DROP TABLE patroncontact_backup;')
コード例 #7
0
ファイル: shell.py プロジェクト: hitbox/LibraryWebsite
from sqlalchemy import inspect

from models import *
from library import app, db

app.app_context().push()
コード例 #8
0
ファイル: manage.py プロジェクト: KovalKt/test-library
def init_db():
    '''Initialise database. Create schema'''
    from . import app, db
    with app.app_context():
        db.create_all()