Almost done! Only the removal of points and the 'shop' system left.(and some front end + the admin process)

This commit is contained in:
Yamozha 2021-03-11 03:41:08 +02:00
parent 06f6f0d473
commit ac61698d51
49 changed files with 295 additions and 290 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 747 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

View File

@ -0,0 +1,33 @@
{% extends 'base.html' %}
{% block title %} Update Balance {% endblock %}
{% if user.is_superuser %}
{% block content %}
<div class="centered">
{% if message is None %}
<p>Hello, {{ user.username }} !</p>
{% else %}
<p>{{ message }}</p>
{% endif %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input name="user_instance" id="user_instance" placeholder="Pencho Slaveikov"><br>
<input name="tokens", id="tokens", placeholder="523...">
<button type="submit">Upload</button>
</form>
{% endblock %}
{% else %}
<h1>Unauthorized</h1>
</div>
{% endif %}

View File

@ -20,6 +20,7 @@
</head> </head>
<body> <body>
{% block aboveNav %} {% endblock %}
<div class="navview"> <div class="navview">
<nav class="navbar navbar-expand-lg bg-success"> <nav class="navbar navbar-expand-lg bg-success">
<a style="color: white; font-size: 200%;" class="navbar-brand mb-0 h1" href="/"> reValuate | </a> <a style="color: white; font-size: 200%;" class="navbar-brand mb-0 h1" href="/"> reValuate | </a>
@ -34,7 +35,12 @@
<ul class="navbar-nav ml-auto"> <ul class="navbar-nav ml-auto">
<li class="nav-item dropdown "> <li class="nav-item dropdown ">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{% if user.is_authenticated %}
{{ user.username }}
{% else %}
Акaунт Акaунт
{% endif %}
</a> </a>
<div class="dropdown-menu animate slideIn" aria-labelledby="navbarDropdown" > <div class="dropdown-menu animate slideIn" aria-labelledby="navbarDropdown" >

View File

@ -8,6 +8,9 @@
{% if user.is_authenticated %} {% if user.is_authenticated %}
Hi {{ user.username }}! Hi {{ user.username }}!
{{ userBalance}} {{ userBalance}}
<div>
{{ qr_code }}
</div>
{% 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>

View File

@ -34,7 +34,11 @@
<ul class="navbar-nav ml-auto"> <ul class="navbar-nav ml-auto">
<li class="nav-item dropdown "> <li class="nav-item dropdown ">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Акаунт {% if user.is_authenticated %}
{{ user.username }}
{% else %}
Акaунт
{% endif %}
</a> </a>
<div class="dropdown-menu animate slideIn" aria-labelledby="navbarDropdown" > <div class="dropdown-menu animate slideIn" aria-labelledby="navbarDropdown" >
{% if user.is_authenticated %} {% if user.is_authenticated %}
@ -79,7 +83,7 @@
<h1><strong>reValuate</strong><br /> <h1><strong>reValuate</strong><br />
</h1> </h1>
{% if user.is_authenticated %} {% if user.is_authenticated %}
<p>Здравейте, {{ user.username }}!</p> <p>Здравей, {{ user.username }}!</p>
<ul class="actions special"> <ul class="actions special">
<li><a href="/upload/" class="button scrolly">Качи!</a></li> <li><a href="/upload/" class="button scrolly">Качи!</a></li>
<li><a href="/view_media/" class="button scrolly">Виж прогреса си!</a></li> <li><a href="/view_media/" class="button scrolly">Виж прогреса си!</a></li>
@ -88,7 +92,7 @@
</ul> </ul>
{% else %} {% else %}
<p>Проект на тема разделно събиране.<br> Разработено от ученици от <a href="https://edutech.bg">ЧПГ "Образователни технологии"</a></p> <p>Проект на тема разделно събиране.<br> Разработено от ученици от <a style="color:white; " href="https://edutech.bg">ЧПГ "Образователни технологии"</a></p>
<ul class="actions special"> <ul class="actions special">
<li><a href="#one" class="button scrolly">Кои сме ние</a></li> <li><a href="#one" class="button scrolly">Кои сме ние</a></li>
@ -101,40 +105,18 @@
<section id="one" class="main style1"> <section id="one" class="main style1">
<div class="container"> <div class="container">
<div class="row gtr-150"> <div class="row gtr-150">
<div class="col-6 col-12-medium"> <div class="col-6 col-12-medium text-left">
<header class="major"> <header class="major">
<h2>Нашата цел и основни дейности<br /></h2> <h2>Нашата цел и основни дейности<br /></h2>
</header><p> </header><p>
Представяме Ви проект на тема “Как да създам култура за разделно събиране в учениците?”.<br><br>
Името, което избрахме за проекта, е “reValuate”, което носи смисъл на “да дам нова стойност на нещата”.<br><br>
Основната цел на проекта е запознаване с ползите от рециклирането на учениците и подтикването им да започнат да събират разделно боклук<span id="dots">...</span><span id="more"><br> Основната цел на проекта е запознаване с ползите от рециклирането на учениците и подтикването им да започнат да събират разделно боклук<span id="dots">...</span><span id="more"><br>
Основни дейности по проекта са поставянето на кошове за разделно събиране в училище и създаване на сайт, в който може да се качват видеа и снимки как ученици изхвърлят разделно боклуци. За всеки материал получават конкретен брой точки (ел.валута), която обменят в училище за награди. За една снимка получават 2 точки, а за едно видео 3 точки. Наградният фонд е спонсориран от учениците с 1лв. и ръководството на училището. Допълнителни точки се получават при споделяне в соц. мрежи.</span></p> Това е сайт, в който може да се качват видеа и снимки как ученици изхвърлят разделно боклуци. За всеки материал получават конкретен брой точки (ел.валута), която обменят в училище за награди. <br>За една снимка получават 2 точки, а за едно видео 3 точки.<br> Допълнителни точки се получават при споделяне в соц. мрежи.</span></p>
<button onclick="myFunction()" id="myBtn">Прочети повече</button>
<script>
function myFunction() {
var dots = document.getElementById("dots");
var moreText = document.getElementById("more");
var btnText = document.getElementById("myBtn");
if (dots.style.display === "none") {
dots.style.display = "inline";
btnText.innerHTML = "Read more";
moreText.style.display = "none";
} else {
dots.style.display = "none";
btnText.innerHTML = "Read less";
moreText.style.display = "inline";
}
}
</script>
<div class="col-6 col-12-medium imp-medium">
<span class="image fit"><img src="images/versus.png" alt="" /></span>
</div> </div>
<div class="col-6 col-12-medium imp-medium">
<span class="image fit "><img class="pull-right" src="/static/home/images/kofi.jpg" alt="" /></span>
</div> </div>
</div> </div>
</section> </section>
@ -149,7 +131,15 @@
</h2> </h2>
</header> </header>
<div id="odometer" class="odometer">{{ currencyTotal }}</div> <div style="
background:linear-gradient( 292.6deg, rgba(255,255,255,1) -44.1%, rgba(40,167,69,1) 100.5% );background-size: 100%;
background-repeat: repeat;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-background-clip: text;
-moz-text-fill-color: transparent;
font-size:70px;
">{{ currencyTotal }}</div>
</div> </div>
</div> </div>
@ -163,49 +153,34 @@
<h2>Други дейности по проекта</h2> <h2>Други дейности по проекта</h2>
</header> </header>
<div class="row gtr-150"> <div class="row gtr-150">
<div class="col-4 col-12-medium"> <div class="col-6 col-12-large">
<span class="image fit"><img src="images/logo_blue.png" alt="" /></span> <span class="image fit"><img src="images/logo_blue.png" alt="" /></span>
<h3>Информиране за ползите от рециклирането чрез:</h3> <h3>Популяризация:</h3>
<ul> <ul><br>
<li>информация на сайта на проекта/ на училището</li> <li>информация на сайта на проекта/ на училището</li><br>
<li>информация на страницата на училището в соц.мрежи</li> <li>информация на страницата на училището в соц.мрежи</li><br>
<li>презентации по класове</li> <li>презентации по класове</li><br>
<li>плакати на ключови места в училище</li> <li>плакати на ключови места в училище</li><br>
<li>стените на класните стаи в google classroom</li> <li>стените на класните стаи в google classroom</li><br>
<li>тик- ток видеа с образователна и забавна цел</li> <li>тик- ток видеа с образователна и забавна цел</li><br>
</ul> </ul>
<ul class="actions special"> <ul class="actions special">
<p></p> <p></p>
<!-- <li><a href="" class="button">More</a></li> --> <!-- <li><a href="" class="button">More</a></li> -->
</ul> </ul>
</div> </div>
<div class="col-4 col-12-medium"> <div class="col-6 col-12-large">
<span class="image fit"><img src="images/logo_green.png" alt="" /></span> <span class="image fit"><img src="images/logo_green.png" alt="" /></span>
<h3>Учениците ще бъдат мотивирани да участват чрез</h3> <h3>Защо да участвам? </h3><br>
<ul> <ul>
<li>награден фонд за участие в проекта: напитки, вафли, солети и голяма награда ваучер за пазаруване от голяма верига. Наградите се разпределят спрямо натрупаните точки в сайта. Те са лимитирани.</li> <li>награден фонд за участие в проекта: напитки, вафли, солети и голяма награда ваучер за пазаруване от голяма верига. Наградите се разпределят спрямо натрупаните точки в сайта. </li><br>
<li>Сертификат за участие в извънкласни дейности от името на училището при натрупани минимум 30 точки.</li> <li>Сертификат за участие в извънкласни дейности от името на училището при натрупани минимум 30 точки.</li><br>
<li>Извинение на закъснение при натрупани минимум 24 точки.</li> <li>Извинение на закъснение при натрупани минимум 24 точки.</li><br>
</ul> </ul>
<ul class="actions special"> <ul class="actions special">
<!-- <li><a href="https://steamcommunity.com/groups/NadeRampESports" class="button">More</a></li> -->
</ul>
</div>
<div class="col-4 col-12-medium">
<span class="image fit"><img src="images/logo_purple.png" alt="" /></span>
<h3>Допълнителни дейности:</h3>
<p></p>
<ul>
<li>конкурс за плакат за всички, изучаващи графичен дизайн. С всички плакати ще направим изложба, а с победителите ще направим информационната ни кампания в училище.</li>
<li>конкурс за изработване на хендмейд неща от рециклирани материали.</li>
<li>голямо парти в двора на училището на тема рециклиране в края на юни месец, когато ще се раздадат сертификатите и големите награди</li>
<li>образователна екскурзия</li>
<li>обществено полезен труд</li>
</ul>
<ul class="actions special">
<!-- <li><a href="#" class="button">More</a></li> -->
</ul> </ul>
</div> </div>
</div> </div>
</div> </div>
</section> </section>
@ -229,8 +204,8 @@
<ul class="icons"> <ul class="icons">
<!-- <li><a href="#" class="icon brands alt fa-twitter"><span class="label">Twitter</span></a></li> --> <!-- <li><a href="#" class="icon brands alt fa-twitter"><span class="label">Twitter</span></a></li> -->
<!-- <li><a href="#" class="icon brands alt fa-facebook-f"><span class="label">Facebook</span></a></li> --> <!-- <li><a href="#" class="icon brands alt fa-facebook-f"><span class="label">Facebook</span></a></li> -->
<li><a href="https://github.com/yamozha" class="icon brands alt fa-github"><span class="label">GitHub</span></a></li> <li><a href="https://github.com/yamozha"><img src="/static/home/images/github.png" width = 64 height=64 /></a></li>
<li><a href="mailto:boyan+revaluate@bobokara.com" class="icon solid alt fa-envelope"><span class="label">Email</span></a></li> <li><a href="mailto:boyan+revaluate@bobokara.com"><img src="/static/home/images/mail.png" width = 128 height=128 /></a></li>
</ul> </ul>
<ul class="copyright"> <ul class="copyright">
<li>&copy; edutech</li><li>Design: <a href="https://github.com/yamozha">yamozha</a> and <a href=https://github.com/vassdeniss>vassdeniss</a></li> <li>&copy; edutech</li><li>Design: <a href="https://github.com/yamozha">yamozha</a> and <a href=https://github.com/vassdeniss>vassdeniss</a></li>

View File

@ -1,192 +0,0 @@
<!-- templates/index.html -->
{% extends 'base.html' %}
{% load static %}
{% block optionalParams%}
<link rel="stylesheet" href="{% static home/css/main.css"% } />
<noscript><link rel="stylesheet" href="{% static home/css/noscript.css %}" /></noscript>
<script src="http://github.hubspot.com/odometer/odometer.js"></script>
<link rel="stylesheet" href="https://raw.githubusercontent.com/HubSpot/odometer/master/themes/odometer-theme-car.css" />
<style>
.odometer {
font-size: 50px;
}
</style>
{%endblock%}
{% block content %}
<body class="is-preload">
<!-- Header -->
<section id="header">
<div class="inner">
<img src="{% static home/images/white.png" width="200" height="200">
<h1><strong>reValuate</strong><br />
</h1>
{% if user.is_authenticated %}
<p>Здравейте, {{ user.username }}!</p>
<p>Проект на тема разделно събиране.<br> Разработено от ученици от <a href="https://edutech.bg">ЧПГ "Образователни технологии"</a></p>
<ul class="actions special">
<li><a href="/upload/" class="button scrolly">Качи!</a></li>
{% else %}
<p>Проект на тема разделно събиране.<br> Разработено от ученици от <a href="https://edutech.bg">ЧПГ "Образователни технологии"</a></p>
<ul class="actions special">
<li><a href="#one" class="button scrolly">Кои сме ние</a></li>
{% endif %}
</ul>
</div>
</section>
<!-- One -->
<section id="one" class="main style1">
<div class="container">
<div class="row gtr-150">
<div class="col-6 col-12-medium">
<header class="major">
<h2>Нашата цел и основни дейности<br /></h2>
</header><p>
Представяме Ви проект на тема “Как да създам култура за разделно събиране в учениците?”.<br><br>
Името, което избрахме за проекта, е “reValuate”, което носи смисъл на “да дам нова стойност на нещата”.<br><br>
Основната цел на проекта е запознаване с ползите от рециклирането на учениците и подтикването им да започнат да събират разделно боклук<span id="dots">...</span><span id="more"><br>
Основни дейности по проекта са поставянето на кошове за разделно събиране в училище и създаване на сайт, в който може да се качват видеа и снимки как ученици изхвърлят разделно боклуци. За всеки материал получават конкретен брой точки (ел.валута), която обменят в училище за награди. За една снимка получават 2 точки, а за едно видео 3 точки. Наградният фонд е спонсориран от учениците с 1лв. и ръководството на училището. Допълнителни точки се получават при споделяне в соц. мрежи.</span></p>
<button onclick="myFunction()" id="myBtn">Прочети повече</button>
<script>
function myFunction() {
var dots = document.getElementById("dots");
var moreText = document.getElementById("more");
var btnText = document.getElementById("myBtn");
if (dots.style.display === "none") {
dots.style.display = "inline";
btnText.innerHTML = "Read more";
moreText.style.display = "none";
} else {
dots.style.display = "none";
btnText.innerHTML = "Read less";
moreText.style.display = "inline";
}
}
</script>
<div class="col-6 col-12-medium imp-medium">
<span class="image fit"><img src="images/versus.png" alt="" /></span>
</div>
</div>
</div>
</section>
<!-- Two -->
<section id="two" class="main style2">
<div class="container">
<div class="row gtr-150">
<div class="col-6 col-12-medium">
<header class="major">
<h2>Раздадени точки:<br />
</h2>
</header>
<div id="odometer" class="odometer">{{ currencyTotal }}</div>
</div>
</div>
</div>
</section>
<!-- Three -->
<section id="three" class="main style1 special">
<div class="container">
<header class="major">
<h2>Други дейности по проекта</h2>
</header>
<div class="row gtr-150">
<div class="col-4 col-12-medium">
<span class="image fit"><img src="images/logo_blue.png" alt="" /></span>
<h3>Информиране за ползите от рециклирането чрез:</h3>
<ul>
<li>информация на сайта на проекта/ на училището</li>
<li>информация на страницата на училището в соц.мрежи</li>
<li>презентации по класове</li>
<li>плакати на ключови места в училище</li>
<li>стените на класните стаи в google classroom</li>
<li>тик- ток видеа с образователна и забавна цел</li>
</ul>
<ul class="actions special">
<p></p>
<!-- <li><a href="" class="button">More</a></li> -->
</ul>
</div>
<div class="col-4 col-12-medium">
<span class="image fit"><img src="images/logo_green.png" alt="" /></span>
<h3>Учениците ще бъдат мотивирани да участват чрез</h3>
<ul>
<li>награден фонд за участие в проекта: напитки, вафли, солети и голяма награда ваучер за пазаруване от голяма верига. Наградите се разпределят спрямо натрупаните точки в сайта. Те са лимитирани.</li>
<li>Сертификат за участие в извънкласни дейности от името на училището при натрупани минимум 30 точки.</li>
<li>Извинение на закъснение при натрупани минимум 24 точки.</li>
</ul>
<ul class="actions special">
<!-- <li><a href="https://steamcommunity.com/groups/NadeRampESports" class="button">More</a></li> -->
</ul>
</div>
<div class="col-4 col-12-medium">
<span class="image fit"><img src="images/logo_purple.png" alt="" /></span>
<h3>Допълнителни дейности:</h3>
<p></p>
<ul>
<li>конкурс за плакат за всички, изучаващи графичен дизайн. С всички плакати ще направим изложба, а с победителите ще направим информационната ни кампания в училище.</li>
<li>конкурс за изработване на хендмейд неща от рециклирани материали.</li>
<li>голямо парти в двора на училището на тема рециклиране в края на юни месец, когато ще се раздадат сертификатите и големите награди</li>
<li>образователна екскурзия</li>
<li>обществено полезен труд</li>
</ul>
<ul class="actions special">
<!-- <li><a href="#" class="button">More</a></li> -->
</ul>
</div>
</div>
</div>
</section>
<!-- Four -->
<section id="four" class="main style2 special">
<div class="container">
<header class="major">
<h2>Имате интерес?</h2>
</header>
<p>Регистрирайте се или влезте в акаунта си! </p>
<ul class="actions special">
<li><a href="#" class="button wide primary">Регистрирайте се!</a></li>
<li><a href="#" class="button wide">Влезте!</a></li>
</ul>
</div>
</section>
<!-- Footer -->
<section id="footer">
<ul class="icons">
<!-- <li><a href="#" class="icon brands alt fa-twitter"><span class="label">Twitter</span></a></li> -->
<!-- <li><a href="#" class="icon brands alt fa-facebook-f"><span class="label">Facebook</span></a></li> -->
<li><a href="https://github.com/yamozha" class="icon brands alt fa-github"><span class="label">GitHub</span></a></li>
<li><a href="mailto:boyan+revaluate@bobokara.com" class="icon solid alt fa-envelope"><span class="label">Email</span></a></li>
</ul>
<ul class="copyright">
<li>&copy; edutech</li><li>Design: <a href="https://github.com/yamozha">yamozha</a> and <a href=https://github.com/vassdeniss>vassdeniss</a></li>
</ul>
</section>
<!-- Scripts -->
<script src="{% static home/js/jquery.min.js"></script>
<script src="{% static home/js/jquery.scrolly.min.js"></script>
<script src="{% static home/js/browser.min.js"></script>
<script src="{% static home/js/breakpoints.min.js"></script>
<script src="{% static home/js/util.js"></script>
<script src="{% static home/js/main.js"></script>
</body>
{%endblock%}

View File

@ -1,7 +1,7 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% load static %} {% load static %}
{% block optionalParams %} <link rel="stylesheet" href="/static/home/css/upload.css"> {% endblock %} {% block optionalParams %} <link rel="stylesheet" href="{% static 'home/css/upload.css' %}"> {% endblock %}
{% block title %} Upload? {% endblock %} {% block title %} Upload? {% endblock %}

