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 %}
+
+
+ | Method | Request URL | Description |
+ |
+
+
+
+
+ {% 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