From 8dea8a0cc857c548bfa245c37897363c41577d06 Mon Sep 17 00:00:00 2001 From: michigg Date: Sat, 28 Oct 2017 22:18:09 +0200 Subject: [PATCH] added lectures migrator --- ofu_app/apps/donar/admin.py | 6 +- .../management/commands/import_lectures.py | 14 +++ .../donar/management/commands/import_rooms.py | 4 +- .../management/commands/import_vgn_coords.py | 11 ++ ofu_app/apps/donar/migrations/0001_initial.py | 59 ++++++++-- .../migrations/0002_auto_20171004_0016.py | 20 ---- .../migrations/0002_auto_20171028_1904.py | 22 ++++ .../migrations/0003_auto_20171004_0211.py | 55 --------- .../migrations/0003_auto_20171028_1959.py | 22 ++++ .../migrations/0005_auto_20171017_1603.py | 37 ------ ofu_app/apps/donar/models.py | 16 ++- ...grate_data.py => migrate_data_lectures.py} | 82 +++++-------- .../apps/donar/utils/migrate_data_rooms.py | 108 ++++++++++++++++++ .../migrate_data_vgn_coords.py} | 13 +-- ofu_app/apps/donar/views.py | 13 ++- .../migrations/0006_allergene.py} | 9 +- .../__pycache__/settings.cpython-35.pyc | Bin 3077 -> 3077 bytes .../ofu_app/__pycache__/urls.cpython-35.pyc | Bin 1302 -> 1302 bytes ofu_app/templates/donar/search_rooms.jinja | 51 ++++++--- 19 files changed, 326 insertions(+), 216 deletions(-) create mode 100644 ofu_app/apps/donar/management/commands/import_lectures.py create mode 100644 ofu_app/apps/donar/management/commands/import_vgn_coords.py delete mode 100644 ofu_app/apps/donar/migrations/0002_auto_20171004_0016.py create mode 100644 ofu_app/apps/donar/migrations/0002_auto_20171028_1904.py delete mode 100644 ofu_app/apps/donar/migrations/0003_auto_20171004_0211.py create mode 100644 ofu_app/apps/donar/migrations/0003_auto_20171028_1959.py delete mode 100644 ofu_app/apps/donar/migrations/0005_auto_20171017_1603.py rename ofu_app/apps/donar/utils/{migrate_data.py => migrate_data_lectures.py} (63%) create mode 100644 ofu_app/apps/donar/utils/migrate_data_rooms.py rename ofu_app/apps/donar/{management/commands/import_locations.py => utils/migrate_data_vgn_coords.py} (91%) rename ofu_app/apps/{donar/migrations/0004_vgn_coords.py => food/migrations/0006_allergene.py} (54%) diff --git a/ofu_app/apps/donar/admin.py b/ofu_app/apps/donar/admin.py index 8c38f3f..9d714c3 100644 --- a/ofu_app/apps/donar/admin.py +++ b/ofu_app/apps/donar/admin.py @@ -1,3 +1,7 @@ from django.contrib import admin - +from apps.donar.models import Room, Lecture, Lecture_Terms, VGN_Coords # Register your models here. +admin.site.register(Room) +admin.site.register(Lecture) +admin.site.register(Lecture_Terms) +admin.site.register(VGN_Coords) \ No newline at end of file diff --git a/ofu_app/apps/donar/management/commands/import_lectures.py b/ofu_app/apps/donar/management/commands/import_lectures.py new file mode 100644 index 0000000..1f80d31 --- /dev/null +++ b/ofu_app/apps/donar/management/commands/import_lectures.py @@ -0,0 +1,14 @@ +from django.core.management.base import BaseCommand, CommandError +from apps.donar.models import Room +from apps.donar.utils import migrate_data_lectures + + +class Command(BaseCommand): + help = "Imports Lectures from UnivIS PRG. Requires Room import" + + def add_arguments(self, parser): + pass + + def handle(self, *args, **options): + migrate_data_lectures.main() + self.stdout.write(self.style.SUCCESS('Successfully migrate data')) diff --git a/ofu_app/apps/donar/management/commands/import_rooms.py b/ofu_app/apps/donar/management/commands/import_rooms.py index 36e5371..1857bb2 100644 --- a/ofu_app/apps/donar/management/commands/import_rooms.py +++ b/ofu_app/apps/donar/management/commands/import_rooms.py @@ -1,6 +1,6 @@ from django.core.management.base import BaseCommand, CommandError from apps.donar.models import Room -from apps.donar.utils import migrate_data +from apps.donar.utils import migrate_data_rooms class Command(BaseCommand): @@ -10,5 +10,5 @@ class Command(BaseCommand): pass def handle(self, *args, **options): - migrate_data.main() + migrate_data_rooms.main() self.stdout.write(self.style.SUCCESS('Successfully migrate data')) diff --git a/ofu_app/apps/donar/management/commands/import_vgn_coords.py b/ofu_app/apps/donar/management/commands/import_vgn_coords.py new file mode 100644 index 0000000..9a31ae6 --- /dev/null +++ b/ofu_app/apps/donar/management/commands/import_vgn_coords.py @@ -0,0 +1,11 @@ +from django.core.management.base import BaseCommand, CommandError +from apps.donar.utils import migrate_data_vgn_coords + +class Command(BaseCommand): + help = "Imports Rooms from Univis PRG" + + def add_arguments(self, parser): + pass + + def handle(self, *args, **options): + migrate_data_vgn_coords.migrate() diff --git a/ofu_app/apps/donar/migrations/0001_initial.py b/ofu_app/apps/donar/migrations/0001_initial.py index 3a6711c..30ca8d0 100644 --- a/ofu_app/apps/donar/migrations/0001_initial.py +++ b/ofu_app/apps/donar/migrations/0001_initial.py @@ -1,8 +1,10 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-03 22:01 +# Generated by Django 1.11.2 on 2017-10-28 17:00 from __future__ import unicode_literals +import datetime from django.db import migrations, models +from django.utils.timezone import utc class Migration(migrations.Migration): @@ -13,17 +15,58 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name='Lecture', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('univis_ref', models.CharField(max_length=60, unique=True)), + ('univis_id', models.CharField(max_length=60, unique=True)), + ('name', models.CharField(max_length=60)), + ('short', models.CharField(max_length=60)), + ('type', models.CharField(max_length=60)), + ('lecturer_id', models.CharField(max_length=60)), + ], + ), + migrations.CreateModel( + name='Lecture_Terms', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('starttime', models.TimeField(default=datetime.datetime(2017, 10, 28, 17, 0, 39, 511935, tzinfo=utc))), + ], + ), migrations.CreateModel( 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)), + ], + ), + migrations.AddField( + model_name='lecture_terms', + name='room', + field=models.ManyToManyField(blank=True, to='donar.Room'), + ), + migrations.AddField( + model_name='lecture', + name='term', + field=models.ManyToManyField(to='donar.Lecture_Terms'), + ), ] diff --git a/ofu_app/apps/donar/migrations/0002_auto_20171004_0016.py b/ofu_app/apps/donar/migrations/0002_auto_20171004_0016.py deleted file mode 100644 index 522314d..0000000 --- a/ofu_app/apps/donar/migrations/0002_auto_20171004_0016.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-03 22:16 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('donar', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='room', - name='short', - field=models.CharField(max_length=60, unique=True), - ), - ] diff --git a/ofu_app/apps/donar/migrations/0002_auto_20171028_1904.py b/ofu_app/apps/donar/migrations/0002_auto_20171028_1904.py new file mode 100644 index 0000000..d15af98 --- /dev/null +++ b/ofu_app/apps/donar/migrations/0002_auto_20171028_1904.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.2 on 2017-10-28 17:04 +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', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='lecture_terms', + name='starttime', + field=models.TimeField(default=datetime.datetime(2017, 10, 28, 17, 4, 19, 160312, tzinfo=utc)), + ), + ] 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/0003_auto_20171028_1959.py b/ofu_app/apps/donar/migrations/0003_auto_20171028_1959.py new file mode 100644 index 0000000..2207e10 --- /dev/null +++ b/ofu_app/apps/donar/migrations/0003_auto_20171028_1959.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.2 on 2017-10-28 17:59 +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_20171028_1904'), + ] + + operations = [ + migrations.AlterField( + model_name='lecture_terms', + name='starttime', + field=models.TimeField(default=datetime.datetime(2017, 10, 28, 17, 59, 39, 456896, tzinfo=utc)), + ), + ] 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/donar/models.py b/ofu_app/apps/donar/models.py index 5768e93..d88ea27 100644 --- a/ofu_app/apps/donar/models.py +++ b/ofu_app/apps/donar/models.py @@ -17,6 +17,9 @@ class Room(models.Model): size = models.CharField(max_length=MAX_LENGTH, default="") description = models.CharField(max_length=200, default="") + def __str__(self): + return "%s - size: %s" % (self.short, str(self.size)) + class VGN_Coords(models.Model): id = models.AutoField(primary_key=True) @@ -25,6 +28,9 @@ class VGN_Coords(models.Model): longitude = models.CharField(max_length=MAX_LENGTH, unique=True) latitude = models.CharField(max_length=MAX_LENGTH, unique=True) + def __str__(self): + return "%s" % self.name + class Lecture(models.Model): id = models.AutoField(primary_key=True) @@ -36,8 +42,14 @@ class Lecture(models.Model): lecturer_id = models.CharField(max_length=MAX_LENGTH) term = models.ManyToManyField('Lecture_Terms', blank=False) + def __str__(self): + return "%s - Type: %s" % (self.short, str(self.type)) + class Lecture_Terms(models.Model): id = models.AutoField(primary_key=True) - starttime = time = models.TimeField(blank=False, default=timezone.now()) - room = models.ManyToManyField('Room', blank=False, blank=True, null=True) + starttime = models.TimeField(blank=False, default=timezone.now()) + room = models.ManyToManyField('Room', blank=True) + + def __str__(self): + return "%s" % self.starttime.strftime("%Y-%m-%d") diff --git a/ofu_app/apps/donar/utils/migrate_data.py b/ofu_app/apps/donar/utils/migrate_data_lectures.py similarity index 63% rename from ofu_app/apps/donar/utils/migrate_data.py rename to ofu_app/apps/donar/utils/migrate_data_lectures.py index b2176e8..2fbbcc6 100644 --- a/ofu_app/apps/donar/utils/migrate_data.py +++ b/ofu_app/apps/donar/utils/migrate_data_lectures.py @@ -1,10 +1,8 @@ +from apps.donar.models import Room, Lecture_Terms, Lecture +from datetime import datetime import json from pprint import pprint from django.db.utils import IntegrityError -from datetime import datetime - -from apps.donar.models import Room, Lecture_Terms, Lecture -from apps.donar.utils.parser import univis_rooms_parser from apps.donar.utils.parser import univis_lectures_parser # CONFIG Fakultaet @@ -29,42 +27,6 @@ def getJsonFromFile(path): return json.load(file) -def writeUnivisRoomDataInDB(data): - for room in data: - try: - key = "" - address = "" - building_key = "" - floor = "" - name = "" - orgname = "" - short = "" - size = "" - description = "" - if '@key' in room: - key = room['@key'] - if 'address' in room: - address = room['address'] - if 'buildingkey' in room: - building_key = room['buildingkey'] - if 'floor' in room: - floor = room['floor'] - if 'name' in room: - name = room['name'] - if 'short' in room: - short = room['short'] - if 'size' in room: - size = room['size'] - if 'description' in room: - description = room['description'] - - Room.objects.create(key=key, address=address, building_key=building_key, floor=floor, name=name, - orgname=orgname, short=short, size=size, description=description) - except IntegrityError: - # ignored - break - - def writeUnivisLectureTermsInDB(lecture, lecture_obj): if 'terms' in lecture: if type(lecture['terms']['term']) == list: @@ -74,10 +36,10 @@ def writeUnivisLectureTermsInDB(lecture, lecture_obj): starttime = "00:00" if 'starttime' in term: starttime = term['starttime'] - term_obj.starttime = datetime.strptime(starttime, "%H%H:%M%M") + term_obj.starttime = datetime.strptime(starttime, "%H:%M") if 'room' in term: room_id = term['room']['UnivISRef']['@key'] - term_obj.room = Room.objects.get(key=room_id) + term_obj.room = [Room.objects.get(key=room_id)] term_obj.save() lecture_obj.term.add(term_obj) except IntegrityError as err: @@ -86,13 +48,16 @@ def writeUnivisLectureTermsInDB(lecture, lecture_obj): else: try: term_obj = Lecture_Terms.objects.create() - starttime = "00:00" + univis_starttime = "00:00" if 'starttime' in lecture['terms']['term']: - starttime = lecture['terms']['term']['starttime'] - term_obj.starttime = datetime.strptime(starttime, "%H%H:%M%M") + univis_starttime = lecture['terms']['term']['starttime'] + term_obj.starttime = datetime.strptime(univis_starttime, '%H:%M') if 'room' in lecture['terms']['term']: room_id = lecture['terms']['term']['room']['UnivISRef']['@key'] - term_obj.room = Room.objects.get(key=room_id) + pprint("Room: " + room_id) + Room.objects.get(key=room_id) + term_obj.room = [Room.objects.get(key=room_id)] + term_obj.save() lecture_obj.term.add(term_obj) except IntegrityError as err: @@ -124,24 +89,35 @@ def writeUnivisLectureDataInDB(data): lecture_type = lecture['type'] if 'dozs' in lecture: lecturer_id = dict(lecture['dozs']['doz']['UnivISRef'])['@key'] + print("Lecture: " + name) lecture_obj = Lecture.objects.create(univis_ref=key, univis_id=univis_id, name=name, short=short, - type=lecture_type, lecturer_id=lecture_type) + type=lecture_type, lecturer_id=lecturer_id) writeUnivisLectureTermsInDB(lecture, lecture_obj) lecture_obj.save() except IntegrityError as err: - print() + print(err.args) return +def showStatus(status: str): + print(status) + pprint("Lectures: " + str(Lecture.objects.count())) + pprint("Lecture Terms: " + str(Lecture_Terms.objects.count())) + pprint("Room: " + str(Room.objects.count())) + + def main(): # get food jsons - # writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms(FAKULTAET_GuK))) - # writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms(FAKULTAET_SoWi))) - # writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms(FAKULTAET_HuWi))) - # writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms(FAKULTAET_WIAI))) - pprint("Room: " + str(Room.objects.count())) + showStatus("Start with:") + # writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_SoWi))) + showStatus("After SoWi:") + # writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_GuK))) + showStatus("After GuK:") + writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_HuWi))) + showStatus("After HuWi:") writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_WIAI))) + showStatus("After WIAI:") if __name__ == '__main__': diff --git a/ofu_app/apps/donar/utils/migrate_data_rooms.py b/ofu_app/apps/donar/utils/migrate_data_rooms.py new file mode 100644 index 0000000..737376b --- /dev/null +++ b/ofu_app/apps/donar/utils/migrate_data_rooms.py @@ -0,0 +1,108 @@ +import json +from pprint import pprint +from django.db.utils import IntegrityError + +from apps.donar.models import Room, Lecture_Terms, Lecture +from apps.donar.utils.parser import univis_rooms_parser +from apps.donar.utils.parser import univis_lectures_parser + +# CONFIG Fakultaet +FAKULTAET_GuK = "Fakult%E4t%20Geistes-%20und%20Kulturwissenschaften" +FAKULTAET_SoWi = "Fakult%E4t%20Sozial-%20und%20Wirtschaftswissenschaften" +FAKULTAET_HuWi = "Fakult%E4t%20Humanwissenschaften" +FAKULTAET_WIAI = "Fakult%E4t%20Wirtschaftsinformatik" + +# CONFIG Locations +RZ = "http://univis.uni-bamberg.de/prg?search=rooms&name=rz&show=xml" +WEBEREI = "http://univis.uni-bamberg.de/prg?search=rooms&name=we&show=xml" +FEKI = "http://univis.uni-bamberg.de/prg?search=rooms&name=f&show=xml" +MARKUSHAUS = "http://univis.uni-bamberg.de/prg?search=rooms&name=m&show=xml" +UNIVERSITAET = "http://univis.uni-bamberg.de/prg?search=rooms&name=u&show=xml" +KAPUZINERSTR = "http://univis.uni-bamberg.de/prg?search=rooms&name=k&show=xml" +ZWINGER = "http://univis.uni-bamberg.de/prg?search=rooms&name=z&show=xml" +AULA = "http://univis.uni-bamberg.de/prg?search=rooms&name=a&show=xml" +ZWINGER = "http://univis.uni-bamberg.de/prg?search=rooms&name=k&show=xml" +ZWINGER = "http://univis.uni-bamberg.de/prg?search=rooms&name=k&show=xml" + + +# CONFIG ROOMS +def univis_rooms(fakultaet): + return "http://univis.uni-bamberg.de/prg?search=rooms&department=" + fakultaet + "&show=xml" + + +# CONFIG LECTURES +def univis_lectures(fakultaet): + return "http://univis.uni-bamberg.de/prg?search=lectures&department=" + fakultaet + "&show=exml" + + +def univis_rooms_loc(kuerzel): + return "http://univis.uni-bamberg.de/prg?search=rooms&name=" + kuerzel + "&show=xml" + + +def getJsonFromFile(path): + with open(path, "r") as file: + return json.load(file) + + +def writeUnivisRoomDataInDB(data): + for room in data: + try: + key = "" + address = "" + building_key = "" + floor = "" + name = "" + orgname = "" + short = "" + size = "" + description = "" + if '@key' in room: + key = room['@key'] + if 'address' in room: + address = room['address'] + if 'buildingkey' in room: + building_key = room['buildingkey'] + if 'floor' in room: + floor = room['floor'] + if 'name' in room: + name = room['name'] + if 'short' in room: + short = room['short'] + if 'size' in room: + size = room['size'] + if 'description' in room: + description = room['description'] + + Room.objects.create(key=key, address=address, building_key=building_key, floor=floor, name=name, + orgname=orgname, short=short, size=size, description=description) + except IntegrityError as err: + pprint(err.args) + + +def main(): + # get food jsons + pprint("Begin: Room: " + str(Room.objects.count())) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms(FAKULTAET_GuK))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms(FAKULTAET_SoWi))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms(FAKULTAET_HuWi))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms(FAKULTAET_WIAI))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("k"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("z"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("u"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("w"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("f"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("r"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("h"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("l"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("m"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("o"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("p"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("v"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("w"))) + writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("d"))) + + pprint("Now: Room: " + str(Room.objects.count())) + + +if __name__ == '__main__': + main() diff --git a/ofu_app/apps/donar/management/commands/import_locations.py b/ofu_app/apps/donar/utils/migrate_data_vgn_coords.py similarity index 91% rename from ofu_app/apps/donar/management/commands/import_locations.py rename to ofu_app/apps/donar/utils/migrate_data_vgn_coords.py index 46aff78..faf00d2 100644 --- a/ofu_app/apps/donar/management/commands/import_locations.py +++ b/ofu_app/apps/donar/utils/migrate_data_vgn_coords.py @@ -1,8 +1,7 @@ -from django.core.management.base import BaseCommand, CommandError from apps.donar.models import VGN_Coords -def migrate_locations(): +def migrate(): locations = [] locations.append( {'location': 'Erba', 'vgn_key': 'coord%3A4418901%3A629758%3ANAV4%3ABamberg%2C An der Weberei 5', @@ -65,13 +64,3 @@ def migrate_locations(): location_obj.coords = location['vgn_key'] location_obj.latitude = location['lat'] location_obj.longitude = location['lon'] - - -class Command(BaseCommand): - help = "Imports Rooms from Univis PRG" - - def add_arguments(self, parser): - pass - - def handle(self, *args, **options): - migrate_locations() diff --git a/ofu_app/apps/donar/views.py b/ofu_app/apps/donar/views.py index fb884fb..6968773 100644 --- a/ofu_app/apps/donar/views.py +++ b/ofu_app/apps/donar/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render, redirect - -from apps.donar.models import Room +from django.db.models import Min +from apps.donar.models import Room, Lecture, Lecture_Terms from apps.donar.models import VGN_Coords @@ -15,11 +15,12 @@ def all_rooms(request): def search_room(request): - id = request.GET.get('search_room', None) - if id: + token = request.GET.get('search_room', None) + if token: # create a form instance and populate it with data from the request: - rooms = Room.objects.filter(short__contains=id) - return render(request, 'donar/search_rooms.jinja', {'id': id, 'rooms': rooms}) + rooms_by_id = Room.objects.filter(short__contains=token) + lectures = Lecture.objects.annotate(min_starttime=Min('term__starttime')).filter(name__contains=token).order_by('min_starttime') + return render(request, 'donar/search_rooms.jinja', {'id': token, 'rooms': rooms_by_id, 'lectures': lectures}) return render(request, 'donar/search_rooms.jinja', {}) diff --git a/ofu_app/apps/donar/migrations/0004_vgn_coords.py b/ofu_app/apps/food/migrations/0006_allergene.py similarity index 54% rename from ofu_app/apps/donar/migrations/0004_vgn_coords.py rename to ofu_app/apps/food/migrations/0006_allergene.py index d20ed2a..c7df688 100644 --- a/ofu_app/apps/donar/migrations/0004_vgn_coords.py +++ b/ofu_app/apps/food/migrations/0006_allergene.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.2 on 2017-10-17 13:34 +# Generated by Django 1.11.2 on 2017-10-28 17:00 from __future__ import unicode_literals from django.db import migrations, models @@ -8,16 +8,15 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('donar', '0003_auto_20171004_0211'), + ('food', '0005_auto_20171020_0549'), ] operations = [ migrations.CreateModel( - name='VGN_Coords', + name='Allergene', 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)), + ('name', models.CharField(max_length=60, unique=True)), ], ), ] diff --git a/ofu_app/ofu_app/__pycache__/settings.cpython-35.pyc b/ofu_app/ofu_app/__pycache__/settings.cpython-35.pyc index 52727f12f3c1950f0f152043ade210d034bf4154..1e55191a4778688778dfa844e7b6c47a1afad862 100644 GIT binary patch delta 16 XcmZpbXq8|W=jG+n-0)>1`#){~Bf$j= 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/donar/search_rooms.jinja b/ofu_app/templates/donar/search_rooms.jinja index 931857a..731a4dc 100644 --- a/ofu_app/templates/donar/search_rooms.jinja +++ b/ofu_app/templates/donar/search_rooms.jinja @@ -7,24 +7,45 @@
- +
-
- {% if id %} + {% if id %} +

Ergebnisse für: {{ id }}

- {% endif %} -
-
- {% if rooms %} - {% for room in rooms %} -
- +
+ {% if rooms %} +

Ergebnisse Räume:

+ {% for room in rooms %} + -
- {% endfor %} - {% endif %} -
+ {% endfor %} + {% endif %} +
+
+ {% if lectures %} +

Ergebnisse Lehrveranstaltungen:

+ {% for lecture in lectures %} +
+
+
{{ lecture.name }}
+ {% for term in lecture.term.all() %} + Start: {{ term.starttime.strftime("%H:%M") }} + {% for room in term.room.all() %} +

+ Raum: {{ room.short }}

+ {% endfor %} + {% endfor %} +
+
+ {% endfor %} + {% endif %} +
+ {% endif %}
{% endblock %}