added scary message for the admins, added transactions, overall @vassdeniss needs to fix the web design and we're set

This commit is contained in:
Yamozha 2021-03-16 14:40:49 +02:00
parent d007ab0997
commit 786a4e4902
31 changed files with 282 additions and 75 deletions

Binary file not shown.

View File

@ -10,38 +10,39 @@ def homePage(request):
Cashier = False
Processor = False
balObject = Balance.objects.filter(user=request.user.id)
userBalance = balObject.values("balanceValue")
try:
balObject = Balance.objects.filter(user=request.user.id)
userBalance = balObject.values("balanceValue")
userQR = f"Name = {request.user.username}, Date Joined = {request.user.date_joined.date()}, ID = {request.user.id}, Balance = {userBalance[0]['balanceValue']}"
if request.user.groups.filter(name='Cashier').exists():
Cashier = True
elif request.user.groups.filter(name='Processor').exists():
Processor = True
else:
pass
a = Balance.objects.all()
userBalance = userBalance[0]['balanceValue']
except IndexError:
userBalance = None
if request.user.groups.filter(name='Cashier').exists():
Cashier = True
elif request.user.groups.filter(name='Processor').exists():
Processor = True
else:
pass
if request.user.is_authenticated:
userQR = f"Name = {request.user.username}, Date Joined = {request.user.date_joined.date()}, ID = {request.user.id}, isCashier={Cashier}, isProcessor={Processor}, Balance = {userBalance}"
else:
userQR=None
a = Balance.objects.all()
for user in a:
all_balance.append(user.balanceValue)
print(f"{all_balance}")
limited_coins = settings.ALL_COINS - sum(all_balance)
context = {
"isCashier": Cashier,
"isProcessor": Processor,
"userQR":userQR,
"fullbalance": limited_coins,
"currencyTotal": sum(all_balance),
"userBalance": userBalance[0]["balanceValue"]
}
for user in a:
all_balance.append(user.balanceValue)
print(f"{all_balance}")
limited_coins = settings.ALL_COINS - sum(all_balance)
context = {
"isCashier": Cashier,
"isProcessor": Processor,
"userQR":userQR,
"fullbalance": limited_coins,
"currencyTotal": sum(all_balance),
"userBalance": userBalance
}
return render(request, "home.html", context)
return render(request, "home.html", context)
except Exception as e:
context = {
"currencyTotal":e
}
return render(request, "home.html", context)

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 KiB

View File

@ -69,7 +69,7 @@
{% else %}
<h1>Congratulations, there is no work left</h1>
<h1>Няма повече работа!</h1>
<div class="choiceButtons">
<h1 class="emoji">🎉</h1>
<h1 class="emoji">🥳</h1>

View File

@ -29,16 +29,11 @@
<ul class="navbar-nav">
<li class="nav-item d-none d-md-block" >
{% if user.is_authenticated %}
<a class="nav-link" href="/upload/">Качи</a>
{% endif %}
</li>
<li class="nav-item d-none d-md-block" >
{% if user.is_superuser %}
<a class="nav-link" href="/admin/">Админ</a>
{% endif %}
</li>

View File

