def time_event(message, event_id): Event.update_event(event_id=event_id, time=message.text) bot.send_message( chat_id=message.from_user.id, text=f'Захід "{Event.get_event(event_id=event_id).name}" створено ' f'{emojize(":white_check_mark:", use_aliases=True)}')
def change_event_time(message, event_id): Event.update_event(event_id=event_id, time=message.text) bot.send_message( chat_id=message.from_user.id, text= f'Час проведення заходу змінено на {Event.get_event(event_id=event_id).time} ' f'{emojize(":white_check_mark:", use_aliases=True)}')
def change_event_name(message, event_id): Event.update_event(event_id=event_id, name=message.text) bot.send_message( chat_id=message.from_user.id, text= f'Назву заходу змінено на "{Event.get_event(event_id=event_id).name}" ' f'{emojize(":white_check_mark:", use_aliases=True)}')
def delete_event(call): event_id = call.data.split('_')[1] bot.edit_message_text( chat_id=call.from_user.id, message_id=call.message.message_id, text=f'Захід {Event.get_event(event_id).name} видалено ' f'{emojize(":white_check_mark:", use_aliases=True)}') Event.delete_event(event_id)
def test_event(self): # generate object and save to db current_time = datetime.utcnow() event = Event(0, 0, current_time, current_time, MAGIC_TEXT, MAGIC_TEXT, MAGIC_TEXT, MAGIC_TEXT, 0, 0) db.session.add(event) db.session.commit() # attempt to fetch notification event = db.session.query(Event).limit(1).first() # test explicit data self.assertEqual(event.creator_id, 0) self.assertEqual(event.organization_id, 0) self.assertEqual(event.start_date, current_time) self.assertEqual(event.end_date, current_time) self.assertEqual(event.theme, MAGIC_TEXT) self.assertEqual(event.perks, MAGIC_TEXT) self.assertEqual(event.categories, MAGIC_TEXT) self.assertEqual(event.info, MAGIC_TEXT) self.assertEqual(event.phase, 0) self.assertEqual(event.contact_id, 0) # test implicit data self.assertLess(event.start_date, datetime.utcnow()) self.assertLess(event.end_date, datetime.utcnow()) # cleanup db.session.delete(event) db.session.commit()
def get_event_info(call): event_id = call.data.split('_')[1] event = Event.get_event(event_id) message = f'<b> {event.name} </b>\n' \ f'Місце проведення: {event.place}\n' \ f'Дата: {event.date}\n' \ f'Час: {event.time}' if EventVisitor.check_visitor(event_id=event_id, student_id=call.from_user.id) is False: keyboard = InlineKeyboardMarkup() keyboard.add( InlineKeyboardButton( text= f'{emojize(":pencil2:", use_aliases=True)} Зареєструватися', callback_data=f'regon_{event.id}')) bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text=message, reply_markup=keyboard, parse_mode='html') else: keyboard = InlineKeyboardMarkup() keyboard.add( InlineKeyboardButton( text=f'{emojize(":x:", use_aliases=True)} Відмінити реєстрацію', callback_data=f'cancelregevent_{event.id}')) bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text=message, reply_markup=keyboard, parse_mode='html')
def get_events_schelude(message): event_list = Event.get_all_events() print(event_list) if event_list: keyboard = InlineKeyboardMarkup(row_width=2) keys_list = [] for event in event_list: keys_list.append( InlineKeyboardButton(text=event.name, callback_data=f'schelude_{event.id}')) keys_list.append( InlineKeyboardButton(text=event.date, callback_data=f'schelude_{event.id}')) keyboard.add(*keys_list) bot.send_message( chat_id=message.from_user.id, text= f'{emojize(":man_juggling:", use_aliases=True)} Розклад заходів ' f'{emojize(":performing_arts:", use_aliases=True)}', reply_markup=keyboard) else: bot.send_message(chat_id=message.from_user.id, text='На даний час ніяких заходів не заплановано')
def get_event_visitors(call): event_keyboard = make_keyboard(keyboard_type='event', elem_list=Event.get_all_events(), marker='eventvisitor_') bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text='Учасники якого заходу?', reply_markup=event_keyboard)
def get_event_for_del(call): event_keyboard = make_keyboard(keyboard_type='event', elem_list=Event.get_all_events(), marker='eventdelete_') bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text='Який захід видалити?', reply_markup=event_keyboard)
def add_visitors(): if len(EventVisitor.get_all_visitors()) > 0: return else: for event in Event.get_all_events(): s_id_list = random.sample(range(1, 61), random.randint(20, 40)) for s_id in s_id_list: event_visit = EventVisitor(event_id=event.id, student_id=s_id) session.add(event_visit) session.commit() print("visitors added")
def send_event_visitors_file(call): event_id = call.data.split('_')[1] event_name = Event.get_event(event_id).name file_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + '/tmp/' stud_dict, otherfac_list = prepare_event_visitors_table(event_id) make_event_visitors_table(visitors_dict=stud_dict, otherfac_list=otherfac_list, event_name=event_name, file_path=file_path) doc = open(f'{file_path}{event_name}.xlsx', 'rb') bot.edit_message_text(chat_id=call.from_user.id, message_id=call.message.message_id, text='Документ з учасниками:') bot.send_document(chat_id=call.from_user.id, data=doc)
def name_event(message): if message.text == '/cancel': bot.send_message( chat_id=message.from_user.id, text= f'Дія була скасована {emojize(":white_check_mark:", use_aliases=True)}' ) bot.clear_step_handler_by_chat_id(chat_id=message.from_user.id) return event = Event.add_event(name=message.text) message = bot.send_message(chat_id=message.from_user.id, text="Місце проведення") bot.register_next_step_handler(message, place_event, event.id)
def prepare_student_events_table(): group_dict = {} for group in Group.get_groups(): students = EventVisitor.get_visitor_students(group.id) if not students: continue else: stud_dict = {} for student in students: try: s_name = get_fio(Student.get_student_by_id(student[1].student_id).name) s_event = Event.get_event(student[1].event_id).name stud_dict.setdefault(s_name, []).append(s_event) except AttributeError: continue group_dict[group.name] = stud_dict return group_dict
def create_event(org_id): sessionObj = request.session creator_id = sessionObj.user_id roleObj = db.session.query(Role).filter( Role.user_id == creator_id, Role.organization_id == org_id).first() if roleObj is None or not roleObj: return { 'message': "You do not have any role in this organization", 'success': False } if roleObj.role != Roles.ADMIN: return { 'message': 'You need to be an ADMIN in this organization to create events', 'success': False } userObj = sessionObj.user orgObj = roleObj.organization contact = orgObj.contact input_data = request.json event_data = { "creator": userObj, "organization": orgObj, "contact": contact, "event_name": input_data['event_name'], "start_date": datetime.fromisoformat(input_data['start_date']), "end_date": datetime.fromisoformat(input_data['end_date']), "theme": input_data['theme'], "perks": input_data['perks'], "categories": input_data['categories'], "info": input_data['info'], "phase": EventPhase.INITIALIZED } # print("DEBUG....") # print(sessionObj) is_event_name_exist = Event.query.filter_by( event_name=event_data['event_name']).first() if is_event_name_exist: return jsonify( message='This name is already taken. Please choose another name.', success=False) new_event = Event(**event_data) db.session.add(new_event) chairmanObj = db.session.query(Role).filter( Role.role == Roles.CHAIRMAN, Role.organization_id == org_id).first() notification_data = { "sender": userObj, "receiver": chairmanObj.user, "info": "EVENT created" } notify_chairman = Notification(**notification_data) db.session.add(notify_chairman) db.session.commit() event_schema = EventSchema() result = {'message': event_schema.dump(new_event), 'success': True} return result
def date_event(message, event_id): Event.update_event(event_id=event_id, date=message.text) message = bot.send_message(chat_id=message.from_user.id, text="Час проведення") bot.register_next_step_handler(message, time_event, event_id)