def test_gather_ignores_links(client, root_doc, simple_user): user_profile_url = simple_user.get_absolute_url() content = """ <ul> <li><a href="/en-US/docs/Absolute/Link">Absolute Link</a></li> <li><a href="Relative/Link">Relative Link</a></li> <li><a href="#later">Later in this page.</a></li> <li><a href="%s">Profile Link</a></li> </ul> """ % user_profile_url new_rev = Revision(document=root_doc, creator=root_doc.current_revision.creator, content=content, created=datetime(2017, 6, 5)) new_rev.save() base_path = root_doc.get_absolute_url() html = client.get(base_path, HTTP_HOST=settings.WIKI_HOST).content source = LinksSource(base_path) requester = mock_requester(content=html) storage = mock_storage() resources = source.gather(requester, storage) assert source.state == source.STATE_DONE assert source.freshness == source.FRESH_YES expected = ('document', '/en-US/docs/Absolute/Link', {}) assert expected in resources for doc, path, options in resources: assert "Relative/Link" not in path assert "#later" not in path assert user_profile_url not in path
def revision(save=False, **kwargs): """Return an empty revision with enough stuff filled out that it can be saved. Revision's is_approved=False unless you specify otherwise. Requires a users fixture if no creator is provided. """ doc = None if 'document' not in kwargs: doc = document(save=True) else: doc = kwargs['document'] defaults = { 'summary': 'Some summary', 'content': 'Some content', 'comment': 'Some comment', 'creator': kwargs.get('creator', get_user()), 'document': doc, 'tags': '"some", "tags"', 'toc_depth': 1, } defaults.update(kwargs) rev = Revision(**defaults) if save: rev.save() return rev
def handle(self, *args, **options): # get first user to be the creator u = User.objects.all()[0] loaded_docs = [] skipped_docs = [] for slug in KS_AUTOLOAD_MODULES: template_response = requests.get(RAW_TEMPLATE_URL % slug) doc = Document(title=slug, slug=slug, category=Document.CATEGORIES[0][0]) try: doc.save() loaded_docs.append(slug) except SlugCollision: # skip modules already in the db skipped_docs.append(slug) continue rev = Revision(document=doc, content=template_response.content, creator=u) rev.save() print "Loaded docs:" for slug in loaded_docs: print "%s" % slug print "\nSkipped docs that were already loaded:" for slug in skipped_docs: print "%s" % slug