2
reValuate/uca-url.svg Normal file
View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="392" width="392" class="pyqrcode"><path transform="scale(8)" stroke="#000" class="pyqrline" d="M4 4.5h7m1 0h1m2 0h2m3 0h3m2 0h1m1 0h1m1 0h2m1 0h1m1 0h3m1 0h7m-41 1h1m5 0h1m1 0h3m2 0h2m2 0h2m1 0h2m1 0h1m1 0h3m4 0h1m1 0h1m5 0h1m-41 1h1m1 0h3m1 0h1m1 0h3m1 0h2m1 0h3m1 0h1m2 0h1m1 0h2m2 0h1m2 0h1m2 0h1m1 0h3m1 0h1m-41 1h1m1 0h3m1 0h1m2 0h1m2 0h2m1 0h1m3 0h1m1 0h1m4 0h1m3 0h1m3 0h1m1 0h3m1 0h1m-41 1h1m1 0h3m1 0h1m6 0h8m1 0h1m1 0h2m2 0h1m1 0h3m1 0h1m1 0h3m1 0h1m-41 1h1m5 0h1m1 0h2m1 0h4m1 0h2m1 0h1m1 0h1m1 0h1m2 0h2m2 0h1m1 0h1m1 0h1m5 0h1m-41 1h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7m-33 1h1m2 0h6m2 0h3m2 0h1m2 0h2m-27 1h3m1 0h1m1 0h1m1 0h1m6 0h6m4 0h4m1 0h4m2 0h3m-41 1h1m1 0h2m3 0h2m1 0h1m4 0h1m1 0h4m5 0h1m2 0h1m1 0h1m2 0h1m1 0h1m2 0h2m-41 1h1m2 0h1m2 0h4m4 0h2m1 0h3m3 0h3m1 0h1m1 0h1m5 0h3m-38 1h1m3 0h2m4 0h1m2 0h1m1 0h1m3 0h1m1 0h3m3 0h1m2 0h3m2 0h1m3 0h1m-40 1h2m2 0h1m1 0h1m4 0h2m1 0h1m2 0h2m3 0h3m1 0h4m1 0h1m1 0h1m3 0h2m-39 1h1m1 0h1m1 0h2m1 0h3m2 0h1m1 0h1m3 0h1m1 0h1m1 0h3m2 0h1m2 0h3m1 0h3m2 0h2m-40 1h1m1 0h1m2 0h1m1 0h3m1 0h1m1 0h6m1 0h2m2 0h1m1 0h2m3 0h2m1 0h1m1 0h1m-38 1h1m3 0h1m2 0h1m2 0h1m1 0h3m1 0h3m1 0h2m1 0h3m1 0h1m3 0h1m1 0h1m1 0h1m1 0h1m2 0h1m-41 1h2m1 0h2m1 0h1m1 0h3m3 0h3m3 0h2m3 0h3m1 0h1m2 0h2m1 0h1m2 0h3m-41 1h1m2 0h2m2 0h2m1 0h4m1 0h1m1 0h2m1 0h2m2 0h3m1 0h2m1 0h4m1 0h2m1 0h2m-41 1h1m1 0h3m1 0h3m1 0h1m1 0h3m3 0h1m1 0h1m5 0h4m2 0h2m3 0h1m-38 1h1m1 0h4m1 0h1m1 0h1m1 0h4m1 0h2m1 0h1m1 0h3m3 0h1m1 0h2m1 0h4m1 0h1m2 0h1m-41 1h2m1 0h4m2 0h1m2 0h4m1 0h10m1 0h1m9 0h1m1 0h1m-41 1h1m2 0h1m3 0h3m4 0h2m5 0h2m2 0h1m2 0h9m3 0h1m-41 1h1m1 0h1m3 0h2m3 0h1m1 0h2m4 0h2m1 0h2m3 0h4m4 0h1m1 0h1m1 0h1m-40 1h1m3 0h1m3 0h1m1 0h1m1 0h1m2 0h4m3 0h2m1 0h1m2 0h1m1 0h1m1 0h3m1 0h2m-38 1h1m1 0h3m1 0h3m2 0h3m1 0h1m1 0h1m2 0h3m5 0h4m1 0h1m1 0h1m2 0h1m-39 1h1m2 0h3m1 0h1m1 0h1m2 0h1m2 0h3m1 0h2m1 0h3m1 0h1m4 0h1m1 0h2m1 0h1m3 0h1m-41 1h2m3 0h3m3 0h2m1 0h2m1 0h1m2 0h4m3 0h1m1 0h2m3 0h2m2 0h1m-39 1h1m1 0h1m1 0h2m2 0h1m3 0h5m1 0h2m1 0h3m1 0h1m1 0h1m8 0h1m3 0h1m-38 1h4m1 0h2m2 0h3m2 0h1m2 0h2m2 0h1m1 0h2m1 0h1m2 0h1m2 0h5m-40 1h1m9 0h1m1 0h2m1 0h1m1 0h3m3 0h1m2 0h3m1 0h8m1 0h2m-41 1h1m1 0h3m1 0h1m1 0h3m3 0h1m3 0h1m1 0h4m5 0h2m1 0h1m1 0h1m1 0h1m-37 1h1m1 0h1m4 0h4m1 0h1m1 0h1m1 0h3m4 0h1m1 0h2m1 0h1m1 0h1m2 0h5m2 0h1m-41 1h1m4 0h2m5 0h1m1 0h1m3 0h1m1 0h2m1 0h2m7 0h5m1 0h1m1 0h1m-33 1h1m1 0h1m1 0h4m1 0h1m1 0h2m1 0h3m1 0h1m1 0h1m2 0h2m3 0h5m-41 1h7m2 0h1m2 0h2m1 0h2m1 0h2m2 0h1m4 0h2m1 0h3m1 0h1m1 0h1m1 0h2m-40 1h1m5 0h1m2 0h1m6 0h1m3 0h1m2 0h1m2 0h1m1 0h1m2 0h2m3 0h2m1 0h1m-40 1h1m1 0h3m1 0h1m1 0h7m2 0h3m2 0h1m3 0h1m1 0h1m1 0h1m1 0h8m-40 1h1m1 0h3m1 0h1m1 0h1m2 0h2m1 0h2m2 0h1m2 0h1m3 0h2m2 0h1m2 0h2m3 0h2m1 0h1m-41 1h1m1 0h3m1 0h1m1 0h3m1 0h2m1 0h1m2 0h1m3 0h2m1 0h4m1 0h2m2 0h1m1 0h1m1 0h2m-40 1h1m5 0h1m5 0h1m1 0h1m2 0h3m1 0h2m1 0h2m1 0h2m1 0h1m1 0h2m1 0h1m1 0h1m1 0h1m-40 1h7m2 0h2m8 0h2m1 0h1m1 0h1m1 0h6m3 0h2m1 0h1"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -6,10 +6,10 @@ class ImageForm(forms.ModelForm):
"""Form for the image model""" """Form for the image model"""
class Meta: class Meta:
model = Image model = Image
fields = ('title', 'image') fields = ('image',)
class VideoForm(forms.ModelForm): class VideoForm(forms.ModelForm):
"""Form for the image model""" """Form for the image model"""
class Meta: class Meta:
model = Videos model = Videos
fields = ('title', 'video') fields = ('video',)

