Skip to content

Commit

Permalink
Merge branch 'release/2.3.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
philipbelesky committed Sep 27, 2019
2 parents 7550515 + b89aa45 commit f5d1dbe
Show file tree
Hide file tree
Showing 691 changed files with 70,614 additions and 36,927 deletions.
11 changes: 10 additions & 1 deletion .codeclimate.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
---
checks:
file-lines:
config:
threshold: 600
method-complexity:
config:
threshold: 8
engines:
csslint:
enabled: true
Expand All @@ -15,7 +22,7 @@ engines:
- "tabbycat/*/migrations/*.py"
- "tabbycat/*/tests/*.py"
- "tabbycat/*/urls*.py"
- "tabbycat/options/dynamic_preferences_registry.py"
- "tabbycat/options/preferences.py"
exclude_fingerprints:
- 5eb53f480bfbacf8ed37c29d64a9555e
eslint:
Expand All @@ -27,6 +34,8 @@ engines:
exclude_paths:
- "tabbycat/draw/generator/*.py"
- "tabbycat/adjallocation/munkres.py"
config:
threshold: "C"
ratings:
paths:
- "**.css"
Expand Down
2 changes: 1 addition & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Copying this over will mess up database settings
*/*/local_settings.py
*/*/settings_local.py

# Dependencies
node_modules/
Expand Down
6 changes: 4 additions & 2 deletions .flake8
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,17 @@
# E231 = missing whitespace after ','
# E261 = at least two spaces before inline comment
# E305 = expected 2 blank lines after class or function definition
# W504 = line break after binary operator
# W605 = invalid escape sequence

# I100 = Imported names are in the wrong order.

# Q000 = double quotes

ignore = E126,E127,E128,E221,E226,E261,E203,E231,E241,E305,E722,Q000,I100,I202
ignore = E126,E127,E128,E221,E226,E261,E203,E231,E241,E305,E722,Q000,I100,I202,W504,W605

max-line-length = 200

