Ejemplo n.º 1
0
def create_lesson(title, description, author_id, public = False):
    """Create and return a new lesson."""

    new_lesson = Lesson(title=title, description=description, 
                        author_id=author_id, public=public)
    
    db.session.add(new_lesson)
    db.session.commit()

    return new_lesson
Ejemplo n.º 2
0
def get_plan_timetable(day, plan, orari, all_aule):
    if len(orari) == 0:
        return None
    timetable = Timetable()

    if plan.is_empty():
        return timetable

    start = datetime.datetime.strptime(
        day.strftime("%Y-%m-%d") + "T00:00:00", "%Y-%m-%dT%H:%M:%S")
    stop = datetime.datetime.strptime(
        day.strftime("%Y-%m-%d") + "T23:59:59", "%Y-%m-%dT%H:%M:%S")

    for t in plan.teachings:
        for o in orari[t.componente_id]:
            try:
                ##### DEBUG #####
                # if t.componente_id == '448380':
                #     print(t)
                #################
                inizio = datetime.datetime.strptime(o["inizio"],
                                                    "%Y-%m-%dT%H:%M:%S")

                if inizio > start and inizio < stop:
                    l = Lesson(
                        t.corso_codice, t.materia_codice,
                        t.materia_descrizione, t.docente_nome, t.componente_id,
                        t.url,
                        datetime.datetime.strptime(o["inizio"],
                                                   "%Y-%m-%dT%H:%M:%S"),
                        datetime.datetime.strptime(o["fine"],
                                                   "%Y-%m-%dT%H:%M:%S"),
                        t.anno, t.crediti, t.componente_padre,
                        t.componente_radice)
                    for code in o["aula_codici"].split():
                        try:
                            a = all_aule[code]
                            l.add_aula(a)
                        except:
                            l.add_aula(
                                Aula("-", "UNKNOWN AULA", "UNKNOWN ADDRESS",
                                     "", "NO LAT", "NO LON"))

                    timetable.add_lesson(l)
            except:
                traceback.print_exc()
                now = datetime.datetime.now()
                logging.info("TIMESTAMP = " +
                             now.strftime("%b %d %Y %H:%M:%S") +
                             " ### EXCEPTION = " + traceback.format_exc())

    timetable.lessons.sort(key=lambda x: x.inizio, reverse=False)
    return timetable
Ejemplo n.º 3
0
def get_lessons(chat_id, now, plan, orari, all_aule):

    timetable = Timetable()

    if plan.is_empty():
        return timetable

    u = um.get_user(chat_id)
    lesson_time = now + datetime.timedelta(minutes=u.notification_time)

    for t in plan.teachings:
        for o in orari[t.componente_id]:
            try:
                ##### DEBUG #####
                #                if t.componente_id == '448380':
                #                    print(t)
                #################
                inizio = datetime.datetime.strptime(o["inizio"],
                                                    "%Y-%m-%dT%H:%M:%S")

                if inizio == lesson_time:
                    l = Lesson(
                        t.corso_codice, t.materia_codice,
                        t.materia_descrizione, t.docente_nome, t.componente_id,
                        t.url,
                        datetime.datetime.strptime(o["inizio"],
                                                   "%Y-%m-%dT%H:%M:%S"),
                        datetime.datetime.strptime(o["fine"],
                                                   "%Y-%m-%dT%H:%M:%S"),
                        t.anno, t.crediti, t.componente_padre,
                        t.componente_radice)
                    for code in o["aula_codici"].split():
                        try:
                            a = all_aule[code]
                            l.add_aula(a)
                        except:
                            l.add_aula(
                                Aula("-", "UNKNOWN AULA", "UNKNOWN ADDRESS",
                                     "", "NO LAT", "NO LON"))

                    timetable.add_lesson(l)
            except:
                traceback.print_exc()
                now = datetime.datetime.now()
                logging.info("TIMESTAMP = " +
                             now.strftime("%b %d %Y %H:%M:%S") +
                             " ### EXCEPTION = " + traceback.format_exc())

    timetable.lessons.sort(key=lambda x: x.inizio, reverse=False)
    return timetable