View File

@ -0,0 +1,39 @@
# Generated by Django 3.1.6 on 2021-03-07 14:14
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import upload.models
import upload.validators
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Videos',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('video', models.FileField(upload_to=upload.models.videosPath, validators=[upload.validators.videoValidate])),
('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name': 'video',
'verbose_name_plural': 'videos',
},
),
migrations.CreateModel(
name='Image',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('image', models.ImageField(upload_to=upload.models.imagesPath, validators=[upload.validators.imageValidate])),
('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
]

View File

@ -0,0 +1,22 @@
# Generated by Django 3.1.6 on 2021-03-11 00:12
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('upload', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Balance',
fields=[
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='auth.user')),
('balanceValue', models.IntegerField(default=0)),
],
),
]

View File

@ -0,0 +1,16 @@
# Generated by Django 3.1.6 on 2021-03-11 00:13
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('upload', '0002_balance'),
]
operations = [
migrations.DeleteModel(
name='Balance',
),
]

View File

View File

@ -2,6 +2,7 @@ from django.db import models
from .validators import videoValidate, imageValidate from .validators import videoValidate, imageValidate
from django.contrib.auth.models import User from django.contrib.auth.models import User
# def user_directory._path(instance, filename): # def user_directory._path(instance, filename):
# print(request.user.id) # print(request.user.id)
# return 'user_{0}/{1}'.format(instance.user.id, filename) # return 'user_{0}/{1}'.format(instance.user.id, filename)
@ -18,20 +19,20 @@ def videosPath(instance,filename):
class Image(models.Model): class Image(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True) user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True)
title = models.CharField(max_length=200) # title = models.CharField(max_length=200)
image = models.ImageField(upload_to=imagesPath,validators=[imageValidate]) image = models.ImageField(upload_to=imagesPath,validators=[imageValidate])
def __str__(self): # def __str__(self):
return self.title # return self.title
class Videos(models.Model): class Videos(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True) user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True)
title = models.CharField(max_length=100) # title = models.CharField(max_length=100)
video = models.FileField(upload_to=videosPath, validators=[videoValidate]) video = models.FileField(upload_to=videosPath, validators=[videoValidate])
class Meta: class Meta:
verbose_name = 'video' verbose_name = 'video'
verbose_name_plural = 'videos' verbose_name_plural = 'videos'
def __str__(self): # def __str__(self):
return self.title # return self.title

