Esempio n. 1
0
 def test_anon_faces_wall(self):
     a1 = Article(headline='test1')
     a1.save()
     s = requests.Session()
     response = s.get(self.live_server_url + a1.get_absolute_url())
     self.assertNotIn("Nos gustaría que te suscribieras", response.text)
     a2 = Article(headline='test2')
     a2.save()
     response = s.get(self.live_server_url + a2.get_absolute_url())
     self.assertNotIn("Nos gustaría que te suscribieras", response.text)
     a3 = Article(headline='test3')
     a3.save()
     response = s.get(self.live_server_url + a3.get_absolute_url())
     self.assertIn("Nos gustaría que te suscribieras", response.text)
Esempio n. 2
0
    def get_articles(self, categoryitem, lang, site):

        cats = self.get_items_as_tree(categoryitem, 0)
        manager = BaseManager()
        manager.fetchOptions = {
            'site': site.id,
            'active': 1,
            'activesite': site.id
        }
        manager.model = Article()
        manager.modelLanguage = ArticleLanguage()
        manager.order = 'date'
        manager.debugger.filename = 'megamenu.py'
        manager.rangeItemsStart = 1
        manager.rangeItemsEnd = 5
        manager.moduleName = '__adm_Articles__'

        items = []
        if 1:
            #for cat in cats:
            #manager.fetchOptions.update({ 'category__id': cat.id })
            manager.fetchOptions.update({'category': cats})
            manager.fetch_items(default_filter=False)

            if manager.items:
                for item in manager.items:
                    item.get_language(lang.id)
                    items.append(item)

        manager.items = items

        return manager.items[:5]
Esempio n. 3
0
 def choices(self, system):
     s = ((datetime.date.today() + datetime.timedelta(days=1)) -
          datetime.timedelta(6 * 365 / 12))
     manager = BaseManager()
     manager.model = Article()
     manager.modelLanguage = ArticleLanguage()
     manager.order = '-date'
     manager.fetchOptions = {
         'date_gte': s.isoformat(),
         'site': system.portal.activeSite.id,
         'active': system.requester.rData['selectedactivity'],
         'activesite': system.requester.rData['activesite']
     }
     manager.rangeItemsStart = None
     manager.rangeItemsEnd = None
     manager.fetch_items()
     items = manager.items
     #items = Article.objects.optfilter(manager.fetchOptions)
     #print '--->',items
     choices = []
     if items is not None:
         manager.set_language(system.language.currentLanguage)
         for il in items:
             choices.append((il.id, il.language))
     self.fields['article'].choices = choices
Esempio n. 4
0
 def test_reading_entry_str(self):
     username = '******'
     link = 'https://www.superlink.com/article.html'
     article = Article(link=link)
     user = User(username=username)
     entry = ReadingEntry(user=user, article=article)
     self.assertEqual("{} - {}".format(username, link[:50]), str(entry))
Esempio n. 5
0
    def handle(self, *args, **options):
        Article.objects.all().delete()
        Chapter.objects.all().delete()

        for file in glob.glob("programme/chapitre*/index.md"):
            title = open(file).read().split('\n')[0][1:].strip()
            Chapter(
                number=file.split('chapitre-')[1].split('/')[0],
                slug=slugify(title),
                title=title,
                content='\n'.join(open(file).read().split('\n')[1:]),
            ).save()


        for file in glob.glob("programme/chapitre*/*.md"):
            if 'index.md' in file:
                continue
            chapter_number = file.split('chapitre-')[1].split('/')[0]
            chapter = Chapter.objects.get(number=chapter_number)
            title = open(file).read().split('\n')[0][1:].strip()
            Article(
                number=int(file.split('/')[-1].replace('.md', '')),
                slug=slugify(title),
                title=title,
                content='\n'.join(open(file).read().split('\n')[1:]),
                chapter=chapter,
            ).save()
    def test_user_not_authenticated(self):
        Article(title='title', body='body').put()
        url = reverse('article_admin_delete', kwargs={'id': 1})

        resp = self.client.get(url)

        self.assertEqual(resp.status_code, 302)
        self.assertEqual(Article.all().count(), 1)
    def test_article_exist(self):
        key = Article(title='title', body='body').put()
        self.users_login('admin@localhost', is_admin=True)
        url = reverse('article_admin_delete', kwargs={'id': key.id()})

        resp = self.client.get(url)

        self.assertRedirects(resp, reverse('index'))
        self.assertEqual(Article.all().count(), 0)
    def test_article_does_not_exist(self):
        Article(key_name='randomkey', title='title', body='body').put()
        self.users_login('admin@localhost', is_admin=True)
        url = reverse('article_admin_delete', kwargs={'id': 1})

        resp = self.client.get(url)

        self.assertEqual(resp.status_code, 404)
        self.assertEqual(Article.all().count(), 1)
    def test_user_not_admin(self):
        Article(title='title', body='body').put()
        self.users_login('user@localhost', is_admin=False)
        url = reverse('article_admin_delete', kwargs={'id': 1})

        resp = self.client.get(url)

        self.assertEqual(resp.status_code, 302)
        self.assertEqual(Article.all().count(), 1)
