from sqlalchemy.ext.asyncio import AsyncSession from database.engine import DBSession from database.schemas import UforaCourse, UforaCourseAlias __all__ = ["main"] async def main(): """Add the Ufora courses for the 2022-2023 academic year Course id's are only used to fetch announcements, and I can only fetch announcements of courses I enroll in, so other courses can use an auto-generated id This will never clash as there will never be 650k regular courses """ session: AsyncSession async with DBSession() as session: """3rd Bachelor""" artificiele_intelligentie = UforaCourse( code="C003756", name="Artificiële Intelligentie", year=3, compulsory=True, role_id=891743671022673920, overarching_role_id=891743208248324196, ) algoritmen_datastructuren_3 = UforaCourse( code="C003782", name="Algoritmen en Datastructuren 3", year=3, compulsory=True, role_id=891743791466307654, overarching_role_id=891743208248324196, ) automaten_berekenbaarheid_complexiteit = UforaCourse( code="C003785", name="Automaten, Berekenbaarheid en Complexiteit", year=3, compulsory=True, role_id=891744082404200539, overarching_role_id=891743208248324196, ) besturingssystemen = UforaCourse( code="E019010", name="Besturingssystemen", year=3, compulsory=True, role_id=891743898291032114, overarching_role_id=891743208248324196, ) computationele_biologie = UforaCourse( code="C003789", name="Computationele Biologie", year=3, compulsory=True, role_id=891744050988847135, overarching_role_id=891743208248324196, ) logisch_programmeren = UforaCourse( code="C003783", name="Logisch Programmeren", year=3, compulsory=True, role_id=891743966482034800, overarching_role_id=891743208248324196, ) software_engineering_lab_2 = UforaCourse( code="C003784", name="Software Engineering Lab 2", year=3, compulsory=True, role_id=891744007300980737, overarching_role_id=891743208248324196, ) modelleren_en_simuleren = UforaCourse( course_id=636139, code="C003786", name="Modelleren en Simuleren", year=3, compulsory=True, role_id=1024573730418069565, overarching_role_id=891744461405687808, log_announcements=True, ) informatiebeveiliging = UforaCourse( code="E019400", name="Informatiebeveiliging", year=3, compulsory=True, role_id=1023333190678626314, overarching_role_id=891744461405687808, alternative_overarching_role_id=1023278462733127710, ) parallelle_computersystemen = UforaCourse( code="E034140", name="Parallelle Computersystemen", year=3, compulsory=True, role_id=1023300295918358691, overarching_role_id=891744461405687808, alternative_overarching_role_id=1023278462733127710, ) inleiding_tot_elektrotechniek = UforaCourse( code="C003806", name="Inleiding tot de Elektrotechniek", year=3, compulsory=True, overarching_role_id=891744390035415111, ) inleiding_tot_telecommunicatie = UforaCourse( code="C003787", name="Inleiding tot de Telecommunicatie", year=3, compulsory=True, overarching_role_id=891744390035415111, ) wiskundige_modellering = UforaCourse( code="C003788", name="Wiskundige Modellering in de Ingenieurswetenschappen", year=3, compulsory=True, overarching_role_id=891744390035415111, ) session.add_all( [ artificiele_intelligentie, algoritmen_datastructuren_3, automaten_berekenbaarheid_complexiteit, besturingssystemen, computationele_biologie, logisch_programmeren, software_engineering_lab_2, modelleren_en_simuleren, informatiebeveiliging, parallelle_computersystemen, inleiding_tot_elektrotechniek, inleiding_tot_telecommunicatie, wiskundige_modellering, ] ) await session.commit() """Aliases""" ai = UforaCourseAlias(course_id=artificiele_intelligentie.course_id, alias="AI") ad3 = UforaCourseAlias(course_id=algoritmen_datastructuren_3.course_id, alias="AD3") abc = UforaCourseAlias(course_id=automaten_berekenbaarheid_complexiteit.course_id, alias="ABC") bs = UforaCourseAlias(course_id=besturingssystemen.course_id, alias="BS") compbio = UforaCourseAlias(course_id=computationele_biologie.course_id, alias="Compbio") logprog = UforaCourseAlias(course_id=logisch_programmeren.course_id, alias="LogProg") prolog = UforaCourseAlias(course_id=logisch_programmeren.course_id, alias="Prolog") sel2 = UforaCourseAlias(course_id=software_engineering_lab_2.course_id, alias="SEL2") selab2 = UforaCourseAlias(course_id=software_engineering_lab_2.course_id, alias="SELab2") modsim = UforaCourseAlias(course_id=modelleren_en_simuleren.course_id, alias="ModSim") infosec = UforaCourseAlias(course_id=informatiebeveiliging.course_id, alias="InfoSec") information_security = UforaCourseAlias(course_id=informatiebeveiliging.course_id, alias="Information Security") pcs = UforaCourseAlias(course_id=parallelle_computersystemen.course_id, alias="PCS") parallel_computer_systems = UforaCourseAlias( course_id=parallelle_computersystemen.course_id, alias="Parallel Computer Systems" ) elektro = UforaCourseAlias(course_id=inleiding_tot_elektrotechniek.course_id, alias="Elektro") elektrotechniek = UforaCourseAlias(course_id=inleiding_tot_elektrotechniek.course_id, alias="Elektrotechniek") telecom = UforaCourseAlias(course_id=inleiding_tot_telecommunicatie.course_id, alias="Telecom") wimo = UforaCourseAlias(course_id=wiskundige_modellering.course_id, alias="WiMo") session.add_all( [ ai, ad3, abc, bs, compbio, logprog, prolog, sel2, selab2, modsim, infosec, information_security, pcs, parallel_computer_systems, elektro, elektrotechniek, telecom, wimo, ] ) await session.commit() """1st Master CS""" fundamenten_van_programmeertalen = UforaCourse( course_id=633639, code="C003241", name="Fundamenten van Programmeertalen", year=4, compulsory=True, role_id=1023298665416228876, overarching_role_id=1023293447387496570, ) machine_learning = UforaCourse( course_id=630807, code="C003758", name="Machine Learning (CS)", year=4, compulsory=True, role_id=1023294041825235087, overarching_role_id=1023293447387496570, ) parallelle_en_gedistribueerde = UforaCourse( course_id=633583, code="E017930", name="Parallelle en Gedistribueerde Softwaresystemen", year=4, compulsory=True, role_id=1023293978273136700, overarching_role_id=1023293447387496570, alternative_overarching_role_id=1023278462733127710, ) discrete_algoritmen = UforaCourse( course_id=633675, code="C003349", name="Discrete Algoritmen", year=4, compulsory=True, role_id=1023299229277487145, overarching_role_id=1023293447387496570, ) software_engineering_lab_3 = UforaCourse( course_id=631370, code="C004072", name="Software Engineering Lab 3", year=4, compulsory=True, role_id=1023299234008678550, overarching_role_id=1023293447387496570, ) compilers = UforaCourse( course_id=633663, code="E018520", name="Compilers", year=4, compulsory=True, role_id=1023299237003399249, overarching_role_id=1023293447387496570, ) datavisualisatie = UforaCourse( course_id=630803, code="C004041", name="Datavisualisatie", year=4, compulsory=True, role_id=1023299239243161671, overarching_role_id=1023293447387496570, ) recht_van_intellectuele_eigendom = UforaCourse( course_id=633696, code="C000957", name="Recht van de Intellectuele Eigendom", year=4, compulsory=True, role_id=1023299241457745930, overarching_role_id=1023293447387496570, ) """2nd Master CS""" computergrafiek = UforaCourse( code="C004073", name="Computergrafiek", year=5, compulsory=True, role_id=1023303199609860268, overarching_role_id=1023302736210567208, ) big_data_science = UforaCourse( code="C004074", name="Big Data Science", year=5, compulsory=True, role_id=1023303190046851153, overarching_role_id=1023302736210567208, ) bedrijfsstage = UforaCourse( code="C004075", name="Bedrijfsstage", year=5, compulsory=True, role_id=1023303201807679598, overarching_role_id=1023302736210567208, ) masterproef = UforaCourse( code="C002309", name="Masterproef", year=5, compulsory=True, role_id=1023319264851144754, overarching_role_id=1023302736210567208, alternative_overarching_role_id=1023300434800164914, ) """1st Master CSE""" design_of_multimedia_applications = UforaCourse( code="E017920", name="Design of Multimedia Applications", year=4, compulsory=True, role_id=1023300418635317259, overarching_role_id=1023278462733127710, ) research_project = UforaCourse( code="E031710", name="Research Project", year=4, compulsory=True, role_id=1023300421776855160, overarching_role_id=1023278462733127710, ) design_project = UforaCourse( code="E033710", name="Design Project", year=4, compulsory=True, role_id=1023300424561852537, overarching_role_id=1023278462733127710, ) mobile_and_broadband_access_networks = UforaCourse( code="E012320", name="Mobile and Broadband Access Networks", year=4, compulsory=True, role_id=1023300427246223471, overarching_role_id=1023278462733127710, ) information_theory = UforaCourse( code="E003600", name="Information Theory", year=4, compulsory=True, role_id=1023300429469204480, overarching_role_id=1023278462733127710, ) queueing_analysis_and_simulation = UforaCourse( code="E011322", name="Queueing Analysis and Simulation", year=4, compulsory=True, role_id=1023300431696371793, overarching_role_id=1023278462733127710, ) session.add_all( [ fundamenten_van_programmeertalen, machine_learning, parallelle_en_gedistribueerde, discrete_algoritmen, software_engineering_lab_3, compilers, datavisualisatie, recht_van_intellectuele_eigendom, computergrafiek, big_data_science, bedrijfsstage, masterproef, design_of_multimedia_applications, research_project, design_project, mobile_and_broadband_access_networks, information_theory, queueing_analysis_and_simulation, ] ) await session.commit() """Master aliases""" fundamenten = UforaCourseAlias(course_id=fundamenten_van_programmeertalen.course_id, alias="Fundamenten") ml = UforaCourseAlias(course_id=machine_learning.course_id, alias="ML") pds = UforaCourseAlias(course_id=parallelle_en_gedistribueerde.course_id, alias="PDS") parallel_and_distributed = UforaCourseAlias( course_id=parallelle_en_gedistribueerde.course_id, alias="Parallel and Distributed Software Systems" ) da = UforaCourseAlias(course_id=discrete_algoritmen.course_id, alias="DA") discalg = UforaCourseAlias(course_id=discrete_algoritmen.course_id, alias="DiscAlg") sel3 = UforaCourseAlias(course_id=software_engineering_lab_3.course_id, alias="SEL3") selab3 = UforaCourseAlias(course_id=software_engineering_lab_3.course_id, alias="SELab3") dv = UforaCourseAlias(course_id=datavisualisatie.course_id, alias="DV") datavis = UforaCourseAlias(course_id=datavisualisatie.course_id, alias="DataVis") recht = UforaCourseAlias(course_id=recht_van_intellectuele_eigendom.course_id, alias="Recht") computer_graphics = UforaCourseAlias(course_id=computergrafiek.course_id, alias="Computer Graphics") stage = UforaCourseAlias(course_id=bedrijfsstage.course_id, alias="Stage") thesis = UforaCourseAlias(course_id=masterproef.course_id, alias="Thesis") session.add_all( [ fundamenten, ml, pds, parallel_and_distributed, da, discalg, sel3, selab3, dv, datavis, recht, computer_graphics, stage, thesis, ] ) await session.commit() """Elective master's courses""" aanbevelingssystemen = UforaCourse( course_id=635444, code="E018230", name="Aanbevelingssystemen", year=6, compulsory=False, role_id=1023303206572404817, ) algoritmische_grafentheorie = UforaCourse( code="C000145", name="Algoritmische Grafentheorie", year=6, compulsory=False, role_id=1023304281094373436 ) artificial_intelligence = UforaCourse( code="E016330", name="Artificial Intelligence", year=6, compulsory=False, role_id=1023304874789703741 ) berekenbaarheid_en_complexiteit = UforaCourse( code="C000627", name="Berekenbaarheid en Complexiteit", year=6, compulsory=False, role_id=1023304692861784064, ) capita_selecta_bio = UforaCourse( code="C004122", name="Capita Selecta in Bioinformatics", year=6, compulsory=False, role_id=1023305177727504444, ) causal_machine_learning = UforaCourse( code="C004413", name="Causal Machine Learning", year=6, compulsory=False, role_id=1023304690491985961 ) computational_challenges = UforaCourse( code="C003711", name="Computational Challenges in Bioinformatics", year=6, compulsory=False, role_id=1023304283413811411, ) computeralgebra = UforaCourse( code="C001026", name="Computeralgebra", year=6, compulsory=False, role_id=1023304697928495164 ) computervisie = UforaCourse( code="E736020", name="Computervisie", year=6, compulsory=False, role_id=1023304274945511575 ) context_and_nuance = UforaCourse( code="A005503", name="Context and Nuance: A Critical Reflection on Current Topics", year=6, compulsory=False, role_id=1023304898252648470, ) deep_learning = UforaCourse( code="F000918", name="Deep Learning", year=6, compulsory=False, role_id=1023304893672464474 ) economie = UforaCourse(code="F000758", name="Economie", year=6, compulsory=False, role_id=1023305174506291290) geavanceerde_databanken = UforaCourse( code="E018441", name="Geavanceerde Databanken", year=6, compulsory=False, role_id=1023304259913134130 ) gevorderde_numerieke_methoden = UforaCourse( code="C004011", name="Gevorderde Numerieke Methoden", year=6, compulsory=False, role_id=1023304278410002482 ) gevorderd_wetenschappelijk_engels = UforaCourse( code="A003107", name="Gevorderd wetenschappelijk Engels", year=6, compulsory=False, role_id=1023305170987257898, ) internet_of_things = UforaCourse( code="E019170", name="Internet of Things", year=6, compulsory=False, role_id=1023304695416111224 ) medical_imaging = UforaCourse( code="E010371", name="Medical Imaging", year=6, compulsory=False, role_id=1023304900555317399 ) robotica = UforaCourse( course_id=634368, code="E019370", name="Robotica", year=6, compulsory=False, role_id=1023303205360246904 ) software_hacking = UforaCourse( course_id=635436, code="E017941", name="Softwarehacking en -Protectie", year=6, compulsory=False, role_id=1023303203913211905, ) spraakverwerking = UforaCourse( code="E010220", name="Spraakverwerking", year=6, compulsory=False, role_id=1023304686704533576 ) sustainable_computing = UforaCourse( code="E034500", name="Sustainable Computing", year=6, compulsory=False, role_id=1023304895421481081 ) session.add_all( [ aanbevelingssystemen, algoritmische_grafentheorie, artificial_intelligence, berekenbaarheid_en_complexiteit, capita_selecta_bio, causal_machine_learning, computational_challenges, computeralgebra, computervisie, context_and_nuance, deep_learning, economie, geavanceerde_databanken, gevorderde_numerieke_methoden, gevorderd_wetenschappelijk_engels, internet_of_things, medical_imaging, robotica, software_hacking, spraakverwerking, sustainable_computing, ] ) await session.commit() recommender_systems = UforaCourseAlias(course_id=aanbevelingssystemen.course_id, alias="Recommender Systems") cv = UforaCourseAlias(course_id=computervisie.course_id, alias="CV") comp_vis = UforaCourseAlias(course_id=computervisie.course_id, alias="CompVis") computer_vision = UforaCourseAlias(course_id=computervisie.course_id, alias="Computer Vision") context = UforaCourseAlias(course_id=context_and_nuance.course_id, alias="Context") eco = UforaCourseAlias(course_id=economie.course_id, alias="Eco") advanced_databases = UforaCourseAlias(course_id=geavanceerde_databanken.course_id, alias="Advanced Databases") advanced_academic_english = UforaCourseAlias( course_id=gevorderd_wetenschappelijk_engels.course_id, alias="Advanced Academic English" ) iot = UforaCourseAlias(course_id=internet_of_things.course_id, alias="IoT") robotics = UforaCourseAlias(course_id=robotica.course_id, alias="Robotics") software_hacking_en = UforaCourseAlias( course_id=software_hacking.course_id, alias="Software Hacking and Protection" ) speech_processing = UforaCourseAlias(course_id=spraakverwerking.course_id, alias="Speech Processing") session.add_all( [ recommender_systems, cv, comp_vis, computer_vision, context, eco, advanced_databases, advanced_academic_english, iot, robotics, software_hacking_en, speech_processing, ] ) await session.commit()