Drunk and Hangover

This commit is contained in:
Götz 2018-10-14 23:26:30 +02:00
parent 002aeff50a
commit 464fe5ba17
6 changed files with 162 additions and 145 deletions

View File

@ -28,6 +28,8 @@ LOGIN_REDIRECT_URL = 'roomservice:home'
ALLOWED_HOSTS = []
DATA_UPLOAD_MAX_NUMBER_FIELDS = 40000
# Application definition
INSTALLED_APPS = [

View File

@ -1,8 +1,10 @@
from django.contrib import admin
from .models import Room, Building, RoomType, OrgUnit, Equipment, Staff, Lecture, LectureSpecifiaction, LectureType
from .models import Room, Building, RoomType, OrgUnit, Equipment, Staff, Lecture, LectureTerm, LectureSpecifiaction, \
LectureType
# Register your models here.
admin.site.register(Lecture)
admin.site.register(LectureTerm)
admin.site.register(LectureSpecifiaction)
admin.site.register(LectureType)
admin.site.register(Staff)

View File

@ -101,6 +101,7 @@ class LectureSpecifiaction(models.Model):
class LectureType(models.Model):
#univis_id = models.CharField(max_length=8)
name = models.CharField(max_length=32)
def __str__(self):
@ -129,16 +130,20 @@ class Lecture(models.Model):
def __str__(self):
return '{}'.format(self.title)
# class Lecture_Term(models.Model):
class LectureTerm(models.Model):
# room = models.ForeignKey(Room, on_delete=models.CASCADE)
# start_date = models.DateField()
# end_date = models.DateField()
# start_time = models.TimeField()
# end_time = models.TimeField()
# repeat_intervall = models.IntegerField()
# excludes = models.ManyToManyField(Exclude_Term)
# # TODO: Help please
# exclude_vacation = models.BooleanField()
room = models.CharField(max_length=64, null=True, blank=True)
start_date = models.DateField(null=True, blank=True)
end_date = models.DateField(null=True, blank=True)
start_time = models.TimeField(null=True, blank=True)
end_time = models.TimeField(null=True, blank=True)
exclude = models.CharField(max_length=128, null=True, blank=True)
repeat = models.CharField(max_length=16, null=True, blank=True)
lecture = models.ForeignKey(Lecture, on_delete=models.CASCADE, null=True, blank=True)
def __str__(self):
return '{}'.format(self.lecture.title)
# class Booking(models.Model):
# DAY = 0

View File

@ -3,7 +3,7 @@ import json
from pprint import pprint
from django.db.utils import IntegrityError
from roomservice.utils.parser import univis_lectures_parser
from roomservice.models import Lecture, LectureSpecifiaction, OrgUnit, LectureType
from roomservice.models import Lecture, LectureSpecifiaction, OrgUnit, LectureType, LectureTerm
import logging
@ -31,94 +31,101 @@ def getJsonFromFile(path):
return json.load(file)
def writeUnivisLectureTermsInDB(lecture):
logger.info('WTF')
def writeUnivisLectureTermsInDB(lecture, lecture_obj):
if 'terms' in lecture:
if type(lecture['terms']['term']) == list:
logger.info(lecture['terms']['term'])
for term in lecture['terms']['term']:
if 'exclude' in term:
logger.info('EXCLUDE: {}'.format(term['exclude']))
try:
starttime = "00:00"
# term_obj = Lecture_Terms.objects.create(starttime=starttime)
if 'starttime' in term:
starttime = term['starttime']
# term_obj.starttime = datetime.strptime(starttime, "%H:%M")
# term_obj.save()
if 'room' in term:
room_id = term['room']['UnivISRef']['@key']
# term_obj.room.add(Room.objects.get(key=room_id))
# lecture_obj.term.add(term_obj)
except IntegrityError as err:
logger.exception(err)
logger.info(term)
exclude = dict(term).get('exclude')
starttime = dict(term).get('starttime')
endtime = dict(term).get('endtime')
startdate = dict(term).get('startdate')
enddate = dict(term).get('enddate')
repeat = dict(term).get('repeat')
room = dict(term).get('room')
if not room:
logger.info('ROOOOOOOOM ___________________________________________')
logger.info(lecture['terms'])
term_obj, _ = LectureTerm.objects.update_or_create(exclude=exclude,
repeat=repeat,
room=room,
lecture=lecture_obj)
if startdate:
term_obj.start_date = dict(term).get('startdate') # datetime.strptime(startdate, '%Y-%m-%d')
if enddate:
term_obj.end_date = dict(term).get('enddate') # datetime.strptime(enddate, '%Y-%m-%d')
if starttime:
term_obj.start_time = dict(term).get('starttime') # datetime.strptime(starttime, '%H:%M')
if endtime:
term_obj.end_time = dict(term).get('endtime') # datetime.strptime(endtime, '%H:%M'),
term_obj.save()
else:
try:
univis_starttime = "00:00"
# term_obj = Lecture_Terms.objects.create(starttime=univis_starttime)
if 'starttime' in lecture['terms']['term']:
univis_starttime = lecture['terms']['term']['starttime']
# term_obj.starttime = datetime.strptime(univis_starttime, '%H:%M')
# term_obj.save()
if 'room' in lecture['terms']['term']:
room_id = lecture['terms']['term']['room']['UnivISRef']['@key']
# Room.objects.get(key=room_id)
# term_obj.room.add(Room.objects.get(key=room_id))
# term_obj.save()
# lecture_obj.term.add(term_obj)
except IntegrityError as err:
logger.exception(err)
term = lecture['terms']['term']
exclude = dict(term).get('exclude')
starttime = dict(term).get('starttime')
endtime = dict(term).get('endtime')
startdate = dict(term).get('startdate')
enddate = dict(term).get('enddate')
repeat = dict(term).get('repeat')
room = dict(term).get('room')
if not room:
logger.info('ROOOOOOOOM2 ___________________________________________')
logger.info(lecture)
term_obj, _ = LectureTerm.objects.update_or_create(exclude=exclude,
repeat=repeat,
room=room,
lecture=lecture_obj)
if startdate:
term_obj.start_date = dict(term).get('startdate') # datetime.strptime(startdate, '%Y-%m-%d')
if enddate:
term_obj.end_date = dict(term).get('enddate') # datetime.strptime(enddate, '%Y-%m-%d')
if starttime:
term_obj.start_time = dict(term).get('starttime') # datetime.strptime(starttime, '%H:%M')
if endtime:
term_obj.end_time = dict(term).get('endtime') # datetime.strptime(endtime, '%H:%M'),
term_obj.save()
def writeUnivisLectureDataInDB(data):
for lecture in data:
if not 'courses' in lecture:
lecture = dict(lecture)
univis_key = lecture['@key']
univis_id = lecture['id']
short = lecture.get('short')
name = lecture['name']
url_description = lecture.get('url_description')
turnout = lecture.get('turnout')
if name == 'Projektpraktikum Mensch-Computer-Interaktion':
logger.info(lecture)
organizational = lecture.get('organizational')
time_description = lecture.get('time_description')
summary = lecture.get('summary')
orgname, _ = OrgUnit.objects.get_or_create(title=lecture['orgname'])
short = None
if 'short' in lecture:
short = lecture['short']
ects_cred = None
if 'ects_cred' in lecture:
ects_cred = lecture.get('ects_cred')
if ects_cred:
ects_cred = float(str(lecture['ects_cred']).replace(',', '.'))
sws = None
if 'sws' in lecture:
sws = float(str(lecture['sws']).replace(',', '.'))
url_description = None
if 'url_description' in lecture:
url_description = lecture['url_description']
turnout = None
if 'turnout' in lecture:
turnout = lecture['turnout']
organizational = None
if 'organizational' in lecture:
organizational = lecture['organizational']
time_description = None
if 'time_description' in lecture:
time_description = lecture['time_description']
summary = None
if 'summary' in lecture:
summary = lecture['summary']
type = None
if 'type' in lecture:
type, _ = LectureType.objects.get_or_create(name=lecture['type'])
logger.info(name)
# logger.info(name)
lecture_obj, _ = Lecture.objects.update_or_create(univis_id=univis_id, univis_key=univis_key, title=name,
orgname=orgname, short=short, ects=ects_cred,
sws=sws, url_description=url_description,
estimated_visitor=turnout, organizational=organizational,
time_description=time_description, summary=summary, type=type)
time_description=time_description, summary=summary,
type=type)
lecture_specs_options = LectureSpecifiaction.objects.all()
for lecture_spec in lecture_specs_options:
@ -146,8 +153,7 @@ def writeUnivisLectureDataInDB(data):
# lecturer_id = dict(lecture['dozs']['doz']['UnivISRef'])['@key']
# lecture_obj = Lecture.objects.create(univis_ref=key, univis_id=univis_id, name=name, short=short,
# type=lecture_type, lecturer_id=lecturer_id)
# writeUnivisLectureTermsInDB(lecture, lecture_obj)
# writeUnivisLectureTermsInDB(lecture)
writeUnivisLectureTermsInDB(lecture, lecture_obj)
# lecture_obj.save()
# logger.info("Lecture: {}".format(lecture_obj.short))
# except IntegrityError as err:
@ -168,17 +174,17 @@ def showStatus(status: str):
def main():
# get food jsons
logger.info(showStatus("Start SoWi:"))
writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_SoWi)))
logger.info("----------------------------------------------------------------------------------------")
logger.info(showStatus("Start GuK:"))
writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_GuK)))
logger.info("----------------------------------------------------------------------------------------")
logger.info(showStatus("Start HuWi:"))
writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_HuWi)))
logger.info("----------------------------------------------------------------------------------------")
# logger.info(showStatus("Start SoWi:"))
# writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_SoWi)))
# logger.info("----------------------------------------------------------------------------------------")
#
# logger.info(showStatus("Start GuK:"))
# writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_GuK)))
# logger.info("----------------------------------------------------------------------------------------")
#
# logger.info(showStatus("Start HuWi:"))
# writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_HuWi)))
# logger.info("----------------------------------------------------------------------------------------")
logger.info(showStatus("Start WIAI:"))
writeUnivisLectureDataInDB(univis_lectures_parser.parsePage(univis_lectures(FAKULTAET_WIAI)))

View File

@ -138,25 +138,25 @@ def main():
Building.objects.count(),
RoomType.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(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")))
# writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("x")))
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")))
writeUnivisRoomDataInDB(univis_rooms_parser.parsePage(univis_rooms_loc("x")))
logger.info("\nFinished:\nRoom: {}\nOrgunits: {}\nBuildings: {}\nRoomTypes: {}"
.format(Room.objects.count(),

View File

@ -22,7 +22,9 @@ def getLectures(dict: dict):
def parsePage(url):
page = loadPage(url)
pprint(url)
dict = xmltodict.parse(page)
# pprint(dict['UnivIS']['Lecture'], depth=4)
lectures = getLectures(dict)
return lectures