add food picture managament feature

This commit is contained in:
Michael Götz 2018-01-04 20:47:16 +01:00
parent b2565b2dc2
commit a89da403ed
9 changed files with 131 additions and 8 deletions

View 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)),
),
]

View 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

View 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),
),
]

View File

@ -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:

View File

@ -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'),
]

View File

@ -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

View File

@ -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()

View 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 %}

View File

@ -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 %}