Giter Site home page Giter Site logo

lichess4545 / heltour Goto Github PK

View Code? Open in Web Editor NEW
44.0 44.0 37.0 8.11 MB

Chess tournament management software for the Lichess4545 league

Home Page: https://www.lichess4545.com/

License: MIT License

Python 69.65% Shell 0.33% HTML 24.29% CSS 1.06% JavaScript 2.11% SCSS 2.57%

heltour's People

Contributors

alt-grr avatar christianpohlmann avatar colwem avatar cyanfish avatar dependabot[bot] avatar freefal avatar glbert-does avatar hopffgam avatar kraaft avatar kvackkvackanka avatar lakinwecker avatar lenguyenthanh avatar lukhas avatar mathgeek avatar mattmaginniss avatar michael1241 avatar mirkojotic avatar nathanj avatar niklasf avatar pom-pom avatar sebastien32 avatar timothyha avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

heltour's Issues

API: Assign alternates

Make an API method for assigning a player to a team/board and a round. This should only work if the player is designated as an alternate for that board and is not already assigned for that round. Other cases can be handled manually by mods (?).

The API will be used (via Chesster) by captains to allow basic alternate management without mod intervention.

Lonewolf view: Pairings

For non-team seasons, the pairing page should be replaced with a modified version that displays pairings based on the LonePlayerPairing model.

Highlight scheduled alternates

Alternates that have been scheduled for the current round (or once complete, the upcoming round) should be highlighted. If captains/mods want to check future availability they can go to the player's profile page instead.

API: Find / Update Pairing

Make an API method for searching for a pairing based on one or two player names, with an optional league/season filter. It should return the complete set of information for each pairing.

Make an API method for updating the gamelink, or result of a pairing.

Currently chesster does the "Is moderator or is a member of the pairing" check so we could effectively allow this to work for any authenticated user.

API: Set unavailability

Make an API method for setting a player as unavailable for a given round. The API will be used (via Chesster) by players and captains. Players set as unavailable will be highlighted in the round's pairings.

TV Page

Make a TV page that shows all active games with game links. For now it can link to each game, but once lichess-org/lila#2096 is done, it can embed them with an iframe.

It should use a websocket or polling request to remove games after they are done (say 5 minutes after wards) and add new games as soon as they start.

The ordering should probably be by time started, so that new games are always added to the end of it, rather in the middle, but perhaps there are other ways of figuring this out.

Define what the home page should show

What should the home page show? Probably any active season standings (or links to them), plus a link to any "registration" if any are open, + link to rules / info about the league.

Interview lonewolf and 45+45 mods

We should go through the weekly activities that these mods do, and make a list of "use cases" that we need to support for them and ensure the django admin supports them.

Create an Edit Rosters page

Mods should be able to use this page to build teams at the start of the season, as well as manage teams during a season.

It should allow players to be moved between teams/alternates, captains to be assigned and teams to be renamed. If the season hasn't started it should also allow teams to be created and deleted. Relevant information should be displayed about each player in a popover.

Create a round transition workflow

This will group common tasks for starting a new round.

  • Setting the old round as completed and calculating scores
  • Updating player ratings from the Lichess API
  • Updating board order based on rating
  • Creating and publishing pairings for the new round

Define and implement seed order

At the start of a season, teams should be seeded in a particular order (e.g. by average rating). This will be used for pairings and should not change for the duration of the season.

Make a registration page

Find the old registration form for season 4, and make a form that duplicates that information for a given league and make a version of this that works.

Lonewolf view: Standings

For non-team seasons, the standings page should be replaced with a modified version that displays standings based on individual scores.

Prereq: #42

