def test_get_article_properties(client): article = WikiArticle.from_pk(1) assert len(article.languages) == 3 assert all(l.language in {'en', 'es', 'fr'} for l in article.languages) assert len(article.aliases) == 4 assert all(a in {'wiki1', 'wikiuno', 'wikione', 'diddles1'} for a in article.aliases) assert article.latest_revision.revision_id == 2
def test_new_wiki_article(client): article = WikiArticle.new(title='new article', contents='new article contents', user_id=1) assert article.id == 5 assert article.aliases == ['newarticle'] assert article.latest_revision.title == 'new article' assert article.latest_revision.contents == 'new article contents'
def create_wiki_article( title: str, contents: str, language: str = None, article_id: int = None ): if language and WikiArticle.is_valid(article_id): language_id = WikiLanguage.from_language(language, error=True) wiki = WikiTranslation.new( article_id=article_id, title=title, language_id=language_id, contents=contents, user_id=flask.g.user.id, ) else: wiki = WikiArticle.new( title=title, contents=contents, user_id=flask.g.user.id ) return flask.jsonify(wiki)
def set_as_wiki(self, request, queryset): try: # Todo: utiliser un formulaire avec les données post pour récupérer la catégorie voulue wiki = Wiki.objects.all()[0] except: wiki = None for link in queryset: content = "<p>%s</p>" % link.description if link.link: content = '<p>Voir la <a href="%s">référence</p>%s' % (link.link, content) article = WikiArticle(title=link.title, content=content, user=link.user) article.save() if wiki: article.wikis.add(wiki) for comment in link.comments.all(): article.comments.add(comment) article.save() queryset.delete()
def test_wiki_new_revision(client): article = WikiArticle.from_pk(1) assert article.latest_revision.revision_id == 2 assert len(article.aliases) == 4 assert article.latest_revision.editor.id == 1 assert article.latest_revision.editor_id == 1 article.edit(title='new article 1', contents='bump', editor_id=4) assert article.title == 'new article 1' assert article.contents == 'bump' assert article.latest_revision.revision_id == 3 assert article.latest_revision.editor_id == 4 assert article.latest_revision.editor.id == 4 assert len(article.aliases) == 5
def edit_wiki_article(id: int, title: str, language: str, contents: str): wiki = WikiArticle.from_pk(id, _404=True) if not wiki: raise APIException(f'WikiArticle {id} does not exist.') language_id = WikiLanguage.from_language(language, error=True) wiki = WikiRevision.new( article_id=id, title=title, language_id=language_id, editor_id=flask.g.user.id, contents=contents, ) return wiki
def view_wiki_article(id: int, language: str): if language: return flask.jsonify( WikiTranslation.from_attrs( article_id=id, language_id=WikiLanguage.from_language(language).id, ) ) return flask.jsonify( WikiArticle.from_pk( pk=id, _404=True, include_dead=flask.g.user.has_permission( WikiPermissions.VIEW_DELETED ), ) )
def test_new_wiki_article_clashing_name(client): with pytest.raises(APIException) as e: WikiArticle.new(title='Wiki 1', contents='new article contents', user_id=1) assert e.value.message == 'The wiki alias wiki1 has already been taken.'
def test_get_all_articles_include_dead(client): articles = WikiArticle.get_all(include_dead=True) assert len(articles) == 4
def test_last_revision_other(client): article = WikiArticle.from_pk(2) assert article.latest_revision.revision_id == 1
def test_get_all_articles(client): articles = WikiArticle.get_all() assert len(articles) == 3 assert 4 not in {a.id for a in articles}
def test_serialize(authed_client): article = WikiArticle.from_pk(1) data = NewJSONEncoder().default(article) check_dictionary(data, {'id': 1, 'title': 'Wiki1'})