示例#1
0
 def ack_event(self, event_name: str):
     '''
     Change the status of an event, from 'created' to 'in progress'
     '''
     rst = Event.get(Event.name == event_name).update(
         status='in progress').execute()
     log.info('Event ' + event_name + ' has now status IN PROGRESS')
示例#2
0
 def create_event(self, event: Event):
     event = self.service.events().insert(
         calendarId='primary',
         body=event.format_google_calendar()).execute()
     # extract unique event id from the link
     eid = event.get('htmlLink').split('eid=')[1]
     return settings.google_share_link_format.format(eid)
示例#3
0
 def get_seats_left(self, event_id: int) -> int:
     '''
     Return the number of seats left (not sold nor booked) of an
     event
     '''
     event = Event.get(Event.id == event_id)
     return self.get_total_seats_for_event(
         event.projection_room) - event.sold_seats - event.booked_seats
示例#4
0
    def get_events_status(self, event_name: str) -> str:
        '''
        Return the status of an event
        '''
        event = Event.get(Event.name == event_name)
        if event == None: return False

        return event.status
示例#5
0
    def has_permission_to_delete(self, event_name: str) -> bool:
        '''
        Check if a user has the permission the delete the event given
        in argument
        '''
        event = Event.get(Event.name == event_name)
        if event == None: return False

        return self.current_user == event.manager
示例#6
0
    def has_permission_to_edit(self, event_name: str) -> bool:
        '''
        Check if a user can edit the event given in argument; It can
        be a member, or the manager of the event
        '''
        event = Event.get(Event.name == event_name)
        if event == None: return False

        return (Team.select().where((Team.member == self.current_user)
                                    & (Team.event == event)).count() == 1
                or self.current_user == event.manager)
示例#7
0
    def go_to_ticket_page(self, event_name: str):
        '''
        Redirect user to the ticketing page (sell and book tickets)
        '''
        event = Event.get(Event.name == event_name)

        self.frames['TicketingPage'].set_event(event)
        self.frames['TicketingPage'].set_projection_room(event.projection_room)
        self.frames['TicketingPage'].set_inputs()

        self.show_frame('TicketingPage')
示例#8
0
 def edit_event(self, name: str):
     '''
     Redirect the user to the edit page, where
     the user can edit the event at will
     '''
     event_to_edit = Event.get(Event.name == name)
     self.frames['EditEventPage'].set_edit_mode()
     self.frames['EditEventPage'].set_event(event_to_edit)
     self.frames['EditEventPage'].set_projection_room(
         ProjectionRoom.get(event_to_edit.projection_room))
     self.frames['EditEventPage'].set_inputs()
     self.show_frame('EditEventPage')
示例#9
0
def group_start(update: Update, context: CallbackContext) -> State:
    if update.effective_chat.type == 'group':
        # create poll based on received event ID
        words = update.effective_message.text.split(' ')

        if len(words) <= 1:
            update.message.reply_text('Please specify the event ID')
        else:
            event_uuid = words[1]
            event = Event.get(uuid=event_uuid)

            if event == None:
                update.message.reply_text(
                    f"Event with ID {event_uuid} does not exist\nPlease try again"
                )
                return None

            context.chat_data['event_id'] = event.id

            poll = Poll.get(event=event.id)
            event_dates = poll.options

            if len(event_dates) == 1:
                update.message.reply_text(
                    f'Hi everybody ! You have been invited to the event {event.name} which will take place on the {event.date}.\n The location is : {event.location}. \n\n Have a nice event !!!'
                )
            else:
                message: Message = context.bot.send_poll(
                    update.effective_chat.id,
                    f"Hi everybody ! You have been invited to the event {event.name} which will take place at : {event.location}.\n\nPlease answer the following poll with your availability so that the date can be chosen.",
                    event_dates,
                    is_anonymous=False,
                    allows_multiple_answers=True,
                )

                update.effective_user.send_message(
                    "Here is the poll for your event")
                message.forward(update.effective_user.id)

                options = [event_dates]
                update.effective_user.send_message(
                    "Have you made your choice for the date ?",
                    reply_markup=ReplyKeyboardMarkup(options,
                                                     one_time_keyboard=True))

            return State.VOTING
    else:
        update.message.reply_text('This command can only be issued in a group')
示例#10
0
    def go_to_show_event_page(self, event_name: str):
        '''
        Redirect to the page showing all details about an event
        '''
        event = Event.get(Event.name == event_name)

        self.frames['ShowEventPage'].set_event(event)
        self.frames['ShowEventPage'].set_projection_room(event.projection_room)
        self.frames['ShowEventPage'].set_categories(event.events_categories)
        self.frames['ShowEventPage'].set_manager(event.manager)
        self.frames['ShowEventPage'].set_members(
            self.get_events_members(event))
        self.frames['ShowEventPage'].set_members(event.teams)
        self.frames['ShowEventPage'].display_events_information()

        self.show_frame('ShowEventPage')
示例#11
0
 def get_events_for_member(self, user: User) -> list:
     '''
     Return the events a user is affiliated with
     '''
     teams = Team.select().where(Team.member == user)
     return [Event.get(Event.id == team.event) for team in teams]
示例#12
0
 def get_event_by_id(self, event_id: int) -> int:
     return Event.get(Event.id == event_id)