Ranking clips implemented
authorGeorgios Atheridis <georgios@atheridis.org>
Sun, 22 Jan 2023 17:32:14 +0000 (17:32 +0000)
committerGeorgios Atheridis <georgios@atheridis.org>
Sun, 22 Jan 2023 17:32:14 +0000 (17:32 +0000)
core/core/urls.py
core/manager/forms.py
core/manager/migrations/0011_clip_rank.py [new file with mode: 0644]
core/manager/models.py
core/manager/templates/manager/clip_viewer.html [new file with mode: 0644]
core/manager/templates/manager/final.html [new file with mode: 0644]
core/manager/views.py
core/static/main.css
core/templates/base.html

index 6798f63d4e8d5fcfc750c9c6a6a5f8a0b9c54871..20ee98171af5cfaa6063d937d2ec416c8840bbda 100644 (file)
@@ -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/<int:id>', show_clips, name="show"),
+    path('final', final_ranking, name="final"),
 ]
index 502457588bdfb5e148fb6e048bc94a864132fdc9..d3a293d37cddbb7210d61cca0d8c616117edd711 100644 (file)
@@ -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 (file)
index 0000000..2c76633
--- /dev/null
@@ -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),
+        ),
+    ]
index 5a9fff4fc2ad79a07e3652d37cf0081b0503e6bd..9053f1a5611c03797d44e79c80309891db4723a0 100644 (file)
@@ -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 (file)
index 0000000..1cf3ffe
--- /dev/null
@@ -0,0 +1,22 @@
+{% extends 'base.html' %}
+{% block content %}
+<div id="group">
+    <iframe
+            src="https://clips.twitch.tv/embed?clip={{ video.id }}&parent=localhost"
+            height="600"
+            width="1000"
+            allowfullscreen>
+    </iframe>
+    <div id="buttons">
+    <form method="post">
+        {% csrf_token %}
+        <button class="rank-btn r5" name="value" value="5">Rank 5</button>
+        <button class="rank-btn r4" name="value" value="4">Rank 4</button>
+        <button class="rank-btn r3" name="value" value="3">Rank 3</button>
+        <button class="rank-btn r2" name="value" value="2">Rank 2</button>
+        <button class="rank-btn r1" name="value" value="1">Rank 1</button>
+    </form>
+    </div>
+</div>
+{% endblock %}
+
diff --git a/core/manager/templates/manager/final.html b/core/manager/templates/manager/final.html
new file mode 100644 (file)
index 0000000..e3f4e82
--- /dev/null
@@ -0,0 +1,7 @@
+{% extends 'base.html' %}
+{% block content %}
+{% for video in videos %}
+{{ video.rank }}
+{% endfor %}
+{% endblock %}
+
index 7e2e114b721d09acf896a0d289a68837703ab764..12aa9ad44617484cfd8452482d91f841022eefee 100644 (file)
@@ -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):
index 4b3fdc0688da4dfb7ad0cd64ac14473057a549bd..ce7fdb5088d4650e1cae4499d4e4db59a81f1df9 100644 (file)
@@ -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;
+}
+
index cd7d53b421467ec5395466d4a34db0b2dfdd40fd..cda10b36e91609e0a1549e3f3b3285c510c68975 100644 (file)
     </head>
     <body>
         <div class="sidenav">
-            <a class="btn" href="#">Home</a>
+            <a class="btn" href="{% url 'index' %}">Home</a>
             {% if user.is_authenticated %}
-                <a class="btn" href="#">Panel</a>
+            <a class="btn" href="{% url 'show' 1 %}">Rank</a>
             {% endif %}
             {% if user.is_superuser %}
                 <a class="btn" href="{% url 'admin:index' %}">Admin</a>
             {% endif %}
-            <a class="btn" href="#">About</a>
             {% if user.is_authenticated %}
                 <form action="{% url 'account_logout' %}" method="post">
                     {% csrf_token %}