Ejemplo n.º 1
0
def test_before_committed(app, db, Todo):
    class Namespace:
        is_received = False

    def before_committed(sender, changes):
        Namespace.is_received = True

    before_models_committed.connect(before_committed)
    todo = Todo("Awesome", "the text")
    db.session.add(todo)
    db.session.commit()
    assert Namespace.is_received
    before_models_committed.disconnect(before_committed)
Ejemplo n.º 2
0
    from system.models import OperationLog, SecurityLog
    for change in changes:
        if isinstance(change[0], OperationLog) or isinstance(
                change[0], SecurityLog):
            continue
        oplog = OperationLog()
        oplog.user = current_user
        oplog.module = unicode(change[0])
        oplog.action = change[1]
        oplog.terminal_ip = request.remote_addr
        oplog.summary = str(change[0].__dict__)
        db.session.add(oplog)


models_committed.connect(record_oplogs)
before_models_committed.connect(record_oplogs)


@login_mgr.user_loader
def load_user(id):
    return User.query.get(int(id))
    #user = cache.get("user-"+id)
    #if user is None:
    #   user = User.query.get(int(id))
    #   cache.set("user-"+id, user)
    #return user


from tango.login import user_logged_in, user_logged_out

def prepare_indexing(app):
    """Prepare indexing."""
    before_models_committed.connect(register_record_modification)
    models_committed.connect(index_record_modification)
Ejemplo n.º 4
0
class Post(db.Model):
    __tablename__ = 'posts'

    id = db.Column(db.Integer, primary_key=True)
    created = db.Column(db.DateTime, default=datetime.datetime.utcnow)
    modified = db.Column(db.DateTime)
    title = db.Column(db.Unicode(100))
    slug = db.Column(db.Unicode(100))
    text = db.Column(db.Text)
    html = db.Column(db.Text)
    tags = db.Column(db.Unicode(60), index=True)

    def __str__(self):
        return self.title

    @classmethod
    def before_commit(sender, app, changes):
        for model, change in changes:
            if isinstance(model, Post) and change in ('insert', 'update'):
                # onupdate for field is only called if field is in the SET
                # this makes sure it is always called
                model.modified = datetime.datetime.utcnow()

                # as we don't want the html to be edited manually
                # the html has to be generated for each row update
                model.html = mistune.markdown(model.text)


before_models_committed.connect(Post.before_commit)
Ejemplo n.º 5
0
def prepare_indexing(app):
    """Prepare indexing."""
    before_models_committed.connect(register_record_modification)
    models_committed.connect(index_record_modification)
Ejemplo n.º 6
0
# coding: utf-8
from flask import request, session, g, redirect, url_for, render_template, flash
from models import app, db, Entries
from flask_sqlalchemy import models_committed, before_models_committed
from apps.signal.signal_receive import model_saved_before_test, model_saved_test

before_models_committed.connect(model_saved_before_test, app)
models_committed.connect(model_saved_test, app)


@app.route('/')
def show_entries():
    cur = Entries.query.order_by(Entries.id.desc()).all()
    entries = [dict(id=row.id, title=row.title, text=row.text) for row in cur]
    return render_template('blog/show_entries.html', entries=entries)


@app.route('/add', methods=['POST'])
def add_entry():
    content = Entries(request.form['title'], request.form['text'])
    db.session.add(content)
    db.session.commit()
    flash('New entry was successfully posted')
    return redirect(url_for('show_entries'))


@app.route('/delete', methods=['POST', 'GET'])
def delete_entry():
    contents = Entries.query.all()
    for content in contents:
        db.session.delete(content)
Ejemplo n.º 7
0
    def __init_signals(self):
        from bmp.signals.db_log import log

        before_models_committed.connect(log, self)
Ejemplo n.º 8
0
    @declared_attr
    def modified_by_id(cls):
        return Column(db.Integer, db.ForeignKey('user.id'))

    @declared_attr
    def modified_by(cls):
        return db.relationship('User', backref='blueprints')

    def set_current_user(self):
        self.modified_by_id = current_user.id

def on_models_committed(app, changes):
    for obj, op in changes:
        if op in ['insert', 'update'] and isinstance(obj, BlueprintModelMixin):
            obj.set_current_user()

before_models_committed.connect(on_models_committed)

config = {
    "name": "Blueprint",
    "description": "Blueprint fonctionnality",
}

class Blueprint(object):
    def __init__(self):
        self.config = config

    def init_app(self, app):
        self.bp = FlaskBlueprint('blueprint', __name__)
        app.register_blueprint(self.bp)
Ejemplo n.º 9
0
def record_oplogs(app,changes):
    if request.headers.environ.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest':
        return
    from system.models import OperationLog, SecurityLog
    for change in changes:
        if isinstance(change[0], OperationLog) or isinstance(change[0], SecurityLog):
            continue
        oplog = OperationLog()
        oplog.user = current_user
        oplog.module = unicode(change[0])
        oplog.action = change[1]
        oplog.terminal_ip = request.remote_addr
        oplog.summary = str(change[0].__dict__)
        db.session.add(oplog)
models_committed.connect(record_oplogs)
before_models_committed.connect(record_oplogs)

@login_mgr.user_loader
def load_user(id):
    return User.query.get(int(id))
    #user = cache.get("user-"+id)
    #if user is None:
    #   user = User.query.get(int(id))
    #   cache.set("user-"+id, user)
    #return user

from tango.login import user_logged_in, user_logged_out
def record_login(app, user):
    #cache.set("user-"+str(user.id), user)
    from system.models import SecurityLog
    from datetime import datetime