88 Commits

Author SHA1 Message Date
fe7d2101e2 fuck this dumbass site 2021-09-10 19:28:50 +03:00
d36405c0a8 Merge branch 'specto-fixes' into main 2021-09-10 17:35:42 +03:00
8d928873a6 fixed up some minor details 2021-09-10 17:26:17 +03:00
0ed9c2daed changed the whole idea around the media viewing 2021-08-31 17:53:33 +03:00
39700082e1 Use aggregation for all_balance 2021-08-31 14:36:24 +03:00
53c35377c6 Enable build-in django admin at /administrator 2021-08-31 14:35:47 +03:00
2e4f3efe7d Format CSS 2021-08-31 13:27:38 +03:00
a6241563c7 Add editorconfig 2021-08-28 12:21:49 +03:00
88d8de76ec Templates basic formatting 2021-08-28 00:41:10 +03:00
a1e8c902e2 CSS basic reformat 2021-08-28 00:24:31 +03:00
4a279e0161 Remove compiled bytecode from repo 2021-08-27 23:56:44 +03:00
31f5eaa66b Getting ready for release!
- fixed up the design
- started work on api
- fixed some design issues
gallery coming soon!
2021-08-27 20:40:01 +03:00
bfbf4fe5f7 Fixed up the API a lil bit 2021-08-14 14:17:11 +00:00
bb221f7ee0 remade the leaderboard, changed up some of the base html, menu will now always show up 2021-07-31 05:00:06 +03:00
46256d328e small adjustments 2021-07-21 00:16:44 +03:00
9c4b37d775 made leaderboard 2021-07-12 16:56:06 +03:00
5cf410c03e test commit 2021-07-12 16:01:15 +03:00
6170cf9d05 added leaderboard and tweaked a bunch of other things 2021-07-12 15:59:31 +03:00
4a1ab4bed5 began redesigning implementation and deframeworkifying 2021-07-12 04:17:38 +03:00
2687233eda added discord and some other stuff 2021-07-05 21:14:30 +00:00
cbe88e2ec6 twiddled with the front end a bit, a lot more work to do 2021-06-30 03:43:13 +03:00
ce7bfa15a4 readme update 2021-06-30 02:29:51 +03:00
31479d2fc5 readme update 2021-06-30 02:29:24 +03:00
54635a9f53 readme update 2021-06-30 02:26:12 +03:00
c6cdff7e74 readme 2021-06-30 02:04:11 +03:00
e48ebb4a31 cleaned up + readme update 2021-06-30 02:03:35 +03:00
a3587a27b8 cleaned up 2021-06-30 01:58:43 +03:00
7dbab97c06 updated requirements 2021-06-30 01:55:33 +03:00
5eab487307 added the 2 points photo, 3 points video thing 2021-06-04 11:16:14 +03:00
d43a2d4cf2 added some little details on the api 2021-04-02 10:34:24 +03:00
0e40040729 You can now log in to the website by sending a POST request to /api_login/, and then using that token while getting /api/balance or /api/images 2021-04-01 01:43:46 +03:00
838a5d58d6 api creation 2021-03-29 16:14:44 +03:00
7e87b12812 Update favicon.png 2021-03-19 00:57:03 +02:00
696747d0e9 Update favicon.png 2021-03-19 00:55:37 +02:00
d13c9bd178 Update favicon.png 2021-03-19 00:52:10 +02:00
2239a03c76 Create favicon.png 2021-03-19 00:45:23 +02:00
c9734edd87 eee 2021-03-19 00:31:04 +02:00
7fe675b3bd eeee 2021-03-19 00:22:46 +02:00
009e6ba203 added images 2021-03-19 00:19:53 +02:00
8e34d55972 Struggling to make website mobile-friendly 2021-03-17 00:18:52 +02:00
786a4e4902 added scary message for the admins, added transactions, overall @vassdeniss needs to fix the web design and we're set 2021-03-16 14:40:49 +02:00
d007ab0997 added groups will add a small file containing useful commands for adding users in it 2021-03-15 23:59:19 +02:00
1913e45328 final TOUCHESSS 2021-03-15 20:16:14 +02:00
9de29a0ab4 removed images used for testing 2021-03-15 04:24:45 +02:00
2a8fe5c3f5 yeeeee 2021-03-15 04:24:13 +02:00
b74f05ba6a yeet 2021-03-13 01:13:14 +02:00
a33a7898a3 yeet 2021-03-13 01:12:30 +02:00
2ebe58c511 yeet 2021-03-13 01:10:59 +02:00
ef87f0ec24 yeet 2021-03-13 01:09:12 +02:00
b9d91ad7dc replaced old tweaks 2021-03-13 00:57:30 +02:00
d5a3d4b3c8 resolving... 2021-03-13 00:42:45 +02:00
dd32fcb04b progress section shows status of the picture(approved or not), admin works fully 2021-03-13 00:40:10 +02:00
aedbb6be6e Delete reValuate/media/images/1 directory 2021-03-11 19:24:08 +02:00
c2afe6c93e Merge branch 'main' of github.com:yamozha/reValuate 2021-03-11 19:23:29 +02:00
2d467f1a12 small tweak for balance adding 2021-03-11 19:23:16 +02:00
c1d7b01e4e need to fix automatical true assignment(you automatically get approved) 2021-03-11 19:19:48 +02:00
4ccf93f447 Delete index.html 2021-03-11 03:43:07 +02:00
94ea7ecce9 removed some junk 2021-03-11 03:41:56 +02:00
ac61698d51 Almost done! Only the removal of points and the 'shop' system left.(and some front end + the admin process) 2021-03-11 03:41:08 +02:00
06f6f0d473 god damn! it's starting to look like a website 2021-02-28 04:41:31 +02:00
00748020be саае 2021-02-28 03:33:28 +02:00
4bea179ad4 some front end made by @vassdeniss implemented by me 2021-02-27 20:31:53 +02:00
c851efa366 almost there 2021-02-27 19:38:00 +02:00
3e37c1ca20 Added the primal mechanic in which user balance exists(VERY ROUGH) 2021-02-20 21:45:24 +02:00
83fecc9d6f removed obsolete folder 2021-02-20 20:11:30 +02:00
ab35c01e17 Delete .all-contributorsrc 2021-02-19 15:49:27 +02:00
ddfd4d0d5c Update README.md 2021-02-19 15:48:20 +02:00
a0437cfba1 Update README.md 2021-02-19 15:47:10 +02:00
51ce05ce71 Merge pull request #6 from yamozha/all-contributors/add-pepelen21
docs: add pepelen21 as a contributor
2021-02-19 15:45:08 +02:00
8e3ee3c6c5 docs: update .all-contributorsrc [skip ci] 2021-02-19 13:44:56 +00:00
f81dfd6b45 docs: update README.md [skip ci] 2021-02-19 13:44:55 +00:00
cad4180301 Update README.md 2021-02-19 15:43:43 +02:00
4590e715b1 Update README.md 2021-02-19 15:43:09 +02:00
01d0767a31 Update README.md 2021-02-19 15:42:10 +02:00
bac4803fb4 Update README.md 2021-02-19 15:41:45 +02:00
9524a239d8 Merge pull request #4 from yamozha/all-contributors/add-vassdeniss
docs: add vassdeniss as a contributor
2021-02-19 15:40:32 +02:00
a25538a5fe docs: update .all-contributorsrc [skip ci] 2021-02-19 13:40:09 +00:00
7139c12617 docs: update README.md [skip ci] 2021-02-19 13:40:08 +00:00
3d92673b9f Update README.md 2021-02-19 15:39:18 +02:00
8dc53754f5 Merge pull request #3 from yamozha/all-contributors/add-vassdeniss
docs: add vassdeniss as a contributor
2021-02-19 15:38:59 +02:00
49a317af92 docs: create .all-contributorsrc [skip ci] 2021-02-19 13:38:38 +00:00
6cc32e3b12 docs: update README.md [skip ci] 2021-02-19 13:38:37 +00:00
303cd13b3c Create README.md 2021-02-19 15:31:03 +02:00
8a7242e374 Update README.md 2021-02-19 15:29:28 +02:00
00514ee175 Update README.md 2021-02-19 15:26:08 +02:00
bd42bf4215 Update README.md 2021-02-19 15:25:39 +02:00
7f890dceba Update README.md 2021-02-19 15:25:04 +02:00
db511a8f7d fixed some frontend and made some adjustments 2021-02-19 15:23:19 +02:00
356 changed files with 9467 additions and 562 deletions

5
.editorconfig Normal file
View File

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

5
.gitignore vendored
View File

@ -1 +1,6 @@
__django __django
reValuate/db.sqlite3
*.sqlite3
*/media/*
*.pyc
*.sqlite3

View File

@ -1,2 +1,24 @@
# CurrencySite # reValuate
[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-) [![Eduteh](https://img.shields.io/badge/Eduteh-Online-green?style=flat-square)](https://revaluate.eduteh.eu) [![Discord Chat](https://img.shields.io/discord/859570795972919337?style=flat-square)](https://discord.gg/eX5wmJuMVp)
School project for helping people consider throwing their trash out in the right bins, in order to help out with recycling. School project for helping people consider throwing their trash out in the right bins, in order to help out with recycling.
Check out my blog post over [here](https://yamozha.xyz/revaluate/)
## Contributors ✨
Thanks goes to these wonderful people :
<table>
<tr>
<td align="center"><a href="http://yamozha.github.io"><img src="https://avatars.githubusercontent.com/u/36108495?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yamozha</b></sub></a><br /><a href="https://github.com/yamozha/reValuate/commits?author=yamozha" title="Code">💻</a> <a href="https://github.com/yamozha/reValuate/commits?author=yamozha" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/vassdeniss"><img src="https://avatars.githubusercontent.com/u/72888249?v=4?s=100" width="100px;" alt=""/><br /><sub><b>vassdeniss</b></sub></a><br /><a href="#design-vassdeniss" title="Design">🎨</a> <a href="https://github.com/yamozha/reValuate/commits?author=vassdeniss" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/pepelen21"><img src="https://avatars.githubusercontent.com/u/61829825?v=4?s=100" width="100px;" alt=""/><br /><sub><b>pepelen21</b></sub></a><br /><a href="#ideas-pepelen21" title="Ideas, Planning, & Feedback">🤔</a></td>
</tr>
</table>

5
reValuate/api/apps.py Normal file
View File

@ -0,0 +1,5 @@
from django.apps import AppConfig
class ApiConfig(AppConfig):
name = 'api'

View File

@ -0,0 +1,15 @@
from rest_framework import serializers
from users.models import Balance
from upload.models import Media
class BalanceSerializer(serializers.ModelSerializer):
class Meta:
model = Balance
fields = ("user", "balanceValue")
class ImageSerializer(serializers.ModelSerializer):
class Meta:
model = Media
fields = ("user", "image", "tokenized", "reason", "date", "managed_by")

31
reValuate/api/views.py Normal file
View File

@ -0,0 +1,31 @@
from rest_framework import status, viewsets, authentication, permissions
from rest_framework.decorators import api_view, action
from rest_framework.response import Response
from users.models import Balance
from upload.models import Media
from .serializers import BalanceSerializer, ImageSerializer
class AllBalance(viewsets.ModelViewSet):
serializer_class = BalanceSerializer
http_method_names = ['get']
def get_queryset(self):
return Balance.objects.all()
class BalanceView(viewsets.ModelViewSet):
serializer_class = BalanceSerializer
http_method_names = ['get']
def get_queryset(self):
return Balance.objects.filter(user=self.request.user)
class ImageView(viewsets.ModelViewSet):
serializer_class = ImageSerializer
http_method_names = ['get','post']
def get_queryset(self):
return Media.objects.filter(user=self.request.user)

View File

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

View File

@ -0,0 +1,323 @@
* {
box-sizing: border-box;
margin: 0;
padding: 0;
scroll-behavior: smooth;
}
#page-wrap {
max-width: 1200px;
margin: 50px auto;
padding: 20px;
background: white;
-moz-box-shadow: 0 0 20px #469330;
-webkit-box-shadow: 0 0 20px #469330;
box-shadow: 0 0 20px #469330;
text-align: center;
border-radius: 25px;
}
header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 30px 10%;
background-color: #469330;
position: sticky;
}
.logo {
cursor: pointer;
}
.nav__links a,
.cta,
.overlay__content a {
font-family: Arial, Helvetica, sans-serif;
font-weight: 500;
font-size:30px;
color: #edf0f1;
text-decoration: none;
}
.nav__links {
list-style: none;
display: flex;
}
.nav__links li {
padding: 0px 20px;
}
.nav__links li a {
transition: color 0.3s ease 0s;
}
.nav__links li a:hover {
color: black;
}
.cta {
padding: 9px 25px;
color: #469330;
background-color: white;
border: none;
border-radius: 50px;
cursor: pointer;
transition: background-color 0.3s ease 0s;
}
.cta:hover {
color: white;
background-color: darkgreen;
}
/* Mobile Nav */
.menu {
display: none;
}
.overlay {
height: 100%;
width: 0;
position: fixed;
z-index: 99;
left: 0;
top: 0;
background-color: #469330;
overflow-x: hidden;
transition: width 0.5s ease 0s;
}
.overlay--active {
width: 100%;
}
.overlay__content {
display: flex;
height: 100%;
flex-direction: column;
align-items: center;
justify-content: center;
}
.overlay a {
padding: 15px;
font-size: 36px;
display: block;
transition: color 0.3s ease 0s;
}
.overlay a:hover,
.overlay a:focus {
color: darkgreen;
}
.overlay .close {
position: absolute;
top: 20px;
right: 45px;
font-size: 60px;
color: #edf0f1;
}
@media screen and (max-height: 450px) {
.overlay a {
font-size: 20px;
}
.overlay .close {
font-size: 40px;
top: 15px;
right: 35px;
}
}
@media only screen and (max-width: 1024px) {
.nav__links,
.cta {
display: none;
}
.menu {
display: initial;
}
}
html{
font-family: Arial, Helvetica, sans-serif;
}
p {
font-family: Arial, Helvetica, sans-serif;
margin: 0 0 30px 0;
}
h1.heading{
color: white;
font-size: 50px;
text-shadow: -1px 0 black, 0 2px black, 2px 0 black, 0 -1px black;
}
ul.emoji{
list-style-type: "♻️";
}
.question{
color: gray;
font-size: 20px;
}
ul.nothing{
list-style-type: none;
}
a.footer{
/* background:radial-gradient(circle, rgba(0,159,12,1) 0%, rgba(8,96,0,1) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent; */
color: lightgreen;
}
footer{
font-size: small;
text-align: center;
left:50%;
}
.centered{
display:flex;
}
@-webkit-keyframes text-shadow-pop-right {
0% {
text-shadow: 0 0 #555,0 0 #555,0 0 #555,0 0 #555,0 0 #555,0 0 #555,0 0 #555,0 0 #555;
-webkit-transform: translateX(0);
transform: translateX(0)
}
100% {
text-shadow: 1px 0 #555,2px 0 #555,3px 0 #555,4px 0 #555,5px 0 #555,6px 0 #555,7px 0 #555,8px 0 #555;
-webkit-transform: translateX(-8px);
transform: translateX(-8px)
}
}
@keyframes text-shadow-pop-right {
0% {
text-shadow: 0 0 #555,0 0 #555,0 0 #555,0 0 #555,0 0 #555,0 0 #555,0 0 #555,0 0 #555;
-webkit-transform: translateX(0);
transform: translateX(0)
}
100% {
text-shadow: 1px 0 #555,2px 0 #555,3px 0 #555,4px 0 #555,5px 0 #555,6px 0 #555,7px 0 #555,8px 0 #555;
-webkit-transform: translateX(-8px);
transform: translateX(-8px)
}
}
.text-shadow-pop-right{-webkit-animation:text-shadow-pop-right .6s both;animation:text-shadow-pop-right .6s both}
@-webkit-keyframes scale-in-center {
0% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1;
}
100% {
-webkit-transform: scale(1);
transform: scale(1);
opacity: 1;
}
}
@keyframes scale-in-center {
0% {
-webkit-transform: scale(0);
transform: scale(0);
opacity: 1;
}
100% {
-webkit-transform: scale(1);
transform: scale(1);
opacity: 1;
}
}
.scale-in-center {
-webkit-animation: scale-in-center 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
animation: scale-in-center 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
}
.buttons{
background-color: #469330;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
@-webkit-keyframes tracking-in-expand {
0% {
letter-spacing: -0.5em;
opacity: 0;
}
40% {
opacity: 0.6;
}
100% {
opacity: 1;
}
}
@keyframes tracking-in-expand {
0% {
letter-spacing: -0.5em;
opacity: 0;
}
40% {
opacity: 0.6;
}
100% {
opacity: 1;
}
}
.tracking-in-expand {
-webkit-animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;
animation: tracking-in-expand 0.7s cubic-bezier(0.215, 0.610, 0.355, 1.000) both;
animation-delay: .3s;
}
@-webkit-keyframes fade-in-bck {
0% {
-webkit-transform: translateZ(80px);
transform: translateZ(80px);
opacity: 0;
}
100% {
-webkit-transform: translateZ(0);
transform: translateZ(0);
opacity: 1;
}
}
@keyframes fade-in-bck {
0% {
-webkit-transform: translateZ(80px);
transform: translateZ(80px);
opacity: 0;
}
100% {
-webkit-transform: translateZ(0);
transform: translateZ(0);
opacity: 1;
}
}
.fade-in-bck {
-webkit-animation: fade-in-bck 0.6s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;
animation: fade-in-bck 0.6s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -0,0 +1,12 @@
const doc = document;
const menuOpen = doc.querySelector(".menu");
const menuClose = doc.querySelector(".close");
const overlay = doc.querySelector(".overlay");
menuOpen.addEventListener("click", () => {
overlay.classList.add("overlay--active");
});
menuClose.addEventListener("click", () => {
overlay.classList.remove("overlay--active");
});

127
reValuate/home/views.py Normal file
View File

@ -0,0 +1,127 @@
from django.shortcuts import render
import os.path
from users.models import Balance
from django.conf import settings
from users.models import User
import operator
from upload.models import Media
import requests
from django.db.models import Sum
def homePage(request):
iter_var = 0
all_balance = 0
Cashier = False
Processor = False
balObject = Balance.objects.filter(user=request.user.id)
userBalance = balObject.values("balanceValue")
try:
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
# Use aggregation that can be calculated in database (fast)
all_balance = Balance.objects.all().aggregate(s=Sum("balanceValue"))['s']
# print(f"{all_balance}")
try:
limited_coins = settings.ALL_COINS - all_balance
except TypeError:
limited_coins = settings.ALL_COINS
github = requests.get("https://api.github.com/user/36108495").json()
context = {
"isCashier": Cashier,
"isProcessor": Processor,
"userQR":userQR,
"fullbalance": limited_coins,
"currencyTotal": all_balance,
"userBalance": userBalance,
"github": f"https://github.com/podput",
}
return render(request, "home.html", context)
def leaderboard(request):
users = User.objects.all()
leaderboard = {}
for i in users:
try:
username = i.username
balance = i.balance.balanceValue
# add media counter and other stuff
if f"{username}" in leaderboard.keys():
leaderboard[username] = balance + leaderboard[username]
else:
leaderboard[username] = balance
except Exception as e:
pass
leaderboard = dict(sorted(leaderboard.items(), key=operator.itemgetter(0)))
leaderboard = dict(reversed(list(leaderboard.items())))
while len(leaderboard) > 5:
leaderboard.pop()
media = Media.objects.all()
user_media = {}
for i in media:
username = i.user.username
if f"{username}" in user_media.keys():
user_media[username] += 1
else:
user_media[username] = 1
user_media = dict(sorted(user_media.items(), key=operator.itemgetter(0)))
user_media = dict(reversed(list(user_media.items())))
users = {}
for i in user_media.keys():
iter_user = User.objects.get(username=i)
iter_user_media = Media.objects.filter(user=iter_user)
if iter_user_media.filter(is_video=True):
user_data = {i:{"Videos":len(iter_user_media.filter(is_video=True)),
"Images":len(iter_user_media.filter(is_video=False))}}
else:
user_data = {i:{"Images":len(iter_user_media.filter(is_video=False))}}
while len(user_media) > 5:
user_media.pop()
# for i in media:
# username = i.user.username
# image = i.image
# if f"{username}" in media_count.values():
# media_count[username] = image + media_count[username].value
# else:
# media_count[username] = image
# print(media_count)
context = {
"leaderboard":leaderboard,
"user_media":user_media
}
return render(request, 'leaderboard.html', context)
def about(request):
return render(request, "about.html")

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 331 B

After

Width:  |  Height:  |  Size: 331 B

View File

Before

Width:  |  Height:  |  Size: 504 B

After

Width:  |  Height:  |  Size: 504 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 380 B

After

Width:  |  Height:  |  Size: 380 B

View File

Before

Width:  |  Height:  |  Size: 677 B

After

Width:  |  Height:  |  Size: 677 B

View File

Before

Width:  |  Height:  |  Size: 392 B

After

Width:  |  Height:  |  Size: 392 B

View File

Before

Width:  |  Height:  |  Size: 560 B

After

Width:  |  Height:  |  Size: 560 B

View File

Before

Width:  |  Height:  |  Size: 655 B

After

Width:  |  Height:  |  Size: 655 B

View File

Before

Width:  |  Height:  |  Size: 655 B

After

Width:  |  Height:  |  Size: 655 B

View File

Before

Width:  |  Height:  |  Size: 581 B

After

Width:  |  Height:  |  Size: 581 B

View File

Before

Width:  |  Height:  |  Size: 436 B

After

Width:  |  Height:  |  Size: 436 B

View File

Before

Width:  |  Height:  |  Size: 560 B

After

Width:  |  Height:  |  Size: 560 B

View File

Before

Width:  |  Height:  |  Size: 458 B

After

Width:  |  Height:  |  Size: 458 B

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 331 B

After

Width:  |  Height:  |  Size: 331 B

View File

Before

Width:  |  Height:  |  Size: 280 B

After

Width:  |  Height:  |  Size: 280 B

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