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): class UserRating(models.Model):
id = models.AutoField(primary_key=True) id = models.AutoField(primary_key=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, unique=False) user = models.ForeignKey(User, on_delete=models.PROTECT, unique=False)
food = models.ForeignKey(SingleFood) food = models.ForeignKey(SingleFood, on_delete=models.PROTECT)
rating = models.FloatField(default=0) rating = models.FloatField(default=0)
def __str__(self): def __str__(self):
@ -70,8 +70,8 @@ class UserRating(models.Model):
class UserFoodImage(models.Model): class UserFoodImage(models.Model):
id = models.AutoField(primary_key=True) id = models.AutoField(primary_key=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, unique=False) user = models.ForeignKey(User, on_delete=models.PROTECT, unique=False)
food = models.ForeignKey(SingleFood) food = models.ForeignKey(SingleFood, on_delete=models.PROTECT)
image = models.ImageField(upload_to='food/%Y/%m/%W', blank=True) image = models.ImageField(upload_to='food/%Y/%m/%W', blank=True)
class Meta: class Meta:

View File

@ -14,7 +14,7 @@ Including another URLconf
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) 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 from django.conf.urls import url, include
urlpatterns = [ urlpatterns = [
@ -35,4 +35,8 @@ urlpatterns = [
# Food Rating # Food Rating
url(r'^daily/rating/$', views.food_rating, name='rating-food'), url(r'^daily/rating/$', views.food_rating, name='rating-food'),
url(r'^weekly/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: try:
date = datetime.strptime(str(menu['date']), "%d.%m.").replace(year=datetime.today().year) date = datetime.strptime(str(menu['date']), "%d.%m.").replace(year=datetime.today().year)
menu = Menu.objects.create(location=data['name'], date=date) menu = Menu.objects.create(location=data['name'], date=date)
menu.menu = foodlist menu.menu.set(foodlist)
menu.save() menu.save()
except IntegrityError as error: except IntegrityError as error:
# ignored # ignored

View File

@ -18,7 +18,7 @@ from apps.food.models import Menu, HappyHour, SingleFood, UserRating, UserFoodIm
def daily_food(request): def daily_food(request):
today = datetime.datetime.now() today = datetime.datetime.now()
start_week = today - datetime.timedelta(today.weekday()) 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() 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() 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') }} {{ macros.home_item_with_icon(icon='fa-th-large', url_id='links-home', title='Links') }}
</div> </div>
</div> </div>
{% endblock %}fa-cutlery {% endblock %}