All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Bumped pyOpenSSL to 22.0.0 to fix a problem with its
cryptography
package requirement.
- Separate config settings for mturk qualifications for
live
andsandbox
modes (#505) - Added configuration option for changing autogenerated dashboard-related tables to be unique per experiment -- for use when a single database is shared across multiple experiments (#495)
- Facelift for dashboard
- Fix backwards-compat bug for assignments-table (#528) -- Thanks @jacob-lee!
- Pin markupsafe to 2.0.1 (#541) -- Thanks for the report @jmuchovej
- Fix SSTI vulnerability in ad and consent pages (#517)
-
Add custom MTurk qualification support (#493)
-
/dashboard/campaigns and /dashboard/tasks now warn if
do_scheduler
isFalse
(#502) -
amt_services_wrapper's _get_local_hitids no longer queries the Participants table for hitids. Instead, it wholly relies on the Hit table (
amt_hits
by default). (#498) -- Thanks @evankirkiles!Experiments that are migrating from psiturk v2 should run the new
psiturk migrate db
command when migrating to this release.
- user_utils.PsiTurkAuthorization should not allow empty username or password! (#492)
- aws env vars AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are now preferred over anything set in a config file somewhere (#496, #500)
- Dashboard will refuse to start if
secret_key
is missing or if no valid mturk credentials (#497) - Scheduler is started "paused" if
do_scheduler
isFalse
, so that tasks can still be created, modified, and destroyed (#502) - Campaigns' "update goal" functionality fixed -- the associated task is updated with the new goal (#502)
- example template for thanks-mturksubmit was missing a call to
{{ super() }}
, leading to no styles being loaded by default (#503)
- Migrate from Travis CI to Github Actions (#500)
- API now uses a custom error handler to pass sometimes-gory exception messages back to the api user (#502)
- Change the Participant.datastring column to be lazy-loaded, causing the datastring to not be loaded by the sqlalchemy model until explicitly requested. Leads to massive speed increases for any query involving the Participant table for cases where the datastring is large. (Thanks @evankirkiles!)(#504)
- ability to launch the experiment server from a subdirectory instead of just
the default directory by passing
app_dir
keyword argument toexperiment_server.launch()
(#484)
- Flask's StreamLogger is now used by default when ON_CLOUD=1, assuming no errorlog is set in the config file (#483)
- fix download_datafiles scoping error (#487)
- added backwards compatibility for class
InvalidUsage
exception in experiment_errors.py, for custom.py files generated by old version of psiturk. This was previously throwing an exception in versions 3.0.0 – 3.0.5 (#479)
- fix bonus_message config.get section reference (3219016)
- fix another reference to a config section name that doesn't exist, apparently the unit tests are horrible
- Fixed backwards compatibility for translating ON_HEROKU=1 to ON_CLOUD=1
- fix shell's error during hit_create that prevented ad url from showing.
- fix shell's messaging about invalid aws credentials
- Changed default ad url port to 443 instead of 80
The currently-undocumented psiturk-heroku-config
command no longer attaches a postgresql addon by default.
I'm calling this just a bugfix because (1) the docs assume that it doesn't attach the psql database, and
(2) that command isn't even documented anyway. Will version-feature-bump when this feature is better
thought through.
- fixed an inconsistency between shell usage of "allowlist-qualification-ids" and and config file calling the same "require_quals", same for "blocklist" and "block_quals". Also, documentation incorrectly described the config file accepting "allowlist_qualification_ids", while it only actually accepted "require_quals." Standardized on "require" and "block" throughout. Maintained backwards compatibility except in shell usage since docopt doesn't seem to allow it in the way it parses the usage string, but no way am I going to bump to 4.0.0 just because of that!
- Drop support for all psiturk.org-related services, including the psiturk Secure Ad Server, psiturk.org api keys, and the experiment-exchange
- moved the experiment exchange into the docs. See here for how to contribute a project to the new exchange.
- Drop support for python2 -- only python > 3.6 is supported.
- upgrade boto to boto3, as boto dropped support for python2.
- upgrade cmd2 to 0.9 (only supports python3)
- a jinja "layout" is used for many of the bundled experiment pages, making general changes to standard pages easier
def regularpage
in experiment.py no longer calls flask'srender_template
-- instead, it sends the file as-is. If you need a custom template to be rendered, then create a route for your template incustom.py
, and callrender_template()
on it yourself.- psiturk.js
preloadPages()
now returns aPromise
. See the migration guide for links to examples of using the new approach. - psiturk exception
InvalidUsage
changed toInvalidUsageError
. Breakscustom.py
files generated under psiturk v2. - moved
psiturk.db.Base
class topsiturk.models
file
- the configuration file created by running
psiturk-setup-example
now comments out default settings by prepending;
-- this makes it so that environment variables can override defaults not specified in config.txt. See the configuration overview page in the documentation for more information. - changed the default tablename to be
assignments
instead ofturkdemo
- changed the
amt_keywords
key to be justkeywords
- moved
contact_email_on_error
,browser_exclude_rule
,cutoff_time
, andallow_repeats
under theTask Parameters
section. - Renamed
launch_in_sandbox
(True, False) to belaunch_in_mode
(Sandbox, Live)
- add ability to customize participant condition assignment. (see 309a623)
- if a commonly-forgotten required template is missing when not using the psiturk ad server, raise an exception
- add a dashboard and the beginnings of a sort-of REST API that the dashboard uses.
See the dashboard configuration overview in the documentation. The dashboard currently includes features such as the following:
- view all participants by condition and status
- launch "campaigns," which registers a scheduled event to keep posting rounds of HITs with 9 assignments each until a campaign goal is met
- enable a "auto approve all participants" scheduled event
- tasks only run if
do_scheduler
isTrue
, see the tasks setting
- added a task-runner setting, which wh
- avoid owasp ad post block
- set content-type application/json on post
- remove all comments from example ad.html
- fix unable to do non-aws things on without aws credentials (#427)
-- patch pass bonus amount as shell arg
- fix extend hit (#421)
- specified
setproctitle
in requirements.txt, to fix "server blocked" status message. Necessary for gunicorn < 20.0, but gunicorn >=20.0 requires python3
- requirements.txt generated with help of
pipreqs
instead ofpip freeze
, removing stale child dependencies, one of which was breaking zsh on osx catalina (#386)
- download_datafiles works on both python2 and python3 (#375)
- gnureadline not forced onto macosx users (#371)
- moved _get_local_hitids out of list comprehension (#380)
- worker bonus didn't do anything because of shell parsing bug (see #377)
- (probably) fixed utf-8 encoding issue when opening consent.html or ad.html
- datastring encoding to db was wrong
- for python2, needed to check against six.string_types instead of str
worker approve <assignmentid | hitid>
was incorrectly looking for already-credited local submissions instead of just submitted onesworker approve --hitid
was not filtering to just the local study
- add explanation for non-aws-users for how to use psiturk server commands without launching the shell
psiturk hit create
with use_psiturk_ad_server was throwing an error when trying to create a hit because of a missing success attribute on wrapperresponsesuccess
- test suite to pave the way for migrating to Python 3 (woo!)
- Support for Python 3.6 and 3.7
- travis CI runs setup.py tests for python 2.7, 3.6, and 3.7
- table that tracks psiturk-created HITids in local db
psiturk_shell
file does all printing through cmd2's.poutput
so that stuff can be redirectedamt_services_wrapper
andamt_services
functions are wrapped via decorator so that they return a consistent Response-type object. This effectively separates theprint
ing of any psiturk_shell data from the core psiturk functions. This will make a web interface doable. Also, it allows for the core functions to throw meaningful exceptions, which are caught by the wrapper and returned.- psiturk status message is pulled from github repo instead of from an api call to the psiturk.org api server. Also, the call to load this does not depend directly on urllib2 anymore.
- update many dependencies because why not
- Shell support for EC2 MySQL
- #352 - expiring a hit didn't push far enough into the past to actually expire instead of extend on the mturk side
- moved AWS mturk api to 2017–01–17 via a move to boto3. No psiturk version prior to 2.3.0 will work.