add food picture managament feature
This commit is contained in:
parent
b2565b2dc2
commit
a89da403ed
20
ofu_app/apps/donar/migrations/0010_auto_20180104_1905.py
Normal file
20
ofu_app/apps/donar/migrations/0010_auto_20180104_1905.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Generated by Django 2.0.1 on 2018-01-04 18:05
|
||||
|
||||
import datetime
|
||||
from django.db import migrations, models
|
||||
from django.utils.timezone import utc
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('donar', '0009_auto_20171204_1648'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lecture_terms',
|
||||
name='starttime',
|
||||
field=models.TimeField(default=datetime.datetime(2018, 1, 4, 18, 5, 54, 971358, tzinfo=utc)),
|
||||
),
|
||||
]
|
||||
39
ofu_app/apps/food/admin_views.py
Normal file
39
ofu_app/apps/food/admin_views.py
Normal file
@ -0,0 +1,39 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.http import HttpResponseForbidden
|
||||
from django.shortcuts import render
|
||||
from pprint import pprint
|
||||
|
||||
from apps.food.models import Menu, SingleFood, UserFoodImage
|
||||
|
||||
|
||||
def food_picture_management(request):
|
||||
if (request.user.is_superuser):
|
||||
today = datetime.datetime.now()
|
||||
today_images = UserFoodImage.objects.filter(food__foods__date__exact=today)
|
||||
|
||||
return render(request, "admin/picture_management.jinja", {
|
||||
'day': today,
|
||||
'pictures': today_images,
|
||||
})
|
||||
|
||||
else:
|
||||
return HttpResponseForbidden
|
||||
|
||||
|
||||
def food_picture_save(request, id):
|
||||
if (request.user.is_superuser):
|
||||
chosen_pic = UserFoodImage.objects.get(id=id)
|
||||
food = SingleFood.objects.get(id=chosen_pic.food.id)
|
||||
food.image.set([chosen_pic, ])
|
||||
food.save()
|
||||
|
||||
return food_picture_management(request)
|
||||
else:
|
||||
return HttpResponseForbidden
|
||||
40
ofu_app/apps/food/migrations/0006_auto_20180104_1905.py
Normal file
40
ofu_app/apps/food/migrations/0006_auto_20180104_1905.py
Normal file
@ -0,0 +1,40 @@
|
||||
# Generated by Django 2.0.1 on 2018-01-04 18:05
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('food', '0005_auto_20171204_1634'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='menu',
|
||||
name='menu',
|
||||
field=models.ManyToManyField(related_name='foods', to='food.SingleFood'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userfoodimage',
|
||||
name='food',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='food.SingleFood'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userfoodimage',
|
||||
name='user',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userrating',
|
||||
name='food',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='food.SingleFood'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userrating',
|
||||
name='user',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
@ -60,8 +60,8 @@ class HappyHour(models.Model):
|
||||
|
||||
class UserRating(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, unique=False)
|
||||
food = models.ForeignKey(SingleFood)
|
||||
user = models.ForeignKey(User, on_delete=models.PROTECT, unique=False)
|
||||
food = models.ForeignKey(SingleFood, on_delete=models.PROTECT)
|
||||
rating = models.FloatField(default=0)
|
||||
|
||||
def __str__(self):
|
||||
@ -70,8 +70,8 @@ class UserRating(models.Model):
|
||||
|
||||
class UserFoodImage(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, unique=False)
|
||||
food = models.ForeignKey(SingleFood)
|
||||
user = models.ForeignKey(User, on_delete=models.PROTECT, unique=False)
|
||||
food = models.ForeignKey(SingleFood, on_delete=models.PROTECT)
|
||||
image = models.ImageField(upload_to='food/%Y/%m/%W', blank=True)
|
||||
|
||||
class Meta:
|
||||
|
||||
@ -14,7 +14,7 @@ Including another URLconf
|
||||
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
|
||||
"""
|
||||
|
||||
from apps.food import views
|
||||
from apps.food import views, admin_views
|
||||
from django.conf.urls import url, include
|
||||
|
||||
urlpatterns = [
|
||||
@ -35,4 +35,8 @@ urlpatterns = [
|
||||
# Food Rating
|
||||
url(r'^daily/rating/$', views.food_rating, name='rating-food'),
|
||||
url(r'^weekly/rating/$', views.food_rating, name='rating-food'),
|
||||
|
||||
# Admin Pages
|
||||
url(r'^admin/$', admin_views.food_picture_management, name='foodpicture-management'),
|
||||
url(r'^admin/(?P<id>[0-9]+)/$', admin_views.food_picture_save, name='foodpicture-save'),
|
||||
]
|
||||
|
||||
@ -71,7 +71,7 @@ def writeStudentenwerkDataInDB(data):
|
||||
try:
|
||||
date = datetime.strptime(str(menu['date']), "%d.%m.").replace(year=datetime.today().year)
|
||||
menu = Menu.objects.create(location=data['name'], date=date)
|
||||
menu.menu = foodlist
|
||||
menu.menu.set(foodlist)
|
||||
menu.save()
|
||||
except IntegrityError as error:
|
||||
# ignored
|
||||
|
||||
@ -18,7 +18,7 @@ from apps.food.models import Menu, HappyHour, SingleFood, UserRating, UserFoodIm
|
||||
def daily_food(request):
|
||||
today = datetime.datetime.now()
|
||||
start_week = today - datetime.timedelta(today.weekday())
|
||||
end_week = start_week + datetime.timedelta(7)
|
||||
end_week = start_week + datetime.timedelta(20)
|
||||
|
||||
feki_menu = Menu.objects.filter(date__exact=today).filter(location__contains="Feldkirchenstraße").last()
|
||||
austr_menu = Menu.objects.filter(date__exact=today).filter(location__contains="Austraße").last()
|
||||
|
||||
20
ofu_app/templates/admin/picture_management.jinja
Normal file
20
ofu_app/templates/admin/picture_management.jinja
Normal file
@ -0,0 +1,20 @@
|
||||
{% extends 'food/food_wrapper.jinja' %}
|
||||
{% import '/macros/food_macros.jinja' as macros %}
|
||||
{% block headline %}
|
||||
<h1 class="text-center">Food Picture Management View</h1>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div class="container-fluid">
|
||||
<h2>Bilder</h2>
|
||||
<div class="row">
|
||||
{% for picture in pictures %}
|
||||
<div class="col-6">
|
||||
<a href="{{ url('foodpicture-save', kwargs={'id':picture.id}) }}">
|
||||
<h3>{{ picture.food.name }}</h3>
|
||||
<img src="{{ picture.image.url }}" style="width: 50%">
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@ -15,4 +15,4 @@
|
||||
{{ macros.home_item_with_icon(icon='fa-th-large', url_id='links-home', title='Links') }}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}fa-cutlery
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user