Specto fixes #9

Merged
confestim merged 7 commits from specto-fixes into main 2021-09-10 16:35:54 +02:00
188 changed files with 252 additions and 253 deletions

5
.editorconfig Normal file
View File

@ -0,0 +1,5 @@
root = true
[*.{js,css}]
indent_style = space
indent_size = 2

View File

@ -1,134 +1,127 @@
.popup{ .popup {
width: 900px; width: 900px;
margin: auto; margin: auto;
text-align: center text-align: center;
} }
.popup img{
width: 200px; .popup img {
height: 200px; width: 200px;
cursor: pointer height: 200px;
cursor: pointer;
} }
.show{
z-index: 999; .show {
display: none; z-index: 999;
display: none;
} }
.show .overlay{
width: 100%; .show .overlay {
height: 100%; width: 100%;
background: rgba(0,0,0,.66); height: 100%;
position: absolute; background: rgba(0,0,0,.66);
top: 0; position: absolute;
left: 0; top: 0;
left: 0;
} }
.show .img-show{
width: 600px; .show .img-show {
height: 400px; width: 600px;
background: #FFF; height: 400px;
position: absolute; background: #FFF;
top: 50%; position: absolute;
left: 50%; top: 50%;
transform: translate(-50%,-50%); left: 50%;
overflow: hidden transform: translate(-50%,-50%);
overflow: hidden;
} }
.img-show span{
position: absolute; .img-show span {
top: 10px; position: absolute;
right: 10px; top: 10px;
z-index: 99; right: 10px;
cursor: pointer; z-index: 99;
cursor: pointer;
} }
.img-show img{
width: 100%; .img-show img {
height: 100%; width: 100%;
position: absolute; height: 100%;
top: 0; position: absolute;
left: 0; top: 0;
left: 0;
} }
* { * {
box-sizing: border-box; box-sizing: border-box;
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
body { body {
font-family: Raleway; font-family: Raleway;
background-color: #202125; background-color: #202125;
} }
.heading { .heading {
text-align: center; text-align: center;
font-size: 2.0em; font-size: 2.0em;
letter-spacing: 1px; letter-spacing: 1px;
padding: 40px; padding: 40px;
color: white; color: white;
} }
.gallery-image { .gallery-image {
padding: 20px; padding: 20px;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: center; justify-content: center;
} }
.gallery-image img { .gallery-image img {
height: 250px; height: 250px;
width: 350px; width: 350px;
transform: scale(1.0); transform: scale(1.0);
transition: transform 0.4s ease; transition: transform 0.4s ease;
} }
.img-box { .img-box {
box-sizing: content-box; box-sizing: content-box;
margin: 10px; margin: 10px;
height: 250px; height: 250px;
width: 350px; width: 350px;
overflow: hidden; overflow: hidden;
display: inline-block; display: inline-block;
color: white; color: white;
position: relative; position: relative;
background-color: white; background-color: white;
} }
.caption { .caption {
position: absolute; position: absolute;
bottom: 5px; bottom: 5px;
left: 20px; left: 20px;
opacity: 0.0; opacity: 0.0;
transition: transform 0.3s ease, opacity 0.3s ease; transition: transform 0.3s ease, opacity 0.3s ease;
} }
.transparent-box { .transparent-box {
height: 250px; height: 250px;
width: 350px; width: 350px;
background-color:rgba(0, 0, 0, 0); background-color: rgba(0, 0, 0, 0);
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
transition: background-color 0.3s ease; transition: background-color 0.3s ease;
} }
.img-box:hover img { .img-box:hover img { transform: scale(1.1); }
transform: scale(1.1); .img-box:hover .transparent-box { background-color: rgba(0, 0, 0, 0.5); }
}
.img-box:hover .caption {
.img-box:hover .transparent-box { transform: translateY(-20px);
background-color:rgba(0, 0, 0, 0.5); opacity: 1.0;
} }
.img-box:hover .caption { .img-box:hover { cursor: pointer; }
transform: translateY(-20px); .caption > p:nth-child(2) { font-size: 0.8em; }
opacity: 1.0; .opacity-low { opacity: 0.5; }
}
.img-box:hover {
cursor: pointer;
}
.caption > p:nth-child(2) {
font-size: 0.8em;
}
.opacity-low {
opacity: 0.5;
}

View File

@ -11,10 +11,10 @@
background: white; background: white;
-moz-box-shadow: 0 0 20px #469330; -moz-box-shadow: 0 0 20px #469330;
-webkit-box-shadow: 0 0 20px #469330; -webkit-box-shadow: 0 0 20px #469330;
box-shadow: 0 0 20px #469330; box-shadow: 0 0 20px #469330;
text-align: center; text-align: center;
border-radius: 25px; border-radius: 25px;
} }
header { header {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -138,21 +138,16 @@ header {
.menu { .menu {
display: initial; display: initial;
} }
} }
html{ html{
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
p { p {
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
margin: 0 0 30px 0; margin: 0 0 30px 0;
} }
h1.heading{ h1.heading{
@ -167,7 +162,7 @@ ul.emoji{
.question{ .question{
color: gray; color: gray;
font-size:20px; font-size: 20px;
} }
ul.nothing{ ul.nothing{
@ -178,7 +173,7 @@ a.footer{
/* background:radial-gradient(circle, rgba(0,159,12,1) 0%, rgba(8,96,0,1) 100%); /* background:radial-gradient(circle, rgba(0,159,12,1) 0%, rgba(8,96,0,1) 100%);
-webkit-background-clip: text; -webkit-background-clip: text;
-webkit-text-fill-color: transparent; */ -webkit-text-fill-color: transparent; */
color:lightgreen; color: lightgreen;
} }
footer{ footer{
font-size: small; font-size: small;

View File

@ -5,18 +5,20 @@ from django.conf import settings
from users.models import User from users.models import User
import operator import operator
from upload.models import Media from upload.models import Media
from django.db.models import Sum
def homePage(request): def homePage(request):
iter_var = 0 iter_var = 0
all_balance = [] all_balance = 0
Cashier = False Cashier = False
Processor = False Processor = False
balObject = Balance.objects.filter(user=request.user.id) balObject = Balance.objects.filter(user=request.user.id)
userBalance = balObject.values("balanceValue") userBalance = balObject.values("balanceValue")
try: try:
userBalance = userBalance[0]['balanceValue'] userBalance = userBalance[0]['balanceValue']
except IndexError: except IndexError:
userBalance = None userBalance = None
if request.user.groups.filter(name='Cashier').exists(): if request.user.groups.filter(name='Cashier').exists():
@ -29,24 +31,24 @@ def homePage(request):
userQR = f"Name = {request.user.username}, Date Joined = {request.user.date_joined.date()}, ID = {request.user.id}, isCashier={Cashier}, isProcessor={Processor}, Balance = {userBalance}" userQR = f"Name = {request.user.username}, Date Joined = {request.user.date_joined.date()}, ID = {request.user.id}, isCashier={Cashier}, isProcessor={Processor}, Balance = {userBalance}"
else: else:
userQR=None userQR=None
a = Balance.objects.all()
for user in a: # Use aggregation that can be calculated in database (fast)
all_balance.append(user.balanceValue) all_balance = Balance.objects.all().aggregate(s=Sum("balanceValue"))['s']
print(f"{all_balance}") # print(f"{all_balance}")
limited_coins = settings.ALL_COINS - sum(all_balance)
limited_coins = settings.ALL_COINS - all_balance
context = { context = {
"isCashier": Cashier, "isCashier": Cashier,
"isProcessor": Processor, "isProcessor": Processor,
"userQR":userQR, "userQR":userQR,
"fullbalance": limited_coins, "fullbalance": limited_coins,
"currencyTotal": sum(all_balance), "currencyTotal": all_balance,
"userBalance": userBalance "userBalance": userBalance,
} }
return render(request, "home.html", context) return render(request, "home.html", context)
def leaderboard(request): def leaderboard(request):
users = User.objects.all() users = User.objects.all()
@ -55,22 +57,22 @@ def leaderboard(request):
try: try:
username = i.username username = i.username
balance = i.balance.balanceValue balance = i.balance.balanceValue
# add media counter and other stuff # add media counter and other stuff
if f"{username}" in leaderboard.keys(): if f"{username}" in leaderboard.keys():
leaderboard[username] = balance + leaderboard[username] leaderboard[username] = balance + leaderboard[username]
else: else:
leaderboard[username] = balance leaderboard[username] = balance
except Exception as e: except Exception as e:
pass pass
leaderboard = dict(sorted(leaderboard.items(), key=operator.itemgetter(0))) leaderboard = dict(sorted(leaderboard.items(), key=operator.itemgetter(0)))
leaderboard = dict(reversed(list(leaderboard.items()))) leaderboard = dict(reversed(list(leaderboard.items())))
while len(leaderboard) > 5: while len(leaderboard) > 5:
leaderboard.pop() leaderboard.pop()
media = Media.objects.all()
media = Media.objects.all()
user_media = {} user_media = {}
for i in media: for i in media:
username = i.user.username username = i.user.username
@ -78,7 +80,7 @@ def leaderboard(request):
user_media[username] += 1 user_media[username] += 1
else: else:
user_media[username] = 1 user_media[username] = 1
user_media = dict(sorted(user_media.items(), key=operator.itemgetter(0))) user_media = dict(sorted(user_media.items(), key=operator.itemgetter(0)))
user_media = dict(reversed(list(user_media.items()))) user_media = dict(reversed(list(user_media.items())))
print(user_media) print(user_media)
@ -92,7 +94,7 @@ def leaderboard(request):
else: else:
user_data = {i:{"Images":len(iter_user_media.filter(is_video=False))}} user_data = {i:{"Images":len(iter_user_media.filter(is_video=False))}}
print(user_data) print(user_data)
while len(user_media) > 5: while len(user_media) > 5:
user_media.pop() user_media.pop()
@ -103,8 +105,8 @@ def leaderboard(request):
# if f"{username}" in media_count.values(): # if f"{username}" in media_count.values():
# media_count[username] = image + media_count[username].value # media_count[username] = image + media_count[username].value
# else: # else:
# media_count[username] = image # media_count[username] = image
# print(media_count) # print(media_count)
context = { context = {
@ -113,4 +115,4 @@ def leaderboard(request):
} }
return render(request, 'leaderboard.html', context) return render(request, 'leaderboard.html', context)

View File

@ -1,9 +1,8 @@
<!DOCTYPE html> <!DOCTYPE html>
{% load static %}
{% load qr_code %}
<html>
<head> <head>
{% load static %}
{% load qr_code %}
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{% block title %}reValuate{% endblock %}</title> <title>{% block title %}reValuate{% endblock %}</title>
@ -11,32 +10,30 @@
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="{% static 'home/css/style.css' %}"> <link rel="stylesheet" href="{% static 'home/css/style.css' %}">
<link rel="shortcut icon" type="image/png" href="{% static 'home/img/logo.png' %}"/> <link rel="shortcut icon" type="image/png" href="{% static 'home/img/logo.png' %}"/>
{% block optionalParams %}{% endblock %}
{% block optionalParams %} {% endblock %}
</head> </head>
<body> <body>
{% block aboveNav %} {% endblock %} {% block aboveNav %}{% endblock %}
<header id="navbar"> <header id="navbar">
<a class="logo" href="/"><img src="{% static 'home/img/logo.png' %}" style="max-height: 100px;" alt="logo"></a> <a class="logo" href="/"><img src="{% static 'home/img/logo.png' %}" style="max-height: 100px;" alt="logo"></a>
<nav> <nav>
<ul class="nav__links"> <ul class="nav__links">
<li><a href="{% url 'leaderboard' %}"><u>Класация</u></a></li> <li><a href="{% url 'leaderboard' %}"><u>Класация</u></a></li>
<li><a href="#"><u>За нас</u></a></li> <li><a href="#"><u>За нас</u></a></li>
{% if user.is_authenticated %} {% if user.is_authenticated %}
<li><a href="{% url 'Image' %}"><u>Качи</u></a></li> <li><a href="{% url 'Image' %}"><u>Качи</u></a></li>
<li><a href="{% url 'Media' %}"><u>Прогрес</u></a></li> <li><a href="{% url 'Media' %}"><u>Прогрес</u></a></li>
{% endif %} {% endif %}
{% if isProcessor %} {% if isProcessor %}
<li><a href="{% url 'admin' %}"><u>Админ</u></a></li> <li><a href="{% url 'admin' %}"><u>Админ</u></a></li>
{% endif %} {% endif %}
{% if isCashier %} {% if isCashier %}
<li><a href="{% url 'cashier' %}"><u>Качи</u></a></li> <li><a href="{% url 'cashier' %}"><u>Качи</u></a></li>
{% endif %} {% endif %}
</ul> </ul>
</nav> </nav>
{% if user.is_authenticated %} {% if user.is_authenticated %}
@ -44,7 +41,7 @@
{% else %} {% else %}
<a class="cta" href="{% url 'login' %}">Влез!</a> <a class="cta" href="{% url 'login' %}">Влез!</a>
{% endif %} {% endif %}
<p class="menu cta">Меню</p> <p class="menu cta">Меню</p>
</header> </header>
<div id="container"> <div id="container">
@ -54,7 +51,7 @@
<a href="{% url 'leaderboard' %}">Класация</a> <a href="{% url 'leaderboard' %}">Класация</a>
<a href="#">За нас</a> <a href="#">За нас</a>
{% if user.is_authenticated %} {% if user.is_authenticated %}
<a href="{% url 'logout' %}">Излез!</a> <a href="{% url 'logout' %}">Излез!</a>
{% else %} {% else %}
<a href="{% url 'login' %}">Влез!</a> <a href="{% url 'login' %}">Влез!</a>
{% endif %} {% endif %}
@ -64,13 +61,13 @@
{% if user.is_authenticated %} {% if user.is_authenticated %}
<a href="{% url 'Image' %}">Качи</a> <a href="{% url 'Image' %}">Качи</a>
<a href="{% url 'Media' %}">Прогрес</a> <a href="{% url 'Media' %}">Прогрес</a>
{% endif %} {% endif %}
</div> </div>
<script type="text/javascript" src="{% static 'home/js/mobile.js' %}"></script> <script type="text/javascript" src="{% static 'home/js/mobile.js' %}"></script>
</div> </div>
{% block content %} {% block content %}
{% endblock %} {% endblock %}
</div> </div>
</body> </body>
</html> </html>

View File

@ -1,7 +1,7 @@
<!-- templates/home.html -->
{% extends 'base.html' %} {% extends 'base.html' %}
{% block title %}Home{% endblock %} {% block title %}Home{% endblock %}
{% block optionalParams%} {% block optionalParams%}
<style> <style>
.checkmark__circle { .checkmark__circle {
@ -13,7 +13,7 @@
fill: none; fill: none;
animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards; animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
} }
.checkmark { .checkmark {
width: 56px; width: 56px;
height: 56px; height: 56px;
@ -26,14 +26,14 @@
box-shadow: inset 0px 0px 0px #7ac142; box-shadow: inset 0px 0px 0px #7ac142;
animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both; animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both;
} }
.checkmark__check { .checkmark__check {
transform-origin: 50% 50%; transform-origin: 50% 50%;
stroke-dasharray: 48; stroke-dasharray: 48;
stroke-dashoffset: 48; stroke-dashoffset: 48;
animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards; animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards;
} }
@keyframes stroke { @keyframes stroke {
100% { 100% {
stroke-dashoffset: 0; stroke-dashoffset: 0;
@ -56,17 +56,18 @@
</style> </style>
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div class="centered" style="text-align: center;"> <div class="centered" style="text-align: center;">
{% if user.is_authenticated %} {% if user.is_authenticated %}
{% if userBalance %} {% if userBalance %}
<h1 style="color:#7ac142;">Транзакцията е записана успешно!</h1> <h1 style="color:#7ac142;">Транзакцията е записана успешно!</h1>
Кликни <a style="color:#7ac142;"href="/remove_balance/">тук</a>, ако искаш да запишеш нова! Кликни <a style="color:#7ac142;"href="/remove_balance/">тук</a>, ако искаш да запишеш нова!
<svg class="checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52"> <svg class="checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
<circle class="checkmark__circle" cx="26" cy="26" r="25" fill="none"/> <circle class="checkmark__circle" cx="26" cy="26" r="25" fill="none"/>
<path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/> <path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/>
</svg> </svg>
{% endif %} {% endif %}
<div> <div>
{{ qr_code }} {{ qr_code }}

View File

@ -1,4 +1,8 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% load qr_code %}
{% load static %}
{% block optionalParams %} {% block optionalParams %}
<style> <style>
html{ html{
@ -11,8 +15,7 @@
} }
</style> </style>
{% endblock %} {% endblock %}
{% load qr_code %}
{% load static %}
{% block content %} {% block content %}
<div id="page-wrap"> <div id="page-wrap">
<h1 class="heading">reValuate</h1> <h1 class="heading">reValuate</h1>
@ -63,4 +66,4 @@
</div> </div>
<footer>Frontend, backend and planning:<br> <a class="footer" href="https://yamozha.xyz">Boyan</a></footer> <footer>Frontend, backend and planning:<br> <a class="footer" href="https://yamozha.xyz">Boyan</a></footer>
{% endblock %} {% endblock %}

View File

@ -1,17 +1,18 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% block title %}Класация{% endblock %} {% block title %}Класация{% endblock %}
{% block optionalParams %} {% block optionalParams %}
<style> <style>
html{ html{
background: linear-gradient(180deg, rgba(70,147,48,1) 33%, rgba(109,126,107,1) 100%) no-repeat center center fixed; background: linear-gradient(180deg, rgba(70,147,48,1) 33%, rgba(109,126,107,1) 100%) no-repeat center center fixed;
-webkit-background-size: cover; -webkit-background-size: cover;
-moz-background-size: cover; -moz-background-size: cover;
-o-background-size: cover; -o-background-size: cover;
background-size: cover; background-size: cover;
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
.content{ .content{
position: absolute; position: absolute;
@ -74,4 +75,4 @@ ul{
{% endfor %} {% endfor %}
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -3,15 +3,15 @@
{% block title %}Login{% endblock %} {% block title %}Login{% endblock %}
{% block optionalParams %} {% block optionalParams %}
<style> <style>
html{ html{
background: linear-gradient(180deg, rgba(70,147,48,1) 33%, rgba(109,126,107,1) 100%) no-repeat center center fixed; background: linear-gradient(180deg, rgba(70,147,48,1) 33%, rgba(109,126,107,1) 100%) no-repeat center center fixed;
-webkit-background-size: cover; -webkit-background-size: cover;
-moz-background-size: cover; -moz-background-size: cover;
-o-background-size: cover; -o-background-size: cover;
background-size: cover; background-size: cover;
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
.buttons{ .buttons{
background-color: #469330; background-color: #469330;
border: none; border: none;

View File

@ -5,17 +5,17 @@
<style> <style>
html{ html{
background: linear-gradient(180deg, rgba(70,147,48,1) 33%, rgba(109,126,107,1) 100%) no-repeat center center fixed; background: linear-gradient(180deg, rgba(70,147,48,1) 33%, rgba(109,126,107,1) 100%) no-repeat center center fixed;
-webkit-background-size: cover; -webkit-background-size: cover;
-moz-background-size: cover; -moz-background-size: cover;
-o-background-size: cover; -o-background-size: cover;
background-size: cover; background-size: cover;
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
#page-wrap{ #page-wrap{
padding: 20vh; padding: 20vh;
} }
</style> </style>
{% endblock %} {% endblock %}
{% block content %} {% block content %}

View File

@ -1,6 +1,8 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% load static %} {% load static %}
{% block title %} My Images {% endblock %} {% block title %} My Images {% endblock %}
{% block optionalParams %} {% block optionalParams %}
<link rel="stylesheet" href="{% static 'home/css/gallery.css' %}"> <link rel="stylesheet" href="{% static 'home/css/gallery.css' %}">
<style> <style>
@ -28,21 +30,21 @@
<div class="transparent-box"> <div class="transparent-box">
<div class="caption"> <div class="caption">
{% if i.reason %} {% if i.reason %}
<p> ❌ Видеото ти е маркирана като невалидно.</p> <p> ❌ Видеото ти е маркирана като невалидно.</p>
<p class="opacity-low">Ако мислиш че има грешка ни изпратете <a href="mailto:boyan+revaluate@bobokara.com">имейл.</a></p> <p class="opacity-low">Ако мислиш че има грешка ни изпратете <a href="mailto:boyan+revaluate@bobokara.com">имейл.</a></p>
{% elif i.tokenized %} {% elif i.tokenized %}
<p > ✅ Видеото ти е валидно!</p> <p > ✅ Видеото ти е валидно!</p>
<p class="opacity-low">Провери баланса си!</p> <p class="opacity-low">Провери баланса си!</p>
{% else %} {% else %}
<p> ⏳ Видеото ти очаква обработка!</p> <p> ⏳ Видеото ти очаква обработка!</p>
{% endif %} {% endif %}
</div> </div>
</div> </div>
</div> </div>
{% else %} {% else %}
<div class="gallery-image popup"> <div class="gallery-image popup">
<div class="img-box"> <div class="img-box">
@ -50,20 +52,20 @@
<div class="transparent-box"> <div class="transparent-box">
<div class="caption"> <div class="caption">
{% if i.reason %} {% if i.reason %}
<p> ❌ Снимката ти е маркирана като невалидна.</p> <p> ❌ Снимката ти е маркирана като невалидна.</p>
<p class="opacity-low">Ако мислиш че има грешка ни изпратете <a href="mailto:boyan+revaluate@bobokara.com">имейл.</a></p> <p class="opacity-low">Ако мислиш че има грешка ни изпратете <a href="mailto:boyan+revaluate@bobokara.com">имейл.</a></p>
{% elif i.tokenized %} {% elif i.tokenized %}
<p > ✅ Снимката ти е валидна!</p> <p > ✅ Снимката ти е валидна!</p>
<p class="opacity-low">Провери баланса си!</p> <p class="opacity-low">Провери баланса си!</p>
{% else %} {% else %}
<p> ⏳ Снимката ти очаква обработка!</p> <p> ⏳ Снимката ти очаква обработка!</p>
{% endif %} {% endif %}
</div> </div>
</div> </div>
</div> </div>
<!-- <!--
<p style="text-shadow: 0 0 2px #28a745; float: left;">{{forloop.counter}}/{{img_number}} <p style="text-shadow: 0 0 2px #28a745; float: right;">{{i.date}}</p></p> --> <p style="text-shadow: 0 0 2px #28a745; float: left;">{{forloop.counter}}/{{img_number}} <p style="text-shadow: 0 0 2px #28a745; float: right;">{{i.date}}</p></p> -->
<!-- <br><br> <!-- <br><br>
--> -->

View File

@ -12,7 +12,7 @@
fill: none; fill: none;
animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards; animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
} }
.checkmark { .checkmark {
width: 56px; width: 56px;
height: 56px; height: 56px;
@ -25,14 +25,14 @@
box-shadow: inset 0px 0px 0px #7ac142; box-shadow: inset 0px 0px 0px #7ac142;
animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both; animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both;
} }
.checkmark__check { .checkmark__check {
transform-origin: 50% 50%; transform-origin: 50% 50%;
stroke-dasharray: 48; stroke-dasharray: 48;
stroke-dashoffset: 48; stroke-dashoffset: 48;
animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards; animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards;
} }
@keyframes stroke { @keyframes stroke {
100% { 100% {
stroke-dashoffset: 0; stroke-dashoffset: 0;
@ -70,35 +70,35 @@
} }
.closebtn:hover { .closebtn:hover {
color: black; color: black;
} }
.buttons{ .buttons{
margin-top: 10%; margin-top: 10%;
background-color: #469330; background-color: #469330;
border: none; border: none;
color: white; color: white;
padding: 15px 32px; padding: 15px 32px;
text-align: center; text-align: center;
text-decoration: none; text-decoration: none;
display: inline-block; display: inline-block;
font-size: 16px; font-size: 16px;
margin: 4px 2px; margin: 4px 2px;
cursor: pointer; cursor: pointer;
} }
html{ html{
background: linear-gradient(180deg, rgba(70,147,48,1) 33%, rgba(109,126,107,1) 100%) no-repeat center center fixed; background: linear-gradient(180deg, rgba(70,147,48,1) 33%, rgba(109,126,107,1) 100%) no-repeat center center fixed;
-webkit-background-size: cover; -webkit-background-size: cover;
-moz-background-size: cover; -moz-background-size: cover;
-o-background-size: cover; -o-background-size: cover;
background-size: cover; background-size: cover;
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }
#page-wrap{ #page-wrap{
padding: 20vh; padding: 20vh;
} }
</style> </style>
@ -121,7 +121,7 @@
<circle class="checkmark__circle" cx="26" cy="26" r="25" fill="none"/> <circle class="checkmark__circle" cx="26" cy="26" r="25" fill="none"/>
<path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/> <path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/>
</svg> </svg>
{% else %} {% else %}
<form method="post" enctype="multipart/form-data"> <form method="post" enctype="multipart/form-data">
{% csrf_token %} {% csrf_token %}
<label for="image" style="font-size: 32px;">Качи снимка! </label><br><br><br> <label for="image" style="font-size: 32px;">Качи снимка! </label><br><br><br>
@ -131,7 +131,7 @@
</form> </form>
<br><br> <br><br>
{% endif %} {% endif %}
{% else %} {% else %}
<p>You are not logged in</p> <p>You are not logged in</p>
<a href="{% url 'login' %}">Log In</a> <a href="{% url 'login' %}">Log In</a>

Some files were not shown because too many files have changed in this diff Show More