def role_by_id(role_id: int): from private.db.models import init_session info = [] with init_session() as ss: rs = ss.query(Role) \ .filter(Role.id == role_id).first() return rs
def lesson_info_by_id(lesson_id: int): from private.db.models import init_session info = [] with init_session() as ss: rs = ss.query(Lesson) \ .filter(Lesson.id == lesson_id).first() return rs
def get_by_id(): teacher_id = int(request.args.get('teacher_id') or 0) class_id = int(request.args.get('class_id') or 0) event_id = int(request.args.get('id') or 0) events = [] with init_session() as ss: filters = [] filters.append(User.id == Event.teacher_id) filters.append(Lesson.id == Event.lesson_id) if event_id: filters.append(Event.id == event_id) if class_id: filters.append(Event.class_id == class_id) if teacher_id: filters.append(Event.id == teacher_id) rs = ss.query(Event, User, Lesson).filter(*filters).all() for event, user, lesson in rs: events.append({ "id": event.id, "teacher_name": user.name, "lesson": lesson.name, "description": event.description, "begin_time": event.begin_time, "end_time": event.end_time, "homework": "Страница 1, з. 2" }) return {"lessons": events}
def user_info_all(): from private.db.models import init_session info = [] with init_session() as ss: rs = ss.query(User, Profile)\ .filter(User.id == Profile.user_id)\ .all() return rs
def user_info_by_id(user_id: int): from private.db.models import init_session info = [] with init_session() as ss: rs = ss.query(User, Profile, UniversityRecommendation)\ .filter(User.id == Profile.user_id)\ .filter(User.id == user_id) \ .filter(User.id == UniversityRecommendation.user_id).first() return rs
def lessons_for_student(user_id: int, class_id: int, event_id: int): from private.db.models import init_session filters = [] filters.append(Event.class_id == class_id) filters.append(Lesson.id == Event.lesson_id) filters.append(User.id == Event.teacher_id) if event_id != 0: filters.append(Event.id == event_id) with init_session() as ss: assignments = ss.query(Assignment, Task) \ .filter(Assignment.event_id == event_id) \ .filter(Assignment.task_id == Task.id) \ .filter(Assignment.assignee_user_id == user_id).all() with init_session() as ss: rs = ss.query(Event, Lesson, User) \ .filter(*filters).all() print(rs, assignments) return rs, assignments
def class_by_id(class_id: int): from private.db.models import init_session info = [] with init_session() as ss: rs = ss.query(Class, Role) \ .filter(Class.id == class_id) \ .filter(Class.roles == Role.id) \ .first() return rs
def pins_add(pins: list): from private.db.models import init_session with init_session() as ss: for pin in pins: pin = Pin(assignment_id=pin['assignment_id'], coord_x=pin['coord_x'], coord_y=pin['coord_y'], message=pin['message']) ss.add(pin) return True
def register_user(name:str, email:str, password:str, age:int, phone:str, gender:int, class_id:int, username: str): from private.db.models import init_session with init_session() as ss: user = User(name=name, username=username, password=password, class_id=class_id) ss.add(user) ss.flush() profile = Profile(user_id=user.id, age=age, gender=gender, phone=phone, email=email) ss.add(profile) return user.id
def task_add(task_name: str, lesson_id: int, assignment: str, assignment_type: str): from private.db.models import init_session with init_session() as ss: task = Task(name=task_name, lesson_id=lesson_id, assignment=assignment, assignment_type=assignment_type) ss.add(task) return task.id
def check_rights(class_id: int, role: str): from private.db.models import init_session with init_session() as ss: rs = ss.query(Class, Role) \ .filter(Class.id == class_id) \ .filter(Class.roles == Role.id) \ .filter(Role.name == role).first() if not rs: from private.db.models import DbValueNotFoundError raise DbValueNotFoundError("Роли не существует!")
def assignment_add(teacher_id: int, assignee_class_id: int, assingment_id: int, event_id: int): from private.db.models import init_session with init_session() as ss: assignment = Assignment(teacher_id=teacher_id, assignee_user_id=assignee_class_id, task_id=assingment_id, event_id=event_id, mark=0) ss.add(assignment) return assignment.id
def get_full_assignment_info(assignment_id: int): from private.db.models import init_session with init_session() as ss: assignment, task = ss.query(Assignment, Task) \ .filter(Assignment.task_id == Task.id) \ .filter(Assignment.id == assignment_id).first() pins = ss.query(Pin) \ .filter(Pin.assignment_id == assignment_id) \ .all() return assignment, task, pins
def insert_poll_result(teacher_id, student, question, answers, mark, poll_time): from private.db.models import init_session with init_session() as ss: poll = Poll(teacher_id=teacher_id, student=student, question=question, answers=answers, mark=mark, poll_time=poll_time) ss.add(poll) return True
def add_multiple_calendars(self): with init_session() as ss: for i in range(2, 10): day = randint(1, 7) event = Event(id=i, teacher_id=1, lesson_id=1, class_id=1, description='Урок ' + str(i), begin_time=datetime.now() + timedelta(days=day), end_time=datetime.now() + timedelta(days=day) + timedelta(minutes=40)) ss.add(event)
def test_db_tables(self): def_class = Class(id=1, grade=1, roles=123, specialization='A') def_user = User(id=1, name="Ольга Петровна", username='******', password='******', class_id=1) def_recommendation = UniversityRecommendation( id=1, university='НИУ ВШЭ', specialization='гуманитарий', user_id=1) def_profile = Profile(id=1, user_id=1, age=23, gender=1, phone='123213', email='sdsds@sds', birthday=datetime.now()) def_lesson = Lesson(id=1, name="Математика") def_event = Event(id=1, teacher_id=1, lesson_id=1, class_id=1, description='Урок1', begin_time=datetime.now() + timedelta(days=3), end_time=datetime.now() + timedelta(days=3) + timedelta(minutes=40)) with init_session() as ss: ss.add(def_recommendation) with init_session() as ss: ss.add(def_class) with init_session() as ss: ss.add(def_user) with init_session() as ss: ss.add(def_profile) ss.add(def_lesson) with init_session() as ss: ss.add(def_event)
def add_classes_and_roles(self): teacher_role = Role(name="Учитель", mask=2) director_role = Role(name="Директор", mask=3) student_role = Role(name="Ученик", mask=4) with init_session() as ss: ss.add(teacher_role) ss.add(director_role) ss.add(student_role) ss.flush() teacher_class = Class(grade=100, roles=teacher_role.id, specialization='Учитель математики') student_class = Class(grade=6, roles=student_role.id, specialization='6-Б класс') director_class = Class(grade=242423123, roles=teacher_role.id, specialization='Директор школы') ss.add(teacher_class) ss.add(student_class) ss.add(director_class)
def check_user_identity(username: str, password: str): from private.db.models import init_session with init_session() as ss: user = ss.query(User) \ .filter(User.username == username, User.password == password).first() return user
def get_all_classes(): from private.db.models import init_session with init_session() as ss: rs = ss.query(Class, Role) \ .filter(Class.roles == Role.id).all() return rs
def lesson_add(name: str): from private.db.models import init_session info = [] with init_session() as ss: ss.add_all([Lesson(name=name)]) ss.commit()