Implement alternate management

  • Players need a way to be assigned as alternates (see #21).
  • Alternates need to be automatically sorted into buckets for different boards (see #25), and ordered based on their registration/last round played dates.
  • Captains/mods need a way to see what alternates are available (see #12, #17, #33).
  • Players/alternates need a way to be flagged as unresponsive (see #30).
  • Alternates need a way to be assigned to a team/board/round (see #23).
  • Pairings need to automatically update based on assigned alternates.

Lonewolf: Registration

The registration form should be modified for non-team seasons. Probably the easiest way to do this would be to separate the Registration model into team/lone versions.

API: Get roster for a league

There should be an API method to allow chesster to refresh the current roster for a given league.

This should include information about all players that are registered all teams that are formed and their members/captains.

It should also include information about alternates.

Lonewolf view: Season landing

For non-team leagues, the season landing page (for both in progress and completed seasons) should be replaced with a modified version that displays standings and results in a way appropriate for lonewolf.

Prereq: #42

Lonewolf view: Dashboard

For non-team leagues, the admin dashboard should be replaced with a modified version with functionality appropriate for lonewolf seasons.

Make a season landing page

There should be a landing page for each season in the league. The season page should show or link to the standings, the results and the current pairings (if they exist).

We can probably design it after the lichess tournament pages in that after a season is done, first second and third place get a "trophy" at the top.

Implement the Stats page

There's a lot we can do with stats, but for now we should just duplicate the stats in the spreadsheet.

Make results pages

There should be a series (or maybe just a single?) of pages that show previous results for a given season.

API for welcome message

Chesster currently sends a welcome message to everyone that joins slack. Right now we have to redeploy chesster each time we want to change that message.

I am thinking that the current seasons can have a "Welcome" message on them, and chesster can ask the API for the current "welcome messages" and pass that along to the new signups. this way the mods can control that message from the heltour admin. Thoughts?

Create a background task to batch update ratings

Updating a large number of player ratings may take some time due to the lichess API limits. Therefore it should be performed as a background task with some mechanism (websockets?) to show progress.

Lonewolf: Scoring

A PlayerScore model should be added (similar to TeamScore) that's updated based on LonePlayerPairings. The Season.calculate_scores method should be split based on the type of league.

Lonewolf view: League landing

For non-team leagues, the league landing page should be replaced with a modified version that displays the standings properly.

Prereq: #42

Add Notes fields to more models

Mods should be able to leave unstructured comments for future reference. On anything that makes sense - players, teams, pairings, etc.

Design / look of the site

I don't know if we have any designers amongst our midst. I should not be let anywhere near design, but we should come up with basic look and feel for the site.

I am leaning towards making it mobile optimized first with the full desktop view coming second. With that in mind, unless someone is willing to take on the job of doing all of the design, we should probably use something pre-built.

If it was up to me, I would pick some colours from Adobe Kuler, jam them into a custom Foundation CSS build and then build the site on the foundation grid with an eye towards making it super mobile friendly first. Using foundation means using jquery to get access to their plugins, but I'm fine with that.

Make a player-profile page

We can link to it wherever we show a username. Then we can have a link to create a new message in slack or on lichess and also have info about their participation, like years participated, etc.

Invalid HTTP_HOST header error on production

Full error message:
Invalid HTTP_HOST header: '173.230.151.075'. You may need to add u'173.230.151.075' to ALLOWED_HOSTS.

Seems to occur a few times a day for no particular reason.

Lonewolf: Round changes

An interface should be provided to allow mods to indicate when players register, withdraw, or have a bye.

Lonewolf view: Wallchart

For non-team seasons, instead of a crosstable view, a wallchart view should be added.

Also consider renaming the Crosstable page to "Results" and using the same endpoint for both views.

Prereq: #42

Create a league dashboard for admins

This should contextually show links to relevant actions so that mods don't have to manually dig into the Django admin interface to get common tasks done. In the future this can be expanded to show status indicators and other information.

Allow standings to be recalculated

Old results can be invalidated or modified in case of errors, cheaters, etc. The team scores will need to be recalculated in this case.

This could be a manually triggered task or automatic as the model detects and propagates changes.

Make a python script to populate our db from the current spreadsheet

It would be super beneficial for testing to have a script we can run on that populates the database from the current spreadsheet.

Also, unless we manage to time this perfectly, it's likely we'll launch in the middle of a season and will have to do this migration anyways.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.