From d087a8be59f9a9e3a27b540d2b130702d4251377 Mon Sep 17 00:00:00 2001 From: Georgios Atheridis Date: Sun, 22 Jan 2023 17:32:14 +0000 Subject: [PATCH] Ranking clips implemented --- core/core/urls.py | 6 ++- core/manager/forms.py | 4 ++ core/manager/migrations/0011_clip_rank.py | 18 +++++++ core/manager/models.py | 1 + .../templates/manager/clip_viewer.html | 22 +++++++++ core/manager/templates/manager/final.html | 7 +++ core/manager/views.py | 38 +++++++++++++-- core/static/main.css | 48 +++++++++++++++++++ core/templates/base.html | 5 +- 9 files changed, 140 insertions(+), 9 deletions(-) create mode 100644 core/manager/migrations/0011_clip_rank.py create mode 100644 core/manager/templates/manager/clip_viewer.html create mode 100644 core/manager/templates/manager/final.html diff --git a/core/core/urls.py b/core/core/urls.py index 6798f63..20ee981 100644 --- a/core/core/urls.py +++ b/core/core/urls.py @@ -16,11 +16,13 @@ Including another URLconf from django.contrib import admin from django.urls import path, include from django.views.generic import TemplateView -from manager.views import get_name +from manager.views import get_name, show_clips, final_ranking urlpatterns = [ path("admin/", admin.site.urls), path('accounts/', include('allauth.urls')), - path('', TemplateView.as_view(template_name="manager/index.html")), + path('', TemplateView.as_view(template_name="manager/index.html"), name='index'), path('input/', get_name, name="input"), + path('show/', show_clips, name="show"), + path('final', final_ranking, name="final"), ] diff --git a/core/manager/forms.py b/core/manager/forms.py index 5024575..d3a293d 100644 --- a/core/manager/forms.py +++ b/core/manager/forms.py @@ -1,5 +1,9 @@ from django import forms +class RankForm(forms.Form): + value = forms.IntegerField(label="rank") + + class ClipForm(forms.Form): clip = forms.CharField(label="clip", max_length=200) diff --git a/core/manager/migrations/0011_clip_rank.py b/core/manager/migrations/0011_clip_rank.py new file mode 100644 index 0000000..2c76633 --- /dev/null +++ b/core/manager/migrations/0011_clip_rank.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.5 on 2023-01-22 16:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("manager", "0010_rename_resettime_resetdata"), + ] + + operations = [ + migrations.AddField( + model_name="clip", + name="rank", + field=models.IntegerField(null=True), + ), + ] diff --git a/core/manager/models.py b/core/manager/models.py index 5a9fff4..9053f1a 100644 --- a/core/manager/models.py +++ b/core/manager/models.py @@ -25,3 +25,4 @@ class Clip(models.Model): vod_offset = models.IntegerField(null=True) date_added = models.DateTimeField(null=True) account = models.ForeignKey(User, on_delete=models.CASCADE) + rank = models.IntegerField(null=True) diff --git a/core/manager/templates/manager/clip_viewer.html b/core/manager/templates/manager/clip_viewer.html new file mode 100644 index 0000000..1cf3ffe --- /dev/null +++ b/core/manager/templates/manager/clip_viewer.html @@ -0,0 +1,22 @@ +{% extends 'base.html' %} +{% block content %} +
+ +
+
+ {% csrf_token %} + + + + + +
+
+
+{% endblock %} + diff --git a/core/manager/templates/manager/final.html b/core/manager/templates/manager/final.html new file mode 100644 index 0000000..e3f4e82 --- /dev/null +++ b/core/manager/templates/manager/final.html @@ -0,0 +1,7 @@ +{% extends 'base.html' %} +{% block content %} +{% for video in videos %} +{{ video.rank }} +{% endfor %} +{% endblock %} + diff --git a/core/manager/views.py b/core/manager/views.py index 7e2e114..12aa9ad 100644 --- a/core/manager/views.py +++ b/core/manager/views.py @@ -1,12 +1,42 @@ -import requests - from django.http import HttpResponse -from django.shortcuts import render +from django.shortcuts import render, redirect from django.core.exceptions import ValidationError +from django.contrib.admin.views.decorators import staff_member_required from .request_clip import request_clip -from .forms import ClipForm +from .forms import ClipForm, RankForm from .errors import TooManyClips +from .models import Clip, ResetData + + +@staff_member_required +def show_clips(request, id): + reset_data = ResetData.objects.first() + reset_time = reset_data.date_time + try: + video = Clip.objects.filter(date_added__gt=reset_time)[id - 1] + except IndexError: + print("hi") + return redirect(final_ranking) + if request.method == "POST": + form = RankForm(request.POST) + if form.is_valid(): + print(f"post: {id} | {form.cleaned_data['value']}") + video.rank = form.cleaned_data["value"] + video.save() + return redirect(show_clips, id=id + 1) + return render(request, "manager/clip_viewer.html", context={ + "video": video, + }) + + +@staff_member_required +def final_ranking(request): + reset_data = ResetData.objects.first() + reset_time = reset_data.date_time + return render(request, "manager/final.html", context={ + "videos": Clip.objects.filter(date_added__gt=reset_time), + }) def get_name(request): diff --git a/core/static/main.css b/core/static/main.css index 4b3fdc0..ce7fdb5 100644 --- a/core/static/main.css +++ b/core/static/main.css @@ -78,3 +78,51 @@ a:hover.btn { padding-left: 20px; } +#group { + display: flex; + justify-content: center; + align-items: center; + min-height: 100vh; + flex-direction: column; + +} + +#buttons { + padding-top: 2rem; +} + +.rank-btn { + border: none; + color: black; + padding: 15px 32px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 24px; + cursor: pointer; +} + +.rank-btn.r5 { + background-color: #4CAF50; +} + +.rank-btn.r4 { + background-color: #8CAF50; +} + +.rank-btn.r3 { + background-color: #FCAF50; +} + +.rank-btn.r2 { + background-color: #FFAFF0; +} + +.rank-btn.r1 { + background-color: #FC0F50; +} + +.rank-btn:hover { + background-color: #EEEEEE; +} + diff --git a/core/templates/base.html b/core/templates/base.html index cd7d53b..cda10b3 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -14,14 +14,13 @@
- Home + Home {% if user.is_authenticated %} - Panel + Rank {% endif %} {% if user.is_superuser %} Admin {% endif %} - About {% if user.is_authenticated %}
{% csrf_token %} -- 2.30.2