@ -2,12 +2,72 @@
{% extends 'base.html' %}
{% block title %}Home{% endblock %}
{% block optionalParams%}
<style>
.checkmark__circle {
stroke-dasharray: 166;
stroke-dashoffset: 166;
stroke-width: 2;
stroke-miterlimit: 10;
stroke: #7ac142;
fill: none;
animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
}
.checkmark {
width: 56px;
height: 56px;
border-radius: 50%;
display: block;
stroke-width: 2;
stroke: #fff;
stroke-miterlimit: 10;
margin: 10% auto;
box-shadow: inset 0px 0px 0px #7ac142;
animation: fill .4s ease-in-out .4s forwards, scale .3s ease-in-out .9s both;
}
.checkmark__check {
transform-origin: 50% 50%;
stroke-dasharray: 48;
stroke-dashoffset: 48;
animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards;
}
@keyframes stroke {
100% {
stroke-dashoffset: 0;
}
}
@keyframes scale {
0%, 100% {
transform: none;
}
50% {
transform: scale3d(1.1, 1.1, 1);
}
}
@keyframes fill {
100% {
box-shadow: inset 0px 0px 0px 30px #7ac142;
}
</style>
{% endblock %}
{% block content %}
<div class="centered" style="text-align: center;">
{% if user.is_authenticated %}
Hi {{ user.username }}!
{{ userBalance}}
{% if userBalance %}
<h1 style="color:#7ac142;">Транзакцията е записана успешно!</h1>
Кликни <a style="color:#7ac142;"href="/remove_balance/">тук</a>, ако искаш да запишеш нова!
<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"/>
<path class="checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/>
</svg>
{% endif %}
<div>
{{ qr_code }}
</div>
@ -15,5 +75,5 @@
<p>You are not logged in</p>
<a href="{% url 'login' %}">Log In</a>
{% endif %}
</div>
{% endblock %}

View File

@ -37,8 +37,8 @@
{% if isProcessor %}
<li class="nav-item d-none d-md-block" >
<a class="nav-link" href="/admin/">Админ</a>
</li>
<a class="nav-link" href="/admin/">Админ</a>
</li>
{% endif %}
{% if isCashier %}
@ -101,11 +101,11 @@
<img src="static/home/images/white.png" width="200" height="200">
<h1><strong>reValuate</strong><br />
</h1>
</h1><br>
{% if user.is_authenticated %}
<p>Здравей, {{ user.username }}!</p>
<h2>Здравей, {{ user.username }}!</h2>
{% if userBalance %}
<br><p>Баланса ти е: {{ userBalance }} reCoins</p>
<br><h2 >Балансът ти е: <span style="color:rgb(0, 85, 19);">{{ userBalance }}</span> reCoins</h2>
{% endif %}
<ul class="actions special">
<li><a href="/upload/" class="button scrolly">Качи!</a></li>
@ -175,28 +175,12 @@
<section id="three" class="main style1 special">
<div class="container">
<header class="major">
<h2>Други дейности по проекта</h2>
<h2>Защо да участвам? </h2>
</header>
<div class="row gtr-150">
<div class="col-6 col-12-large">
<span class="image fit"><img src="images/logo_blue.png" alt="" /></span>
<h3>Популяризация:</h3>
<ul><br>
<li>информация на сайта на проекта/ на училището</li><br>
<li>информация на страницата на училището в соц.мрежи</li><br>
<li>презентации по класове</li><br>
<li>плакати на ключови места в училище</li><br>
<li>стените на класните стаи в google classroom</li><br>
<li>тик- ток видеа с образователна и забавна цел</li><br>
</ul>
<ul class="actions special">
<p></p>
<!-- <li><a href="" class="button">More</a></li> -->
</ul>
</div>
<div class="col-6 col-12-large">
<div style="text-align: center;">
<span class="image fit"><img src="images/logo_green.png" alt="" /></span>
<h3>Защо да участвам? </h3><br>
<ul>
<li>награден фонд за участие в проекта: напитки, вафли, солети и голяма награда ваучер за пазаруване от голяма верига. Наградите се разпределят спрямо натрупаните точки в сайта. </li><br>
<li>Сертификат за участие в извънкласни дейности от името на училището при натрупани минимум 30 точки.</li><br>

View File

@ -8,13 +8,15 @@
<p>Hello, {{ user.username }} !</p><br>
<p>Здравей, {{ user.username }} !</p><br>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input name="user_instance" id="user_instance" placeholder="Enter userID here"><br><br>
<input name="user_instance" id="user_instance" placeholder="1(userID)"><br><br>
<input name="tokens" id="tokens" placeholder="123 (reCoins)"><br><br>
<input name="item" id="item" placeholder="e.g. Вафла"><br><br>
<input name="tokens" id="tokens" placeholder="Enter number of tokens to remove"><br><br>
<button type="submit" class="Buttons">Upload</button>
</form>

View File

@ -54,9 +54,15 @@
</style>
{% endblock %}
{% block content %}
{% if warning %}
<div class="alert alert alert-danger" role="alert">Ако злоупотребяваш с правата си за сайта ще бъдеш баннат. Big Brother is watching you.</div>
{% endif %}
<div class="centered" style="text-align: center;">
{% if user.is_authenticated %}
{% if img_obj %}

View File

@ -0,0 +1,18 @@
# Generated by Django 3.1.6 on 2021-03-16 12:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('upload', '0023_auto_20210315_1901'),
]
operations = [
migrations.AddField(
model_name='media',
name='managed_by',
field=models.CharField(blank=True, default=None, max_length=30, null=True),
),
]

View File

@ -26,6 +26,7 @@ class Media(models.Model):
reason = models.CharField(max_length=120)
date = models.DateField(default=date.today)
time = models.TimeField(auto_now=True)
managed_by = models.CharField(max_length=30, blank=True, null=True, default=None, )
class Meta:

View File

