コード例 #1
0
    def updates_duration(self, value):
        self._updates_duration = value
        User.db.update_one(self.db_filter,
                           {'$set': {
                               'updates_frequency': value
                           }})

        for link in LinksDBManager.get_user_links(self.user_id):
            LinksDBManager.update_frequency(link['_id'], value)
コード例 #2
0
    def worker():
        while True:
            left_time = LinksDBManager.get_left_time_before_new_link_arrival()
            if left_time > 0:
                logger.debug("Waiting {} seconds for new links to come".format(left_time))
                time.sleep(left_time)

            for link in LinksDBManager.get_expired_links():
                logger.debug("Parsing offers for user " + str(link['id']))
                timeout = max(config.cian_min_timeout, link['frequency'] * 60)
                UpdatesManager.link_update_request_function({'uid': link['id']},
                                                            {'url': link['url'], 'time': timeout})
コード例 #3
0
    def worker():
        while True:
            left_time = LinksDBManager.get_left_time_before_new_link_arrival()
            if left_time > 0:
                logger.debug("Waiting {} seconds for new links to come".format(left_time))
                time.sleep(left_time)

            for link in LinksDBManager.get_expired_links():
                logger.debug("Parsing offers for user " + str(link['id']))
                user_info = link['id']
                UpdatesManager.link_update_request_function({'uid': user_info}, {'url': link['url'],
                                                                                 'time': max(config.cian_min_timeout,
                                                                                             link['frequency'] * 60)})
コード例 #4
0
    def __init__(self, user_id, callback, delete_user_from_dict_callback):
        # Getting info from db
        self.db_filter = {'id': user_id}
        data = User.db.find_one(self.db_filter)
        if data is None:
            logger.debug("User {} added to DB".format(str(user_id)))
            data = config.default_user.copy()
            data['id'] = user_id
            User.db.insert_one(data)
        else:
            # In case of default user config
            # updates to avoid potential errors
            missed_keys_values = {
                key: value
                for key, value in config.default_user.items()
                if key not in data.keys()
            }
            if len(missed_keys_values) > 0:
                data.update(missed_keys_values)
                User.db.update_one(self.db_filter,
                                   {"$set": missed_keys_values})

        logger.debug("User {} {} inited".format(user_id, data))

        # Filling fields
        self.user_id = user_id
        self._authorized = data['auth']
        self.messages_before_ignore_left = data['ignore_left']
        self._updates_duration = data['updates_frequency']
        self._links = list(LinksDBManager.get_user_links(user_id))
        self._max_price = data['max_price']
        self._metro_stations = set(data['metro_stations'])
        self._menu_message = data['menu_message_id']

        self.raw_callback = callback
        self.callback = User.UserCallback(self)
        self.delete_callback = delete_user_from_dict_callback
        self.state_machine = StateMachine(
            self, StateTags.MAIN if self._authorized else StateTags.NONE)
コード例 #5
0
    def __init__(self, user_id, callback, delete_user_from_dict_callback):
        # Getting info from db
        self.db_filter = {'id': user_id}
        data = User.db.find_one(self.db_filter)
        if data is None:
            logger.debug("User {} added to DB".format(str(user_id)))
            data = config.default_user.copy()
            data['id'] = user_id
            User.db.insert_one(data)
        else:
            # In case of default user config
            # updates to avoid potential errors
            missed_keys_values = {key: value for key, value in
                                  config.default_user.items()
                                  if key not in data.keys()}
            if len(missed_keys_values) > 0:
                data.update(missed_keys_values)
                User.db.update_one(self.db_filter, {"$set": missed_keys_values})

        logger.debug("User {} {} inited".format(user_id, data))

        # Filling fields
        self.user_id = user_id
        self._authorized = data['auth']
        self.messages_before_ignore_left = data['ignore_left']
        self._updates_duration = data['updates_frequency']
        self._links = list(LinksDBManager.get_user_links(user_id))
        self._max_price = data['max_price']
        self._metro_stations = set(data['metro_stations'])
        self._menu_message = data['menu_message_id']

        self.raw_callback = callback
        self.callback = User.UserCallback(self)
        self.delete_callback = delete_user_from_dict_callback
        self.state_machine = StateMachine(self,
                                          StateTags.MAIN if
                                          self._authorized
                                          else StateTags.NONE)
コード例 #6
0
 def delete_user(self):
     logger.debug("Deleting user {}".format(self.user_id))
     LinksDBManager.remove_all_links(self.user_id)
     User.db.remove(self.db_filter)
     self.delete_callback()
コード例 #7
0
 def remove_links(self):
     logger.debug("User {} removing all links".format(self.user_id))
     self._links = []
     LinksDBManager.remove_all_links(self.user_id)
コード例 #8
0
 def add_link(self, link, tag):
     logger.debug("Adding link of user " + str(self.user_id) +
                  " to database\n" + link + " with tag " + tag)
     self._links.append(
         LinksDBManager.add_user_link(self.user_id, link, tag,
                                      self.updates_duration, 'CIAN'))
コード例 #9
0
 def delete_user(self):
     logger.debug("Deleting user {}".format(self.user_id))
     LinksDBManager.remove_all_links(self.user_id)
     User.db.remove(self.db_filter)
     self.delete_callback()
コード例 #10
0
 def remove_links(self):
     logger.debug("User {} removing all links".format(self.user_id))
     self._links = []
     LinksDBManager.remove_all_links(self.user_id)
コード例 #11
0
 def add_link(self, link, tag):
     logger.debug("Adding link of user " + str(self.user_id) +
                  " to database\n" + link +
                  " with tag " + tag)
     self._links.append(LinksDBManager.add_user_link(self.user_id, link, tag,
                                                     self.updates_duration, 'CIAN'))
コード例 #12
0
    def updates_duration(self, value):
        self._updates_duration = value
        User.db.update_one(self.db_filter, {'$set': {'updates_frequency': value}})

        for link in LinksDBManager.get_user_links(self.user_id):
            LinksDBManager.update_frequency(link['_id'], value)