Esempio n. 10
0
def add(request):
    if request.method == "GET":
        # ...
        return render(request, "add.html")
    elif request.method == "POST":
        form = request.POST
        article = Article(title=form["title"],
                          text=form["text"],
                          author=request.user)
        article.save()
        return redirect(homepage)
Esempio n. 11
0
    def test_fetch(self, mock_requests):
        article = Article(link='http://test')
        mock_requests.get.return_value.status_code = 200
        mock_requests.get.return_value.content = '<html>\
        <head><title>Test</title></head>\
        <body><h1>Test</h1>\
        <p>content</p>\
        </html>'

        retrieve_article_content(article)
        mock_requests.get.assert_called_with(article.link)
        self.assertEqual(article.status, cst.READY_STATUS)
Esempio n. 12
0
    def test_subscriber_passes_wall(self):
        user = User.objects.create_user('user2', '*****@*****.**', 'ldu2')
        user.user_permissions.add(
            Permission.objects.get(codename='es_suscriptor_default'))
        s = self.login(user.username, 'ldu2')
        a1 = Article(headline='test1')
        a1.save()
        response = s.get(self.live_server_url + a1.get_absolute_url())
        self.assertIn(user.username, response.text)
        self.assertNotIn("Nos gustaría que te suscribieras", response.text)

        a2 = Article(headline='test2')
        a2.save()
        response = s.get(self.live_server_url + a2.get_absolute_url())
        self.assertIn(user.username, response.text)
        self.assertNotIn("Nos gustaría que te suscribieras", response)

        a3 = Article(headline='test3')
        a3.save()
        response = s.get(self.live_server_url + a3.get_absolute_url())
        self.assertIn(user.username, response.text)
        self.assertNotIn("Nos gustaría que te suscribieras", response.text)
def load_to_db_from_csv(file):
    sites_names = (REDDIT, ML_MASTERY, ML_WEEKLY, MIT_NEWS)
    sites = [Site.objects.get(name=site) for site in sites_names]
    sites_dict = dict(zip(sites_names, sites))

    with open(file, 'r') as f:
        reader = csv.reader(f)
        articles = [
            Article(title=row[0],
                    link=row[1],
                    timestamp=row[2],
                    site=sites_dict[row[3]]) for row in reader
        ]
        Article.objects.bulk_create(articles)
Esempio n. 14
0
    def test_non_subscriber_faces_wall(self):
        user = User.objects.create_user('user1', '*****@*****.**', 'ldu1')
        s = self.login(user.username, 'ldu1')
        a1 = Article(headline='test1')
        a1.save()
        response = s.get(self.live_server_url + a1.get_absolute_url())
        self.assertEqual(response.status_code, 200)
        self.assertIn(user.username, response.text)
        self.assertNotIn("Nos gustaría que te suscribieras", response.text)

        a2 = Article(headline='test2')
        a2.save()
        response = s.get(self.live_server_url + a2.get_absolute_url())
        self.assertEqual(response.status_code, 200)
        self.assertIn(user.username, response.text)
        self.assertNotIn("Nos gustaría que te suscribieras", response.text)

        a3 = Article(headline='test3')
        a3.save()
        r = s.get(self.live_server_url + a3.get_absolute_url())
        self.assertEqual(r.status_code, 200)
        self.assertIn(user.username, r.text)
        self.assertIn("Nos gustaría que te suscribieras", r.text)
