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')
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)
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
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
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
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)
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')
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')
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')
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')
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]
def get_event_by_id(self, event_id: int) -> int: return Event.get(Event.id == event_id)