View File

@ -0,0 +1,25 @@
# Generated by Django 3.1.6 on 2021-03-07 13:44
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('users', '0004_auto_20210220_2143'),
]
operations = [
migrations.RemoveField(
model_name='balance',
name='id',
),
migrations.AlterField(
model_name='balance',
name='user',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='auth.user'),
),
]

View File

@ -0,0 +1,16 @@
# Generated by Django 3.1.6 on 2021-03-11 00:12
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('users', '0005_auto_20210307_1544'),
]
operations = [
migrations.DeleteModel(
name='Balance',
),
]

View File

@ -0,0 +1,24 @@
# Generated by Django 3.1.6 on 2021-03-11 00:13
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('users', '0006_delete_balance'),
]
operations = [
migrations.CreateModel(
name='Balance',
fields=[
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='auth.user')),
('balanceValue', models.IntegerField(default=0)),
],
),
]

View File

@ -3,9 +3,5 @@ from django.contrib.auth.models import User
class Balance(models.Model): class Balance(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True) user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
balanceValue = models.IntegerField(default=0) balanceValue = models.IntegerField(default=0)
def balanceReturn(self):
print(f"Pederas 123 {self.balance}")
return self.balance

View File

@ -2,7 +2,9 @@ from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.views import generic from django.views import generic
from .models import Balance from .models import Balance
from django.shortcuts import render, redirect from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.models import User
from django.contrib import messages
# need to make oauth facebook login # need to make oauth facebook login
class SignUpView(generic.CreateView): class SignUpView(generic.CreateView):
@ -11,17 +13,51 @@ class SignUpView(generic.CreateView):
template_name = 'registration/signup.html' template_name = 'registration/signup.html'
def addToBalance(request): def addToBalance(request):
testVar = 5 balAdd = None
balAdd = Balance.objects.create(balanceValue=testVar, user=request.user.id) if request.method == "POST":
tokens = request.POST["tokens"]
tokens = int(tokens)
user_given = request.POST["user_instance"]
try:
user_instance = Balance.objects.get(user=user_given)
sum_balance = tokens + user_instance.balanceValue
balAdd = Balance(balanceValue=sum_balance, user_id=user_instance)
# balAdd = balAdd() + testVar
balAdd.save() balAdd.save()
print(balAdd) print(balAdd)
return render(request, "addBalance.html", {"message": f"Added balance to user {user_given}"})
except Balance.DoesNotExist:
balAdd = Balance(balanceValue=tokens, user_id=user_given)
balAdd.save()
return render(request, "addBalance.html", {"message": f"Created and added tokens to {user_given}'s token account"})
else:
return render(request,"addBalance.html")
def removeBalance(request):
balRem = None
if request.method == "POST":
tokens = request.POST["tokens"]
tokens = int(tokens)
user_given = request.POST["user_instance"]
try:
user_instance = Balance.objects.get(user=user_given)
sum_balance = user_instance.balanceValue - tokens
balAdd = Balance(balanceValue=sum_balance, user_id=user_instance)
balAdd.save()
print(balAdd)
except Balance.DoesNotExist:
messages.error(request, f"User{user_given} doesn't have balance")
return render(request,"getBalance.html", {"userBalance":balAdd}) return render(request,"getBalance.html", {"userBalance":balAdd})
else:
return render(request,"removeBalance.html")
def getBalance(request): def getBalance(request):
balObject = Balance.objects.filter(user=request.user.id) balObject = Balance.objects.filter(user=request.user.id)
print(dir(balObject)) print(dir(balObject))
userBalance = balObject.values userBalance = balObject.values("balanceValue")
# userBalance = userBalance[0]["balanceValue"]
return render(request,"getBalance.html", {"userBalance":userBalance} ) return render(request,"getBalance.html", {"userBalance":userBalance} )

