Skip to content

Commit

Permalink
Merge branch 'release/1.4.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
philipbelesky committed Jul 26, 2017
2 parents 8f504e0 + 724f72b commit 100e4cd
Show file tree
Hide file tree
Showing 208 changed files with 31,397 additions and 8,995 deletions.
2 changes: 1 addition & 1 deletion .codeclimate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ engines:
radon:
enabled: true
exclude_paths:
- "tabbycat/draw/generator.py"
- "tabbycat/draw/generator/*.py"
- "tabbycat/adjallocation/munkres.py"
ratings:
paths:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ tabbycat/static/fonts/

# Dependencies
node_modules
package-lock.json

# Data to ignore
data/*
Expand Down
19 changes: 18 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,28 @@ python:
- "3.6"
addons:
postgresql: "9.6"
# chrome: stable # Re-enable for functional tests
services:
- postgresql
install:
- pip install -r requirements_common.txt
- pip install codeclimate-test-reporter
- npm install
script:
- flake8 .
- cd tabbycat && coverage run manage.py test -v 2
- cd tabbycat && coverage run manage.py test -v 2 --exclude-tag=functional
# The below is used to enable selenium testing as per:
# https://docs.travis-ci.com/user/gui-and-headless-browsers/
# Currently it runs and loads the view; but doesn't seem to resolve the asserts
# Either the Chrome instance isn't running; or the static files aren't serving
# To rule out the former maybe disable tabbycat.standings.tests.test_ui.CoreStandingsTests
# And just let it test the login page (that should work without staticfiles)
# before_install:
# # Run google chrome in headless mode
# - google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
# before_script:
# # GUI for real browsers.
# - export DISPLAY=:99.0
# - sh -e /etc/init.d/xvfb start
# - sleep 3 # give xvfb some time to start
# - dj collectstatic
19 changes: 17 additions & 2 deletions AUTHORS.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,25 @@
=======
==========================
Authors & Acknowledgements
==========================

Authors
=======
-------

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

- Philip Belesky (`pb-e-mail <http://www.google.com/recaptcha/mailhide/d?k=01aItEbHtwnn1PzIPGGM9W8A==&c=XWljk2iGokfhziV2Rt4OiKA5uab1vCrnxwXcPUsWgnM=>`_)
- 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
------------

- 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.
27 changes: 18 additions & 9 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,23 @@ Change Log
1.4.0 (Havana Brown)
--------------------

- Developed the adjudicator allocation, venue allocation, and matchups editing pages
- Bumped to Vue 2.0 and refactored the code so that each page better shares methods for displaying the draw, showing additional information, and dragging/dropping
- When dragging/dropping the changed elements now 'lock' in place and indicate that their saving is in-progress
- Added conflicts and recent histories to the top slideover of teams/adjudicators
- Adding 'ranking' toggles to visibily highlight adjudicator strengths and more easily identify unbalanced panels
- Overhauled the adjudicator allocation, venue allocation, and matchups editing pages, including:
- Upgraded to Vue 2.0 and refactored the code so that each page better shares methods for displaying the draw, showing additional information, and dragging/dropping
- When dragging/dropping, the changed elements now 'lock' in place to indicate that their saving is in-progress
- Added conflicts and recent histories to the slideovers shown for teams/adjudicators
- Added 'ranking' toggles to visibly highlight adjudicator strengths and more easily identify unbalanced panels
- Each interface's table is now sortable by a debate's importance, bracket, liveness, etc.
- Added a new "Tournament Logistics" guide to the documentation that outlines some general best practices for tabbing tournaments. Thanks to Viran Weerasekera, Valerie Tierney, Molly Dale, Madeline Schultz, and Vail Bromberger for contributing to this document
- Add (basic) support for the Canadian Parliamentary format by allowing for consensus ballots and providing a preset. However note that only some of the common draw rules are supported (check our documentation for more information)
- Added an ESL/EFL tab release option and status field
- Added a chi-squared test to measure motion balance in the motion standings/balance. Thanks to Viran Weerasekera for contributing this
- The Auto Allocate function for adjudicators will now also allocate trainees to solo-chaired debates
- Added a 'Tab Release' preset for easily releasing all standings/results pages after a tournament is finished
- Fixed issue where toggling iron speeches on and off wouldn't hide/unset the relevant checkboxes
- Added 'Average Speaks by Round' to the standings overview page
- Fixed issue where the Auto Allocator was forming panels of incorrect strengths in debates identified as less important
- Fixed issue where toggling iron-person speeches on and off wouldn't hide/unset the relevant checkboxes
- Fixed issue where VenueCategories could not be edited if they did not have Venues set
- Various other small fixes and improvements

1.3.1
-----
Expand All @@ -29,12 +38,12 @@ Change Log
- Reworked venue constraints and venue display options by streamlining "venue groups" and "venue constraint categories" into a single "venue category" type, with options for how they are used and displayed
- Relocated the Random (now renamed 'Private') URL pages to the Setup section and added pages for printing/emailing out the ballot submission URLs
- Reworked the simple data importer (formerly the visual importer) to improve its robustness
- Improved guards against having no current round set, and added a new page for manually overriding the current round (under Configuration).
- Improved guards against having no current round set, and added a new page for manually overriding the current round (under Configuration)
- Added a preference for controlling whether assistant users have access to pages that can reveal draw or motions information ahead of their public release
- Added the ability to limit tab releases to a given number of ranks (*i.e.* only show the top 10 speakers)
- Added the ability to redact individual person's identifying details from speaker tabs
- Added the ability for user passwords to be easily reset
- Added a minimal set of default feedback questions to newly created Tournaments.
- Added a minimal set of default feedback questions to newly created Tournaments
- When a tournament's current round is set, redirect to a page where it can be set, rather than crashing
- A number of other minor bug fixes and enhancements

Expand Down Expand Up @@ -107,7 +116,7 @@ Change Log
*Release date: 25 November 2016*

- Redesigned the footer area to better describe Tabbycat and to promote donations and related projects
- Slight tweaks to the site homepage and main menus to better accomodate the login/log out links
- Slight tweaks to the site homepage and main menus to better accommodate the login/log out links
- A few minor bug fixes and improvements to error reporting


Expand Down
37 changes: 30 additions & 7 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,14 @@
Contributing
============

Contributions are welcome, and are greatly appreciated! Every little bit helps, and credit will be given. Feel free to `join our Facebook group <https://www.facebook.com/groups/tabbycat.debate/>`_ if you have any questions about how to get started.
Contributions are welcome, and are greatly appreciated! Every little bit helps, and credit will be given. While at its core Tabbycat is a software project, you do not need to know how to code or use Git in order to help. We welcome feedback and ideas based on your tabbing experience and appreciate suggestions or proposals for how to improve the wording, translation, and design of our interface and documentation.

Feel free to `join our Facebook group <https://www.facebook.com/groups/tabbycat.debate/>`_ if you have any questions about how to get started.

Feedback and ideas
==================

These can be added as issues in the `GitHub repository <https://github.com/czlee/tabbycat/issues>`_; posts in our `Facebook group <https://www.facebook.com/groups/tabbycat.debate/>`_; or as an :ref:`email to the developers <authors>`.

Bug reports
===========
Expand All @@ -13,12 +20,15 @@ Please report bugs by opening a new issue in our `GitHub repository <https://git
- Any details about your tournament and setup that might be helpful in troubleshooting
- Detailed steps for how to reproduce the bug

Getting started
===============
Getting started with development
================================

- To easily test your changes to Tabbycat you probably want a working :ref:`local install <install-local>` (without using Docker)
- Generally we prefer that features and bug fixes are submitted as pull requests on their own branch (as described in the `git-flow workflow <http://danielkummer.github.io/git-flow-cheatsheet/>`_). Submitting against `develop` (but not `master`) is fine for small fixes and changes.
- We use Django's testing tools — it would be great if new features came with unit tests

- A number of our tests use `Selenium <http://selenium-python.readthedocs.io>`_ and `ChromeDriver <https://sites.google.com/a/chromium.org/chromedriver/>`_ to simulate in-browser functionality. They will fail if you do not have the Chrome browser installed.

- By default the development server's build process will broadcast livereload events; installing one of their `browser plugins <http://livereload.com/extensions/>`_ can make testing front-end changes easier.

Style guide
Expand All @@ -28,18 +38,18 @@ For python code, we use `flake8 <http://flake8.readthedocs.io>`_ to check for a

$ flake8 .

For stylesheets, we use `stylelint <https://stylelint.io>`_ to enforce the `AirBnB styleguide <https://github.com/airbnb/css>`_. The relevant code can be checked by using::
For stylesheets, we use `stylelint <https://stylelint.io>`_ to enforce the `AirBnB CSS styleguide <https://github.com/airbnb/css>`_. The relevant code can be checked by using::

$ npm run stylelint

For javascript, we use `eslint <http://eslint.org/>` to enforce the `AirBnB styleguide <https://github.com/airbnb/javascript>`_. The relevant code can be checked by using::
For javascript, we use `eslint <http://eslint.org/>`_ to enforce the `AirBnB javascript styleguide <https://github.com/airbnb/javascript>`_. The relevant code can be checked by using::

$ npm run eslint

Versioning convention
=====================

Our convention is to increment the minor version whenever we add new functionality, and to increment the major version whenever
Our convention is to increment the minor version whenever we add new functionality, and to increment the major version whenever:

- the database can't be migrated forwards using ``python manage.py migrate --no-input``, or
- there is a major change to how the tournament workflow goes, or
Expand All @@ -49,7 +59,7 @@ Most of the time, we write `data migrations <https://docs.djangoproject.com/en/1

One day, we hope to have a public API in place to facilitate the integration with other debating tournament software, like registration or adjudicator feedback systems. If and when that happens, we'll probably revise this convention to be more in line with `Semantic Versioning <http://semver.org/>`_.

Starting from version 0.7.0, we use code names for versions, being breeds of cats in alphabetical order.
Starting from version 0.7.0, we use cat breeds as the code names for major versions.

Documentation
=============
Expand All @@ -66,6 +76,19 @@ Then start the server::

You should then be able to preview the docs at `127.0.0.1:7999 <http://127.0.0.1:7999>`_.

Project Structure
=================

- ``bin`` contains a number of convenience scripts for starting/stopping Docker, and the webserver/asset pipeline.
- ``data`` contains the sample data sets and fixtures used to setup demo tournaments and in automated tests respectively
- ``docs`` contains our document source files and images (although some are linked from the root directory)
- ``tabbycat`` is the main directory containing the Django project
- ``locale`` contains translation strings for shared templates (others are in respective app directories)
- ``templates`` contains shared html templates, stylesheets, javascript source files, and Vue.js components/mixins.
- ``utils`` contains shared utilities
- All other folders are the Django apps that contain specific views, models, and templates for functions such as ``draw`` generation/display, or recording ``results``. Each has sub-folders for tests and templates.
- In the root directory there are a number of files defining our python and javascript dependencies, core configuration files, and key documents like the ``README``

Release Checklist
=================

Expand Down
12 changes: 10 additions & 2 deletions Gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ var gutil = require('gulp-util'); // Error logging + NoOop
var sass = require('gulp-sass');
var rename = require('gulp-rename');
var concat = require('gulp-concat');
var envify = require('envify');

// Compression
var cleanCSS = require('gulp-clean-css');
Expand All @@ -21,7 +22,7 @@ var streamify = require('gulp-streamify');
// Debug & Config
var livereload = require('gulp-livereload');
var outputDir = 'tabbycat/static/';
var isProduction = (gutil.env.development === true) ? false: true;
var isProduction = (gutil.env.production === true) ? true : false;
if (isProduction === true) {
console.log('GULP: Building for production');
} else if (isProduction === false) {
Expand Down Expand Up @@ -90,7 +91,14 @@ gulp.task("js-browserify", function() {
.transform([babelify, {
presets: ["es2015"],
plugins: ['transform-runtime']
}])
}])
.on('error', gutil.log)
.transform(envify, {
// Read from the gulp --production flag to determine whether Vue
// should be in development mode or not
global: true,
_: 'purge',
})
.on('error', gutil.log)
.bundle().on('error', gutil.log)
.on('error', function() {
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Tabbycat is a draw tabulation system for 3 vs 3 debating tournaments. It was use
- Automated adjudicator allocations based on adjudicator ranking, room importance, and conflicts/clashes
- A drag and drop interface for adjudicator allocation that displays conflicts alongside gender and regional balance
- A fully responsive interface that adapts to suit large screens, laptops, tablets, and phones
- Support for Australs, NZ Easters, Australian Easters, Joynt Scroll, UADC, and WSDC rule sets as well as configurable [draw generation rules](http://tabbycat.readthedocs.io/en/stable/features/draw-generation.html) and [team standings rules](http://tabbycat.readthedocs.io/en/stable/features/team-standings-rules.html)
- Support for Australs, NZ Easters, Australian Easters, Joynt Scroll, UADC, and WSDC rule sets as well as configurable [draw generation rules](http://tabbycat.readthedocs.io/en/stable/features/draw-generation.html) and [team standings rules](http://tabbycat.readthedocs.io/en/stable/features/standings-rules.html)
- Configurable [adjudicator feedback questions](http://tabbycat.readthedocs.io/en/stable/features/adjudicator-feedback.html) with (optional) online submission

## Installation and User Guide
Expand Down
8 changes: 7 additions & 1 deletion bin/rebuild_fixtures.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
#!/usr/bin/env bash

dj flush
dj loaddata ./data/fixtures/completed_demo.json
dj migrate
dj checkpreferences
dj dumpdata --natural-foreign --natural-primary -e options -e sessions -e contenttypes --format=json -o data/fixtures/completed_demo.json
dj dumpdata --natural-foreign --natural-primary \
-e availability \
-e contenttypes -e options -e options -e auth.Permission \
-e admin.logentry -e actionlog.actionlogentry -e sessions \
--indent 4 \
--format=json -o data/fixtures/completed_demo.json
22,683 changes: 22,682 additions & 1 deletion data/fixtures/completed_demo.json

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion docs/about/tournament-history.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
Tournament History
==================

A list of tournaments (that we know of) which have used Tabbycat.
A partial list of tournaments (that we know of) which have used Tabbycat.

2017
----

- `Australian Easters <https://easters2017.herokuapp.com>`_
- `New Zealand Easters <https://nzeasters2017.herokuapp.com>`_
- `UQ Australs <https://australs2017.herokuapp.com> `

2016
----
Expand Down
4 changes: 2 additions & 2 deletions docs/features/adjudicator-feedback.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ You can set the questions that are used on adjudicator feedback forms. The only

Currently, there are two methods of setting questions:

- through the :ref:`edit database area <user-accounts>`. Go to **Setup** >
- Through the :ref:`edit database area <user-accounts>`. Go to **Setup** >
**Edit Database**, then click **Change** next to *Adjudicator feedback
questions*. You can add questions here.
- using the :ref:`importtournament command <importtournament-command>`.
- Using the :ref:`importtournament command <importtournament-command>`.

Most of what you need to know is explained in help text in the edit database area. (Even if you're using ``importtournament``, you might find the field
descriptions in the edit database area helpful.) Some more details are here.
Expand Down
Loading

0 comments on commit 100e4cd

Please sign in to comment.