now using campus API
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user