def update(self): """This method should be called to update associated Posts It will call content-specific methods: _get_data() to obtain list of entries _store_post() to store obtained entry object _get_data_source_url() to get an URL to identify Posts from this Data Source """ #get the raw data # self.posts.all().delete() # TODO: handle in update_posts if source changes without deleting every time data = self._get_data() #iterate through them and for each item msg = [] for entry in data: link = self._get_entry_link(entry) stored_entry, is_new = Post.objects.get_or_create(link=link) self._store_post(stored_entry, entry) if is_new is True: #self._set_dates(stored_entry) # self._store_post(stored_entry, entry) msg.append('Post "%s" added.' % stored_entry.link) else: msg.append('Post "%s" already saved.' % stored_entry.link) self.updated = utils.get_datetime_now() self.save(no_signals=True) return '<br />'.join(msg)
def up_to_date(self): """ Returns True if plugin posts are up to date Determined by self.updated and conf.GOSCALE_POSTS_UPDATE_FREQUENCY """ # return False if not self.updated: return False return (utils.get_datetime_now() - self.updated).seconds < conf.GOSCALE_POSTS_UPDATE_FREQUENCY