|
12 | 12 |
|
13 | 13 | from mittab.apps.tab.archive import ArchiveExporter |
14 | 14 | from mittab.apps.tab.views.debater_views import get_speaker_rankings |
15 | | -from mittab.apps.tab.forms import MiniRoomTagForm, RoomTagForm, SchoolForm, RoomForm, \ |
16 | | - UploadDataForm, ScratchForm, SettingsForm |
| 15 | +from mittab.apps.tab.forms import ( |
| 16 | + MiniRankingGroupForm, |
| 17 | + MiniRoomTagForm, |
| 18 | + RankingGroupForm, |
| 19 | + RoomTagForm, |
| 20 | + SchoolForm, |
| 21 | + RoomForm, |
| 22 | + UploadDataForm, |
| 23 | + ScratchForm, |
| 24 | + SettingsForm, |
| 25 | +) |
17 | 26 | from mittab.apps.tab.helpers import redirect_and_flash_error, \ |
18 | 27 | redirect_and_flash_success |
19 | 28 | from mittab.apps.tab.models import * |
@@ -596,6 +605,56 @@ def manage_room_tags(request): |
596 | 605 | {"room_tags": room_tags, |
597 | 606 | "form": form}) |
598 | 607 |
|
| 608 | + |
| 609 | +def ranking_group(request, group_id=None): |
| 610 | + group = None |
| 611 | + if group_id is not None: |
| 612 | + group = RankingGroup.objects.filter(pk=group_id).first() |
| 613 | + |
| 614 | + if request.method == "POST": |
| 615 | + if request.POST.get("_method") == "DELETE": |
| 616 | + if group is not None: |
| 617 | + group.delete() |
| 618 | + return redirect_and_flash_success( |
| 619 | + request, "Ranking group deleted successfully" |
| 620 | + ) |
| 621 | + return redirect_and_flash_error(request, "Ranking group does not exist") |
| 622 | + |
| 623 | + form = RankingGroupForm(request.POST, instance=group) |
| 624 | + if not form.is_valid(): |
| 625 | + return redirect_and_flash_error(request, "Error saving ranking group.") |
| 626 | + |
| 627 | + ranking_group_instance = form.save() |
| 628 | + path = reverse("manage_ranking_groups") |
| 629 | + message = ( |
| 630 | + f"Ranking group {ranking_group_instance.name} " |
| 631 | + f"{'updated' if group else 'created'} successfully" |
| 632 | + ) |
| 633 | + return redirect_and_flash_success(request, message, path=path) |
| 634 | + |
| 635 | + form = RankingGroupForm(instance=group) |
| 636 | + return render( |
| 637 | + request, |
| 638 | + "common/data_entry.html", |
| 639 | + { |
| 640 | + "form": form, |
| 641 | + "links": [], |
| 642 | + "title": f"Viewing Ranking Group: {group.name}" if group else "Create Ranking Group", |
| 643 | + }, |
| 644 | + ) |
| 645 | + |
| 646 | + |
| 647 | +def manage_ranking_groups(request): |
| 648 | + if request.method == "POST": |
| 649 | + return ranking_group(request) |
| 650 | + form = MiniRankingGroupForm(request.POST or None) |
| 651 | + ranking_groups = RankingGroup.objects.all().order_by("name") |
| 652 | + return render( |
| 653 | + request, |
| 654 | + "pairing/manage_ranking_groups.html", |
| 655 | + {"ranking_groups": ranking_groups, "form": form}, |
| 656 | + ) |
| 657 | + |
599 | 658 | def batch_checkin(request): |
600 | 659 | round_numbers = list([i + 1 for i in range(TabSettings.get("tot_rounds"))]) |
601 | 660 | all_round_numbers = [0] + round_numbers |
|
0 commit comments