# Path: wallace/db.py
# def sessions_scope(local_session, commit=False):
# def scoped_session_decorator(func):
#     def wrapper(*args, **kwargs):
# def init_db(drop_all=False):
# 
# Path: wallace/models.py
# DATETIME_FMT = "%Y-%m-%dT%H:%M:%S.%f"
# def timenow():
#     def __init__(self, worker_id, assignment_id, hit_id, mode):
#     def __json__(self):
#     def nodes(self, type=None, failed=False):
#     def questions(self, type=None):
#     def infos(self, type=None, failed=False):
#     def fail(self):
#     def __init__(self, participant, question, response, number):
#     def fail(self):
#     def __json__(self):
#     def __repr__(self):
#     def __json__(self):
#     def nodes(self, type=None, failed=False, participant_id=None):
#     def size(self, type=None, failed=False):
#     def infos(self, type=None, failed=False):
#     def transmissions(self, status="all", failed=False):
#     def transformations(self, type=None, failed=False):
#     def latest_transmission_recipient(self):
#     def vectors(self, failed=False):
#     def add_node(self, node):
#     def fail(self):
#     def calculate_full(self):
#     def print_verbose(self):
#     def __init__(self, network, participant=None):
#     def __repr__(self):
#     def __json__(self):
#     def vectors(self, direction="all", failed=False):
#     def neighbors(self, type=None, direction="to", failed=None):
#     def is_connected(self, whom, direction="to", failed=None):
#     def infos(self, type=None, failed=False):
#     def received_infos(self, type=None, failed=None):
#     def transmissions(self, direction="outgoing", status="all", failed=False):
#     def transformations(self, type=None, failed=False):
#     def fail(self):
#     def connect(self, whom, direction="to"):
#     def flatten(self, l):
#     def transmit(self, what=None, to_whom=None):
#     def _what(self):
#     def _to_whom(self):
#     def receive(self, what=None):
#     def update(self, infos):
#     def replicate(self, info_in):
#     def mutate(self, info_in):
#     def __init__(self, origin, destination):
#     def __repr__(self):
#     def __json__(self):
#     def transmissions(self, status="all"):
#     def fail(self):
#     def __init__(self, origin, contents=None):
#     def _write_once(self, key, value):
#     def __repr__(self):
#     def __json__(self):
#     def fail(self):
#     def transmissions(self, status="all"):
#     def transformations(self, relationship="all"):
#     def _mutated_contents(self):
#     def __init__(self, vector, info):
#     def mark_received(self):
#     def __repr__(self):
#     def __json__(self):
#     def fail(self):
#     def __repr__(self):
#     def __init__(self, info_in, info_out):
#     def __json__(self):
#     def fail(self):
# class SharedMixin(object):
# class Participant(Base, SharedMixin):
# class Question(Base, SharedMixin):
# class Network(Base, SharedMixin):
# class Node(Base, SharedMixin):
# class Vector(Base, SharedMixin):
# class Info(Base, SharedMixin):
# class Transmission(Base, SharedMixin):
# class Transformation(Base, SharedMixin):
# class Notification(Base, SharedMixin):


from flask import (
    Blueprint,
    request,
    Response,
    send_from_directory,
    render_template
)
from psiturk.psiturk_config import PsiturkConfig
from psiturk.user_utils import PsiTurkAuthorization
from psiturk.db import init_db
from psiturk.db import db_session as session_psiturk
from wallace import db, models
from operator import attrgetter
from json import dumps
from datetime import datetime
from rq import Queue, get_current_job
from worker import conn
from sqlalchemy.orm.exc import NoResultFound
    from psiturk.models import Participant as PsiturkParticipant
import imp
import inspect
import logging
import os
import requests
import traceback
"""Import custom routes into the experiment server."""







# Load the configuration options.
config = PsiturkConfig()
config.load_config()
myauth = PsiTurkAuthorization(config)

# Set logging options.
LOG_LEVELS = [
    logging.DEBUG,
    logging.INFO,
    logging.WARNING,
    logging.ERROR,
    logging.CRITICAL
]
LOG_LEVEL = LOG_LEVELS[config.getint('Server Parameters', 'loglevel')]

db.logger.setLevel(LOG_LEVEL)


