From 51f850e40c8264b24a3f850337e3a9ba4ec3477f Mon Sep 17 00:00:00 2001 From: michigg Date: Wed, 28 Mar 2018 15:21:24 +0200 Subject: [PATCH] Update food i don't care --- ofu_app/apps/food/admin.py | 4 +- .../migrations/0009_auto_20180324_0039.py | 49 +++++++ .../migrations/0010_auto_20180325_1630.py | 26 ++++ .../migrations/0011_auto_20180326_2255.py | 23 ++++ .../migrations/0012_auto_20180326_2343.py | 19 +++ ofu_app/apps/food/templates/__init__.py | 0 ofu_app/apps/food/templates/root_api.jinja | 126 ++++++++++++++++++ ofu_app/apps/food/tests/tests_api.py | 3 +- ofu_app/apps/food/urls.py | 5 +- ofu_app/apps/food/utils/migrate_data.py | 34 ++--- ofu_app/apps/food/views.py | 8 +- 11 files changed, 271 insertions(+), 26 deletions(-) create mode 100644 ofu_app/apps/food/migrations/0009_auto_20180324_0039.py create mode 100644 ofu_app/apps/food/migrations/0010_auto_20180325_1630.py create mode 100644 ofu_app/apps/food/migrations/0011_auto_20180326_2255.py create mode 100644 ofu_app/apps/food/migrations/0012_auto_20180326_2343.py create mode 100644 ofu_app/apps/food/templates/__init__.py create mode 100644 ofu_app/apps/food/templates/root_api.jinja diff --git a/ofu_app/apps/food/admin.py b/ofu_app/apps/food/admin.py index f36ae24..62f0bd6 100644 --- a/ofu_app/apps/food/admin.py +++ b/ofu_app/apps/food/admin.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals from django.contrib import admin -from apps.food.models import SingleFood, Menu, HappyHour, UserRating, UserFoodImage, FoodImage +from apps.food.models import SingleFood, Menu, HappyHour, UserFoodRating, UserFoodImage, FoodImage class SingleFoodInline(admin.TabularInline): @@ -22,7 +22,7 @@ class MenuAdmin(admin.ModelAdmin): # Register your models here. admin.site.register(SingleFood) admin.site.register(HappyHour) -admin.site.register(UserRating) +admin.site.register(UserFoodRating) admin.site.register(UserFoodImage) admin.site.register(Menu, MenuAdmin) admin.site.register(FoodImage) diff --git a/ofu_app/apps/food/migrations/0009_auto_20180324_0039.py b/ofu_app/apps/food/migrations/0009_auto_20180324_0039.py new file mode 100644 index 0000000..42b1ca9 --- /dev/null +++ b/ofu_app/apps/food/migrations/0009_auto_20180324_0039.py @@ -0,0 +1,49 @@ +# Generated by Django 2.0.1 on 2018-03-24 00:39 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('food', '0008_auto_20180201_1018'), + ] + + operations = [ + migrations.CreateModel( + name='UserFoodComment', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('comment', models.CharField(max_length=2048)), + ('food', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='food.SingleFood')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.CreateModel( + name='UserFoodRating', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('rating', models.FloatField(default=0)), + ('food', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='food.SingleFood')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.RemoveField( + model_name='userrating', + name='food', + ), + migrations.RemoveField( + model_name='userrating', + name='user', + ), + migrations.DeleteModel( + name='UserRating', + ), + migrations.AlterUniqueTogether( + name='userfoodcomment', + unique_together={('user', 'food')}, + ), + ] diff --git a/ofu_app/apps/food/migrations/0010_auto_20180325_1630.py b/ofu_app/apps/food/migrations/0010_auto_20180325_1630.py new file mode 100644 index 0000000..ac00a0c --- /dev/null +++ b/ofu_app/apps/food/migrations/0010_auto_20180325_1630.py @@ -0,0 +1,26 @@ +# Generated by Django 2.0.1 on 2018-03-25 16:30 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('food', '0009_auto_20180324_0039'), + ] + + operations = [ + migrations.CreateModel( + name='HappyHourLocation', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=256, unique=True)), + ], + ), + migrations.AlterField( + model_name='happyhour', + name='location', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='food.HappyHourLocation'), + ), + ] diff --git a/ofu_app/apps/food/migrations/0011_auto_20180326_2255.py b/ofu_app/apps/food/migrations/0011_auto_20180326_2255.py new file mode 100644 index 0000000..a298e24 --- /dev/null +++ b/ofu_app/apps/food/migrations/0011_auto_20180326_2255.py @@ -0,0 +1,23 @@ +# Generated by Django 2.0.1 on 2018-03-26 22:55 + +from django.conf import settings +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('food', '0010_auto_20180325_1630'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='happyhour', + unique_together={('location', 'starttime', 'endtime')}, + ), + migrations.AlterUniqueTogether( + name='userfoodrating', + unique_together={('user', 'food')}, + ), + ] diff --git a/ofu_app/apps/food/migrations/0012_auto_20180326_2343.py b/ofu_app/apps/food/migrations/0012_auto_20180326_2343.py new file mode 100644 index 0000000..031dcff --- /dev/null +++ b/ofu_app/apps/food/migrations/0012_auto_20180326_2343.py @@ -0,0 +1,19 @@ +# Generated by Django 2.0.1 on 2018-03-26 23:43 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('food', '0011_auto_20180326_2255'), + ] + + operations = [ + migrations.AlterField( + model_name='userfoodrating', + name='rating', + field=models.FloatField(default=0, validators=[django.core.validators.MaxValueValidator(5), django.core.validators.MinValueValidator(0)]), + ), + ] diff --git a/ofu_app/apps/food/templates/__init__.py b/ofu_app/apps/food/templates/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ofu_app/apps/food/templates/root_api.jinja b/ofu_app/apps/food/templates/root_api.jinja new file mode 100644 index 0000000..61d1f65 --- /dev/null +++ b/ofu_app/apps/food/templates/root_api.jinja @@ -0,0 +1,126 @@ +{% import '/macros/nav.jinja' as nav %} +{# ===== HTML ===== #} + + +{# ===== Head ===== #} + + + + + BaStA + + + + {% block js_extra %}{% endblock %} + + + + + + {% block css_extra %}{% endblock %} + + + + + +{# ===== Body ===== #} + +{% block body %} +
+
+
+ {% if request.user.is_authenticated %} + + {% else %} + + {% endif %} +
+
+ {% block headline %}{% endblock %}
+
+ +
+
+
{% block bottom_nav %}{% endblock %}
+
+ {% block content %}{% endblock %} +
+ + + +
MethodRequest URLDescription
+
+
+ + {% block test %} +
+
+ Hinweis: Diese Seite dient nur zu Testzwecken. + Wir garantieren weder die Vollständigkeit, noch + die Korrektheit der dargestellten Daten. +
+
+ {% endblock %} + {% block footer %} + + + {% endblock %} +
+{% endblock %} + + + + + +{% block js_tail %}{% endblock %} + + \ No newline at end of file diff --git a/ofu_app/apps/food/tests/tests_api.py b/ofu_app/apps/food/tests/tests_api.py index 18d16a4..10a562b 100644 --- a/ofu_app/apps/food/tests/tests_api.py +++ b/ofu_app/apps/food/tests/tests_api.py @@ -4,9 +4,8 @@ from __future__ import unicode_literals from django.test import TestCase from django.urls import reverse from apps.food.models import SingleFood, Menu -from apps.food.api.serializers import MenuSerializer +from apps.food.api.v1_1.serializers import MenuSerializer from rest_framework import status -from rest_framework.test import APIRequestFactory from datetime import datetime diff --git a/ofu_app/apps/food/urls.py b/ofu_app/apps/food/urls.py index 571dfa8..f85beb9 100644 --- a/ofu_app/apps/food/urls.py +++ b/ofu_app/apps/food/urls.py @@ -13,12 +13,11 @@ Including another URLconf 1. Import the include() function: from django.conf.urls import url, include 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ -from django.conf.urls import url, include from rest_framework import routers from apps.food import views, admin_views -from django.conf.urls import url, include -from apps.food.api import views as api_views +from django.conf.urls import url +from apps.food.api.v1_1 import views as api_views # API Version 1.0 apiRouter_v1 = routers.DefaultRouter() diff --git a/ofu_app/apps/food/utils/migrate_data.py b/ofu_app/apps/food/utils/migrate_data.py index 0840cfc..6d6c43e 100644 --- a/ofu_app/apps/food/utils/migrate_data.py +++ b/ofu_app/apps/food/utils/migrate_data.py @@ -2,7 +2,7 @@ import json from datetime import datetime from pprint import pprint from django.db.utils import IntegrityError -from apps.food.models import SingleFood, Menu, HappyHour, Allergene +from apps.food.models import SingleFood, Menu, HappyHour, Allergene, HappyHourLocation from apps.food.utils.parser import mensa_page_parser, fekide_happyhour_page_parser, cafete_page_parser import logging @@ -75,21 +75,22 @@ def writeStudentenwerkDataInDB(data): def writeFekideDataInDB(data): for happyhour_data in data['happyhours']: time = str(happyhour_data['time']).replace(" ", "").split("-") - happyhour, new = HappyHour.objects.get_or_create(date=datetime.strptime(data['day'], "%A, %d.%m.%Y"), - location=happyhour_data['location'], - description=happyhour_data['description'], - starttime=datetime.strptime(time[0], "%H:%M").time(), - endtime=datetime.strptime(time[1], "%H:%M").time()) - if not new: + try: + location, _ = HappyHourLocation.objects.get_or_create(name=happyhour_data['location']) + happyhour, _ = HappyHour.objects.get_or_create(location=location, + starttime=datetime.strptime(time[0], "%H:%M").time(), + endtime=datetime.strptime(time[1], "%H:%M").time()) happyhour.date = datetime.strptime(data['day'], "%A, %d.%m.%Y") - happyhour.location = happyhour_data['location'] happyhour.description = happyhour_data['description'] - happyhour.starttime = datetime.strptime(time[0], "%H:%M").time() - happyhour.endtime = datetime.strptime(time[1], "%H:%M").time() happyhour.save() - logger.info("%s: Happy Hour: Location: %s, Description: %s", - str(happyhour.date.date()), str(happyhour.location), str(happyhour.description)) + logger.info("{date}: Happy Hour: Location: {location}, Description: {description}".format( + date=happyhour.date, + location=happyhour.location, + description=happyhour.description) + ) + except Exception as e: + logger.exception(e) def writeoutDBObjects(): @@ -102,10 +103,13 @@ def writeoutDBObjects(): def delete(): happy_hours = HappyHour.objects.all() - print("Deleted following Happy Hours:") + logger.info("Deleted following Happy Hours:") for happy_hour in happy_hours: - print("%s: Happy Hour: Location: %s, Description: %s" % ( - str(happy_hour.date), str(happy_hour.location), str(happy_hour.description))) + logger.info("{date}: Happy Hour: Location: {location}, Description: {description}".format( + date=happy_hour.date, + location=happy_hour.location, + description=happy_hour.description) + ) happy_hour.delete() diff --git a/ofu_app/apps/food/views.py b/ofu_app/apps/food/views.py index 399461e..b209ecd 100644 --- a/ofu_app/apps/food/views.py +++ b/ofu_app/apps/food/views.py @@ -7,7 +7,7 @@ from django.http import HttpResponse from django.shortcuts import render from apps.food.forms import UploadImageForm -from apps.food.models import Menu, HappyHour, SingleFood, UserRating, UserFoodImage, FoodImage +from apps.food.models import Menu, HappyHour, SingleFood, UserFoodRating, UserFoodImage, FoodImage # Create your views here. @@ -100,12 +100,12 @@ def food_rating(request): rating = request.GET.get('rating', None) if food_id and rating: food = SingleFood.objects.get(id=food_id) - user_rating, created = UserRating.objects.get_or_create(user=request.user, - food=food) + user_rating, created = UserFoodRating.objects.get_or_create(user=request.user, + food=food) user_rating.rating = rating user_rating.save() - food_user_ratings = UserRating.objects.all().filter(food=food) + food_user_ratings = UserFoodRating.objects.all().filter(food=food) sum = 0 for food_user_rating in food_user_ratings: sum += food_user_rating.rating