Specto fixes #9
5
.editorconfig
Normal file
5
.editorconfig
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*.{js,css}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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;
|
|
||||||
}
|
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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 }}
|
||||||
|
@ -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 %}
|
||||||
|
@ -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 %}
|
||||||
|
@ -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;
|
||||||
|
@ -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 %}
|
||||||
|
@ -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>
|
||||||
-->
|
-->
|
||||||
|
@ -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>
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user