Пример #1
0
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)}')
Пример #2
0
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)}')
Пример #3
0
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)}')
Пример #4
0
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)
Пример #5
0
    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()
Пример #6
0
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')
Пример #7
0
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='На даний час ніяких заходів не заплановано')
Пример #8
0
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)
Пример #9
0
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)
Пример #10
0
    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")
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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
Пример #14
0
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
Пример #15
0
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)