From 2fa2da64b898eeb0804776cad70cd5ea0fdd4ea4 Mon Sep 17 00:00:00 2001 From: Marius Hofmann Date: Thu, 26 Oct 2017 00:50:10 +0200 Subject: [PATCH 1/6] added allergens and prices to db (view todo) --- ofu_app/apps/donar/migrations/0001_initial.py | 28 +++++++--- .../migrations/0003_auto_20171004_0211.py | 55 ------------------- .../apps/donar/migrations/0004_vgn_coords.py | 23 -------- .../migrations/0005_auto_20171017_1603.py | 37 ------------- .../apps/events/migrations/0001_initial.py | 24 ++++++-- .../migrations/0002_auto_20171005_1655.py | 36 ------------ .../migrations/0003_auto_20171005_1807.py | 39 ------------- .../migrations/0004_auto_20171005_1923.py | 20 ------- .../migrations/0005_auto_20171005_2004.py | 20 ------- ofu_app/apps/food/migrations/0001_initial.py | 26 +++++++-- .../migrations/0002_auto_20171008_1102.py | 26 --------- .../migrations/0002_auto_20171026_0033.py | 35 ++++++++++++ .../migrations/0003_auto_20171013_1902.py | 19 ------- .../migrations/0003_auto_20171026_0040.py} | 10 ++-- .../migrations/0004_auto_20171020_0146.py | 25 --------- .../migrations/0005_auto_20171020_0549.py | 40 -------------- ofu_app/apps/food/models.py | 6 +- ofu_app/apps/food/utils/migrate_data.py | 31 ++++++++++- .../food/utils/parser/cafete_page_parser.py | 4 +- .../food/utils/parser/mensa_page_parser.py | 31 ++++++++--- ofu_app/templates/macros/food_macros.jinja | 1 + 21 files changed, 161 insertions(+), 375 deletions(-) delete mode 100644 ofu_app/apps/donar/migrations/0003_auto_20171004_0211.py delete mode 100644 ofu_app/apps/donar/migrations/0004_vgn_coords.py delete mode 100644 ofu_app/apps/donar/migrations/0005_auto_20171017_1603.py delete mode 100644 ofu_app/apps/events/migrations/0002_auto_20171005_1655.py delete mode 100644 ofu_app/apps/events/migrations/0003_auto_20171005_1807.py delete mode 100644 ofu_app/apps/events/migrations/0004_auto_20171005_1923.py delete mode 100644 ofu_app/apps/events/migrations/0005_auto_20171005_2004.py delete mode 100644 ofu_app/apps/food/migrations/0002_auto_20171008_1102.py create mode 100644 ofu_app/apps/food/migrations/0002_auto_20171026_0033.py delete mode 100644 ofu_app/apps/food/migrations/0003_auto_20171013_1902.py rename ofu_app/apps/{donar/migrations/0002_auto_20171004_0016.py => food/migrations/0003_auto_20171026_0040.py} (50%) delete mode 100644 ofu_app/apps/food/migrations/0004_auto_20171020_0146.py delete mode 100644 ofu_app/apps/food/migrations/0005_auto_20171020_0549.py diff --git a/ofu_app/apps/donar/migrations/0001_initial.py b/ofu_app/apps/donar/migrations/0001_initial.py index 3a6711c..b9b1c54 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.2 on 2017-10-03 22:01 +# Generated by Django 1.11.6 on 2017-10-25 21:40 from __future__ import unicode_literals from django.db import migrations, models @@ -17,13 +17,25 @@ class Migration(migrations.Migration): name='Room', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), - ('key', models.CharField(max_length=60)), - ('address', models.CharField(max_length=60)), - ('building_key', models.CharField(max_length=60)), - ('floor', models.CharField(max_length=60)), - ('name', models.CharField(max_length=60)), - ('orgname', models.CharField(max_length=60)), - ('short', models.CharField(max_length=60)), + ('key', models.CharField(default='', max_length=60)), + ('address', models.CharField(default='', max_length=60)), + ('building_key', models.CharField(default='', max_length=60)), + ('floor', models.CharField(default='', max_length=60)), + ('name', models.CharField(default='', max_length=60)), + ('orgname', models.CharField(default='', max_length=60)), + ('short', models.CharField(max_length=60, unique=True)), + ('size', models.CharField(default='', max_length=60)), + ('description', models.CharField(default='', max_length=200)), + ], + ), + migrations.CreateModel( + name='VGN_Coords', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=60, unique=True)), + ('coords', models.CharField(max_length=60, unique=True)), + ('longitude', models.CharField(max_length=60, unique=True)), + ('latitude', models.CharField(max_length=60, unique=True)), ], ), ] diff --git a/ofu_app/apps/donar/migrations/0003_auto_20171004_0211.py b/ofu_app/apps/donar/migrations/0003_auto_20171004_0211.py deleted file mode 100644 index 96b39be..0000000 --- a/ofu_app/apps/donar/migrations/0003_auto_20171004_0211.py +++ /dev/null @@ -1,55 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-04 00:11 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0002_auto_20171004_0016'), - ] - - operations = [ - migrations.AddField( - model_name='room', - name='description', - field=models.CharField(default='', max_length=200), - ), - migrations.AddField( - model_name='room', - name='size', - field=models.CharField(default='', max_length=60), - ), - migrations.AlterField( - model_name='room', - name='address', - field=models.CharField(default='', max_length=60), - ), - migrations.AlterField( - model_name='room', - name='building_key', - field=models.CharField(default='', max_length=60), - ), - migrations.AlterField( - model_name='room', - name='floor', - field=models.CharField(default='', max_length=60), - ), - migrations.AlterField( - model_name='room', - name='key', - field=models.CharField(default='', max_length=60), - ), - migrations.AlterField( - model_name='room', - name='name', - field=models.CharField(default='', max_length=60), - ), - migrations.AlterField( - model_name='room', - name='orgname', - field=models.CharField(default='', max_length=60), - ), - ] diff --git a/ofu_app/apps/donar/migrations/0004_vgn_coords.py b/ofu_app/apps/donar/migrations/0004_vgn_coords.py deleted file mode 100644 index d20ed2a..0000000 --- a/ofu_app/apps/donar/migrations/0004_vgn_coords.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-17 13:34 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0003_auto_20171004_0211'), - ] - - operations = [ - migrations.CreateModel( - name='VGN_Coords', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False)), - ('name', models.CharField(default='', max_length=60, unique=True)), - ('coords', models.CharField(default='', max_length=60, unique=True)), - ], - ), - ] diff --git a/ofu_app/apps/donar/migrations/0005_auto_20171017_1603.py b/ofu_app/apps/donar/migrations/0005_auto_20171017_1603.py deleted file mode 100644 index 744056d..0000000 --- a/ofu_app/apps/donar/migrations/0005_auto_20171017_1603.py +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-17 14:03 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0004_vgn_coords'), - ] - - operations = [ - migrations.AddField( - model_name='vgn_coords', - name='latitude', - field=models.CharField(default=0, max_length=60, unique=True), - preserve_default=False, - ), - migrations.AddField( - model_name='vgn_coords', - name='longitude', - field=models.CharField(default=0, max_length=60, unique=True), - preserve_default=False, - ), - migrations.AlterField( - model_name='vgn_coords', - name='coords', - field=models.CharField(max_length=60, unique=True), - ), - migrations.AlterField( - model_name='vgn_coords', - name='name', - field=models.CharField(max_length=60, unique=True), - ), - ] diff --git a/ofu_app/apps/events/migrations/0001_initial.py b/ofu_app/apps/events/migrations/0001_initial.py index 6c1b9bd..8160b3c 100644 --- a/ofu_app/apps/events/migrations/0001_initial.py +++ b/ofu_app/apps/events/migrations/0001_initial.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-02 20:56 +# Generated by Django 1.11.6 on 2017-10-25 21:40 from __future__ import unicode_literals from django.db import migrations, models @@ -20,14 +20,28 @@ class Migration(migrations.Migration): ('id', models.AutoField(primary_key=True, serialize=False)), ('title', models.CharField(max_length=60)), ('category', models.CharField(max_length=60)), - ('link', models.CharField(max_length=60)), - ('location', models.CharField(max_length=60)), - ('time', models.TimeField(default=django.utils.timezone.now)), + ('link', models.CharField(blank=True, max_length=60)), ('date', models.DateField(default=django.utils.timezone.now)), + ('time', models.TimeField(default=django.utils.timezone.now)), + ('presenter', models.CharField(blank=True, max_length=60)), + ('orgname', models.CharField(blank=True, max_length=60)), ], ), + migrations.CreateModel( + name='Location', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('key', models.CharField(blank=True, max_length=60)), + ('name', models.CharField(max_length=60, unique=True)), + ], + ), + migrations.AddField( + model_name='event', + name='locations', + field=models.ManyToManyField(to='events.Location'), + ), migrations.AlterUniqueTogether( name='event', - unique_together=set([('date', 'location')]), + unique_together=set([('date', 'time', 'title')]), ), ] diff --git a/ofu_app/apps/events/migrations/0002_auto_20171005_1655.py b/ofu_app/apps/events/migrations/0002_auto_20171005_1655.py deleted file mode 100644 index a9ff10d..0000000 --- a/ofu_app/apps/events/migrations/0002_auto_20171005_1655.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-05 14:55 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('events', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Location', - fields=[ - ('id', models.AutoField(primary_key=True, serialize=False)), - ('key', models.CharField(max_length=60)), - ('name', models.CharField(max_length=60)), - ], - ), - migrations.AlterUniqueTogether( - name='event', - unique_together=set([]), - ), - migrations.RemoveField( - model_name='event', - name='location', - ), - migrations.AddField( - model_name='event', - name='location', - field=models.ManyToManyField(to='events.Location'), - ), - ] diff --git a/ofu_app/apps/events/migrations/0003_auto_20171005_1807.py b/ofu_app/apps/events/migrations/0003_auto_20171005_1807.py deleted file mode 100644 index 94e16cc..0000000 --- a/ofu_app/apps/events/migrations/0003_auto_20171005_1807.py +++ /dev/null @@ -1,39 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-05 16:07 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('events', '0002_auto_20171005_1655'), - ] - - operations = [ - migrations.AddField( - model_name='event', - name='orgname', - field=models.CharField(blank=True, max_length=60), - ), - migrations.AddField( - model_name='event', - name='presenter', - field=models.CharField(blank=True, max_length=60), - ), - migrations.AlterField( - model_name='event', - name='link', - field=models.CharField(blank=True, max_length=60), - ), - migrations.AlterField( - model_name='location', - name='key', - field=models.CharField(blank=True, max_length=60), - ), - migrations.AlterUniqueTogether( - name='event', - unique_together=set([('date', 'time', 'title')]), - ), - ] diff --git a/ofu_app/apps/events/migrations/0004_auto_20171005_1923.py b/ofu_app/apps/events/migrations/0004_auto_20171005_1923.py deleted file mode 100644 index 73dfcc2..0000000 --- a/ofu_app/apps/events/migrations/0004_auto_20171005_1923.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-05 17:23 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('events', '0003_auto_20171005_1807'), - ] - - operations = [ - migrations.AlterField( - model_name='location', - name='name', - field=models.CharField(max_length=60, unique=True), - ), - ] diff --git a/ofu_app/apps/events/migrations/0005_auto_20171005_2004.py b/ofu_app/apps/events/migrations/0005_auto_20171005_2004.py deleted file mode 100644 index 32254bc..0000000 --- a/ofu_app/apps/events/migrations/0005_auto_20171005_2004.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-05 18:04 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('events', '0004_auto_20171005_1923'), - ] - - operations = [ - migrations.RenameField( - model_name='event', - old_name='location', - new_name='locations', - ), - ] diff --git a/ofu_app/apps/food/migrations/0001_initial.py b/ofu_app/apps/food/migrations/0001_initial.py index 5b5cfeb..85e2fa6 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.2 on 2017-10-02 20:56 +# Generated by Django 1.11.6 on 2017-10-25 21:40 from __future__ import unicode_literals from django.db import migrations, models @@ -14,13 +14,20 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name='Allergene', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('name', models.CharField(max_length=60, unique=True)), + ], + ), migrations.CreateModel( name='HappyHour', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('date', models.DateField(default=django.utils.timezone.now)), - ('starttime', models.DateField(default=django.utils.timezone.now)), - ('endtime', models.DateField(default=django.utils.timezone.now)), + ('starttime', models.TimeField(default=django.utils.timezone.now)), + ('endtime', models.TimeField(default=django.utils.timezone.now)), ('location', models.CharField(max_length=60)), ('description', models.CharField(max_length=60)), ], @@ -38,6 +45,17 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('name', models.CharField(max_length=60, unique=True)), + ('price_student', models.CharField(max_length=10)), + ('price_employee', models.CharField(max_length=10)), + ('price_guest', models.CharField(max_length=10)), + ('image', models.ImageField(blank=True, upload_to='food/%Y/%m/')), + ('rating', models.FloatField(default=0)), + ('first_star', models.SmallIntegerField(default=0)), + ('second_star', models.SmallIntegerField(default=0)), + ('third_star', models.SmallIntegerField(default=0)), + ('fourth_star', models.SmallIntegerField(default=0)), + ('fifth_star', models.SmallIntegerField(default=0)), + ('allergens', models.ManyToManyField(to='food.Allergene')), ], ), migrations.AddField( @@ -47,7 +65,7 @@ class Migration(migrations.Migration): ), migrations.AlterUniqueTogether( name='happyhour', - unique_together=set([('date', 'location')]), + unique_together=set([('date', 'location', 'starttime', 'endtime')]), ), migrations.AlterUniqueTogether( name='menu', diff --git a/ofu_app/apps/food/migrations/0002_auto_20171008_1102.py b/ofu_app/apps/food/migrations/0002_auto_20171008_1102.py deleted file mode 100644 index b3f4dc4..0000000 --- a/ofu_app/apps/food/migrations/0002_auto_20171008_1102.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-08 09:02 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='happyhour', - name='endtime', - field=models.TimeField(default=django.utils.timezone.now), - ), - migrations.AlterField( - model_name='happyhour', - name='starttime', - field=models.TimeField(default=django.utils.timezone.now), - ), - ] diff --git a/ofu_app/apps/food/migrations/0002_auto_20171026_0033.py b/ofu_app/apps/food/migrations/0002_auto_20171026_0033.py new file mode 100644 index 0000000..9bcbe1e --- /dev/null +++ b/ofu_app/apps/food/migrations/0002_auto_20171026_0033.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-10-25 22:33 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('food', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='singlefood', + name='allergens', + field=models.ManyToManyField(blank=True, null=True, to='food.Allergene'), + ), + migrations.AlterField( + model_name='singlefood', + name='price_employee', + field=models.CharField(blank=True, max_length=10, null=True), + ), + migrations.AlterField( + model_name='singlefood', + name='price_guest', + field=models.CharField(blank=True, max_length=10, null=True), + ), + migrations.AlterField( + model_name='singlefood', + name='price_student', + field=models.CharField(blank=True, max_length=10, null=True), + ), + ] diff --git a/ofu_app/apps/food/migrations/0003_auto_20171013_1902.py b/ofu_app/apps/food/migrations/0003_auto_20171013_1902.py deleted file mode 100644 index f180b9f..0000000 --- a/ofu_app/apps/food/migrations/0003_auto_20171013_1902.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-13 17:02 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0002_auto_20171008_1102'), - ] - - operations = [ - migrations.AlterUniqueTogether( - name='happyhour', - unique_together=set([('date', 'location', 'starttime', 'endtime')]), - ), - ] diff --git a/ofu_app/apps/donar/migrations/0002_auto_20171004_0016.py b/ofu_app/apps/food/migrations/0003_auto_20171026_0040.py similarity index 50% rename from ofu_app/apps/donar/migrations/0002_auto_20171004_0016.py rename to ofu_app/apps/food/migrations/0003_auto_20171026_0040.py index 522314d..0798bf8 100644 --- a/ofu_app/apps/donar/migrations/0002_auto_20171004_0016.py +++ b/ofu_app/apps/food/migrations/0003_auto_20171026_0040.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-03 22:16 +# Generated by Django 1.11.6 on 2017-10-25 22:40 from __future__ import unicode_literals from django.db import migrations, models @@ -8,13 +8,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('donar', '0001_initial'), + ('food', '0002_auto_20171026_0033'), ] operations = [ migrations.AlterField( - model_name='room', - name='short', - field=models.CharField(max_length=60, unique=True), + model_name='singlefood', + name='allergens', + field=models.ManyToManyField(blank=True, to='food.Allergene'), ), ] diff --git a/ofu_app/apps/food/migrations/0004_auto_20171020_0146.py b/ofu_app/apps/food/migrations/0004_auto_20171020_0146.py deleted file mode 100644 index a0bdeb8..0000000 --- a/ofu_app/apps/food/migrations/0004_auto_20171020_0146.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-19 23:46 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0003_auto_20171013_1902'), - ] - - operations = [ - migrations.AddField( - model_name='singlefood', - name='image', - field=models.ImageField(blank=True, upload_to='food/%Y/%m/'), - ), - migrations.AddField( - model_name='singlefood', - name='rating', - field=models.FloatField(default=0), - ), - ] diff --git a/ofu_app/apps/food/migrations/0005_auto_20171020_0549.py b/ofu_app/apps/food/migrations/0005_auto_20171020_0549.py deleted file mode 100644 index d54dd32..0000000 --- a/ofu_app/apps/food/migrations/0005_auto_20171020_0549.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-20 03:49 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0004_auto_20171020_0146'), - ] - - operations = [ - migrations.AddField( - model_name='singlefood', - name='fifth_star', - field=models.SmallIntegerField(default=0), - ), - migrations.AddField( - model_name='singlefood', - name='first_star', - field=models.SmallIntegerField(default=0), - ), - migrations.AddField( - model_name='singlefood', - name='fourth_star', - field=models.SmallIntegerField(default=0), - ), - migrations.AddField( - model_name='singlefood', - name='second_star', - field=models.SmallIntegerField(default=0), - ), - migrations.AddField( - model_name='singlefood', - name='third_star', - field=models.SmallIntegerField(default=0), - ), - ] diff --git a/ofu_app/apps/food/models.py b/ofu_app/apps/food/models.py index 1259c4a..ad6e305 100644 --- a/ofu_app/apps/food/models.py +++ b/ofu_app/apps/food/models.py @@ -23,6 +23,9 @@ class Menu(models.Model): class SingleFood(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(unique=True, max_length=MAX_LENGTH) + price_student = models.CharField(max_length=10, blank=True, null=True) + price_employee = models.CharField(max_length=10, blank=True, null=True) + price_guest = models.CharField(max_length=10, blank=True, null=True) image = models.ImageField(upload_to='food/%Y/%m/', blank=True) rating = models.FloatField(default=0) first_star = models.SmallIntegerField(default=0) @@ -30,9 +33,10 @@ class SingleFood(models.Model): third_star = models.SmallIntegerField(default=0) fourth_star = models.SmallIntegerField(default=0) fifth_star = models.SmallIntegerField(default=0) + allergens = models.ManyToManyField("Allergene", blank=True) def __str__(self): - return "%s Rating: %f" % (self.name, self.rating) + return "%s - Rating: %f - Student Price: %s" % (self.name, self.rating, self.price_student) class Allergene(models.Model): diff --git a/ofu_app/apps/food/utils/migrate_data.py b/ofu_app/apps/food/utils/migrate_data.py index c936096..9aed6a8 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 +from apps.food.models import SingleFood, Menu, HappyHour, Allergene from apps.food.utils.parser import mensa_page_parser, fekide_happyhour_page_parser, cafete_page_parser # CONFIG SERVICE LINKS @@ -21,12 +21,37 @@ def getJsonFromFile(path): def writeStudentenwerkDataInDB(data): data = json.loads(data) for menu in data['weekmenu']: + foodlist = [] for single_food in menu['menu']: + if 'allergens' in single_food: + allergens = [] + for allergen in single_food['allergens']: + try: + allergens.append(Allergene.objects.create(name=allergen)) + except IntegrityError: + allergens.append(Allergene.objects.get(name=allergen)) try: - foodlist.append(SingleFood.objects.create(name=single_food)) + if 'prices' in single_food: + db_single_food = SingleFood.objects.create(name=single_food['title'], + price_student=single_food['prices']['price_student'], + price_employee=single_food['prices']['price_employee'], + price_guest=single_food['prices']['price_guest']) + else: + db_single_food = SingleFood.objects.create(name=single_food['title']) + if 'allergens' in locals(): + db_single_food.allergens = allergens + foodlist.append(db_single_food) except IntegrityError: - foodlist.append(SingleFood.objects.get(name=single_food)) + db_single_food = SingleFood.objects.get(name=single_food['title']) + if 'prices' in single_food: + db_single_food.price_student = single_food['prices']['price_student'], + db_single_food.price_employee = single_food['prices']['price_employee'], + db_single_food.price_guest = single_food['prices']['price_guest'] + if 'allergens' in locals(): + db_single_food.allergens = allergens + + foodlist.append(db_single_food) try: date = datetime.strptime(str(menu['date']), "%d.%m.").replace(year=datetime.today().year) menu = Menu.objects.create(location=data['name'], diff --git a/ofu_app/apps/food/utils/parser/cafete_page_parser.py b/ofu_app/apps/food/utils/parser/cafete_page_parser.py index e067cff..f218c3e 100644 --- a/ofu_app/apps/food/utils/parser/cafete_page_parser.py +++ b/ofu_app/apps/food/utils/parser/cafete_page_parser.py @@ -34,8 +34,10 @@ def getFoodPerDay(soup): dayObj = {} day = str(food).split()[0] foodName = str(food).replace(day, "").strip() + singleFoodObj = {} + singleFoodObj['title'] = foodName dayObj['date'] = day - dayObj['menu'] = [foodName] + dayObj['menu'] = [singleFoodObj] days.append(dayObj) return days diff --git a/ofu_app/apps/food/utils/parser/mensa_page_parser.py b/ofu_app/apps/food/utils/parser/mensa_page_parser.py index b848d18..4da42e8 100644 --- a/ofu_app/apps/food/utils/parser/mensa_page_parser.py +++ b/ofu_app/apps/food/utils/parser/mensa_page_parser.py @@ -15,17 +15,30 @@ def getMenuDay(soup): def getFoodPerDay(soup): - days = [] + week_menus = [] for day in soup.select('.currentweek .day'): - dayObj = {} + menu = {} daysoup = BeautifulSoup(str(day), "lxml") day = getMenuDay(daysoup) - dayMenu = [e.getText() for e in daysoup.select('.menuwrap .menu .left .title')] + day_menu = [] + for singleFood in daysoup.select('.menuwrap .menu'): + singleFoodObj = {} + singleFoodSoup = BeautifulSoup(str(singleFood), "lxml") + title = singleFoodSoup.find('div', {'class': 'title'}).getText() + allergens = [e.getText() for e in singleFoodSoup.select('.left .additnr .toggler ul li')] + prices = {} + prices['price_student'] = singleFoodSoup.select('.price')[0]['data-default'] + prices['price_employee'] = singleFoodSoup.select('.price')[0]['data-bed'] + prices['price_guest'] = singleFoodSoup.select('.price')[0]['data-guest'] + singleFoodObj['title'] = title + singleFoodObj['allergens'] = allergens + singleFoodObj['prices'] = prices + day_menu.append(singleFoodObj) - dayObj['date'] = str(day).split(" ")[1] - dayObj['menu'] = dayMenu - days.append(dayObj) - return days + menu['date'] = str(day).split(" ")[1] + menu['menu'] = day_menu + week_menus.append(menu) + return week_menus def parsePage(url: str): @@ -50,4 +63,6 @@ def parsePage(url: str): def getFoodplanName(soup): foodplan_name = soup.select('.mensamenu h2')[0].getText() return foodplan_name -# parsePage(FEKI_URL) + + +parsePage(FEKI_URL) diff --git a/ofu_app/templates/macros/food_macros.jinja b/ofu_app/templates/macros/food_macros.jinja index c0699c9..ff20df4 100644 --- a/ofu_app/templates/macros/food_macros.jinja +++ b/ofu_app/templates/macros/food_macros.jinja @@ -36,6 +36,7 @@
  • {{ single_food.name }}

    +

    {{ single_food.price_student }}

    From b4b0891ef7847e9f03887b5eae3872540428170b Mon Sep 17 00:00:00 2001 From: michigg Date: Thu, 26 Oct 2017 01:29:23 +0200 Subject: [PATCH 2/6] added new view to food app --- ofu_app/apps/food/views.py | 5 ++++ ofu_app/templates/food/detailed_food.jinja | 27 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 ofu_app/templates/food/detailed_food.jinja diff --git a/ofu_app/apps/food/views.py b/ofu_app/apps/food/views.py index c00264e..2ef3ed2 100644 --- a/ofu_app/apps/food/views.py +++ b/ofu_app/apps/food/views.py @@ -48,6 +48,11 @@ def weekly_food(request): }) +def food_detail(request, id): + food = SingleFood.objects.get(id=id) + return render(request, "food/detailed_food.jinja", {'food': food}) + + def all_food(request): menus = Menu.objects.all() feki_menu = menus.filter(location__contains="Feldkirchenstraße") diff --git a/ofu_app/templates/food/detailed_food.jinja b/ofu_app/templates/food/detailed_food.jinja new file mode 100644 index 0000000..f88fec3 --- /dev/null +++ b/ofu_app/templates/food/detailed_food.jinja @@ -0,0 +1,27 @@ +{% extends 'food/food_wrapper.jinja' %} +{% import '/macros/food_macros.jinja' as macros %} +{% block headline %} +

    Food

    +

    Day: {{ day.strftime("%d.%m.%Y") }}

    +{% endblock %} +{% block content %} +
    +
    +
    {{ food.name }}
    +
    Student: {{ food.price_student }}
    +
    Employee: {{ food.price_employee }}
    +
    Guest: {{ food.price_guest }}
    +
    {{ food.rating }}
    +
    +
    +
    Allergene
    +
      + {% for alergen in food.allergens %} +
    • {{ alergen }}
    • + {% endfor %} +
    + +
    +
    + +{% endblock %} \ No newline at end of file From b05f3bd21a87e045c5a8c07762189331f6d38cf6 Mon Sep 17 00:00:00 2001 From: michigg Date: Thu, 26 Oct 2017 01:34:08 +0200 Subject: [PATCH 3/6] removed day from detail --- ofu_app/templates/food/detailed_food.jinja | 1 - 1 file changed, 1 deletion(-) diff --git a/ofu_app/templates/food/detailed_food.jinja b/ofu_app/templates/food/detailed_food.jinja index f88fec3..456f0d0 100644 --- a/ofu_app/templates/food/detailed_food.jinja +++ b/ofu_app/templates/food/detailed_food.jinja @@ -2,7 +2,6 @@ {% import '/macros/food_macros.jinja' as macros %} {% block headline %}

    Food

    -

    Day: {{ day.strftime("%d.%m.%Y") }}

    {% endblock %} {% block content %}
    From 6e74c623fdfd3d4752fa83faf7bbe38f8c386082 Mon Sep 17 00:00:00 2001 From: michigg Date: Thu, 26 Oct 2017 01:36:31 +0200 Subject: [PATCH 4/6] fixed many related objects jinja --- ofu_app/templates/food/detailed_food.jinja | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ofu_app/templates/food/detailed_food.jinja b/ofu_app/templates/food/detailed_food.jinja index 456f0d0..55579f8 100644 --- a/ofu_app/templates/food/detailed_food.jinja +++ b/ofu_app/templates/food/detailed_food.jinja @@ -15,7 +15,7 @@
    Allergene
      - {% for alergen in food.allergens %} + {% for alergen in food.allergens.all() %}
    • {{ alergen }}
    • {% endfor %}
    From 927d66527fac8f3d3784ff501363fb32d7f1f2f6 Mon Sep 17 00:00:00 2001 From: Marius Hofmann Date: Thu, 26 Oct 2017 01:34:59 +0200 Subject: [PATCH 5/6] added link to food detail page --- ofu_app/apps/food/urls.py | 1 + ofu_app/templates/macros/food_macros.jinja | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/ofu_app/apps/food/urls.py b/ofu_app/apps/food/urls.py index a6edb7e..b20616c 100644 --- a/ofu_app/apps/food/urls.py +++ b/ofu_app/apps/food/urls.py @@ -25,4 +25,5 @@ urlpatterns = [ url(r'^all/$', views.food, name='all-food'), url(r'^daily/rating/$', views.food_rating, name='rating-food'), url(r'^weekly/rating/$', views.food_rating, name='rating-food'), + url(r'^detail/(?P[0-9]+)/$', views.food_detail, name='food-detail') ] diff --git a/ofu_app/templates/macros/food_macros.jinja b/ofu_app/templates/macros/food_macros.jinja index ff20df4..5930817 100644 --- a/ofu_app/templates/macros/food_macros.jinja +++ b/ofu_app/templates/macros/food_macros.jinja @@ -35,22 +35,22 @@ {% for single_food in menu %}
  • -

    {{ single_food.name }}

    -

    {{ single_food.price_student }}

    -
    + +
    {{ single_food.price_student}}
    + {#
    #}
    -
    #}
  • From 2bdedf3d3b3c44b9d0dcc3697d74580f670a4d01 Mon Sep 17 00:00:00 2001 From: michigg Date: Thu, 26 Oct 2017 02:04:55 +0200 Subject: [PATCH 6/6] prettified food detailpage --- ofu_app/apps/food/migrations/0001_initial.py | 10 ++--- .../migrations/0002_auto_20171026_0033.py | 35 ------------------ .../migrations/0003_auto_20171026_0040.py | 20 ---------- .../__pycache__/settings.cpython-35.pyc | Bin 3077 -> 3077 bytes .../ofu_app/__pycache__/urls.cpython-35.pyc | Bin 1302 -> 1302 bytes ofu_app/templates/food/detailed_food.jinja | 35 ++++++++++-------- 6 files changed, 25 insertions(+), 75 deletions(-) delete mode 100644 ofu_app/apps/food/migrations/0002_auto_20171026_0033.py delete mode 100644 ofu_app/apps/food/migrations/0003_auto_20171026_0040.py diff --git a/ofu_app/apps/food/migrations/0001_initial.py b/ofu_app/apps/food/migrations/0001_initial.py index 85e2fa6..6c030e1 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.6 on 2017-10-25 21:40 +# Generated by Django 1.11.2 on 2017-10-25 23:47 from __future__ import unicode_literals from django.db import migrations, models @@ -45,9 +45,9 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('name', models.CharField(max_length=60, unique=True)), - ('price_student', models.CharField(max_length=10)), - ('price_employee', models.CharField(max_length=10)), - ('price_guest', models.CharField(max_length=10)), + ('price_student', models.CharField(blank=True, max_length=10, null=True)), + ('price_employee', models.CharField(blank=True, max_length=10, null=True)), + ('price_guest', models.CharField(blank=True, max_length=10, null=True)), ('image', models.ImageField(blank=True, upload_to='food/%Y/%m/')), ('rating', models.FloatField(default=0)), ('first_star', models.SmallIntegerField(default=0)), @@ -55,7 +55,7 @@ class Migration(migrations.Migration): ('third_star', models.SmallIntegerField(default=0)), ('fourth_star', models.SmallIntegerField(default=0)), ('fifth_star', models.SmallIntegerField(default=0)), - ('allergens', models.ManyToManyField(to='food.Allergene')), + ('allergens', models.ManyToManyField(blank=True, to='food.Allergene')), ], ), migrations.AddField( diff --git a/ofu_app/apps/food/migrations/0002_auto_20171026_0033.py b/ofu_app/apps/food/migrations/0002_auto_20171026_0033.py deleted file mode 100644 index 9bcbe1e..0000000 --- a/ofu_app/apps/food/migrations/0002_auto_20171026_0033.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2017-10-25 22:33 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='singlefood', - name='allergens', - field=models.ManyToManyField(blank=True, null=True, to='food.Allergene'), - ), - migrations.AlterField( - model_name='singlefood', - name='price_employee', - field=models.CharField(blank=True, max_length=10, null=True), - ), - migrations.AlterField( - model_name='singlefood', - name='price_guest', - field=models.CharField(blank=True, max_length=10, null=True), - ), - migrations.AlterField( - model_name='singlefood', - name='price_student', - field=models.CharField(blank=True, max_length=10, null=True), - ), - ] diff --git a/ofu_app/apps/food/migrations/0003_auto_20171026_0040.py b/ofu_app/apps/food/migrations/0003_auto_20171026_0040.py deleted file mode 100644 index 0798bf8..0000000 --- a/ofu_app/apps/food/migrations/0003_auto_20171026_0040.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.6 on 2017-10-25 22:40 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('food', '0002_auto_20171026_0033'), - ] - - operations = [ - migrations.AlterField( - model_name='singlefood', - name='allergens', - field=models.ManyToManyField(blank=True, to='food.Allergene'), - ), - ] diff --git a/ofu_app/ofu_app/__pycache__/settings.cpython-35.pyc b/ofu_app/ofu_app/__pycache__/settings.cpython-35.pyc index 52727f12f3c1950f0f152043ade210d034bf4154..595ec7f6cbb9e14a89e533876c0f29e9c1281940 100644 GIT binary patch delta 16 XcmZpbXq8|W=jG+HlKi-l{U0{~AfE(+ delta 16 XcmZpbXq8|W=jG-4eCh2*_J7;}DewjG diff --git a/ofu_app/ofu_app/__pycache__/urls.cpython-35.pyc b/ofu_app/ofu_app/__pycache__/urls.cpython-35.pyc index aae6074ee141c1c8426a917e196ec35582474db4..500068f65386a8965188846f15e410e1265015a3 100644 GIT binary patch delta 16 XcmbQnHI0j1oR^pD!;beG+4)%kC))(( delta 16 XcmbQnHI0j1oR^nN#`e}mc79d>9>fEJ diff --git a/ofu_app/templates/food/detailed_food.jinja b/ofu_app/templates/food/detailed_food.jinja index 55579f8..00d1b20 100644 --- a/ofu_app/templates/food/detailed_food.jinja +++ b/ofu_app/templates/food/detailed_food.jinja @@ -5,22 +5,27 @@ {% endblock %} {% block content %}
    -
    -
    {{ food.name }}
    -
    Student: {{ food.price_student }}
    -
    Employee: {{ food.price_employee }}
    -
    Guest: {{ food.price_guest }}
    -
    {{ food.rating }}
    -
    -
    -
    Allergene
    -
      - {% for alergen in food.allergens.all() %} -
    • {{ alergen }}
    • - {% endfor %} -
    +
    +

    {{ food.name }}

    +
    +
    Allergene
    +
      + {% for alergen in food.allergens.all() %} +
    • {{ alergen }}
    • + {% endfor %} +
    +
    +
    +
    +
    Preise
    +
    Student: {{ food.price_student }}
    +
    Employee: {{ food.price_employee }}
    +
    Guest: {{ food.price_guest }}
    +
    +
    Rating: {{ food.rating }}
    +
    +
    - {% endblock %} \ No newline at end of file