now using campus API

This commit is contained in:
Tobias Kurze
2020-08-11 16:39:13 +02:00
parent 160076afcf
commit 9c19708381
9 changed files with 194 additions and 127 deletions

View File

@@ -10,7 +10,6 @@ from sqlalchemy.exc import IntegrityError
from datetime import datetime, timedelta
from backend import db, app, login_manager
from backend.tools.scrape_rooms import scrape_rooms
metadata = MetaData()

View File

@@ -5,15 +5,15 @@ Models for lecture recorder
import json
import logging
from sqlalchemy import MetaData, CheckConstraint
from sqlalchemy import MetaData, CheckConstraint, UniqueConstraint
from sqlalchemy.exc import IntegrityError
from datetime import datetime, timedelta
from backend import db, app, login_manager
from backend.tools.scrape_rooms import scrape_rooms
from backend.tools.campus_rooms import get_campus_rooms
logger = logging.getLogger("lrc."+__name__)
logger = logging.getLogger("lrc." + __name__)
metadata = MetaData()
@@ -23,16 +23,19 @@ class Room(db.Model):
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow())
name = db.Column(db.Unicode(127), unique=False, nullable=False)
alternate_name = db.Column(db.Unicode(127), unique=False, nullable=True, default=None)
external_id = db.Column(db.String, nullable=True, unique=True)
coordinates = db.Column(db.String, nullable=True)
comment = db.Column(db.Unicode(2047), unique=False, nullable=True, default="")
number = db.Column(db.Unicode(63), unique=False, nullable=True)
number = db.Column(db.Unicode(63), unique=False, nullable=True, default=None)
building_name = db.Column(db.Unicode(63), unique=False, nullable=True)
building_number = db.Column(db.Unicode(63), unique=False, nullable=True)
building_number = db.Column(db.Unicode(63), unique=False, nullable=True, default=None)
recorder = db.relationship('Recorder', uselist=False, back_populates='room') # one-to-one relation (uselist=False)
__table_args__ = (
CheckConstraint('length(name) > 2',
name='name_min_length'),
UniqueConstraint('name', 'number', 'building_number', 'external_id'),
)
def __init__(self, **kwargs):
@@ -76,13 +79,15 @@ class Room(db.Model):
def pre_fill_table():
rooms = scrape_rooms()
logger.debug("tada")
# Room.query.delete() # drop all rooms
rooms = get_campus_rooms()
logger.debug("got {} rooms".format(len(rooms)))
db_rooms = [Room(name=room['name'], number=room['room_number'],
building_name=room['building_name'], building_number=room['building_number']) for room in
rooms]
db_rooms = [Room(name=room['name'], number=room['room_number'], alternate_name=room.get('alternate_name', None),
building_name=room['building_name'], building_number=room['building_number'],
coordinates=room.get('coordinates', None), external_id=room.get('external_id', None)
) for room in
rooms]
try:
db.session.bulk_save_objects(db_rooms)
db.session.commit()