@ -25,6 +25,11 @@ def uploadContent(request):
def imageUpload(request):
"""Process images uploaded by users"""
if request.user.groups.filter(name='Processor').exists():
warning = True
else:
warning = False
print(request.user.id)
if request.method == 'POST':
@ -46,7 +51,7 @@ def imageUpload(request):
video_obj.user = request.user
video_obj.is_video = True
form.save()
return render(request, 'uploadImage.html', {'form': form, 'img_obj': video_obj})
return render(request, 'uploadImage.html', {'form': form, 'img_obj': video_obj, 'warning':warning})
else:
raise Exception("What")
else:
@ -54,7 +59,7 @@ def imageUpload(request):
else:
form = ImageForm()
return render(request, 'uploadImage.html', {'form': form})
return render(request, 'uploadImage.html', {'form': form, 'warning':warning})
# def videoUpload(request):
# """Process videos uploaded by users"""

View File

@ -0,0 +1,24 @@
# Generated by Django 3.1.6 on 2021-03-16 12:06
import datetime
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('users', '0007_balance'),
]
operations = [
migrations.CreateModel(
name='Transaction',
fields=[
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='auth.user')),
('date', models.DateField(default=datetime.date.today)),
('item', models.CharField(blank=True, default=None, max_length=30, null=True)),
],
),
]

View File

@ -0,0 +1,23 @@
# Generated by Django 3.1.6 on 2021-03-16 12:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0008_transaction'),
]
operations = [
migrations.RenameField(
model_name='transaction',
old_name='user',
new_name='client',
),
migrations.AddField(
model_name='transaction',
name='cashier',
field=models.CharField(blank=True, default=None, max_length=30, null=True),
),
]

View File

@ -0,0 +1,27 @@
# Generated by Django 3.1.6 on 2021-03-16 12:15
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', '0009_auto_20210316_1408'),
]
operations = [
migrations.AlterField(
model_name='transaction',
name='cashier',
field=models.OneToOneField(default=None, on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='auth.user'),
preserve_default=False,
),
migrations.AlterField(
model_name='transaction',
name='client',
field=models.CharField(blank=True, default=None, max_length=30, null=True),
),
]

View File

@ -0,0 +1,21 @@
# Generated by Django 3.1.6 on 2021-03-16 12:20
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', '0010_auto_20210316_1415'),
]
operations = [
migrations.AlterField(
model_name='transaction',
name='cashier',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL),
),
]

View File

@ -0,0 +1,27 @@
# Generated by Django 3.1.6 on 2021-03-16 12:21
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', '0011_auto_20210316_1420'),
]
operations = [
migrations.AddField(
model_name='transaction',
name='id',
field=models.AutoField(auto_created=True, default=None, primary_key=True, serialize=False, verbose_name='ID'),
preserve_default=False,
),
migrations.AlterField(
model_name='transaction',
name='cashier',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
]

View File

@ -1,7 +1,14 @@
from django.db import models
from django.contrib.auth.models import User
from datetime import date
class Balance(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
balanceValue = models.IntegerField(default=0)
class Transaction(models.Model):
cashier = models.ForeignKey(User, on_delete=models.CASCADE)
client = models.CharField(max_length=30, blank=True, null=True, default=None, )
date = models.DateField(default=date.today)
item = models.CharField(max_length=30, blank=True, null=True, default=None, )

View File

@ -1,7 +1,7 @@
from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy
from django.views import generic
from .models import Balance
from .models import Balance, Transaction
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.models import User
from django.contrib import messages
@ -30,7 +30,7 @@ def addToBalance(request):
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 = Balance(balanceValue=kens, user_id=user_given)
balAdd.save()
return render(request, "addBalance.html", {"message": f"Created and added tokens to {user_given}'s token account"})
@ -45,7 +45,10 @@ def removeBalance(request):
tokens = request.POST["tokens"]
tokens = int(tokens) * -1
user_given = request.POST["user_instance"]
item = request.POST["item"]
user_taken = request.user
try:
transAdd = Transaction.objects.create(client=user_given, cashier=user_taken, item=item)
user_instance = Balance.objects.get(user=user_given)
sum_balance = user_instance.balanceValue + tokens
balRem = Balance(balanceValue=sum_balance, user_id=user_instance)
@ -92,6 +95,8 @@ def adminView(request):
imageObj = Media.objects.get(image=latestPicture, user_id=userId)
imageObj.tokenized = True
imageObj.managed_by = request.user.username
imageObj.save()
return redirect("/admin/")
@ -99,6 +104,7 @@ def adminView(request):
imageObj = Media.objects.get(image=latestPicture, user_id=userId)
imageObj.tokenized=False
imageObj.reason="Invalid"
imageObj.managed_by = request.user.username
imageObj.save()
return render(request, "adminView.html", {"time":time, "date":date,"image":latestPicture, "userId":userId, "username":username, "is_video":is_video})