Esempio n. 15
0
 def __init__(self, request, *args, **kwargs):
     super(SystemObject, self).__init__(request, *args, **kwargs)
     self.manager = Manager()
     self.manager.fetchOptions = { 'site': self.portal.reqsite, 'active': 1, 'activesite': self.portal.reqsite }
     self.urls.show_items = 'core.view.articleadmin.show_items'
     self.manager.model = Article()
     self.manager.modelLanguage = ArticleLanguage()
     self.manager.order = '-date'
     self.manager.debugger.filename = 'articleadmin.py'
     self.manager.moduleName = '__adm_Articles__'
     self.category = Manager()
     self.category.model = Category()
     self.category.order = 'parent'
     self.category.fetchOptions = { 'site': self.portal.reqsite, 'active': 1, 'activesite': self.portal.reqsite }
     self.category.modelLanguage = CategoryLanguage()
Esempio n. 16
0
 def __init__(self, request, *args, **kwargs):
     super(SystemObject, self).__init__(request, *args, **kwargs)
     self.manager = AdminManager()
     self.manager.fetchOptions = { 'site': int(self.portal.activeSite.id), 'active': self.requester.rData['selectedactivity'], 'activesite': self.requester.rData['activesite'] }
     self.urls.add = 'core.view.articleadmin.add_item'
     self.urls.edit = 'core.view.articleadmin.edit_item'
     self.urls.show_items = 'core.view.articleadmin.show_items'
     self.manager.model = Article()
     self.manager.modelLanguage = ArticleLanguage()
     self.manager.form_class = AdmItemForm().__class__
     self.manager.language_form_class = AdmItemLanguageForm().__class__
     self.manager.order = '-date'
     self.manager.debugger.filename = 'articleadmin.py'
     self.manager.moduleName = '__adm_Articles__'
     self.data.update({ 'filter_activity': reverse('core.view.articleadmin.show_items') })
     self.data.update({ 'savebutton': 1, 'saveaddbutton': 1, 'copybutton': 1, 'addbutton': 1 })
     self.category = AdminManager()
     self.category.model = Category()
     self.category.order = 'parent'
     self.category.fetchOptions = { 'site': self.portal.activeSite.id, 'active': self.requester.rData['selectedactivity'], 'activesite': self.requester.rData['activesite'] }
     self.category.modelLanguage = CategoryLanguage()
Esempio n. 17
0
 def test_get_by_id_or_404_article_found(self):
     key = Article(title='title', body='body').put()
     result = Article.get_by_id_or_404(key.id())
     self.assertEqual(key, result.key())
 def setUp(self):
     create_blog()
     self.key = Article(title='title123', body='body123').put()
     self.url = reverse('article_admin_update',
                        kwargs={'id': self.key.id()})