exclude = docs, data, migrations, node_modules, venv, */__init__.py, local_settings.py, emoji.py
exclude = docs, data, migrations, node_modules, venv, */__init__.py, tabbycat/settings/*.py, emoji.py

import-order-style = google
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Django Related
tabbycat/local_settings.py
tabbycat/local_settings.py # Legacy location
tabbycat/settings/local.py
tabbycat/settings/development.py
.gitmodules/
__pycache__/

Expand All @@ -22,6 +24,7 @@ dbdata

# Docs
docs/site/
docs/.doctrees/
issues-*.html

# Tags
Expand Down
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.6.6
3.6.8
94 changes: 53 additions & 41 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,76 +1,88 @@
# Globals
language: python
dist: trusty
dist: xenial
sudo: required
group: edge
env:
global:
- CC_TEST_REPORTER_ID=c18003eb2d4d191e9ebd68d9c3cf8082ba690eccac12df6660a098a78fc8713b
addons:
postgresql: "9.6"
postgresql: "10"
# chrome: stable # Re-enable for functional tests if/when they work on Travis
services:
- postgresql
# Build Specific

branches:
except:
- l10n_develop

matrix:
include:
# - os: osx
# osx_image: xcode9.1 # macOS 10.12
# language: generic # Override global
# before_install: # Need to bootstrap dependencies on macOS
# - brew update # Need to update first
# - brew upgrade python # Install latest Python3
# - export PATH="/usr/local/opt/python/libexec/bin:$PATH" # Alias 'python' to latest Python3
# - virtualenv env -p python
# - source env/bin/activate
# - python --version
# before_script:
# - brew services start postgresql
# # We are testing, in effect, the local install so use local settings:
# - cp tabbycat/local_settings.example tabbycat/local_settings.py
# script:
# - npm run build
# - python tabbycat/manage.py collectstatic
# # TODO: get working later; currently lacks a database connection
# #- python tabbycat/manage.py test -v 2 --exclude-tag=selenium

# Python 3.7
# This job also runs style guide checkers (flake8 and lint).
- os: linux
python: 3.5
python: 3.7
before_install:
- node --version
- npm --version
install:
- pip install -r ./config/requirements_development.txt
- npm install
script:
- flake8 tabbycat
- npm run lint
- python tabbycat/manage.py test -v 2 --exclude-tag=selenium

# Python 3.6
# This job also runs the code coverage tool.
- os: linux
python: 3.6
# Setup/run/report code coverage tool (Only one build needs to do so)
before_install:
- node --version
- npm --version
install:
- pip install -r ./config/requirements_development.txt
- pip install coverage
- npm install
before_script:
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
- chmod +x ./cc-test-reporter
- ./cc-test-reporter before-build
script:
- pip install coverage
- coverage run tabbycat/manage.py test -v 2 --exclude-tag=selenium
after_script:
- coverage xml
- if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT; fi
- os: linux # Test docker seperately (currently isn't supported on macOS)

# Docker
- os: linux
language: generic
install:
- echo "Testing Docker" # Override default install steps
services:
- docker
script:
- docker-compose build
# TODO: get working later; currently lacks a database connection
# - docker-compose run web python tabbycat/manage.py test -v 2 --exclude-tag=selenium

install:
- python --version
- pip --version
- pip install --upgrade pip
- pip install -r ./config/requirements_development.txt # Needed for flake8
- node --version
- npm --version
- npm install
script:
- python tabbycat/manage.py test -v 2 --exclude-tag=selenium
- flake8 .
- npm run lint
# - os: osx
# osx_image: xcode9.1 # macOS 10.12
# language: generic # Override global
# before_install: # Need to bootstrap dependencies on macOS
# - brew update # Need to update first
# - brew upgrade python # Install latest Python3
# - export PATH="/usr/local/opt/python/libexec/bin:$PATH" # Alias 'python' to latest Python3
# - virtualenv env -p python
# - source env/bin/activate
# - python --version
# before_script:
# - brew services start postgresql
# # We are testing, in effect, the local install so use local settings:
# - cp settings/local.example settings/local.py
# script:
# - npm run build
# - python tabbycat/manage.py collectstatic
# # TODO: get working later; currently lacks a database connection
# #- python tabbycat/manage.py test -v 2 --exclude-tag=selenium

# The below is used to enable selenium testing as per:
# https://docs.travis-ci.com/user/gui-and-headless-browsers/
Expand Down
7 changes: 4 additions & 3 deletions AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,22 @@ Authors & Acknowledgements
Authors
-------

Tabbycat was authored by Qi-Shan Lim for Auckland Australs 2010. The current active developers are:
Tabbycat was authored by Qi-Shan Lim for Auckland Australs 2010. The current active maintainers are:

- Philip Belesky (`pb-e-mail <http://www.google.com/recaptcha/mailhide/d?k=01aItEbHtwnn1PzIPGGM9W8A==&c=XWljk2iGokfhziV2Rt4OiKA5uab1vCrnxwXcPUsWgnM=>`_)
- Philip Belesky (`pb-e-mail <mailto:contact@philipbelesky.com>`_)
- Chuan-Zheng Lee (`cz-e-mail <mailto:[email protected]>`_)

Please don't hesitate to contact us with any suggestions, expressions of interest or generally anything relating to Tabbycat.

Contributors
------------

- Étienne Beaulé has contributed many features, fixes, and suggestions across many aspects of Tabbycat.
- Thevesh Theva contributed the algorithm for calculating the liveness of teams within a particular break category.
- Viran Weerasekera contributed the statistical tests used to estimate the degree to which a motion's results and vetoes are balanced.
- Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger contributed to the "Tournament Logistics" section of our documentation.

Sponsors
--------

- Thanks to the Western Australian Debating League for sponsoring various features related to organising division-based tournaments and round-robin based draw methods.
- Thanks to the Western Australian Debating League for sponsoring various features related to organising division-based tournaments and round-robin based draw methods.
52 changes: 48 additions & 4 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,52 @@
Change Log
==========

2.3.0 (LaPerm)
--------------
*Release date: ?*

- Added a preformed panel system which provides a powerful take on a 'shadow draw' workflow
- Shadow draw systems allow an adjudication core to form panels prior to a round being drawn. For example, the panels for Round 4 could be formed while Round 3 is taking place. Most implementations do so by having the tab system create a copy of the Round 3 draw, form new panels on top of it, and then transpose these panels onto Round 4. In large tournaments this workflow allows an adjudication core much more time to consider panel formation
- Tabbycat's preformed panels are formed per-round under a section available under the Setup menu. This interface looks like the standard Edit Adjudicators interface, but the 'debates' shown are based on a simulation of that round's results. These fake debates can then be prioritised
- Adjudicators can then be allocated to those fake debates in order to create a pre-formed panel. When the real draw is ready to be created, the priority of each preformed panel will be matched to the priority of the real debates
- By using the existing per-debate priority system, and by giving pre-formed panels their own priority, this workflow allows for very fine amounts of control over exactly how preformed panels are allocated as compared to a more simple top-down transposition of panels. Adjudication cores can easily target general areas of the draw (e.g. break-threshold brackets); control adjudicator strength within and across panels; and still account for special cases where a debate requires a particularly strong panel. At the same time, our existing options for automatic prioritisation and automatic allocation apply to all steps of this process so that preformed panels can be created and deployed rapidly
- Rewrote the Edit Adjudication, Venues, and Teams pages to enable a number of enhancements
- These pages now live-update changes that were made on other instances of that page. As a result, users on different computers can each open the Edit Adjudicators page and see the changes made by the other users. This feature, along with sharding, should make it easier than ever to distribute the task of adjudicator allocation across an entire adjudication core
- A new interface layout should better maximise space, particularly in BP settings, while also increasing the font size of key information
- The unused panel is now able to sort adjudicators by name, score, or drag order
- Average scores for all adjudicators, and a voting majority, are now shown next to the panel
- Various allocation-relevant settings, such as the minimum feedback score needed for a voting position, are now available inline on the allocation page itself. This should enable much faster tweaks/iterations of these values
- The ballot entry page will now indicate which teams have currently or recently given 'iron person' speeches so that these can be easily tracked, audited, and confirmed. It does show by showing both a text-highlight/icon in the table and in a dedicated modal window. Thanks to Étienne Beaulé for contributing this feature!
- Split up the Django settings files. Note that this means if you are upgrading a local install of Tabbycat to this version you will need to:
- Copy ``tabbycat/settings/local.example`` to become ``local.py`` (and fill in your original database details)
- Optional: repeat the same copying procedure for ``development.example`` and set the ``LOCAL_DEVELOPMENT`` environmental variable to ``True`` if you would like to use the settings designed to aid local development
- A range of improvements to the email notifications contributed by Étienne Beaulé:
- Ballot receipt emails now provide more information about team scores/points
- Emails are now in a rich-text format
- Custom emails may be sent out to select participants through the web-interface
- Participants can be specifically included or excluded from receiving a notification before sending with checks for duplicate messages
- Teams can be sent emails with their draw details
- Emails can be tracked to determine if sent or read (SendGrid-specific)
- Expanded the use of private URLs (Encore Étienne Beaulé):
- QR codes are now included in addition to the URL when printing private URLs
- Private landing pages will now display check-in status (if check-ins are used) along with further details regarding break categories, regions, etc.
- Current and former draw assignments will display along with submitted ballots (for adjudicators) on landing pages
- Reworked how conflicts are determined to support double-past institutional conflicts:
- Added a "team-institution conflict" model
- Like adjudicator-institution conflicts, team-institution conflicts are automatically created if you use the simple importer or the command-line importer; but if you edit the database, it's your responsibility to add/edit them
- Institutional affiliations no longer matter for determining conflicts for either teams or adjudicators; only institutions listed in the team's or adjudicator's conflicts matter
- An adjudicator/team now conflicts with an adjudicator if *any* institution appears as an institutional conflict for both parties
- When printing scoresheets you can now edit the motions display just on that printing page. This allows you to use placeholder motions in Tabbycat (in order to prevent leaks) while still producing ballots with the correct motions
- Tabbycat no longer tracks which round is the 'current' round and instead tracks the completion of individual rounds. This change does not alter any existing workflows, but makes it easier to run simultaneous draws in out-rounds
- Info-slides can now be split into paragraphs
- Check-in pages now differentiate between teams with 1 and 2 checked-in people in two-team formats
- Institutional caps in breaks can be based on the number of teams in the break. Thanks to Viran Weerasekera for this feature!
- Several Tabbycat functions, adjudicator/venue allocation and email notifications, have been shifted to worker processes to help make them more reliable. If you are upgrading a Tabbycat instance that you will continue to use for new tournaments you will need to install the Heroku toolbelt and run ``heroku ps:scale worker=1``
- Upgraded to Python 3.6, dropped support for Python 3.5 and below. Note that this will require you to upgrade your python versions if running locally.


2.2.10
-----
------
*Release date: 10 February 2019*

- Fixed the display of feedback quantities on the Feedback Overview Page
Expand Down Expand Up @@ -55,7 +99,7 @@ Change Log

2.2.4
-----
*Release date: 09 October 2018*
*Release date: 9 October 2018*

- Small fixes for functions related to email sending, conflict highlighting, and certain configurations of standings metrics

Expand All @@ -66,7 +110,7 @@ Change Log

- *Literally* fix the issue causing public views of released scoresheets to throw errors (thanks for the pull request Étienne)
- Fix minor spacing issues in printed ballots (thanks for the pull request Étienne)
- Fix issue where institution-less adjudicators would cause some draw views to crash
- Fix issue where institution-less adjudicators would cause some draw views to crash (thanks for the pull request Étienne)


2.2.2
Expand Down Expand Up @@ -287,7 +331,7 @@ Change Log
- Sidebar menu items now display all sub-items within a section, such as for Feedback, Standings, and Breaks
- Better tablet and mobile interfaces; including a fully responsive sidebar for the admin area that maximises the content area
- More explicit and obvious calls-to-action for the key tasks necessary to running a round, with better interface alerts and text to help users understand when and why to perform crucial actions
- Redesigned motions tab page that gives a better idea of the sample size and distribution of results in both two- and three- team formats
- Redesigned motions tab page that gives a better idea of the sample size and distribution of results in both two- and four- team formats
- Improved handling of Break Rounds ballots and sides allocation
- The positions of teams within a break round are now created by the initial draw generation in an 'unset' state in recognition that most tournaments assign these manually (through say a coin toss). This should help clarify when showing break rounds draws when sides are or are not finalised
- Break rounds ballots for formats where scores are not typically entered (i.e. BP) will only specify that you nominate the teams advancing rather than enter in all of the speakers' scores
Expand Down
Loading

0 comments on commit f5d1dbe

Please sign in to comment.