diff --git a/ofu_app/api/admin.py b/ofu_app/api/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/ofu_app/api/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/ofu_app/api/apps.py b/ofu_app/api/apps.py deleted file mode 100644 index d87006d..0000000 --- a/ofu_app/api/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class ApiConfig(AppConfig): - name = 'api' diff --git a/ofu_app/api/migrations/__init__.py b/ofu_app/api/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/ofu_app/api/models.py b/ofu_app/api/models.py deleted file mode 100644 index 71a8362..0000000 --- a/ofu_app/api/models.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.db import models - -# Create your models here. diff --git a/ofu_app/api/serializers/food_serializers.py b/ofu_app/api/serializers/food_serializers.py deleted file mode 100644 index c1eb62b..0000000 --- a/ofu_app/api/serializers/food_serializers.py +++ /dev/null @@ -1,27 +0,0 @@ -from apps.food.models import Menu, SingleFood, HappyHour -from rest_framework import serializers - - -class SingleFoodSerializer(serializers.HyperlinkedModelSerializer): - class Meta: - model = SingleFood - fields = ('name', 'rating') - - -class MenuSerializer(serializers.HyperlinkedModelSerializer): - date = serializers.DateField(format='iso-8601') - menu = SingleFoodSerializer(many=True, read_only=True) - - class Meta: - model = Menu - fields = ('date', 'location', 'menu') - - -class HappyHourSerializer(serializers.HyperlinkedModelSerializer): - date = serializers.DateField(format='iso-8601') - starttime = serializers.TimeField() - endtime = serializers.TimeField() - - class Meta: - model = HappyHour - fields = ('date', 'starttime', 'endtime', 'location', 'description') diff --git a/ofu_app/api/tests.py b/ofu_app/api/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/ofu_app/api/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/ofu_app/api/urls.py b/ofu_app/api/urls.py deleted file mode 100644 index 11360a9..0000000 --- a/ofu_app/api/urls.py +++ /dev/null @@ -1,29 +0,0 @@ -"""ofu_app URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/1.11/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') -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 api.views import food_views - -router = routers.DefaultRouter() -router.register(r'food', food_views.FoodViewSet, base_name='Food') -router.register(r'happy-hour', food_views.HappyHourViewSet, base_name='HappyHours') - -urlpatterns = [ - # url(r'^api/v1/', ), - url(r'^api/v1/', include(router.urls)), - url(r'^api/auth/', include('rest_framework.urls', namespace='rest_framework')) -] diff --git a/ofu_app/api/views/__init__.py b/ofu_app/api/views/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/ofu_app/api/views/base_views.py b/ofu_app/api/views/base_views.py deleted file mode 100644 index cfc0a1c..0000000 --- a/ofu_app/api/views/base_views.py +++ /dev/null @@ -1,10 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from rest_framework import generics - - -class APIRoot(generics.GenericAPIView): - """ - My API documentation - """ diff --git a/ofu_app/apps/donar/migrations/0001_initial.py b/ofu_app/apps/donar/migrations/0001_initial.py index d5669f8..3852a70 100644 --- a/ofu_app/apps/donar/migrations/0001_initial.py +++ b/ofu_app/apps/donar/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 01:44 +# Generated by Django 1.11.7 on 2017-12-21 11:43 from __future__ import unicode_literals import datetime @@ -31,7 +31,7 @@ class Migration(migrations.Migration): name='Lecture_Terms', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), - ('starttime', models.TimeField(default=datetime.datetime(2017, 12, 4, 1, 44, 13, 10710, tzinfo=utc))), + ('starttime', models.TimeField(default=datetime.datetime(2017, 12, 21, 11, 43, 16, 16543, tzinfo=utc))), ], ), migrations.CreateModel( diff --git a/ofu_app/apps/donar/migrations/0002_auto_20171204_0244.py b/ofu_app/apps/donar/migrations/0002_auto_20180105_0300.py similarity index 83% rename from ofu_app/apps/donar/migrations/0002_auto_20171204_0244.py rename to ofu_app/apps/donar/migrations/0002_auto_20180105_0300.py index c0c6028..e6833a3 100644 --- a/ofu_app/apps/donar/migrations/0002_auto_20171204_0244.py +++ b/ofu_app/apps/donar/migrations/0002_auto_20180105_0300.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 01:44 +# Generated by Django 1.11.7 on 2018-01-05 02:00 from __future__ import unicode_literals import datetime @@ -17,6 +17,6 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='lecture_terms', name='starttime', - field=models.TimeField(default=datetime.datetime(2017, 12, 4, 1, 44, 28, 301106, tzinfo=utc)), + field=models.TimeField(default=datetime.datetime(2018, 1, 5, 2, 0, 11, 705365, tzinfo=utc)), ), ] diff --git a/ofu_app/apps/donar/migrations/0003_auto_20171204_0303.py b/ofu_app/apps/donar/migrations/0003_auto_20171204_0303.py deleted file mode 100644 index 0527bc5..0000000 --- a/ofu_app/apps/donar/migrations/0003_auto_20171204_0303.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 02:03 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -from django.utils.timezone import utc - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0002_auto_20171204_0244'), - ] - - operations = [ - migrations.AlterField( - model_name='lecture_terms', - name='starttime', - field=models.TimeField(default=datetime.datetime(2017, 12, 4, 2, 3, 45, 618615, tzinfo=utc)), - ), - ] diff --git a/ofu_app/apps/donar/migrations/0006_auto_20171204_1543.py b/ofu_app/apps/donar/migrations/0003_auto_20180105_0304.py similarity index 76% rename from ofu_app/apps/donar/migrations/0006_auto_20171204_1543.py rename to ofu_app/apps/donar/migrations/0003_auto_20180105_0304.py index c4f59ff..113c4f3 100644 --- a/ofu_app/apps/donar/migrations/0006_auto_20171204_1543.py +++ b/ofu_app/apps/donar/migrations/0003_auto_20180105_0304.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 14:43 +# Generated by Django 1.11.7 on 2018-01-05 02:04 from __future__ import unicode_literals import datetime @@ -10,13 +10,13 @@ from django.utils.timezone import utc class Migration(migrations.Migration): dependencies = [ - ('donar', '0005_auto_20171204_0454'), + ('donar', '0002_auto_20180105_0300'), ] operations = [ migrations.AlterField( model_name='lecture_terms', name='starttime', - field=models.TimeField(default=datetime.datetime(2017, 12, 4, 14, 42, 5, 347, tzinfo=utc)), + field=models.TimeField(default=datetime.datetime(2018, 1, 5, 2, 4, 12, 19246, tzinfo=utc)), ), ] diff --git a/ofu_app/apps/donar/migrations/0004_auto_20171204_0447.py b/ofu_app/apps/donar/migrations/0004_auto_20171204_0447.py deleted file mode 100644 index 39e080c..0000000 --- a/ofu_app/apps/donar/migrations/0004_auto_20171204_0447.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 03:47 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -from django.utils.timezone import utc - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0003_auto_20171204_0303'), - ] - - operations = [ - migrations.AlterField( - model_name='lecture_terms', - name='starttime', - field=models.TimeField(default=datetime.datetime(2017, 12, 4, 3, 47, 55, 513852, tzinfo=utc)), - ), - ] diff --git a/ofu_app/apps/donar/migrations/0005_auto_20171204_0454.py b/ofu_app/apps/donar/migrations/0005_auto_20171204_0454.py deleted file mode 100644 index 4daa17e..0000000 --- a/ofu_app/apps/donar/migrations/0005_auto_20171204_0454.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 03:54 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -from django.utils.timezone import utc - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0004_auto_20171204_0447'), - ] - - operations = [ - migrations.AlterField( - model_name='lecture_terms', - name='starttime', - field=models.TimeField(default=datetime.datetime(2017, 12, 4, 3, 54, 33, 503002, tzinfo=utc)), - ), - ] diff --git a/ofu_app/apps/donar/migrations/0007_auto_20171204_1634.py b/ofu_app/apps/donar/migrations/0007_auto_20171204_1634.py deleted file mode 100644 index 3519f5e..0000000 --- a/ofu_app/apps/donar/migrations/0007_auto_20171204_1634.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 15:34 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -from django.utils.timezone import utc - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0006_auto_20171204_1543'), - ] - - operations = [ - migrations.AlterField( - model_name='lecture_terms', - name='starttime', - field=models.TimeField(default=datetime.datetime(2017, 12, 4, 15, 34, 41, 765204, tzinfo=utc)), - ), - ] diff --git a/ofu_app/apps/donar/migrations/0008_auto_20171204_1645.py b/ofu_app/apps/donar/migrations/0008_auto_20171204_1645.py deleted file mode 100644 index 5758407..0000000 --- a/ofu_app/apps/donar/migrations/0008_auto_20171204_1645.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 15:45 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -from django.utils.timezone import utc - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0007_auto_20171204_1634'), - ] - - operations = [ - migrations.AlterField( - model_name='lecture_terms', - name='starttime', - field=models.TimeField(default=datetime.datetime(2017, 12, 4, 15, 45, 46, 720753, tzinfo=utc)), - ), - ] diff --git a/ofu_app/apps/donar/migrations/0009_auto_20171204_1648.py b/ofu_app/apps/donar/migrations/0009_auto_20171204_1648.py deleted file mode 100644 index 511cf38..0000000 --- a/ofu_app/apps/donar/migrations/0009_auto_20171204_1648.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 15:48 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -from django.utils.timezone import utc - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0008_auto_20171204_1645'), - ] - - operations = [ - migrations.AlterField( - model_name='lecture_terms', - name='starttime', - field=models.TimeField(default=datetime.datetime(2017, 12, 4, 15, 48, 28, 229201, tzinfo=utc)), - ), - ] diff --git a/ofu_app/api/__init__.py b/ofu_app/apps/food/api/__init__.py similarity index 100% rename from ofu_app/api/__init__.py rename to ofu_app/apps/food/api/__init__.py diff --git a/ofu_app/apps/food/api/serializers.py b/ofu_app/apps/food/api/serializers.py new file mode 100644 index 0000000..958bde6 --- /dev/null +++ b/ofu_app/apps/food/api/serializers.py @@ -0,0 +1,43 @@ +from rest_framework import serializers + +from apps.food.models import Menu, SingleFood, HappyHour, Allergene, UserFoodImage + + +class UserFoodImageSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = UserFoodImage + fields = ('id', 'image', 'thumb') + + +class AllergensSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Allergene + fields = ('id', 'name') + + +class SingleFoodSerializer(serializers.HyperlinkedModelSerializer): + allergens = AllergensSerializer(many=True, read_only=True) + image = UserFoodImageSerializer(many=True, read_only=True) + + class Meta: + model = SingleFood + fields = ('name', 'rating', 'price_student', 'price_employee', 'price_guest', 'allergens', 'image') + + +class MenuSerializer(serializers.HyperlinkedModelSerializer): + date = serializers.DateField(format='iso-8601') + menu = SingleFoodSerializer(many=True, read_only=True) + + class Meta: + model = Menu + fields = ('id', 'date', 'location', 'menu') + + +class HappyHourSerializer(serializers.HyperlinkedModelSerializer): + date = serializers.DateField(format='iso-8601') + starttime = serializers.TimeField() + endtime = serializers.TimeField() + + class Meta: + model = HappyHour + fields = ('id', 'date', 'starttime', 'endtime', 'location', 'description') diff --git a/ofu_app/api/views/food_views.py b/ofu_app/apps/food/api/views.py similarity index 95% rename from ofu_app/api/views/food_views.py rename to ofu_app/apps/food/api/views.py index b580ebd..20b268d 100644 --- a/ofu_app/api/views/food_views.py +++ b/ofu_app/apps/food/api/views.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals from datetime import datetime from datetime import timedelta -from api.serializers.food_serializers import MenuSerializer, HappyHourSerializer +from apps.food.api.serializers import MenuSerializer, HappyHourSerializer from apps.food.models import Menu, HappyHour from rest_framework import viewsets @@ -14,7 +14,7 @@ from rest_framework.permissions import AllowAny # @api_view(['GET']) @permission_classes((AllowAny,)) -class FoodViewSet(viewsets.ModelViewSet): +class FoodViewSet(viewsets.ModelViewSet, ): """ API endpoint that allows users to be viewed or edited. """ diff --git a/ofu_app/apps/food/migrations/0001_initial.py b/ofu_app/apps/food/migrations/0001_initial.py index 9c21693..aa4b68f 100644 --- a/ofu_app/apps/food/migrations/0001_initial.py +++ b/ofu_app/apps/food/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 01:44 +# Generated by Django 1.11.7 on 2017-12-21 11:43 from __future__ import unicode_literals from django.conf import settings @@ -59,7 +59,8 @@ class Migration(migrations.Migration): name='UserFoodImage', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), - ('image', models.ImageField(blank=True, upload_to='food/%Y/%m/%W')), + ('image', models.ImageField(blank=True, upload_to='food/originals/%Y/%m/%W')), + ('thumbnail', models.ImageField(blank=True, upload_to='food/thumbs/%Y/%m/%W')), ('food', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='food.SingleFood')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], @@ -76,12 +77,12 @@ class Migration(migrations.Migration): migrations.AddField( model_name='singlefood', name='image', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_images', to='food.UserFoodImage'), + field=models.ManyToManyField(blank=True, null=True, to='food.UserFoodImage'), ), migrations.AddField( model_name='menu', name='menu', - field=models.ManyToManyField(to='food.SingleFood'), + field=models.ManyToManyField(related_name='foods', to='food.SingleFood'), ), migrations.AlterUniqueTogether( name='happyhour', diff --git a/ofu_app/apps/food/migrations/0002_auto_20171204_0303.py b/ofu_app/apps/food/migrations/0002_auto_20171204_0303.py deleted file mode 100644 index 0f43e37..0000000 --- a/ofu_app/apps/food/migrations/0002_auto_20171204_0303.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 02:03 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='singlefood', - name='image', - ), - migrations.AddField( - model_name='singlefood', - name='image', - field=models.ManyToManyField(related_name='user_images', to='food.UserFoodImage'), - ), - ] diff --git a/ofu_app/apps/food/migrations/0002_auto_20180105_0304.py b/ofu_app/apps/food/migrations/0002_auto_20180105_0304.py new file mode 100644 index 0000000..258aeca --- /dev/null +++ b/ofu_app/apps/food/migrations/0002_auto_20180105_0304.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.7 on 2018-01-05 02:04 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('food', '0001_initial'), + ] + + operations = [ + migrations.RenameField( + model_name='userfoodimage', + old_name='thumbnail', + new_name='thumb', + ), + ] diff --git a/ofu_app/apps/food/migrations/0003_auto_20171204_0454.py b/ofu_app/apps/food/migrations/0003_auto_20171204_0454.py deleted file mode 100644 index 84f9502..0000000 --- a/ofu_app/apps/food/migrations/0003_auto_20171204_0454.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 03:54 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0002_auto_20171204_0303'), - ] - - operations = [ - migrations.AlterField( - model_name='singlefood', - name='image', - field=models.ManyToManyField(blank=True, null=True, to='food.UserFoodImage'), - ), - ] diff --git a/ofu_app/apps/food/migrations/0004_auto_20171204_1543.py b/ofu_app/apps/food/migrations/0004_auto_20171204_1543.py deleted file mode 100644 index a059ab9..0000000 --- a/ofu_app/apps/food/migrations/0004_auto_20171204_1543.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 14:43 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0003_auto_20171204_0454'), - ] - - operations = [ - migrations.RemoveField( - model_name='menu', - name='menu', - ), - migrations.AddField( - model_name='menu', - name='menu', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='food.SingleFood'), - preserve_default=False, - ), - ] diff --git a/ofu_app/apps/food/migrations/0005_auto_20171204_1634.py b/ofu_app/apps/food/migrations/0005_auto_20171204_1634.py deleted file mode 100644 index 39f831d..0000000 --- a/ofu_app/apps/food/migrations/0005_auto_20171204_1634.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.7 on 2017-12-04 15:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0004_auto_20171204_1543'), - ] - - operations = [ - migrations.RemoveField( - model_name='menu', - name='menu', - ), - migrations.AddField( - model_name='menu', - name='menu', - field=models.ManyToManyField(to='food.SingleFood'), - ), - ] diff --git a/ofu_app/apps/food/models.py b/ofu_app/apps/food/models.py index c322f46..5a1a543 100644 --- a/ofu_app/apps/food/models.py +++ b/ofu_app/apps/food/models.py @@ -1,8 +1,15 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -from django.utils import timezone -from django.db import models + +import os +from io import BytesIO + +from PIL import Image +from django.conf import settings from django.contrib.auth.models import User +from django.core.files.uploadedfile import SimpleUploadedFile +from django.db import models +from django.utils import timezone MAX_LENGTH = 60 @@ -72,10 +79,37 @@ class UserFoodImage(models.Model): id = models.AutoField(primary_key=True) 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) + image = models.ImageField(upload_to='food/originals/%Y/%m/%W', blank=True) + thumb = models.ImageField(upload_to='food/thumbs/%Y/%m/%W', blank=True) class Meta: unique_together = ('user', 'food') def __str__(self): - return "User: %s - Rating: %s" % (self.user.username, str(self.image)) + return "User: %s - Image: %s" % (self.user.username, str(self.image)) + + def save(self, force_update=False, force_insert=False, thumb_size=(640, 480)): + image = Image.open(self.image) + + if image.mode not in ('L', 'RGB'): + image = image.convert('RGB') + image.thumbnail(thumb_size, Image.ANTIALIAS) + + # save the thumbnail to memory + temp_handle = BytesIO() + image.save(temp_handle, 'jpeg') + temp_handle.seek(0) # rewind the file + + # save to the thumbnail field + suf = SimpleUploadedFile(os.path.split(self.image.name)[-1], + temp_handle.read(), + content_type='image/jpg') + self.thumb.save('%s_%s_thumbnail.%s' % (self.food.name, self.user.username, 'jpg'), suf, save=False) + # save the image object + self.image.name = "%s_%s_original.%s" % (self.food.name, self.user.username, 'jpg') + super(UserFoodImage, self).save(force_update, force_insert) + + def delete(self, using=None, keep_parents=False): + os.remove(os.path.join(settings.MEDIA_ROOT, self.image.name)) + os.remove(os.path.join(settings.MEDIA_ROOT, self.thumb.name)) + super(UserFoodImage, self).delete() diff --git a/ofu_app/apps/food/urls.py b/ofu_app/apps/food/urls.py index 4041460..860a3d9 100644 --- a/ofu_app/apps/food/urls.py +++ b/ofu_app/apps/food/urls.py @@ -13,9 +13,31 @@ 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 + +# API Version 1.0 +apiRouter_v1 = routers.DefaultRouter() +apiRouter_v1.register(r'food', api_views.FoodViewSet, base_name='Food') +apiRouter_v1.register(r'happy-hour', api_views.HappyHourViewSet, base_name='HappyHours') + +# API Version 1.1 +apiRouter_v1_1 = routers.DefaultRouter() +apiRouter_v1_1.register(r'food', api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'food/(?P[feldkirchenstrasse, markusstrasse, erba, austrasse])/$', + api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'food/(?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})/$', api_views.FoodViewSet, + base_name='Food') +apiRouter_v1_1.register( + r'food/(?P)[feldkirchenstrasse, markusstrasse, erba, austrasse]/(?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})/$', + api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'food/today/$', api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'food/week/$', api_views.FoodViewSet, base_name='Food') +apiRouter_v1_1.register(r'happy-hour', api_views.HappyHourViewSet, base_name='HappyHours') urlpatterns = [ url(r'^$', views.food, name='food'), diff --git a/ofu_app/apps/food/views.py b/ofu_app/apps/food/views.py index c8ec0b2..64f7417 100644 --- a/ofu_app/apps/food/views.py +++ b/ofu_app/apps/food/views.py @@ -4,7 +4,6 @@ from __future__ import unicode_literals import datetime import os -from django.conf import settings from django.core.exceptions import ObjectDoesNotExist from django.http import HttpResponse from django.shortcuts import render @@ -138,7 +137,7 @@ def pic_upload(request, id): try: old_user_pic = UserFoodImage.objects.get(user=request.user, food=id) old_user_pic.delete() - os.remove(os.path.join(settings.MEDIA_ROOT, old_user_pic.image.name)) + except ObjectDoesNotExist: pass userPic = form.save(commit=False) diff --git a/ofu_app/core/settings.py b/ofu_app/core/settings.py index f8f8b01..f3b333c 100755 --- a/ofu_app/core/settings.py +++ b/ofu_app/core/settings.py @@ -40,7 +40,6 @@ INSTALLED_APPS = [ 'apps.events', 'apps.donar', 'apps.registration', - 'api', 'rest_framework', 'analytical', ] diff --git a/ofu_app/core/urls.py b/ofu_app/core/urls.py index 7fc92a0..bd15579 100755 --- a/ofu_app/core/urls.py +++ b/ofu_app/core/urls.py @@ -17,9 +17,18 @@ from core import views from django.conf.urls import url, include from django.contrib import admin from django.contrib.auth import views as auth_views +from rest_framework import routers +from apps.food import urls as food_urls from django.conf import settings from django.conf.urls.static import static +# API router +api_router_v1 = routers.DefaultRouter() +api_router_v1.registry.extend(food_urls.apiRouter_v1.registry) + +api_router_v1_1 = routers.DefaultRouter() +api_router_v1_1.registry.extend(food_urls.apiRouter_v1_1.registry) + urlpatterns = [ url(r'^login/$', auth_views.login, {'template_name': 'registration/login.jinja'}, name='login'), url(r'^logout/$', auth_views.logout, {'next_page': 'home'}, name='logout'), @@ -36,5 +45,8 @@ urlpatterns = [ url(r'^links/$', views.links, name='links-home'), url(r'^impressum/$', views.impressum, name='impressum'), - url(r'', include('api.urls')) + # -- API -- + url(r'^api/v1/', include(api_router_v1.urls)), + url(r'^api/v1.1/', include(api_router_v1_1.urls)), + url(r'^api/auth/', include('rest_framework.urls', namespace='rest_framework')) ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/ofu_app/media/food/default/default.jpg b/ofu_app/media/food/default/default.jpg new file mode 100644 index 0000000..2a9b759 Binary files /dev/null and b/ofu_app/media/food/default/default.jpg differ diff --git a/ofu_app/requirements.txt b/ofu_app/requirements.txt new file mode 100644 index 0000000..6e5370e --- /dev/null +++ b/ofu_app/requirements.txt @@ -0,0 +1,2 @@ +django +djangorestframework diff --git a/ofu_app/templates/base.jinja b/ofu_app/templates/base.jinja index 52c9023..34b644b 100644 --- a/ofu_app/templates/base.jinja +++ b/ofu_app/templates/base.jinja @@ -40,7 +40,6 @@ {# ===== Body ===== #} - {% block body %}
diff --git a/ofu_app/templates/donar/search_rooms.jinja b/ofu_app/templates/donar/search_rooms.jinja index 731a4dc..f2a0317 100644 --- a/ofu_app/templates/donar/search_rooms.jinja +++ b/ofu_app/templates/donar/search_rooms.jinja @@ -6,6 +6,7 @@
+ {% csrf_token %}
diff --git a/ofu_app/templates/macros/food_macros.jinja b/ofu_app/templates/macros/food_macros.jinja index 5064806..04a34e1 100644 --- a/ofu_app/templates/macros/food_macros.jinja +++ b/ofu_app/templates/macros/food_macros.jinja @@ -68,9 +68,9 @@ {% endfor %} {% else %} - - Bild + Bild {% endif %}