View File

@ -136,3 +136,4 @@ EMAIL_FILE_PATH = str(BASE_DIR.joinpath('sent_emails'))
MEDIA_URL = '/media/' MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

2
reValuate/yeet Normal file
View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" height="49" width="49" class="pyqrcode"><path stroke="#000" class="pyqrline" d="M4 4.5h7m1 0h1m2 0h2m3 0h3m2 0h1m1 0h1m1 0h2m1 0h1m1 0h3m1 0h7m-41 1h1m5 0h1m1 0h3m2 0h2m2 0h2m1 0h2m1 0h1m1 0h3m4 0h1m1 0h1m5 0h1m-41 1h1m1 0h3m1 0h1m1 0h3m1 0h2m1 0h3m1 0h1m2 0h1m1 0h2m2 0h1m2 0h1m2 0h1m1 0h3m1 0h1m-41 1h1m1 0h3m1 0h1m2 0h1m2 0h2m1 0h1m3 0h1m1 0h1m4 0h1m3 0h1m3 0h1m1 0h3m1 0h1m-41 1h1m1 0h3m1 0h1m6 0h8m1 0h1m1 0h2m2 0h1m1 0h3m1 0h1m1 0h3m1 0h1m-41 1h1m5 0h1m1 0h2m1 0h4m1 0h2m1 0h1m1 0h1m1 0h1m2 0h2m2 0h1m1 0h1m1 0h1m5 0h1m-41 1h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7m-33 1h1m2 0h6m2 0h3m2 0h1m2 0h2m-27 1h3m1 0h1m1 0h1m1 0h1m6 0h6m4 0h4m1 0h4m2 0h3m-41 1h1m1 0h2m3 0h2m1 0h1m4 0h1m1 0h4m5 0h1m2 0h1m1 0h1m2 0h1m1 0h1m2 0h2m-41 1h1m2 0h1m2 0h4m4 0h2m1 0h3m3 0h3m1 0h1m1 0h1m5 0h3m-38 1h1m3 0h2m4 0h1m2 0h1m1 0h1m3 0h1m1 0h3m3 0h1m2 0h3m2 0h1m3 0h1m-40 1h2m2 0h1m1 0h1m4 0h2m1 0h1m2 0h2m3 0h3m1 0h4m1 0h1m1 0h1m3 0h2m-39 1h1m1 0h1m1 0h2m1 0h3m2 0h1m1 0h1m3 0h1m1 0h1m1 0h3m2 0h1m2 0h3m1 0h3m2 0h2m-40 1h1m1 0h1m2 0h1m1 0h3m1 0h1m1 0h6m1 0h2m2 0h1m1 0h2m3 0h2m1 0h1m1 0h1m-38 1h1m3 0h1m2 0h1m2 0h1m1 0h3m1 0h3m1 0h2m1 0h3m1 0h1m3 0h1m1 0h1m1 0h1m1 0h1m2 0h1m-41 1h2m1 0h2m1 0h1m1 0h3m3 0h3m3 0h2m3 0h3m1 0h1m2 0h2m1 0h1m2 0h3m-41 1h1m2 0h2m2 0h2m1 0h4m1 0h1m1 0h2m1 0h2m2 0h3m1 0h2m1 0h4m1 0h2m1 0h2m-41 1h1m1 0h3m1 0h3m1 0h1m1 0h3m3 0h1m1 0h1m5 0h4m2 0h2m3 0h1m-38 1h1m1 0h4m1 0h1m1 0h1m1 0h4m1 0h2m1 0h1m1 0h3m3 0h1m1 0h2m1 0h4m1 0h1m2 0h1m-41 1h2m1 0h4m2 0h1m2 0h4m1 0h10m1 0h1m9 0h1m1 0h1m-41 1h1m2 0h1m3 0h3m4 0h2m5 0h2m2 0h1m2 0h9m3 0h1m-41 1h1m1 0h1m3 0h2m3 0h1m1 0h2m4 0h2m1 0h2m3 0h4m4 0h1m1 0h1m1 0h1m-40 1h1m3 0h1m3 0h1m1 0h1m1 0h1m2 0h4m3 0h2m1 0h1m2 0h1m1 0h1m1 0h3m1 0h2m-38 1h1m1 0h3m1 0h3m2 0h3m1 0h1m1 0h1m2 0h3m5 0h4m1 0h1m1 0h1m2 0h1m-39 1h1m2 0h3m1 0h1m1 0h1m2 0h1m2 0h3m1 0h2m1 0h3m1 0h1m4 0h1m1 0h2m1 0h1m3 0h1m-41 1h2m3 0h3m3 0h2m1 0h2m1 0h1m2 0h4m3 0h1m1 0h2m3 0h2m2 0h1m-39 1h1m1 0h1m1 0h2m2 0h1m3 0h5m1 0h2m1 0h3m1 0h1m1 0h1m8 0h1m3 0h1m-38 1h4m1 0h2m2 0h3m2 0h1m2 0h2m2 0h1m1 0h2m1 0h1m2 0h1m2 0h5m-40 1h1m9 0h1m1 0h2m1 0h1m1 0h3m3 0h1m2 0h3m1 0h8m1 0h2m-41 1h1m1 0h3m1 0h1m1 0h3m3 0h1m3 0h1m1 0h4m5 0h2m1 0h1m1 0h1m1 0h1m-37 1h1m1 0h1m4 0h4m1 0h1m1 0h1m1 0h3m4 0h1m1 0h2m1 0h1m1 0h1m2 0h5m2 0h1m-41 1h1m4 0h2m5 0h1m1 0h1m3 0h1m1 0h2m1 0h2m7 0h5m1 0h1m1 0h1m-33 1h1m1 0h1m1 0h4m1 0h1m1 0h2m1 0h3m1 0h1m1 0h1m2 0h2m3 0h5m-41 1h7m2 0h1m2 0h2m1 0h2m1 0h2m2 0h1m4 0h2m1 0h3m1 0h1m1 0h1m1 0h2m-40 1h1m5 0h1m2 0h1m6 0h1m3 0h1m2 0h1m2 0h1m1 0h1m2 0h2m3 0h2m1 0h1m-40 1h1m1 0h3m1 0h1m1 0h7m2 0h3m2 0h1m3 0h1m1 0h1m1 0h1m1 0h8m-40 1h1m1 0h3m1 0h1m1 0h1m2 0h2m1 0h2m2 0h1m2 0h1m3 0h2m2 0h1m2 0h2m3 0h2m1 0h1m-41 1h1m1 0h3m1 0h1m1 0h3m1 0h2m1 0h1m2 0h1m3 0h2m1 0h4m1 0h2m2 0h1m1 0h1m1 0h2m-40 1h1m5 0h1m5 0h1m1 0h1m2 0h3m1 0h2m1 0h2m1 0h2m1 0h1m1 0h2m1 0h1m1 0h1m1 0h1m-40 1h7m2 0h2m8 0h2m1 0h1m1 0h1m1 0h6m3 0h2m1 0h1"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB