Git Product home page Git Product logo

ipt_connect's People

Contributors

cptorange16 avatar gujlgamesh avatar ijustbsd avatar m1r7 avatar mhrz avatar mortalhamster avatar nickkolok avatar rodion-gudz avatar vbonvin avatar xuod avatar zudik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ipt_connect's Issues

Special tool to list tasks which are available for challenge

For building challenge tactics, it would be extremely useful to have a special page where one can select two teams (opponent and reporter) and see, what tasks are available for the challenge, and what tasks have been already reported/opposed/reviewed by each of the two teams before.

Firstly, it would be useful for the fight chairmen; moreover, some teams are "building the tactics" before every fight. It means, that the team calculates, which problems can it challenge each of its adversaries to. Now his part of tactics is usually calculated by hand, i.e. by looking through all pages for all fights, but... our tournament is about Physics, not about carefully striking off the numbers on a sheet of paper?

Semifinals for IPT2018

As voted by the IOC at the beginning of the tournament:

"The first team of the ranking goes to the FInal
The 2th-7th team enter 1 semi-final. : 2, 5, 6 and 3, 4, 7.
The 2 teams that has the most points goe to the final."

@vbonvin do you think you could implement it before tomorrow? :s

Define global parameters

The code now handles a given number of Round per PF, and a number of PF per tournament, with grades going from 0 to 10 etc...

It would be good to define a parameter files with all these numerical values, so that anyone can change them without tweaking the code.

It's not an urgent issue - can be done after the FPT2017

pop bug

bug

rect3026

Bug when adding a new round without grade (to check for available problems)

Create a database save function

Actual saves of the database are currently done manually. We need a function that automatically save it every once in a while

Implement semi-finals

Add the option to switch on/off semi finals. See IPT2018 add for a starting point

Points/average grade

Je pense qu'il faudrait qu'on se mette d'accord une bonne fois pour toutes sur la différence entre les points d'un participant et sa moyenne.

Pour moi, le plus logique c'est :

-un participant a une moyenne qui correspond a la note moyenne de toutes ses prestations, sans jamais prendre en compte de coefficients. Ça donne donc un nombre entre 0 et 10.

-un participant a un certain nombre de points, qui correspond à la somme de toutes ses notes pondérées par les coeff correspondants aux rôles qu'il a eu. De cette façon, le nombre de points d'une équipe est simplement la somme du nombre de points de chacun des membres de l'équipe.

Donc je pense qu'il y a actuellement un problème de nom pour la classe Participant.points (qui ne prend pas en compte les coeffs).

Les deux infos sont intéressantes et devraient être affichées sur les pages des équipes et des participants.

Peut-on envisager de modifier sans tout casser ? :s

Empty database

Hi. I'm trying to run your program, but it works with IPT2018 only. When i open IPT2017 or IPT2016 i get error: no such table: IPT201x_team. Could you give me any database for testing or past years databases? I'll try to fix some issues and PR it.

Limit the permissions of a chairman

There should be at least 2 types of accounts which can edit the marks:

  1. A chairman can edit only the marks in fights (rounds) which he has lead.
  2. An admin can edit all the marks.

Is that so now? If no, the separation should be implemented. If ipt-coonect will be used in other tournaments, then it's important to protect the data from occasional edits.

Private mode

Some national selections would like to keep their results private (especially the tactical rejections ;-) ).
So, we need a private mode when only authorized users can view fight details. I think that showing only the total ranking and fight summaries (#58) for anonymous users will be OK.

Problem sorting issue

At page http://connect.iptnet.info/IPT2017/problems the problems are sorted by name, not by number, so the order is:

1. Handy glider
10. Light-driven vehicle
...
17. Magnetic fissioning of droplets
2. Too many magnets

And it probably should be different :)

