def delete(self, id): content = session.query(Address).filter(Address.id == id).first() if not content: abort(404, message="Content {} doesn't exist".format(id)) session.delete(content) session.commit() return {}, 204
def subject_create(): teachers = Teacher.query.all() teacher_list = dict() if teachers: teacher_list = [{ 'id': teacher.id, 'fio': teacher.name } for teacher in teachers] if request.method == 'POST': data = parser.parse(subects_create_post, request) subject = Subject() if data: for item in data.items(): if item[0] == 'name': subject.name = item[1] if item[0] == 'desc': subject.desc = item[1] if item[0] == 'teacher_id': teacher = Teacher.query.get(item[1]) if not teacher: return redirect(url_for('bp_web.subjects')) subject.teacher = teacher session.add(subject) session.commit() return redirect(url_for('bp_web.subjects')) return render_template('subjects_edit.html', teacher_list=teacher_list)
def course_theme_edit(course_theme_id): course_theme = CourseTheme.query.get(course_theme_id) if not course_theme: return redirect(url_for('bp_web.course_themes')) if request.method == 'POST': data = parser.parse(course_theme_create_post, request) if data: for item in data.items(): if item[0] == 'name': course_theme.name = item[1] session.commit() return redirect(url_for('bp_web.course_themes')) course_theme_data = { 'id': course_theme.id, 'name': course_theme.name, 'course_numbers_list': dict() } if course_theme.course_number: course_theme_data['course_numbers_list'] = [{ 'id': course_number.id, 'number': course_number.number } for course_number in course_theme.course_number] return render_template('course_themes_edit.html', course_theme_data=course_theme_data)
def course_number_delete(course_theme_id, course_number_id): course_theme = CourseTheme.query.get(course_theme_id) if not course_theme: return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) course_number = course_theme.course_number_lazy.filter_by( id=course_number_id).first() if not course_number: return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) if course_number.course_group.__len__( ) > 0 or course_number.subjects.count() > 0: flash( 'Вы не можете удалить этот номер курса, пока у него есть используемые группы или курс привязан к предметам!' ) return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) session.delete(course_theme) session.commit() return redirect(url_for('bp_web.course_themes'))
def delete(self, id): address = session.query(Address).filter(Address.id == id).first() if not address: abort(404, message="Address {} doesn't exist".format(id)) session.delete(address) session.commit() return {}, 204
def course_group_create(course_theme_id, course_number_id): course_theme = CourseTheme.query.get(course_theme_id) if not course_theme: return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) course_number = course_theme.course_number_lazy.filter_by( id=course_number_id).first() if not course_number: return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) course_group = CourseGroup() data = parser.parse(course_group_create_post, request) if data: for item in data.items(): if item[0] == 'gid': course_group.gid = int(item[1]) course_group.course_number = course_number session.add(course_group) session.commit() return redirect( url_for('bp_web.course_number_edit', course_theme_id=course_theme_id, course_number_id=course_number_id))
def delete(self, id): box = session.query(Box).filter(Box.id == id).first() if not box: abort(404, message="Box {} doesn't exist".format(id)) session.delete(box) session.commit() return {}, 204
def pytest_sessionstart(): mock_users = 150 # Fixing the DB to 150 mock users users = UserFactory.build_batch(mock_users) for user in users: session.add(user) session.commit() print("Test DB initialized")
def put(self, id): box = session.query(Box).filter(Box.id == id).first() if not box: abort(404, message="Box {} doesn't exist".format(id)) parsed_args = parser.parse_args() BOX_ARGS = valid_request_arguments['Box'] for box_arg in BOX_ARGS: if box_arg in parsed_args and parsed_args[box_arg]: setattr(box, box_arg, parsed_args[box_arg]) session.commit() return box, 201
def put(self, id): content = session.query(Content).filter(Content.id == id).first() if not content: abort(404, message="Address {} doesn't exist".format(id)) CONTENT_ARGS = valid_request_arguments['Content'] parsed_args = parser.parse_args() for addr_arg in CONTENT_ARGS: if addr_arg in parsed_args and parsed_args[addr_arg]: setattr(content, addr_arg, parsed_args[addr_arg]) session.commit() return content, 201
def put(self, id): address = session.query(Address).filter(Address.id == id).first() if not address: abort(404, message="Address {} doesn't exist".format(id)) ADDRESS_ARGS = valid_request_arguments['Address'] parsed_args = parser.parse_args() for addr_arg in ADDRESS_ARGS: if addr_arg in parsed_args and parsed_args[addr_arg]: setattr(address, addr_arg, parsed_args[addr_arg]) session.commit() return address, 201
def teacher_delete(teacher_id): teacher = Teacher.query.get(teacher_id) if not teacher: return redirect(url_for('bp_web.teachers')) if teacher.subjects.__len__() > 0: flash('Вы не можете удалить преподавателя, пока он закреплен за предметами!') return redirect(url_for('bp_web.teacher_edit', teacher_id=teacher_id)) session.delete(teacher) session.commit() return redirect(url_for('bp_web.teachers'))
def subject_delete(subject_id): subject = Subject.query.get(subject_id) if not subject: return redirect(url_for('bp_web.subjects')) if subject.lessons.__len__() > 0 or subject.course_subscribed.count() > 0: flash( 'Вы не можете удалить предмет, пока на него подписаны курсы или он присутствует в расписании!' ) return redirect(url_for('bp_web.subject_edit', subject_id=subject_id)) session.delete(subject) session.commit() return redirect(url_for('bp_web.subjects'))
def course_theme_create(): if request.method == 'POST': data = parser.parse(course_theme_create_post, request) course_theme = CourseTheme() if data: for item in data.items(): if item[0] == 'name': course_theme.name = item[1] session.add(course_theme) session.commit() return redirect(url_for('bp_web.course_themes')) return render_template('course_themes_edit.html')
def subscribe(cg_id, tid): user = User.query.filter_by(tid=tid).first() cg = CourseGroup.query.get(cg_id) if user and cg: user.course_group = cg session.commit() markup = telebot.types.ReplyKeyboardMarkup(True, False) markup.row(telebot.types.KeyboardButton('\U0001F4DA Мои предметы')) markup.row(telebot.types.KeyboardButton('\U0001F558 Расписание')) markup.row(telebot.types.KeyboardButton('\u26F3 Переподписаться')) tbot.send_message(chat_id=tid, text='\u2705 Вы успешно подписались на группу ' + str(cg.gid) + '!', reply_markup=markup)
def teacher_create(): if request.method == 'POST': data = parser.parse(teacher_create_post, request) teacher = Teacher() if data: for item in data.items(): if item[0] == 'name': teacher.name = item[1] if item[0] == 'email': teacher.email = item[1] session.add(teacher) session.commit() return redirect(url_for('bp_web.teachers')) return render_template('teachers_edit.html')
def course_theme_delete(course_theme_id): course_theme = CourseTheme.query.get(course_theme_id) if not course_theme: return redirect(url_for('bp_web.course_themes')) if course_theme.course_number.__len__() > 0: flash( 'Вы не можете удалить это направление подготовки пока у него есть активные курсы подготовки!' ) return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) session.delete(course_theme) session.commit() return redirect(url_for('bp_web.course_themes'))
def course_number_create(course_theme_id): course_theme = CourseTheme.query.get(course_theme_id) if not course_theme: return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) reserved_courses = list() if course_theme.course_number: for course_number in course_theme.course_number: reserved_courses.append(course_number.number) subjects = Subject.query.all() subjects_list = dict() if subjects: subjects_list = [{ 'id': subject.id, 'name': subject.name } for subject in subjects] if request.method == 'POST': data = parser.parse(course_number_create_post, request) course_number = CourseNumber() if data: for item in data.items(): if item[0] == 'number': course_number.number = int(item[1]) if item[0] == 'subjects[]': for subj in item[1]: course_number_subject = Subject.query.get(subj) if course_number_subject: course_number.subjects.append( course_number_subject) course_number.course_theme = course_theme session.add(course_number) session.commit() return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) return render_template('course_numbers_edit.html', reserved_courses=reserved_courses, subjects_list=subjects_list)
def send_welcome(message): user = User.query.filter_by(tid=message.from_user.id).first() if not user: user = User(tid=message.from_user.id, is_admin=False) session.add(user) session.commit() course_themes = CourseTheme.query.all() markup = telebot.types.InlineKeyboardMarkup(row_width=6) for ct in course_themes: markup.row( telebot.types.InlineKeyboardButton(text=ct.name, callback_data=':'.join( ['get_cn', str(ct.id)]))) tbot.send_message(chat_id=message.from_user.id, text='\U0001F680 Выберите Ваше направление подготовки', reply_markup=markup)
def class_schedule_edit(): data = request.form.to_dict() if data: if data.get('course_group_id'): course_group_id = data.pop('course_group_id') course_group = CourseGroup.query.get(course_group_id) if course_group: parsed_data = dict() for key, value in data.items(): if value: keys = key.split('_') if not keys[0] + keys[1] in parsed_data.keys(): parsed_data[keys[0] + keys[1]] = dict() parsed_data[keys[0] + keys[1]]['dow'] = keys[0] parsed_data[keys[0] + keys[1]]['seq'] = keys[1] parsed_data[keys[0] + keys[1]][keys[2]] = value class_schedules = course_group.class_schedule.all() if class_schedules: for class_schedule in class_schedules: session.delete(class_schedule) for row in parsed_data.values(): if row['subj']: subj = Subject.query.get(row['subj']) if subj: class_lesson = ClassSchedule() class_lesson.subject = subj class_lesson.course_group = course_group for item in row.items(): if item[0] == 'class': class_lesson.classroom = item[1] if item[0] == 'seq': class_lesson.seq = int(item[1]) if item[0] == 'dow': class_lesson.dow = item[1] session.add(class_lesson) session.commit() return redirect(url_for('bp_web.class_schedule'))
def get_schedule_file(msg): person = session.query(Person).filter( func.lower(Person.fullname) == func.lower(msg.text)).first() if not person: return tb.send_message( msg.chat.id, f"Такого ПІБ немає у базі, зв'яжіться з [адміністратором](https://t.me/Regis322)", parse_mode='Markdown') if person.telegram_id: return tb.send_message( msg.chat.id, "Людина за цим ПІБ вже зареэстрована, зв'яжіться з [адміністратором](https://t.me/Regis322)", parse_mode='Markdown') person.telegram_id = msg.chat.id session.add(person) session.commit() tb.send_message(msg.chat.id, "Ваш ПІБ знайдено у базі, ваш телеграм під'єднано")
def get_person_fullname(msg): person = session.query(Person).filter( Person.telegram_id == msg.chat.id).first() if not msg.text.isdigit(): return tb.send_message( msg.chat.id, "Введіть порядковий номер місця практики зі списку доступних місць" ) place = session.query(PlaceOfPractice).filter( PlaceOfPractice.id == int(msg.text)).first() if not place: return tb.send_message( msg.chat.id, "Не знайдено жодного місця практики за цим номером") person.student.place_of_practice = place session.commit() tb.send_message(msg.chat.id, f"Ви успішно вибрали _{place.name}_ місцем практики", parse_mode='Markdown')
def teacher_edit(teacher_id): teacher = Teacher.query.get(teacher_id) if not teacher: return redirect(url_for('bp_web.teachers')) if request.method == 'POST': data = parser.parse(teacher_create_post, request) if data: for item in data.items(): if item[0] == 'name': teacher.name = item[1] if item[0] == 'email': teacher.email = item[1] session.commit() return redirect(url_for('bp_web.teachers')) teacher = { 'id': teacher_id, 'fio': teacher.name, 'email': teacher.email } return render_template('teachers_edit.html', teacher=teacher)
def course_group_delete(course_theme_id, course_number_id, course_group_id): course_group = CourseGroup.query.get(course_group_id) if not course_group: return redirect( url_for('bp_web.course_number_edit', course_theme_id=course_theme_id, course_number_id=course_number_id)) if course_group.class_schedule.count() > 0: flash( 'Вы не можете удалить эту группу пока у она числиться в расписании!' ) return redirect( url_for('bp_web.course_number_edit', course_theme_id=course_theme_id, course_number_id=course_number_id)) session.delete(course_group) session.commit() return redirect( url_for('bp_web.course_number_edit', course_theme_id=course_theme_id, course_number_id=course_number_id))
def get_schedule_file(msg): person = session.query(Person).filter(Person.telegram_id == msg.chat.id).first() # FILE SIZE CHECK if msg.document.file_size > 500000: return tb.send_message(msg.chat.id, "Файл великого розміру (0.5mb max)") # DOWNLOADING THE FILE tg_cloud_file = tb.get_file(msg.document.file_id) binary_data = tb.download_file(tg_cloud_file.file_path) # CREATING TEMPORARY FILE WRAPPER schedule_file = TemporaryFile() schedule_file.write(binary_data) # DELETING CURRENT SCHEDULE FROM DB if person.head.faculty.schedule: session.delete(person.head.faculty.schedule) session.commit() # PARSING TABLE WITH DAYS OF PRACTICE schedule = Schedule(faculty=person.head.faculty) try: schedule_sheet = openpyxl.load_workbook(schedule_file).active for row_idx in range(2, schedule_sheet.max_row + 1): schedule.schedule_meetings.append( ScheduleMeeting( schedule=schedule, meeting=Meeting( date=schedule_sheet.cell(row_idx, 1).value.strftime("%Y-%m-%d"), start_time=schedule_sheet.cell(row_idx, 2).value.strftime("%H:%M"), end_time=schedule_sheet.cell(row_idx, 3).value.strftime("%H:%M"), place=schedule_sheet.cell(row_idx, 4).value, ) ) ) except (ValueError, TypeError): tb.reply_to(msg, "Помилка у парсингу файла") schedule_file.close() return # INSERTING NEW SCHEDULE TO DB person.head.faculty.schedule = schedule session.commit() # NOTIFYING FOR SUCCESS AND CLEANING UP tb.reply_to(msg, "Успішно завантажено новий розклад!") schedule_file.close() # INFORMING THE STUDENTS WITH NEW SCHEDULE BY SENDING THE FILE not_informed_students = [] informed_students = [] for group in person.head.faculty.groups: for student in group.students: if not student.person.telegram_id: not_informed_students.append(student) continue tb.send_document( student.person.telegram_id, msg.document.file_id, caption="Шановний студент! Розклад консультацій змінено, лови актуальний" ) informed_students.append(student) # NOTIFYING ABOUT THE RESULTS ABOUT STUDENTS INFORMATION tb.send_message( msg.chat.id, f"Інформованих студентів: {len(informed_students)}\n" "Не отримали повідомленя: \n" f"{os.linesep.join((f'{i + 1}. {student.person.fullname}' for (i, student) in enumerate(not_informed_students)))}", parse_mode='Markdown' )
def delete(self): try: session.delete(self) session.commit() except Exception as e: session.rollback();
def save(self): try: session.add(self) session.commit() except Exception as e: session.rollback();
def post(self): parsed_args = parser.parse_args() content = Address(**parsed_args) session.add(content) session.commit() return content, 201
def init_database(): engine = create_engine(DB_URI) Base.metadata.drop_all(engine) Base.metadata.create_all(engine) # create 10 initial boxes for x in range(0, 10): # create some shoes as demo content box_content_1 = Content(name='Nike Air Zoom Pegasus 35', style='Sneaker', color='white', size='US 9', price='85.00 $', condition='new') box_content_2 = Content(name='Nike Air Max 270', style='Sneaker', color='black', size='US 9', price='85.00 $', condition='new') box_contents = [box_content_1, box_content_2] # create 10 current addresses with a rising value at the end new_current_address = Address( name='Buffer Location 221' + str(x), str_name='Haven Avenue', str_no='3645', city='Menlo Park', post_code='94025', state='California', country='United States of America', ) session.add(new_current_address) # create 10 destination addresses with a rising value at the end new_destination_address = Address( name='Paul Happy', str_name='Target road', str_no='42' + str(x), city='Happyplace', post_code='94025', state='California', country='Germany', ) session.add(new_destination_address) # create 10 boxes with a current address, a destination address and a content new_box = Box(id=10100 + x, name='new box ' + str(x), addr_c=new_current_address, addr_d=new_destination_address, box_contents=box_contents, status='Delivery in Progress', customerStatus='Delivered', weight='2kg', size='M') session.add(new_box) session.commit()
def course_number_edit(course_theme_id, course_number_id): course_theme = CourseTheme.query.get(course_theme_id) if not course_theme: return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) course_number = course_theme.course_number_lazy.filter_by( id=course_number_id).first() if not course_number: return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) course_number_data = { 'id': course_number.id, 'course_theme_id': course_theme.id, 'number': course_number.number, 'reserved_subjects': list(), 'reserved_groups': dict() } if course_number.subjects: reserved_subjects = course_number.subjects.all() if reserved_subjects: for reserved_subject in reserved_subjects: course_number_data['reserved_subjects'].append( reserved_subject.id) if course_number.course_group: course_number_data['reserved_groups'] = [{ 'id': reserved_group.id, 'gid': reserved_group.gid } for reserved_group in course_number.course_group] reserved_courses = list() if course_theme.course_number: for course_number in course_theme.course_number: reserved_courses.append(course_number.number) subjects = Subject.query.all() subjects_list = dict() if subjects: subjects_list = [{ 'id': subject.id, 'name': subject.name } for subject in subjects] if request.method == 'POST': data = parser.parse(course_number_create_post, request) if data: for item in data.items(): if item[0] == 'number': course_number.number = int(item[1]) if item[0] == 'subjects[]': reserved_subjects = course_number.subjects.all() if reserved_subjects: for reserved_subject in reserved_subjects: course_number.subjects.remove(reserved_subject) for subj in item[1]: course_number_subject = Subject.query.get(subj) if course_number_subject: course_number.subjects.append( course_number_subject) session.commit() return redirect( url_for('bp_web.course_theme_edit', course_theme_id=course_theme_id)) return render_template('course_numbers_edit.html', course_number_data=course_number_data, reserved_courses=reserved_courses, subjects_list=subjects_list)