Esempio n. 19
0
    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(ParseView, self).get_context_data(**kwargs)
        epub_file = context['files'].f
        file = EpubFile.objects.get(f=epub_file)
        epub_section = file.section

        try:
            book = epub.read_epub(epub_file)
            for item in book.get_items():
                # - 9 es el codigo de tipo de archivo xhtml
                if (item.get_type() is 9):
                    content = item.get_body_content()

                    print content

                    #reemplazo los estilos con classes css del xhtml del epub
                    content = replace_style(
                        content, '<span class="char-style-override-1">',
                        '</span>', '<span>', '</span> ')

                    content = replace_style(
                        content, '<span class="char-style-override-3">',
                        '</span>', '_', '_')

                    content = replace_style(
                        content,
                        '<span class="Muy-destacado char-style-override-3">',
                        '</span>', '', '')

                    content = replace_style(
                        content,
                        '<span class="Muy-destacado char-style-override-4">',
                        '</span>', '', '')

                    content = replace_style(content, '<p class="Subt-tulo">',
                                            '</p>', '<p class="Normal">\nS>',
                                            '</p>')

                    content = replace_style(
                        content, '<p class="Primer para-style-override-1">',
                        '</p>', '<p class="Primer">', '</p>')

                    content = replace_style(content, '<span>', '</span>', ' ',
                                            ' ')

                    soup = BeautifulSoup(content, 'html.parser')

                    #cada subcuadro contiene un articulo
                    subcuadro_nota = soup('div', {'class': 'Subcuadro-nota'})

                    for e in subcuadro_nota:

                        tag = etree.fromstring(str(e))
                        titulo = ''.join(
                            tag.xpath(
                                '//p[starts-with(@class, "T-tulo")]/text()'))
                        bajada = ''.join(
                            tag.xpath('//p[@class="Bajada"]/text()'))
                        copete = ''.join(
                            tag.xpath(
                                '//p[starts-with(@class, "Copete")]/text()'))
                        parrafos = '\n\n'.join(
                            tag.xpath(
                                '(//p[@class="Primer"]|//p[@class="Normal"]|//p[@class="Normal"]/span '
                                '|//p[@class="Subt-tulo"]|//p[@class="Autor"])/text()'
                            ))

                        if titulo:
                            try:
                                article = Article(
                                    headline=titulo,
                                    deck=bajada,
                                    lead=copete,
                                    #home_lead=copete,
                                    body=parrafos,
                                )
                                article.save()
                                ar = Article.objects.get(id=article.id)
                                ar.sections.add(epub_section.id)
                                ar.save()

                                success_msg = 'Articulo generado correctamente: %s' % article.headline
                                messages.success(self.request,
                                                 success_msg,
                                                 fail_silently=True)

                            except:
                                traceback.print_exc()
                                messages.error(
                                    self.request,
                                    'Hubo un error al procesar el archivo')
        except:
            traceback.print_exc()
            messages.error(self.request,
                           'Hubo un error al procesar el archivo')

        files = EpubFile.objects.order_by('-id')
        section = Section.objects.all()
        context['files'] = files
        context['section'] = section
        return context
 def test_articles_body_in_page(self):
     Article(title='title_article_one', body='body_one').put()
     Article(title='title_article_two', body='body_two').put()
     resp = self.client.get(self.url)
     self.assertContains(resp, 'body_one')
     self.assertContains(resp, 'body_two')
Esempio n. 21
0
 def save_todb(self):
     db_objs = []
     for x in self.results:
         obj = Article(source_file=self.source, **x)
         db_objs.append(obj)
     Article.objects.bulk_create(db_objs)
Esempio n. 22
0
from core.models import Article

objs = []
for i in range(10):
    obj = Article(title=f'{i} article')
    objs.append(obj)

Article.objects.bulk_create(objs)
Esempio n. 23
0
 def test_get_by_id_or_404_no_article(self):
     key = Article(title='title', body='body').put()
     free_key = key.id() + 1
     with self.assertRaises(Http404):
         Article.get_by_id_or_404(free_key)
