Ejemplo n.º 1
0
    def specify_adress(self, update, context):
        chat_id = update.message.chat_id
        msg = update.message.text
        if msg:
            normal_msg = normalize_adrs(msg)
            addresses = search_address(normal_msg)

        # try to find by geolocation
        loc = update.message.location
        if loc:
            # We catch Filter.location
            msg = find_address(longitude=loc.longitude, latitude=loc.latitude)
            if not normalize_from_geocoder(msg):
                self.view.not_found(chat_id, 'ваши координаты')
                return self.states_dict['WAIT_INPUT']
            normal_msg = normalize_from_geocoder(msg)
            addresses = search_address(normal_msg)

        if not addresses:
            self.view.not_found(chat_id, msg)
            return self.states_dict['WAIT_INPUT']

        # TODO: Add interaction for alone get address
        # if len(addresses) == 1:
        #     return self.process_options(addresses[0])

        if len(addresses) > 20:
            self.view.too_many_found(chat_id, msg, len(addresses))
            return self.states_dict['WAIT_INPUT']

        if len(addresses) <= 20:
            self.view.choose_address(chat_id, addresses)
            self.address_options = [adr.name for adr in addresses]
            return self.states_dict['CHOOSE_OPTIONS']
Ejemplo n.º 2
0
    def specify_adress(self, update, context):
        if hasattr(update, 'callback_query'):
            chat_id = update.message.chat_id
            msg = update.message.text
        else:
            chat_id = update.callback_query.chat_instance
            msg = update.message.text
        normal_msg = normalize_adrs(msg)
        addresses = search_address(normal_msg)

        if not addresses:
            self.view.not_found(chat_id, msg)
            return self.states_dict['REPEAT']

        # TODO: Addd interaction for alone get address
        # if len(addresses) == 1:
        #     return self.process_options(addresses[0])

        if len(addresses) > 20:
            self.view.too_many_found(chat_id, msg, len(addresses))
            return self.states_dict['REPEAT']

        if len(addresses) <= 20:
            self.view.choose_address(chat_id, addresses)
            self.address_options = [adr.name for adr in addresses]
            return self.states_dict['CHOOSE_OPTIONS']
Ejemplo n.º 3
0
    def specify_adress(self, update, context):
        if hasattr(update, 'callback_query'):
            chat_id = update.message.chat_id
            msg = update.message.text
        else:
            chat_id = update.callback_query.chat_instance
            msg = update.message.text

        logger.debug('----111---')
        loc = update.message.location
        if loc:
            # We catch Filter.location
            logger.debug('----exist---')
            msg = find_address(longitude=loc.longitude, latitude=loc.latitude)

        normal_msg = normalize_adrs(msg)
        addresses = search_address(normal_msg)

        if not addresses:
            self.view.not_found(chat_id, msg)
            return self.states_dict['REPEAT']

        # TODO: Addd interaction for alone get address
        # if len(addresses) == 1:
        #     return self.process_options(addresses[0])

        if len(addresses) > 20:
            self.view.too_many_found(chat_id, msg, len(addresses))
            return self.states_dict['REPEAT']

        if len(addresses) <= 20:
            self.view.choose_address(chat_id, addresses)
            self.address_options = [adr.name for adr in addresses]
            return self.states_dict['CHOOSE_OPTIONS']
Ejemplo n.º 4
0
    def process_options(self, update, context):

        chat_id = update.effective_chat.id
        adress_name = update.callback_query.data
        if adress_name not in self.address_options:
            return self.specify_adress(update, context)

        adr = search_address(adress_name)
        if not adr:
            self.view.not_found(chat_id, adress_name)
            return self.states_dict["REPEAT"]

        events = get_events(adr[0].id)

        self.view.reply_success(chat_id, {'adr': adr[0], 'events': events})

        return self.states_dict["WAIT_INPUT"]