from flask.ext.socketio import SocketIO, emit # Database setup from db import db_session, init_db from models import Participant from sqlalchemy import or_ from psiturk_config import PsiturkConfig from experiment_errors import ExperimentError config = PsiturkConfig() config.load_config() # Set up logging logfilepath = os.path.join(os.getcwd(), config.get("Server Parameters", "logfile")) loglevels = [logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL] loglevel = loglevels[config.getint('Server Parameters', 'loglevel')] logging.basicConfig( filename=logfilepath, format='%(asctime)s %(message)s', level=loglevel ) # Status codes NOT_ACCEPTED = 0 ALLOCATED = 1 STARTED = 2 COMPLETED = 3 CREDITED = 4 QUITEARLY = 5 ###########################################################
import datetime import io, csv, json from sqlalchemy import Column, Integer, String, DateTime, Boolean, Text from db import Base from psiturk_config import PsiturkConfig config = PsiturkConfig() TABLENAME = config.get('Database Parameters', 'table_name') CODE_VERSION = config.get('Task Parameters', 'code_version') class Participant(Base): """ Object representation of a participant in the database. """ __tablename__ = TABLENAME uniqueid = Column(String(128), primary_key=True) assignmentid = Column(String(128), nullable=False) workerid = Column(String(128), nullable=False) hitid = Column(String(128), nullable=False) ipaddress = Column(String(128)) browser = Column(String(128)) platform = Column(String(128)) language = Column(String(128)) cond = Column(Integer) counterbalance = Column(Integer) codeversion = Column(String(128)) beginhit = Column(DateTime)
# Setup database from db import db_session, init_db from models import Participant from sqlalchemy import or_, exc from psiturk_config import PsiturkConfig from experiment_errors import ExperimentError from psiturk.user_utils import nocache # Setup config CONFIG = PsiturkConfig() CONFIG.load_config() # Setup logging LOG_FILE_PATH = os.path.join(os.getcwd(), CONFIG.get("Server Parameters", \ "logfile")) LOG_LEVELS = [ logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL ] LOG_LEVEL = LOG_LEVELS[CONFIG.getint('Server Parameters', 'loglevel')] logging.basicConfig(filename=LOG_FILE_PATH, format='%(asctime)s %(message)s', level=LOG_LEVEL) # Status codes NOT_ACCEPTED = 0 ALLOCATED = 1 STARTED = 2 COMPLETED = 3
# Setup database from db import db_session, init_db from models import Participant from sqlalchemy import or_, exc from psiturk_config import PsiturkConfig from experiment_errors import ExperimentError from psiturk.user_utils import nocache # Setup config CONFIG = PsiturkConfig() CONFIG.load_config() # Setup logging LOG_FILE_PATH = os.path.join(os.getcwd(), CONFIG.get("Server Parameters", \ "logfile")) LOG_LEVELS = [logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL] LOG_LEVEL = LOG_LEVELS[CONFIG.getint('Server Parameters', 'loglevel')] logging.basicConfig(filename=LOG_FILE_PATH, format='%(asctime)s %(message)s', level=LOG_LEVEL) # Status codes NOT_ACCEPTED = 0 ALLOCATED = 1 STARTED = 2 COMPLETED = 3 SUBMITTED = 4 CREDITED = 5 QUITEARLY = 6
# Setup database from db import db_session, init_db from models import Participant from sqlalchemy import or_, exc from psiturk_config import PsiturkConfig from experiment_errors import ExperimentError from psiturk.user_utils import nocache # Setup config CONFIG = PsiturkConfig() CONFIG.load_config() # Setup logging LOG_FILE_PATH = os.path.join(os.getcwd(), CONFIG.get("Server Parameters", \ "logfile")) LOG_LEVELS = [logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL] LOG_LEVEL = LOG_LEVELS[CONFIG.getint('Server Parameters', 'loglevel')] logging.basicConfig(filename=LOG_FILE_PATH, format='%(asctime)s %(message)s', level=LOG_LEVEL) # Status codes NOT_ACCEPTED = 0 ALLOCATED = 1 STARTED = 2 COMPLETED = 3 SUBMITTED = 4 CREDITED = 5 QUITEARLY = 6
# Setup database from db import db_session, init_db from models import Participant from sqlalchemy import or_, exc from psiturk_config import PsiturkConfig from experiment_errors import ExperimentError from psiturk.user_utils import nocache # Setup config CONFIG = PsiturkConfig() CONFIG.load_config() # Setup logging LOG_FILE_PATH = os.path.join(os.getcwd(), CONFIG.get("Server Parameters", \ "logfile")) LOG_LEVELS = [ logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL ] LOG_LEVEL = LOG_LEVELS[CONFIG.getint('Server Parameters', 'loglevel')] logging.basicConfig(filename=LOG_FILE_PATH, format='%(asctime)s %(message)s', level=LOG_LEVEL) # Status codes NOT_ACCEPTED = 0 ALLOCATED = 1 STARTED = 2 COMPLETED = 3
# Import flask import os, sys, subprocess import argparse from flask import Flask, Response, render_template, request, jsonify import urllib2 from psiturk_config import PsiturkConfig from models import Participant import experiment_server_controller as control from amt_services import MTurkServices from db import db_session from functools import wraps config = PsiturkConfig() server_controller = control.ExperimentServerController(config.getint("Server Parameters", "port"), hostname=config.get("Server Parameters", "host")) app = Flask("Psiturk_Dashboard", template_folder=os.path.join(os.path.dirname(__file__), "templates_dashboard"), static_folder=os.path.join(os.path.dirname(__file__), "static_dashboard")) #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # Authentication functions #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! def check_auth(username, password): """This function is called to check if a username / password combination is valid. """ true_user = config.get('Dashboard Parameters', 'login_username') true_pass = config.get('Dashboard Parameters', 'login_pw')
# Database setup from db import db_session, init_db from models import Participant from sqlalchemy import or_ from psiturk_config import PsiturkConfig from experiment_errors import ExperimentError from psiturk.user_utils import nocache config = PsiturkConfig() config.load_config() # Set up logging logfilepath = os.path.join(os.getcwd(), config.get("Server Parameters", "logfile")) loglevels = [logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL] loglevel = loglevels[config.getint('Server Parameters', 'loglevel')] logging.basicConfig( filename=logfilepath, format='%(asctime)s %(message)s', level=loglevel ) # Status codes NOT_ACCEPTED = 0 ALLOCATED = 1 STARTED = 2 COMPLETED = 3 SUBMITTED = 4 CREDITED = 5 QUITEARLY = 6 BONUSED = 7
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, scoped_session from sqlalchemy.ext.declarative import declarative_base from psiturk_config import PsiturkConfig config = PsiturkConfig() config.load_config() DATABASE = config.get('Database Parameters', 'database_url') engine = create_engine(DATABASE, echo=False) db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) Base = declarative_base() Base.query = db_session.query_property() def init_db(): #print "Initalizing db if necessary." Base.metadata.create_all(bind=engine)
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, scoped_session from sqlalchemy.ext.declarative import declarative_base from psiturk_config import PsiturkConfig config = PsiturkConfig() config.load_config() DATABASE = config.get('Database Parameters', 'database_url') if 'mysql' in config.get('Database Parameters', 'database_url').lower(): try: __import__('imp').find_module('MySQLdb') except ImportError: print("Sorry, to use a MySQL database you need to install " "the `mysql-python` python package. Try `pip install " "mysql-python`. Hopefully it goes smoothly for you. " "Installation can be tricky on some systems.") exit() engine = create_engine(DATABASE, echo=False, pool_recycle=3600) db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) Base = declarative_base() Base.query = db_session.query_property() def init_db(): #print "Initalizing db if necessary."
import os, sys, subprocess import argparse from flask import Flask, Response, render_template, request, jsonify import urllib2 from psiturk_config import PsiturkConfig from models import Participant import experiment_server_controller as control from amt_services import MTurkServices from db import db_session from functools import wraps config = PsiturkConfig() server_controller = control.ExperimentServerController( config.getint("Server Parameters", "port"), hostname=config.get("Server Parameters", "host")) app = Flask("Psiturk_Dashboard", template_folder=os.path.join(os.path.dirname(__file__), "templates_dashboard"), static_folder=os.path.join(os.path.dirname(__file__), "static_dashboard")) #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # Authentication functions #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! def check_auth(username, password): """This function is called to check if a username / password combination is valid.
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, scoped_session from sqlalchemy.ext.declarative import declarative_base from psiturk_config import PsiturkConfig config = PsiturkConfig() config.load_config() DATABASE = config.get('Database Parameters', 'database_url') if 'mysql' in config.get('Database Parameters', 'database_url').lower(): try: __import__('imp').find_module('MySQLdb') except ImportError: print("Sorry, to use a MySQL database you need to install " "the `mysql-python` python package. Try `pip install " "mysql-python`. Hopefully it goes smoothly for you. " "Installation can be tricky on some systems.") exit() engine = create_engine(DATABASE, echo=False) db_session = scoped_session( sessionmaker(autocommit=False, autoflush=False, bind=engine)) Base = declarative_base() Base.query = db_session.query_property() def init_db(): #print "Initalizing db if necessary." Base.metadata.create_all(bind=engine)
# Importing flask from flask import Flask, render_template, request, Response, jsonify # Database setup from db import db_session, init_db from models import Participant from sqlalchemy import or_ from psiturk_config import PsiturkConfig config = PsiturkConfig() # Set up logging logfilepath = os.path.join(os.getcwd(), config.get("Server Parameters", "logfile")) loglevels = [ logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL ] loglevel = loglevels[config.getint('Server Parameters', 'loglevel')] logging.basicConfig(filename=logfilepath, format='%(asctime)s %(message)s', level=loglevel) # config.get( 'Mechanical Turk Info', 'aws_secret_access_key' ) # constants USING_SANDBOX = config.getboolean('HIT Configuration', 'using_sandbox') CODE_VERSION = config.get('Task Parameters', 'code_version')
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, scoped_session from sqlalchemy.ext.declarative import declarative_base from psiturk_config import PsiturkConfig import re, os config = PsiturkConfig() config.load_config() r = re.compile("OPENSHIFT_(.+)_DB_URL") # Might be MYSQL or POSTGRESQL matches = filter(r.match, os.environ) if matches: DATABASE = "{}{}".format(os.environ[matches[0]], os.environ['OPENSHIFT_APP_NAME']) else: DATABASE = config.get('Database Parameters', 'database_url') if 'mysql://' in DATABASE.lower(): try: __import__('imp').find_module('pymysql') except ImportError: print("To use a MySQL database you need to install " "the `pymysql` python package. Try `pip install " "pymysql`.") exit() # internally use `mysql+pymysql://` so sqlalchemy talks to # the pymysql package DATABASE = DATABASE.replace('mysql://', 'mysql+pymysql://') engine = create_engine(DATABASE, echo=False, pool_recycle=3600) db_session = scoped_session(
# Importing flask from flask import Flask, render_template, request, Response, jsonify # Database setup from db import db_session, init_db from models import Participant from sqlalchemy import or_ from psiturk_config import PsiturkConfig config = PsiturkConfig() # Set up logging logfilepath = os.path.join(os.getcwd(), config.get("Server Parameters", "logfile")) loglevels = [logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR, logging.CRITICAL] loglevel = loglevels[config.getint('Server Parameters', 'loglevel')] logging.basicConfig( filename=logfilepath, format='%(asctime)s %(message)s', level=loglevel ) # config.get( 'Mechanical Turk Info', 'aws_secret_access_key' ) # constants USING_SANDBOX = config.getboolean('HIT Configuration', 'using_sandbox') CODE_VERSION = config.get('Task Parameters', 'code_version') # Database configuration and constants TABLENAME = config.get('Database Parameters', 'table_name') SUPPORT_IE = config.getboolean('Server Parameters', 'support_IE')
import datetime import io, csv, json from sqlalchemy import Column, Integer, String, DateTime, Float, Text from db import Base from psiturk_config import PsiturkConfig config = PsiturkConfig() config.load_config() TABLENAME = config.get('Database Parameters', 'table_name') CODE_VERSION = config.get('Task Parameters', 'experiment_code_version') class Participant(Base): """ Object representation of a participant in the database. """ __tablename__ = TABLENAME uniqueid =Column(String(128), primary_key=True) assignmentid =Column(String(128), nullable=False) workerid = Column(String(128), nullable=False) hitid = Column(String(128), nullable=False) ipaddress = Column(String(128)) browser = Column(String(128)) platform = Column(String(128)) language = Column(String(128)) cond = Column(Integer) counterbalance = Column(Integer) codeversion = Column(String(128))
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, scoped_session from sqlalchemy.ext.declarative import declarative_base from psiturk_config import PsiturkConfig config = PsiturkConfig() config.load_config() DATABASE = config.get("Database Parameters", "database_url") if "mysql" in config.get("Database Parameters", "database_url").lower(): try: __import__("imp").find_module("MySQLdb") except ImportError: print( "Sorry, to use a MySQL database you need to install " "the `mysql-python` python package. Try `pip install " "mysql-python`. Hopefully it goes smoothly for you. " "Installation can be tricky on some systems." ) exit() engine = create_engine(DATABASE, echo=False) db_session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine)) Base = declarative_base() Base.query = db_session.query_property() def init_db(): # print "Initalizing db if necessary."