As there will be license and documentation, I could try to fix it (it's just a Javascript issue), but I need guidelines on how to build the application and launch it.

Adding "securities" in order to avoid errors due to unfilled fields

For example: it shouldn't be possible to add grades without a problem presented.

A way to do this would be to have a two step process to add rounds, with two different pages. The first page would be to save the round parameters (number, room, teams), and the second page would be used to enter the problem presented, vetos, grades.

Add "Fork me on GitHub" ribbon or other link to source

After resolving #39, it would be very useful to add a "Fork me on GitHub" ribbon like this or this or other link to sources (i.e. small-font note in the very bottom) to let others know that the site is open source. To be honest, I knew it out by just googling "iptnet github", but the reasons for adding the note are the same as for #39.

Create rounds 2, 3, (4) automatically after creating the first round.

(splitting #32)
When the first round of any fight is created and the roles in the first round are determined, then the roles of the teams in the rest rounds are also determined. The only problem is that it is not specified in the round interface, is the fight 3-team or 4-team, so manual creation of first round and automated creation of the rest doesn't seem to be a good solution. I suggest making a Fight Creation Wizard instead: an interface where the number of teams can be selected and then table is filled manually, and all the rounds are created automatically. The role matrix is:

for 3-team fight:

              | Round 1 | Round 2 | Round 3 |
--------------|---------|---------|---------|
select team 1 | Rep.    | Rev.    | Opp.    |
--------------|---------|---------|---------|
select team 2 | Opp.    | Rep.    | Rev.    |
--------------|---------|---------|---------|
select team 3 | Rev.    | Opp.    | Rep.    |
--------------|---------|---------|---------|

for 4-team fight:

              | Round 1 | Round 2 | Round 3 | Round 4 |
-------------------------------------------------------
select team 1 | Rep.    | Obs.    | Rev.    | Opp.    |
-------------------------------------------------------
select team 2 | Opp.    | Rep.    | Obs.    | Rev.    |
-------------------------------------------------------
select team 3 | Rev.    | Opp.    | Rep.    | Obs.    |
-------------------------------------------------------

(please correct me if I am wrong)

Moreover, the list of jurys should be copied from first round to all the rest rounds. Speaking more precisely, jury list should be the same for all the rounds inside one fight.

Add a license

Greetings from Russia!

Great respect for opening the source code! You've done certainly a brilliant work.

But to be fully able to use your system's forks to organize local tournaments and other tournaments, such as YIPT (city stages of which I helped to organise many times), we need a license provided by you.

I highly encourage you to use GNU GPLv3 in order to allow everyone to use your source code and in order to forbid anyone to build close-sourced systems basing on your code.

Stating the license will help to organise any kinds of tournaments worldwide and make the tournament movement more popular.

Automated testing system

ipt_connect provides a very important service for international events. So, it would be great to have an automated testing system (something like jasmine or QUnit) to make sure that all the point and grade are calculated properly (basing on the tournaments that have already finished).

Or, if such a system already exists, it would be useful to have guidelines on running it :)

Generate diplomas automatically

It would be extremely useful to generate diplomas automatically with given template. Now organising commitees of some tournaments are already doing this by programs, but that programs are self-written and inconsitent.

For example, while organizing Voroneh Local IYPT, we made a *.fodt (LibreOffice unpacked XML) template, a plaintext file with participants' data and then filled the tmplate with a self-written program. It seems to be more useful than filling every diploma manually, but less useful than having such a system as a part of ipt_connect. Note that (at least in Russian) there is a slight difference in diplomas given to males and females (in verbs and adjectives).

Moreover, it should be great to create diplomas for best reporter/opponent/reviewer automatically.

If we spend 10 hours now and therefore save 1 hour between the last fight and the closing ceremony, it's worth of the time.

Add forbidden participants (like forbidden problems)

(splitting #32)
Rules state that one participant can not take the floor more than two times during the same fight. In some other tournaments the restriction is stronger. It can be 'once a fight' or even 'not more than three times during all the tournament' (these restrictions are useful in preliminary tournament stages, like Voronezh Christmas Tree Tournament, which are hold more for gathering experience than for challenging; usually there is shorter problem list of 10-12 ones). So, forbidden participants - if there are some - should be listed as well as forbidden problems are listed now. The default restriction is 'not more than twice during a fight'.
And it could be implemented without #53, but in that case implementing #53 will cause changes in code implementing this feature.

A field for the second reporter (coreporter)

(splitting #32)
The rules allow to report a problem using two team members. They are sometimes called both reporters, sometimes a reporter and a coreporter, and sometimes both coreporters. It will be OK if they will be called Reporter 1 and Reporter 2 as well.
The fact that the report is presented by two people does not affect the resulting score. That score is calculated in the same way as for one reporter.

So, in interface like this: http://127.0.0.1:8000/admin/IPTdev/round/83/change/ there should be an optional field Coreporter or Reporter 2 near existing Reporter.
image

There should be no additional score fields for the coreporter.

I'm not sure how should the quantity of points gathered be counted for coreporters (like that: http://127.0.0.1:8000/IPTdev/teams/Croatia/ ) be displayed. There are two possible ways:
a) To divide the gathered point between the coreporters
b) To display full score for every coreporter.

Way (b) is rather convoluting, because then the sum of scores would not be equal to team score.

Improve the ipt-connect interface

From @Vovcick:

Possible improvements:

Add the possibility to have two reporters
To add forbidden participants together with forbidden problems (not possible without 1)
To have created automatically rounds 2,3 (4) after creating the first one.
To improve fight stats in order to simplify control (just to have table of marks for all the rounds in a fight and bonuses together)
France 22.50 13.00 7.75 43.25 +1 44.25
Ukraine 24.00 12.50 8.25 44.75 +2 46.75
Bolivia 18.00 12.00 8.00 38.00 +0 38.00

Checklist before merging #4

About pull request #4

  • Make sure that two databases lives well together
  • put the participants's picture in two separate folder (rooted in the App folder, not outside ?)

Unhardcode the tournament name

The tournament name shouldn't be hardcoded in the templates. It should be separated into a settings file along with the quantities of permanent or tactic rejections etc.

There should not be such lines containing IPT 2018:
https://github.com/vbonvin/ipt_connect/search?q=2018&unscoped_q=2018

Moreover, the full tournament name (if it is used more than once) should be separated too:
https://github.com/vbonvin/ipt_connect/blob/cf176a799c8767eaf8c71a94b1c61977d9424e34/ipt_connect/IPT2018/templates/IPT2018/tournament_overview.html#L13

And finally the "canonical" link to the tournament should be separated to an appropriate setting:
http://2018.iptnet.info is the current value of this.

These changed would help as to adapt ipt-connect for test use in Repnoye Tournament School as well as to reduce the amount of code changes required each year.

Note that it's important to have all these settings in separate file with comments on each setting. There is no need to used trans tag: if one wants the tournament name to be translate, he can use appropriate function directly in the settings file.

Delete temporary files

... like this
I'm not sure ae there other temp files or not, but they should be deleted and further gitignored.

Create a refresh function

Currently, pages refreshes only when someone wants to access them, and after a given minimum amount of time (otherwise the cache version is displayed). It is in practice a good thing, but when too many people try to access a cpu-costly page at the same time, the server receives too much requests and crashes.

We need to change this. We need a refresh function that can be called e.g. through the admin panel by pressing a button, and where every pages refresh. When participants access the web site, they only see the pages that are in the cache.

IPT-connect guidelines and FAQ

As we are planning to use ipt-connect for another tournaments, we need to write guidelines and FAQ. Moreover, writing such texts is important for IPT as @vbonvin , unfortunately, probably will be not The Eternal Execom IT.

So, in this issue I'm going to ask my questions and I hope that @vbonvin (and other people who knows) will answer.

  1. How are multiple tournaments handled? Can we use separate databases on the same server for differnet tournaments? How is the code separated?

  2. Who adds the participants to the database? Who has access to edit the participants info?

NoReverseMatch for ranking for teams with accent ?

Ranking page crashes with output

Environment:


Request Method: GET
Request URL: http://connect.iptnet.info/FPT2017/ranking

Django Version: 1.7.11
Python Version: 2.7.9
Installed Applications:
('grappelli',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'IPT2016',
 'FPT2017')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
  105.                     response = view_func(request, *args, **kwargs)
File "/var/www/kim/kim/FPT2017/views.py" in ranking
  323. 	return render(request, 'FPT2017/ranking.html', {'rankteams': rankteams})
File "/usr/lib/python2.7/dist-packages/django/shortcuts.py" in render
  50.     return HttpResponse(loader.render_to_string(*args, **kwargs),
File "/usr/lib/python2.7/dist-packages/django/template/loader.py" in render_to_string
  178.         return t.render(context_instance)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in render
  148.             return self._render(context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in _render
  142.         return self.nodelist.render(context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in render
  844.                 bit = self.render_node(node, context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in render_node
  858.         return node.render(context)
File "/usr/lib/python2.7/dist-packages/django/template/loader_tags.py" in render
  126.         return compiled_parent._render(context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in _render
  142.         return self.nodelist.render(context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in render
  844.                 bit = self.render_node(node, context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in render_node
  858.         return node.render(context)
File "/usr/lib/python2.7/dist-packages/django/template/loader_tags.py" in render
  65.                 result = block.nodelist.render(context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in render
  844.                 bit = self.render_node(node, context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in render_node
  858.         return node.render(context)
File "/usr/lib/python2.7/dist-packages/django/template/defaulttags.py" in render
  208.                         nodelist.append(node.render(context))
File "/usr/lib/python2.7/dist-packages/django/template/defaulttags.py" in render
  312.                 return nodelist.render(context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in render
  844.                 bit = self.render_node(node, context)
File "/usr/lib/python2.7/dist-packages/django/template/base.py" in render_node
  858.         return node.render(context)
File "/usr/lib/python2.7/dist-packages/django/template/defaulttags.py" in render
  458.                         six.reraise(*exc_info)
File "/usr/lib/python2.7/dist-packages/django/template/defaulttags.py" in render
  444.             url = reverse(view_name, args=args, kwargs=kwargs, current_app=context.current_app)
File "/usr/lib/python2.7/dist-packages/django/core/urlresolvers.py" in reverse
  551.     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "/usr/lib/python2.7/dist-packages/django/core/urlresolvers.py" in _reverse_with_prefix
  468.                              (lookup_view_s, args, kwargs, len(patterns), patterns))

Exception Type: NoReverseMatch at /FPT2017/ranking
Exception Value: Reverse for 'team_detail' with arguments '()' and keyword arguments '{u'team_name': u'Universit\xe9 Paris-Sud'}' not found. 1 pattern(s) tried: [u'FPT2017/teams/(?P<team_name>[A-Za-z0-9\\- ]+)/$']

Display winner after the fight

Hello guys,
as briefly discussed during the last IOC meeting, it would be a nice and simple improvement to display at the end of each PF a page where are clearly listed first, second, third (and optionally fourth) position of the fight just concluded, maybe with also the amount of bonus points that each team will receive.

The reasons are straightforward:

  • right now the idea of "Physics Fight" is kind of missing considered that the winner is not announced, even thought it would be possible
  • It would make the role of the bonus points clearer

It think it can be simply implemented adding a page such as
http://connect.iptnet.info/IPT2018/physics_fights/1/
but for the single room

What do you think?

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.