Ejemplo n.º 4
0
def get_room_timetable(day, aula, orari_group_by_aula, all_teachings):
    if len(orari_group_by_aula) == 0:
        return None
    timetable = Timetable()

    start = datetime.datetime.strptime(
        day.strftime("%Y-%m-%d") + "T00:00:00", "%Y-%m-%dT%H:%M:%S")
    stop = datetime.datetime.strptime(
        day.strftime("%Y-%m-%d") + "T23:59:59", "%Y-%m-%dT%H:%M:%S")

    for o in orari_group_by_aula[aula.aula_codice]:
        try:
            inizio = datetime.datetime.strptime(o["inizio"],
                                                "%Y-%m-%dT%H:%M:%S")
            fine = datetime.datetime.strptime(o["fine"], "%Y-%m-%dT%H:%M:%S")

            if inizio > start and inizio < stop and aula.aula_codice in o[
                    "aula_codici"]:

                t = all_teachings[o["componente_id"]]

                l = Lesson(
                    t.corso_codice, t.materia_codice, t.materia_descrizione,
                    t.docente_nome, t.componente_id, t.url,
                    datetime.datetime.strptime(o["inizio"],
                                               "%Y-%m-%dT%H:%M:%S"),
                    datetime.datetime.strptime(o["fine"], "%Y-%m-%dT%H:%M:%S"),
                    t.anno, t.crediti, t.componente_padre, t.componente_radice)

                l.add_aula(aula)

                timetable.add_lesson(l)

        except:
            print(o)
            traceback.print_exc()
            now = datetime.datetime.now()
            logging.info("TIMESTAMP = " + now.strftime("%b %d %Y %H:%M:%S") +
                         " ### EXCEPTION = " + traceback.format_exc())

    timetable.lessons.sort(key=lambda x: x.inizio, reverse=False)
    return timetable
          ),  # temp_pass
     User(name='Mr. GovTech',
          username='******',
          password=
          '******'
          ),  # govtech_strong_password
     User(name='Admin',
          username='******',
          password=
          '******'
          ),  # super_duper_whitehacks_strong_password
     Module(code='IS200', name='Software Foundations'),
     Module(code='IS103', name='Computational Thinking'),
     Module(code='IS101', name='Seminar on Information Systems'),
     Module(code='WRIT001', name='Academic Writing'),
     Lesson(module_code='IS200', name='Lesson 01'),
     Lesson(module_code='IS103', name='Lesson 01'),
     Lesson(module_code='IS101', name='Lesson 01'),
     Lesson(module_code='WRIT001', name='Lesson 01'),
     Document(
         lesson_id=1,
         name='Document 01',
         is_draft=False,
         content=
         'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum'
     ),
     Document(lesson_id=4,
              name='Document Flag',
              is_draft=True,
              content='NOTFLAG{youre_almost_there_try_harder}'),
 ]
Ejemplo n.º 6
0
def get_plan_timetable_web_api(day, plan):
    timetable = Timetable()

    if plan.is_empty():
        return timetable

    orari_table = "orari_" + config.accademic_year
    aule_table = "aule_" + config.accademic_year
    url_o = "https://dati.unibo.it/api/action/datastore_search_sql"
    url_a = "https://dati.unibo.it/api/action/datastore_search?resource_id=" + \
        aule_table + "&q="

    sql_orari = "SELECT " + orari_table + ".inizio, " \
                + orari_table + ".fine, " \
                + orari_table + ".aula_codici, " \
                + orari_table + ".componente_id " \
                + " FROM " + orari_table \
                + " WHERE " + orari_table + ".inizio between \'" + day.strftime(
                    "%Y/%m/%d") + " 00:00:00\' and " + "\'" + day.strftime("%Y/%m/%d") + " 23:59:59\' AND ("

    for i in range(0, len(plan.teachings), 1):
        t = plan.teachings[i]
        if i == 0:
            sql_orari += orari_table + ".componente_id=" + t.componente_id
        else:
            sql_orari += " OR " + orari_table + ".componente_id=" + t.componente_id
    sql_orari += " )"

    headers = {
        'Content-type': 'application/json',
        'Accept': 'application/json'
    }
    json_orari = requests.post(url_o,
                               headers=headers,
                               data='{"sql":' + '"' + sql_orari + '"}').text

    try:
        ok = json.loads(json_orari)["success"]
    except:
        pass

    if ok:

        orari_dict = json.loads(json_orari)["result"]["records"]
        for o in orari_dict:
            try:
                componente_id = o["componente_id"]

                t = plan.find_teaching_by_componente_id(componente_id)
                if t != None:
                    ##### DEBUG #####
                    # if t.componente_id == '448380':
                    #     print(t)
                    #################
                    l = Lesson(
                        t.corso_codice, t.materia_codice,
                        t.materia_descrizione, t.docente_nome, t.componente_id,
                        t.url,
                        datetime.datetime.strptime(o["inizio"],
                                                   "%Y-%m-%dT%H:%M:%S"),
                        datetime.datetime.strptime(o["fine"],
                                                   "%Y-%m-%dT%H:%M:%S"),
                        t.anno, t.crediti, t.componente_padre,
                        t.componente_radice)
                    for code in o["aula_codici"].split():
                        try:
                            a = all_aule[code]
                            l.add_aula(a)
                        except:
                            l.add_aula(
                                Aula("-", "UNKNOWN AULA", "UNKNOWN ADDRESS",
                                     "", "NO LAT", "NO LON"))

                    timetable.add_lesson(l)
            except:
                traceback.print_exc()
                now = datetime.datetime.now()
                logging.info("TIMESTAMP = " +
                             now.strftime("%b %d %Y %H:%M:%S") +
                             " ### EXCEPTION = " + traceback.format_exc())
        timetable.lessons.sort(key=lambda x: x.inizio, reverse=False)
        return timetable
    else:
        return None
Ejemplo n.º 7
0
 def _query_object(self, criteria, cursor):
     cursor.execute(self.__sql_query_by_uk, criteria)
     rec = cursor.fetchone()
     if rec:
         return Lesson(**rec)