# Path: wallace/db.py
# def sessions_scope(local_session, commit=False):
# def scoped_session_decorator(func):
#     def wrapper(*args, **kwargs):
# def init_db(drop_all=False):
# 
# Path: wallace/models.py
# DATETIME_FMT = "%Y-%m-%dT%H:%M:%S.%f"
# def timenow():
#     def __init__(self, worker_id, assignment_id, hit_id, mode):
#     def __json__(self):
#     def nodes(self, type=None, failed=False):
#     def questions(self, type=None):
#     def infos(self, type=None, failed=False):
#     def fail(self):
#     def __init__(self, participant, question, response, number):
#     def fail(self):
#     def __json__(self):
#     def __repr__(self):
#     def __json__(self):
#     def nodes(self, type=None, failed=False, participant_id=None):
#     def size(self, type=None, failed=False):
#     def infos(self, type=None, failed=False):
#     def transmissions(self, status="all", failed=False):
#     def transformations(self, type=None, failed=False):
#     def latest_transmission_recipient(self):
#     def vectors(self, failed=False):
#     def add_node(self, node):
#     def fail(self):
#     def calculate_full(self):
#     def print_verbose(self):
#     def __init__(self, network, participant=None):
#     def __repr__(self):
#     def __json__(self):
#     def vectors(self, direction="all", failed=False):
#     def neighbors(self, type=None, direction="to", failed=None):
#     def is_connected(self, whom, direction="to", failed=None):
#     def infos(self, type=None, failed=False):
#     def received_infos(self, type=None, failed=None):
#     def transmissions(self, direction="outgoing", status="all", failed=False):
#     def transformations(self, type=None, failed=False):
#     def fail(self):
#     def connect(self, whom, direction="to"):
#     def flatten(self, l):
#     def transmit(self, what=None, to_whom=None):
#     def _what(self):
#     def _to_whom(self):
#     def receive(self, what=None):
#     def update(self, infos):
#     def replicate(self, info_in):
#     def mutate(self, info_in):
#     def __init__(self, origin, destination):
#     def __repr__(self):
#     def __json__(self):
#     def transmissions(self, status="all"):
#     def fail(self):
#     def __init__(self, origin, contents=None):
#     def _write_once(self, key, value):
#     def __repr__(self):
#     def __json__(self):
#     def fail(self):
#     def transmissions(self, status="all"):
#     def transformations(self, relationship="all"):
#     def _mutated_contents(self):
#     def __init__(self, vector, info):
#     def mark_received(self):
#     def __repr__(self):
#     def __json__(self):
#     def fail(self):
#     def __repr__(self):
#     def __init__(self, info_in, info_out):
#     def __json__(self):
#     def fail(self):
# class SharedMixin(object):
# class Participant(Base, SharedMixin):
# class Question(Base, SharedMixin):
# class Network(Base, SharedMixin):
# class Node(Base, SharedMixin):
# class Vector(Base, SharedMixin):
# class Info(Base, SharedMixin):
# class Transmission(Base, SharedMixin):
# class Transformation(Base, SharedMixin):
# class Notification(Base, SharedMixin):


# Path: wallace/custom.py
from flask import (
    Blueprint,
    request,
    Response,
    send_from_directory,
    render_template
)
from psiturk.psiturk_config import PsiturkConfig
from psiturk.user_utils import PsiTurkAuthorization
from psiturk.db import init_db
from psiturk.db import db_session as session_psiturk
from wallace import db, models
from operator import attrgetter
from json import dumps
from datetime import datetime
from rq import Queue, get_current_job
from worker import conn
from sqlalchemy.orm.exc import NoResultFound
    from psiturk.models import Participant as PsiturkParticipant
import imp
import inspect
import logging
import os
import requests
import traceback

"""Import custom routes into the experiment server."""







# Load the configuration options.
config = PsiturkConfig()
config.load_config()
myauth = PsiTurkAuthorization(config)

# Set logging options.
LOG_LEVELS = [
    logging.DEBUG,
    logging.INFO,
    logging.WARNING,
    logging.ERROR,
    logging.CRITICAL
]
LOG_LEVEL = LOG_LEVELS[config.getint('Server Parameters', 'loglevel')]

db.logger.setLevel(LOG_LEVEL)


if len(db.logger.handlers) == 0: