final TOUCHESSS
@ -1,19 +1,27 @@
|
||||
from django.shortcuts import render
|
||||
import os.path
|
||||
from users.models import Balance
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
def homePage(request):
|
||||
iter_var = 0
|
||||
all_balance = []
|
||||
|
||||
|
||||
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']}"
|
||||
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 = {
|
||||
"userQR":userQR,
|
||||
"fullbalance": limited_coins,
|
||||
"currencyTotal": sum(all_balance),
|
||||
"userBalance": userBalance[0]["balanceValue"]
|
||||
}
|
||||
|
BIN
reValuate/media/1/Against_Nature_20_second_Clip-uFutjAVqsdQ.mp4
Normal file
BIN
reValuate/media/1/PngItem_1280311.png
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
reValuate/media/1/pexels-mali-maeder-802221.jpg
Normal file
After Width: | Height: | Size: 747 KiB |
BIN
reValuate/media/1/pexels-mali-maeder-802221_eeYIsOS.jpg
Normal file
After Width: | Height: | Size: 747 KiB |
BIN
reValuate/media/images/1/1259275.jpg
Normal file
After Width: | Height: | Size: 2.7 MiB |
BIN
reValuate/media/images/1/1259275_FOPUx7z.jpg
Normal file
After Width: | Height: | Size: 2.7 MiB |
BIN
reValuate/media/images/1/pexels-mali-maeder-802221.jpg
Normal file
After Width: | Height: | Size: 747 KiB |
BIN
reValuate/media/images/1/pexels-mali-maeder-802221_LhXpYHV.jpg
Normal file
After Width: | Height: | Size: 747 KiB |
BIN
reValuate/media/images/1/pexels-mali-maeder-802221_o7hSVlc.jpg
Normal file
After Width: | Height: | Size: 747 KiB |
BIN
reValuate/media/images/1/wp2058634-3840x1080-wallpapers.jpg
Normal file
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 44 KiB |
@ -47,19 +47,23 @@
|
||||
{% if image %}
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<p style="text-align: center;">Качено от: <br><p style="border:2px; border-color: #4CAF50; border-style: dashed; text-align: center;">{{username}}</p></p><br><br>
|
||||
|
||||
<p style="text-align: center;">Качено от: <br><p style="border:2px; border-color: #4CAF50; border-style: dashed; text-align: center;">{{username}}</p></p><br>
|
||||
<div class="choice">
|
||||
{% if is_video %}
|
||||
<video style="display: block; margin: 0 auto; max-width:500px; max-height: 500px;" width="500" controls>
|
||||
<source src="/media/{{ image }}" type="video/mp4">
|
||||
</video>
|
||||
{% else %}
|
||||
<img src="/media/{{ image }}" width="500" width="500" ><br>
|
||||
|
||||
</div><br>
|
||||
{% endif %}
|
||||
</div><br>
|
||||
<p style="text-shadow: 0 0 2px #28a745; float: left;">{{time}} <p style="text-shadow: 0 0 2px #28a745; float: right;">{{date}}</p></p>
|
||||
</div>
|
||||
|
||||
<br><br><br>
|
||||
<div class="choiceButtons">
|
||||
|
||||
|
||||
<input name="isValid" type="submit" value="Valid" class="Buttons">Валидна</input>
|
||||
<input name="isValid" type="submit" value="Valid" class="Buttons">
|
||||
<input name="isValid" type="submit" value="Invalid" class="Buttons">
|
||||
</form>
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{% block title %}reValuate{% endblock %}</title>
|
||||
{% load static %}
|
||||
{% load qr_code %}
|
||||
{% block optionalParams %} {% endblock %}
|
||||
|
||||
<!-- Required meta tags -->
|
||||
@ -27,41 +28,43 @@
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<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" >
|
||||
<li class="nav-item d-none d-md-block" >
|
||||
|
||||
{% if user.is_superuser %}
|
||||
<a class="nav-link" href="/admin/">Админ</a>
|
||||
{% endif %}
|
||||
|
||||
</li>
|
||||
{% if user.is_superuser %}
|
||||
<a class="nav-link" href="/admin/">Админ</a>
|
||||
{% endif %}
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<li class="nav-item dropdown ">
|
||||
<ul class="navbar-nav ml-auto" style="right: 0; left: auto;">
|
||||
<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">
|
||||
{% if user.is_authenticated %}
|
||||
{{ user.username }}
|
||||
{% else %}
|
||||
Акaунт
|
||||
{% endif %}
|
||||
|
||||
</a>
|
||||
<div class="dropdown-menu animate slideIn" aria-labelledby="navbarDropdown" >
|
||||
|
||||
{{ user.username }}
|
||||
{% else %}
|
||||
Акaунт
|
||||
{% endif %}
|
||||
</a>
|
||||
<div class="dropdown-menu animate slideIn dropdown-menu-right" style="text-align: center;" aria-labelledby="navbarDropdown" >
|
||||
{% if user.is_authenticated %}
|
||||
<a class="dropdown-item "href="/view_media/">Прогрес</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
|
||||
<a class="dropdown-item "href="{%url 'logout'%}">Излизане </a>
|
||||
<div class="dropdown-divider"></div>
|
||||
|
||||
{% else %}
|
||||
<a class="dropdown-item" href="/users/signup"> Регистрация </a>
|
||||
<a class="dropdown-item" href="/users/signup"> Регистрация </a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="/users/login"> Влизане </a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="/users/login"> Влизане </a>
|
||||
<div class="dropdown-divider"></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</li>
|
||||
|
@ -4,7 +4,8 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
{% load static %}
|
||||
<link rel="stylesheet" href="/static/home/css/main.css" />
|
||||
{% load qr_code %}
|
||||
<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" />
|
||||
@ -42,8 +43,8 @@
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<li class="nav-item dropdown ">
|
||||
<ul class="navbar-nav ml-auto" style="right: 0; left: auto;">
|
||||
<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">
|
||||
{% if user.is_authenticated %}
|
||||
{{ user.username }}
|
||||
@ -51,8 +52,10 @@
|
||||
Акaунт
|
||||
{% endif %}
|
||||
</a>
|
||||
<div class="dropdown-menu animate slideIn" aria-labelledby="navbarDropdown" >
|
||||
<div class="dropdown-menu animate slideIn dropdown-menu-right" style="text-align: center;" aria-labelledby="navbarDropdown" >
|
||||
{% if user.is_authenticated %}
|
||||
<div class="dropdown-item"> {% qr_from_text userQR size="T" %} </div>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item "href="/view_media/">Прогрес</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
|
||||
@ -144,7 +147,7 @@
|
||||
<div class="row gtr-150">
|
||||
<div class="col-6 col-12-medium">
|
||||
<header class="major">
|
||||
<h2>Раздадени точки:<br />
|
||||
<h2>Остават още:<br />
|
||||
</h2>
|
||||
</header>
|
||||
|
||||
@ -156,7 +159,7 @@
|
||||
-moz-background-clip: text;
|
||||
-moz-text-fill-color: transparent;
|
||||
font-size:70px;
|
||||
">{{ currencyTotal }}</div>
|
||||
">{{ fullbalance }} reCoins</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
29
reValuate/templates/removeBalance.html
Normal file
@ -0,0 +1,29 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %} Update Balance {% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div class="centered">
|
||||
|
||||
{% if request.user.is_superuser %}
|
||||
|
||||
|
||||
<p>Hello, {{ user.username }} !</p>
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
{% else %}
|
||||
|
||||
<h1>Unauthorized</h1>
|
||||
</div>
|
||||
|
||||
{% endif %}
|
||||
{% endblock %}
|
@ -24,8 +24,14 @@
|
||||
|
||||
{% for i in get_status reversed %}
|
||||
<div class="slide" width=500px height=500px>
|
||||
<img src="/media/{{ i.image }}" style=" display: block; margin: 0 auto; max-width:500px; max-height: 500px;"/>
|
||||
<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>
|
||||
{% if i.is_video %}
|
||||
<video style="display: block; margin: 0 auto; max-width:500px; max-height: 500px;" width="500" controls>
|
||||
<source src="/media/{{ i.image }}" type="video/mp4">
|
||||
</video>
|
||||
{% else %}
|
||||
<img src="/media/{{ i.image }}" style=" display: block; margin: 0 auto; max-width:500px; max-height: 500px;"/>
|
||||
{% endif %}
|
||||
<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>
|
||||
{% if i.reason %}
|
||||
<p class="animate__animated animate__headShake" style="text-align: center;"> ❌ Снимката ти е маркирана като невалидна. Ако мислиш че има грешка ни изпратете <a href="mailto:boyan+revaluate@bobokara.com">имейл.</a> ❌</p>
|
||||
|
@ -70,7 +70,7 @@
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<label for="image" style="font-size: 32px;">Качи снимка! </label><br><br><br>
|
||||
<input id="image" type="file" name="image" required><br><br><br><br>
|
||||
<input id="image" style="margin: 0 auto;" type="file" name="image" required><br>
|
||||
<br>
|
||||
<button class="Buttons" type="submit">Качи!</button>
|
||||
</form>
|
||||
|
@ -1,12 +1,12 @@
|
||||
from django import forms
|
||||
from .models import Image
|
||||
from .models import Media
|
||||
|
||||
|
||||
class ImageForm(forms.ModelForm):
|
||||
"""Form for the image model"""
|
||||
class Meta:
|
||||
model = Image
|
||||
fields = ('image',)
|
||||
model = Media
|
||||
fields = ['image']
|
||||
|
||||
# class VideoForm(forms.ModelForm):
|
||||
# """Form for the image model"""
|
||||
|
20
reValuate/upload/migrations/0015_auto_20210315_1745.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Generated by Django 3.1.6 on 2021-03-15 15:45
|
||||
|
||||
from django.db import migrations, models
|
||||
import upload.models
|
||||
import upload.validators
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('upload', '0014_image_time'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='image',
|
||||
name='image',
|
||||
field=models.ImageField(upload_to=upload.models.imagesPath, validators=[upload.validators.imageValidate]),
|
||||
),
|
||||
]
|
35
reValuate/upload/migrations/0016_videos.py
Normal file
@ -0,0 +1,35 @@
|
||||
# Generated by Django 3.1.6 on 2021-03-15 16:14
|
||||
|
||||
import datetime
|
||||
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):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('upload', '0015_auto_20210315_1745'),
|
||||
]
|
||||
|
||||
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])),
|
||||
('tokenized', models.BooleanField(blank=True, default=None, max_length=3, null=True)),
|
||||
('reason', models.CharField(max_length=120)),
|
||||
('date', models.DateField(default=datetime.date.today)),
|
||||
('time', models.TimeField(auto_now=True)),
|
||||
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'video',
|
||||
'verbose_name_plural': 'videos',
|
||||
},
|
||||
),
|
||||
]
|
23
reValuate/upload/migrations/0017_auto_20210315_1838.py
Normal file
@ -0,0 +1,23 @@
|
||||
# Generated by Django 3.1.6 on 2021-03-15 16:38
|
||||
|
||||
from django.db import migrations, models
|
||||
import upload.models
|
||||
import upload.validators
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('upload', '0016_videos'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='image',
|
||||
name='video',
|
||||
field=models.FileField(default=None, upload_to=upload.models.videosPath, validators=[upload.validators.videoValidate]),
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='Videos',
|
||||
),
|
||||
]
|
20
reValuate/upload/migrations/0018_auto_20210315_1839.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Generated by Django 3.1.6 on 2021-03-15 16:39
|
||||
|
||||
from django.db import migrations, models
|
||||
import upload.models
|
||||
import upload.validators
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('upload', '0017_auto_20210315_1838'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='image',
|
||||
name='video',
|
||||
field=models.FileField(blank=True, default=None, null=True, upload_to=upload.models.videosPath, validators=[upload.validators.videoValidate]),
|
||||
),
|
||||
]
|
20
reValuate/upload/migrations/0019_auto_20210315_1841.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Generated by Django 3.1.6 on 2021-03-15 16:41
|
||||
|
||||
from django.db import migrations, models
|
||||
import upload.models
|
||||
import upload.validators
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('upload', '0018_auto_20210315_1839'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='image',
|
||||
name='image',
|
||||
field=models.ImageField(blank=True, null=True, upload_to=upload.models.imagesPath, validators=[upload.validators.imageValidate]),
|
||||
),
|
||||
]
|
20
reValuate/upload/migrations/0020_auto_20210315_1847.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Generated by Django 3.1.6 on 2021-03-15 16:47
|
||||
|
||||
from django.db import migrations, models
|
||||
import upload.models
|
||||
import upload.validators
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('upload', '0019_auto_20210315_1841'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='image',
|
||||
name='image',
|
||||
field=models.FileField(blank=True, null=True, upload_to=upload.models.imagesPath, validators=[upload.validators.imageValidate]),
|
||||
),
|
||||
]
|
24
reValuate/upload/migrations/0021_auto_20210315_1848.py
Normal file
@ -0,0 +1,24 @@
|
||||
# Generated by Django 3.1.6 on 2021-03-15 16:48
|
||||
|
||||
from django.db import migrations, models
|
||||
import upload.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('upload', '0020_auto_20210315_1847'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='image',
|
||||
name='image',
|
||||
field=models.FileField(blank=True, null=True, upload_to=upload.models.imagesPath),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='image',
|
||||
name='video',
|
||||
field=models.FileField(blank=True, default=None, null=True, upload_to=upload.models.videosPath),
|
||||
),
|
||||
]
|
22
reValuate/upload/migrations/0022_auto_20210315_1852.py
Normal file
@ -0,0 +1,22 @@
|
||||
# Generated by Django 3.1.6 on 2021-03-15 16:52
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('upload', '0021_auto_20210315_1848'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='image',
|
||||
name='video',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='image',
|
||||
name='is_video',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
19
reValuate/upload/migrations/0023_auto_20210315_1901.py
Normal file
@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.1.6 on 2021-03-15 17:01
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('upload', '0022_auto_20210315_1852'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameModel(
|
||||
old_name='Image',
|
||||
new_name='Media',
|
||||
),
|
||||
]
|
@ -13,14 +13,15 @@ from datetime import date
|
||||
|
||||
def imagesPath(instance, filename):
|
||||
# file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
|
||||
return 'images/{0}/{1}'.format(instance.user.id, filename)
|
||||
return '{0}/{1}'.format(instance.user.id, filename)
|
||||
|
||||
def videosPath(instance,filename):
|
||||
return f"videos/{instance.user.id}/{filename}"
|
||||
return f"{instance.user.id}/videos/{filename}"
|
||||
|
||||
class Image(models.Model):
|
||||
class Media(models.Model):
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True)
|
||||
image = models.ImageField(upload_to=imagesPath,validators=[imageValidate], unique=True)
|
||||
image = models.FileField(upload_to=imagesPath, blank=True, null=True,)
|
||||
is_video = models.BooleanField(default=False)
|
||||
tokenized = models.BooleanField(blank=True, null=True, default=None, max_length=3)
|
||||
reason = models.CharField(max_length=120)
|
||||
date = models.DateField(default=date.today)
|
||||
@ -31,12 +32,14 @@ class Image(models.Model):
|
||||
verbose_name = 'image'
|
||||
verbose_name_plural = 'images'
|
||||
|
||||
|
||||
# class Videos(models.Model):
|
||||
# user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True)
|
||||
# video = models.FileField(upload_to=videosPath, validators=[videoValidate])
|
||||
# tokenized = models.BooleanField(blank=True, null=True, default=None, max_length=3)
|
||||
# reason = models.CharField(max_length=120)
|
||||
|
||||
# date = models.DateField(default=date.today)
|
||||
# time = models.TimeField(auto_now=True)
|
||||
|
||||
|
||||
# class Meta:
|
||||
|
@ -1,9 +1,9 @@
|
||||
from django.shortcuts import render, redirect
|
||||
import os.path
|
||||
import os
|
||||
from .forms import ImageForm
|
||||
from django.core.files.storage import FileSystemStorage
|
||||
from .models import Image
|
||||
from .models import Media
|
||||
from .forms import ImageForm
|
||||
from django.conf import settings
|
||||
|
||||
def uploadContent(request):
|
||||
@ -27,13 +27,30 @@ def imageUpload(request):
|
||||
|
||||
print(request.user.id)
|
||||
if request.method == 'POST':
|
||||
form = ImageForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
userIdModel = Image.objects.filter(user=request.user.id)
|
||||
img_obj = form.instance
|
||||
img_obj.user = request.user
|
||||
form.save()
|
||||
return render(request, 'uploadImage.html', {'form': form, 'img_obj': img_obj})
|
||||
|
||||
if "image" in request.FILES['image'].content_type:
|
||||
print("Image")
|
||||
form = ImageForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
img_obj = form.instance
|
||||
img_obj.user = request.user
|
||||
form.save()
|
||||
return render(request, 'uploadImage.html', {'form': form, 'img_obj': img_obj})
|
||||
|
||||
elif "video" in request.FILES['image'].content_type:
|
||||
form = ImageForm(request.POST, request.FILES)
|
||||
print("Video")
|
||||
print(request.FILES['image'])
|
||||
if form.is_valid():
|
||||
video_obj = form.instance
|
||||
video_obj.user = request.user
|
||||
video_obj.is_video = True
|
||||
form.save()
|
||||
return render(request, 'uploadImage.html', {'form': form, 'img_obj': video_obj})
|
||||
else:
|
||||
raise Exception("What")
|
||||
else:
|
||||
raise TypeError("Invalid File")
|
||||
|
||||
else:
|
||||
form = ImageForm()
|
||||
@ -56,9 +73,10 @@ def imageUpload(request):
|
||||
|
||||
|
||||
def viewMedia(request):
|
||||
get_status = Image.objects.filter(user_id=request.user.id)
|
||||
img_list = os.listdir(settings.MEDIA_ROOT + f"images/{request.user.id}/")
|
||||
|
||||
get_status = Media.objects.filter(user_id=request.user.id)
|
||||
img_list = os.listdir(settings.MEDIA_ROOT + f"{request.user.id}/")
|
||||
|
||||
|
||||
context = {
|
||||
"id":request.user.id,
|
||||
"get_status":get_status,
|
||||
|
@ -5,7 +5,7 @@ from .models import Balance
|
||||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib import messages
|
||||
from upload.models import Image
|
||||
from upload.models import Media
|
||||
|
||||
# need to make oauth facebook login
|
||||
class SignUpView(generic.CreateView):
|
||||
@ -40,17 +40,18 @@ def removeBalance(request):
|
||||
balRem = None
|
||||
if request.method == "POST":
|
||||
tokens = request.POST["tokens"]
|
||||
tokens = int(tokens)
|
||||
tokens = int(tokens) * -1
|
||||
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)
|
||||
sum_balance = user_instance.balanceValue + tokens
|
||||
balRem = Balance(balanceValue=sum_balance, user_id=user_instance)
|
||||
balRem.save()
|
||||
print(balRem)
|
||||
except Balance.DoesNotExist:
|
||||
messages.error(request, f"User{user_given} doesn't have balance")
|
||||
return render(request,"getBalance.html", {"userBalance":balAdd})
|
||||
balRem = Balance(balanceValue=tokens, user_id=user_given)
|
||||
balRem.save()
|
||||
return render(request,"getBalance.html", {"userBalance":balRem})
|
||||
else:
|
||||
return render(request,"removeBalance.html")
|
||||
|
||||
@ -65,9 +66,10 @@ def getBalance(request):
|
||||
|
||||
def adminView(request):
|
||||
try:
|
||||
latestPicture = Image.objects.filter(tokenized=None)
|
||||
latestPicture, userId, date, time = latestPicture.values("image")[0]["image"], latestPicture.values("user_id")[0]["user_id"], latestPicture.values("date")[0]["date"], latestPicture.values("time")[0]["time"]
|
||||
latestPicture = Media.objects.filter(tokenized=None)
|
||||
latestPicture, userId, date, time, is_video = latestPicture.values("image")[0]["image"], latestPicture.values("user_id")[0]["user_id"], latestPicture.values("date")[0]["date"], latestPicture.values("time")[0]["time"], latestPicture.values("is_video")[0]["is_video"]
|
||||
username = User.objects.get(pk=userId)
|
||||
|
||||
if request.method == "POST":
|
||||
if request.POST['isValid'] == "Valid":
|
||||
try:
|
||||
@ -80,21 +82,21 @@ def adminView(request):
|
||||
balAdd = Balance(balanceValue=5, user_id=userId)
|
||||
balAdd.save()
|
||||
|
||||
imageObj = Image.objects.get(image=latestPicture, user_id=userId)
|
||||
imageObj = Media.objects.get(image=latestPicture, user_id=userId)
|
||||
imageObj.tokenized = True
|
||||
imageObj.save()
|
||||
|
||||
return redirect("/admin/")
|
||||
elif request.POST['isValid'] == "Invalid":
|
||||
imageObj = Image.objects.get(image=latestPicture, user_id=userId)
|
||||
imageObj.tokenized=True
|
||||
imageObj = Media.objects.get(image=latestPicture, user_id=userId)
|
||||
imageObj.tokenized=False
|
||||
imageObj.reason="Invalid"
|
||||
imageObj.save()
|
||||
return render(request, "adminView.html", {"time":time, "date":date,"image":latestPicture, "userId":userId, "username":username})
|
||||
return render(request, "adminView.html", {"time":time, "date":date,"image":latestPicture, "userId":userId, "username":username, "is_video":is_video})
|
||||
|
||||
|
||||
else:
|
||||
return render(request, "adminView")
|
||||
return render(request, "adminView.html", {"time":time, "date":date,"image":latestPicture, "userId":userId, "username":username})
|
||||
return render(request, "adminView.html", {"time":time, "date":date,"image":latestPicture, "userId":userId, "username":username, "is_video":is_video})
|
||||
except IndexError:
|
||||
return render(request, "adminView.html")
|
||||
|
@ -47,6 +47,7 @@ INSTALLED_APPS = [
|
||||
'home',
|
||||
'users',
|
||||
'upload',
|
||||
'qr_code',
|
||||
|
||||
]
|
||||
|
||||
@ -140,6 +141,7 @@ LOGOUT_REDIRECT_URL = "/"
|
||||
EMAIL_BACKEND = "django.core.mail.backends.filebased.EmailBackend"
|
||||
EMAIL_FILE_PATH = str(BASE_DIR.joinpath('sent_emails'))
|
||||
|
||||
ALL_COINS = 1000000
|
||||
MEDIA_URL = '/media/'
|
||||
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
|
||||
|
||||
|
@ -21,7 +21,7 @@ from django.conf.urls.static import static
|
||||
from django.contrib.auth import views
|
||||
from django.views.generic.base import TemplateView
|
||||
from upload.views import uploadContent, imageUpload, viewMedia
|
||||
from users.views import getBalance, addToBalance, adminView
|
||||
from users.views import getBalance, addToBalance, adminView, removeBalance
|
||||
urlpatterns = [
|
||||
path("", homePage, name='home'),
|
||||
|
||||
@ -33,6 +33,7 @@ urlpatterns = [
|
||||
path("view_media/", viewMedia, name="All Media"),
|
||||
# path("get_balance/",getBalance, name="Balance" ),
|
||||
path("add_balance/", addToBalance, name="Add"),
|
||||
path("remove_balance/", removeBalance, name="Add"),
|
||||
path("admin/", adminView, name="admin")
|
||||
]
|
||||
if settings.DEBUG:
|
||||
|