Esempio n. 24
0
def save_article(data):
    """Create or update an article content type"""

    """Basic workflow:
    node create --> article create --> node assoicate to article --> node hash
    """
    # Test content type exists first
    content_type_content = ContentType.query.filter_by(
        name="Article Content Type"
    ).first()
    if not content_type_content:
        logging.error("Content Type 'Article' not found' crash and burn")
        exit(1)
    else:
        # Kind of redundant to load this again, but it sticks to the content model
        content_type = load_content(load_node(content_type_content._node_id))

    if data["hidden_node_id"] and data["hidden_node_version"]:  # Assume update

        existing_content = load_content(load_node(data["hidden_node_id"]))
        # @TODO Check hashes here just cause we can
        # @TODO Check locks here, if locked restore form and return user

        content_revision = save_revision(existing_content["content"], ArticleRevision)

        new_version_number = existing_content["content"]._version + 1
        existing_content["content"]._version = new_version_number
        existing_content["content"]._node_id = existing_content["node"]._id
        existing_content["content"]._lock = ""
        existing_content["content"].title = clean_html(data["title"])
        existing_content["content"].body = clean_html(data["body"])
        existing_content["content"]._hash = _hash_table(existing_content["content"])
        existing_content["content"]._hash_chain = _hash_table(
            existing_content["content"], chain=True
        )
        existing_content["content"]._hash = _hash_table(
            existing_content["content"]
        )  # Hash after updating object values
        existing_content["content"]._hash_chain = _hash_table(
            existing_content["content"], chain=True
        )
        db.session.add(existing_content["content"])
        db.session.commit()
        db.session.refresh(existing_content["content"])

        return existing_content

    else:  # Assume new article
        node = _register_node()

        article = Article(
            _version=1,
            _node_id=node._id,
            _lock="",
            title=data["title"],
            body=data["body"],
        )
        # First save get's our article ID to include in the hash
        db.session.add(article)
        db.session.commit()
        db.session.refresh(article)
        article._hash = _hash_table(article)  # Hash after getting id
        article._hash_chain = _hash_table(article, chain=True)
        db.session.add(article)
        db.session.commit()
        db.session.refresh(article)

        content_obj = _associate_node(node, article, content_type)

        return content_obj
Esempio n. 25
0
 def setUp(self):
     self.owner = User(username='******', email='owner@local')
     self.other = User(username='******', email='other@local')
     article = Article(link='http://nowhere.local')
     self.entry = ReadingEntry(user=self.owner, article=article)
     self.factory = RequestFactory()
Esempio n. 26
0
def arts(request):
    system = SystemObject(request)
    data = dict()
    fw = []
    #items = DentoData.objects.using('dento').all().order_by('-added')
    #gallery = Gallery.objects.get(id=2)

    site = SitePortal.objects.get(id=1)  # lekarze
    items = Category.objects.optfilter({'site': site.id})

    for cat in items:
        if cat.dentoid is not None:
            arts = DentoData.objects.using('dento').filter(
                linkID=cat.dentoid).order_by('-added')

            for item in arts:
                text = ''
                art = Article()
                art.save()
                system.language.set_non_existent_language_items(
                    art, ArticleLanguage)
                art.get_language(system.language.currentLanguage.id)

                if item.intro is not None:
                    item.intro = item.intro.replace('\n', u'</p><p>')
                    item.intro = change_image(item.ID, item.intro, art)
                    text = text + '<p>' + item.intro + '</p>'

                if item.body is not None:
                    item.body = item.body.replace('\n', u'</p><p>')
                    item.body = change_image(item.ID, item.body, art)
                    text = text + '<p>' + item.body + '</p>'

                if item.title is not None:
                    item.title = item.title.replace('\n\n', u'')
                    item.title = change_image(item.ID,
                                              item.title,
                                              art,
                                              only_main=True,
                                              show=True)
                    art.language.title = item.title

                fw.append(art.dentomainimage)
                art.language.text = text
                art.visits = item.displayCount
                if item.added:
                    art.date = item.added

                art.category = cat
                art.save()
                art.language.save()
                art.sites.add(site.site)
                if item.active:
                    art.active.add(site.site)
                time.sleep(0.2)

    data.update({'data': fw})
    t = loader.get_template('imp/impart.html')
    c = RequestContext(request, data)

    return HttpResponse(t.render(c))
Esempio n. 27
0
 def test_fetch_error(self, mock_requests):
     article = Article(link='http://test.test/test.html')
     mock_requests.get.side_effect = Exception()
     retrieve_article_content(article)
     mock_requests.get.assert_called_with(article.link)
     self.assertEqual(article.status, cst.ERROR_STATUS)
Esempio n. 28
0
 def test_put_article(self):
     entity = Article(key_name='test1', title='test_title1')
     entity.put()
     entity_for_assert = Article.get_by_key_name('test1')
     self.assertEquals(entity_for_assert.title, 'test_title1')
Esempio n. 29
0
 def test_article_str(self):
     link = 'http://somenews.fr/article.html'
     article = Article(link=link)
     self.assertEqual(str(article), link)