Esempio n. 1
0
def main():
    import connection

    labels = Label.objects(name='_testing')
    if labels.count():
        label = labels.first()
    else:
        label = labels.upsert_one(name='_testing')

    post1 = Page(title="Foo",
                 content="<div>Foo bar</div>",
                 url='https://foo.bar.com',
                 label=label)
    print(repr(post1))
    post1.save()
    print()

    post2 = Page(title="Bar",
                 content="<div>Fizz</div>",
                 url='https://fub.buzz.com',
                 label=label)
    print(repr(post2))
    post2.save()
    print()

    posts = Page.objects(label=label)
    print(posts.count())
    print(posts)
    print()

    print("Deleting")
    post1.delete()
    post2.delete()
Esempio n. 2
0
    def post(self, slug=None):
        f = page_form()
        data = self.get_arguments()
        is_edit = data.has_key('ori_slug')
        _ = self._
        try:
            attachments = self.get_argument('attachments', None)
            if attachments:
                data['attachments'] = parse_attachments(
                    data['attachments'], is_edit)

            if f.validates(tornado.web._O(data)):
                page = Page.one({'type': 'Page', 'slug': data['ori_slug']}) \
                        if is_edit else Page()
                page.save(data, user=self.current_user)

                if attachments:
                    page['attachments'] = move_attachments(
                        self.settings.upload_path, data['attachments'])
                    page.update_html()
                    page.save()

                self.set_flash(_("Page has been saved."))
                self.redirect(page.get_url())
                return
            page = Page()
            raise Exception(_("Invalid form data."))
        except Exception, e:
            if attachments:
                page['attachments'] = data['attachments']
            f.note = f.note if f.note else e
            self.render("page-edit", f=f, page=page, user=self.current_user)
Esempio n. 3
0
def setup_database(app):
    with app.app_context():
        db.create_all()
    home = Page()
    home.name = "Home"
    contact = Page()
    contact.name = Page()
    db.session.add(home)
    db.session.add(contact)
    db.session.commit()
Esempio n. 4
0
 def get_queryset(self):
     all_page_versions = Page(slug=self.kwargs['slug']).versions.all()
     # We set self.page to the most recent historical instance of the
     # page.
     if all_page_versions:
         self.page = all_page_versions[0]
     else:
         self.page = Page(slug=self.kwargs['slug'],
                          name=self.kwargs['original_slug'])
     return all_page_versions
Esempio n. 5
0
    def test_edit_page(self):
        page = Page(title='test title',
                    address='test_page',
                    content='test content')
        db.session.add(page)
        assert self.is_only_for_admins('/edit/test_page/')

        self.login_as_admin()

        response = self.client.get('/edit/test_page/')
        assert response.status_code == 200

        # title and content edit
        new_data = {
            'address': 'changed_address',
            'title': 'changed title',
            'content': 'changed content'
        }
        self.client.post('/edit/test_page/',
                         data=new_data,
                         follow_redirects=True)
        assert page.address == new_data['address']
        assert page.title == new_data['title']
        assert page.content == new_data['content']

        with self.assert_flashes('Address cannot be empty'):
            response = self.client.post(
                '/edit/changed_address/',
                data={
                    'address':
                    '',
                    'content':
                    'I accidentally removed address but want the content preserved!'
                },
                follow_redirects=True)
            # user should get their edited text back (no one likes to loose his work)
            assert b'I accidentally removed address but want the content preserved!' in response.data
            # but the actual text should not be changed
            assert page.content == 'changed content'
            assert page.address == 'changed_address'

        # weird addresses
        for weird_address in self.weird_addresses:
            page = Page(address=weird_address)
            db.session.add(page)

            response = self.client.post('/edit/' + weird_address + '/',
                                        data={'title': 'new title'})
            assert response.status_code == 200
            assert page.title == 'new title'

        self.logout()
Esempio n. 6
0
def doc_root():
    pickups = Page().query(Page.page_type == 'article')
    pickups = pickups.filter(Page.is_pickup == True)
    pickups = pickups.filter(Page.published_at != None)
    pickups = pickups.filter(Page.published_at < datetime.now())
    pickups = pickups.order(-Page.published_at)

    pages = Page().query(Page.page_type == 'article')
    pages = pages.filter(Page.is_pickup == False)
    pages = pages.filter(Page.published_at != None)
    pages = pages.filter(Page.published_at < datetime.now())
    pages = pages.order(-Page.published_at)
    T = {'pages': pages, 'pickups': pickups}
    return render_template('pages_top.html', T=T)
Esempio n. 7
0
def create_step(course_id, theme_id):
    step = Step(content_type=request.form.get('content_type'),
                theme_id=theme_id)
    db.session.add(step)
    db.session.commit()

    if step.content_type == 'text':
        text = bleach.clean(request.form.get('text'))
        page = Page(step_id=step.id, text=text)
        db.session.add(page)
        db.session.commit()

        image_ids = request.form.getlist('image_id')
        images = Image.query.filter(Image.id.in_(image_ids))
        for img in images:
            img.object_type = page.__tablename__
            img.object_id = page.id
            img.active = True
            db.session.add(img)
        db.session.commit()

    return redirect(
        url_for(
            'courses.show_content',
            course_id=course_id,
            theme_id=theme_id,
            step_id=step.id,
        ))
 def get(self, book_id):
     book = Book(book_id)
     pages = [
         PageSerializer(Page(pageId, book)).data for pageId in book.pagesId
     ]
     # return PageSerializer(pages).data
     return jsonify(data=pages)
def main():
    """
    Main command-line function.
    """
    name = 'Testing'
    label = Label.objects(name=name).upsert_one(name=name)

    lines = lib.read('var/chrome_onetab.txt')
    pages = [
        dict(zip(('url', 'title'), line.split(' | ', 1))) for line in lines
    ]

    for page in pages[:10]:
        url = page['url']
        print(url)
        resp = requests.get(url)
        print(resp.status_code, resp.reason)
        body = resp.text
        print(len(body))

        page_rec = Page(
            title=page['title'],
            url=url,
            content=body,
            status_code=resp.status_code,
            label=label,
        )
        page_rec.save()
        print()
Esempio n. 10
0
def view_diff(request, name, rev=None):
    """Shows the diffs for a wiki revision"""
    try:
        page = Page.objects.get(name=name)
        if rev is not None:
            rev = int(rev)
            revision = get_object_or_404(Revision, page=page, counter=rev)
        else:
            revision = page.get_latest_revision()
    except Page.DoesNotExist:
        page = Page(name=name)
        revision = None

    # compute diff
    import difflib
    prev_content = ""
    if revision and revision.get_prev():
        prev_content = revision.get_prev().content

    #diff = difflib.HtmlDiff().make_table(revision.content.splitlines(), prev_content.splitlines())
    d = difflib.Differ()
    diff = d.compare(prev_content.splitlines(), revision.content.splitlines())
    diff = '\n'.join(list(diff))

    ctx = { 'page': page, 'revision': revision, 'diff': diff }
    return render_to_response('wiki/diff.html', ctx, context_instance=RequestContext(request))
Esempio n. 11
0
def _create_example_site(user):
    site = Site(
        name='Example Site',
        owner=user,
        users=[user],
        admins=[user],
        example=True,
    )
    site.put()

    for v in [4, 5]:
        name = 'Html%d Example' % v
        style = Style(site=site, name=name)
        style.put()
        rev = StyleRevision(parent=style, rev=0)
        rev.put()
        rev.update(render_template('examples/blog-html%d.css' % v))
        style.published_rev = rev
        rev = StyleRevision(parent=style, rev=1)
        rev.put()
        rev.update(render_template('examples/blog-html%d-preview.css' % v))
        style.preview_rev = rev
        style.put()
        page = Page(site=site,
                    name=name,
                    url=url_for('example%d' % v, page_key=0, _external=True),
                    _styles=[style.key()])
        page.put()
        page.url = url_for('example%d' % v,
                           page_key=page.key(),
                           _external=True)
        page.put()
        page.queue_refresh()
Esempio n. 12
0
    def get_object(self, request, region='', slug=''):
        self.setup_region(region)

        obj = Page(slug=slugify(slug), region=self.region)
        obj.title = obj.versions.most_recent().name
        obj.page = obj
        return obj
Esempio n. 13
0
def edit(request, name):
    """Allows users to edit wiki pages."""
    try:
        page = Page.objects.get(name=name)
    except Page.DoesNotExist:
        try:
            page = Page.objects.get(name=name.title())
        except Page.DoesNotExist:
            page = Page(name=name)

    if request.method == 'POST':
        form = PageForm(request.POST)
        if form.is_valid():
            page.name = form.cleaned_data['name']
            page.content = form.cleaned_data['content']
            if not page.order:
                page.order = Page.objects.latest('order').order + 1
            page.save()
            return redirect(view, name=page.name)
    else:
        if page:
            form = PageForm(initial=page.__dict__)
        else:
            form = PageForm(initial={'name': name})

    context = {'form': form, 'page': page, 'pages': Page.objects.all()}

    return render_to_response('wiki/edit.html',
                              RequestContext(request, context))
Esempio n. 14
0
def page(issue_no):
    context = Page(issue_no).getContext()
    print(issue_no)
    print('[DEBUG] page ', context)
    context['title'] = 'FiftyPercent - No.' + issue_no
    # toggler icon
    return render_template('page.html', context=context)
Esempio n. 15
0
def main(request, resource):
    if request.user.is_authenticated():
        logged = ("Logged in as " + request.user.username
                + " <a href='/admin/logout/'>Log out</a>")
    else:
        logged = ("Not logged in. "
                + "<a href='/admin/login/?next=/admin/'>Log in</a>")

    if request.method == "GET":
        try:
            page_entry = Page.objects.get(name=resource)
            return HttpResponse(logged + "<br/>" + page_entry.page)
        except Page.DoesNotExist:
            if resource == "":
                resource = "Main Page"
            return HttpResponseNotFound(logged + "<br/>"
                + "Page not found: %s." % resource)
    elif request.method == "PUT":
        new_entry = Page(name=resource, page=request.body)
        new_entry.save()
        return HttpResponse(logged + "<br/>"
                + "Succesful PUT operation: " + request.body)
    else:
        return HttpResponseForbidden(logged + "<br/>"
            + "Operation not available")
Esempio n. 16
0
    def test_step4_switch_project(self, browser, baseurl, private_project):
        project = private_project

        page_object = Page(browser, baseurl)
        page_object.switch_project(project)

        assert project == page_object.get_project_name()
Esempio n. 17
0
def page_edit_about(request):
    shop = request.shop
    static_pages = Page.objects.filter(shop=shop)
    dynamic_pages = DynamicPageContent.objects.filter(shop=shop)
    try:
        about = About.objects.filter(shop=shop).get()
    except About.DoesNotExist:
        about = Page(shop=shop)
        about.save()

    if request.method == "POST":
        form = AboutForm(request.POST)
        if form.is_valid():
            about.title = form.cleaned_data['title']
            about.body = form.cleaned_data['body']
            about.meta_content = form.cleaned_data['meta_content']
            about.save()
            request.flash['message'] = unicode(_("Page successfully saved."))
            request.flash['severity'] = "success"
            return HttpResponseRedirect(reverse('page_edit_about'))
    else:
        form = AboutForm(instance=about)

    return render_to_response('store_admin/web_store/pages_edit_about.html', {
        'form': form,
        'static_pages': static_pages,
        'dynamic_pages': dynamic_pages
    }, RequestContext(request))
Esempio n. 18
0
def mostrar(request, resource):
    salida = ""
    if request.user.is_authenticated():
        salida += "<p>Hi " + request.user.username + ". "
        salida += "<a href='/logout/'>Logout</a></p>"
    else:
        salida += "<p>You aren't logged in. "
        salida += "<a href='/admin/login/'>Login!</a></p>"

    if request.method == "GET":
        try:
            fila = Page.objects.get(name=resource)
            return HttpResponse(salida + fila.page)
        except Page.DoesNotExist:
            return HttpResponseNotFound(salida + 'Page not found: ' + resource)
        except Page.MultipleObjectsReturned:
            return HttpResponseNotFound(salida + 'Server allocated more than \
                    one page for that resource')
    elif request.method == "PUT":
        if request.user.is_authenticated():
            newpage = Page(name=resource, page=request.body)
            newpage.save()
            return HttpResponse(salida + "New page added:\n" + request.body)
        else:
            salida += "YOU MUST <a href='/admin/login/'>LOG IN</a>"
            return HttpResponse(salida)
    else:
        return HttpResponseForbidden(salida + "Method not allowed")
Esempio n. 19
0
    def add_page(self):
        if request.method == 'GET':
            return self._template('admin/add_page', )
        page_data = dict_subset(request.form, Page.columns)

        try:
            address = request.form['address']

            if not address:
                raise ValidationError('Address cannot be empty')

            page = Page(**page_data)
            db.session.add(page)
            db.session.commit()

            flash('Added new page: ' + link_to_page(page), 'success')
            return redirect(
                url_for('ContentManagementSystem:edit_page', address=address))

        except ValidationError as error:
            flash(error.message, 'warning')

        except IntegrityError:
            db.session.rollback()
            flash('Something went wrong.', 'danger')

        return self._template('admin/add_page', page=page_data)
Esempio n. 20
0
def edit(request, name):
    """Allows users to edit wiki pages."""
    try:
        page = Page.objects.get(name=name)
    except Page.DoesNotExist:
        page = None

    if request.method == 'POST':
        form = PageForm(request.POST)
        if form.is_valid():
            if not page:
                page = Page()
            page.name = form.cleaned_data['name']
            page.content = form.cleaned_data['content']

            page.save()
            return HttpResponseRedirect('../../%s/' % page.name)
    else:
        if page:
            form = PageForm(initial=page.__dict__)
        else:
            form = PageForm(initial={'name': name})

    return render_to_response('wiki/edit.html', {
        'form': form, 
        'admin': is_admin(request),
        'user': get_user(request),
        'navbar':Page.objects.get(name='NavBar'),
    })
Esempio n. 21
0
    def insert_site(self, domain, robots, url, session):
        sitemaps = list(robots.sitemaps)  # get sitemaps

        if domain not in self.scraped_sites:
            site = Site(domain=domain,
                        robots_content=str(robots),
                        sitemap_content=sitemaps)
            session.add(site)
            session.commit()
            site_id = site.id
            self.scraped_sites.add(domain)

            page = Page(site_id=site_id, page_type_code='FRONTIER', url=url)
            session.add(page)
            session.commit()
            page_id = page.id
            self.scraped_pages.add(url)

            if len(sitemaps) > 0:
                r = requests.get(sitemaps[0])
                root = etree.fromstring(r.content)
                for sitemap in root:
                    children = sitemap.getchildren()
                    candidate = children[
                        0].text  # if sitemap link is not in frontier, add to it
                    if candidate not in self.scraped_pages:
                        self.frontier.put(candidate)
                        self.insert_page(site_id, candidate, page_id, session)

        else:
            site = session.query(Site).filter(Site.domain == domain).first()
            site_id = site.id

        return site_id
Esempio n. 22
0
def error404(request):
    return {
        'p':
        Page(title=u'Такой страницы не найдено',
             content=
             u'Такой страницы не существует. Воспользуйтесь поиском по сайту')
    }
Esempio n. 23
0
def uniqueness(s):
    stmt = s.query(Site).filter(Site.domain == 'evem.gov.si')
    site = stmt.first()
    if site is not None:
        site_id = site.id
        print(site_id)

        now = datetime.datetime.now().date()
        b = bytes("<div></div>", 'utf-8')
        m = hashlib.md5()
        m.update(b)
        hashed = m.digest()
        page = Page(
            site_id=site_id,
            page_type_code='HTML',
            url='https://www.najdi.si',  # UNIQUE
            html_content='<div>Goodbye</div>',
            http_status_code=200,
            accessed_time=now,
            hash=hashed)
        try:
            s.add(page)
            s.commit()
        except Exception as e:
            print(e)
Esempio n. 24
0
def show_pages_tag(tag):
    pages = Page().query(Page.page_type == 'article')
    pages = pages.filter(Page.published_at != None)
    pages = pages.filter(Page.published_at < datetime.now())
    pages = pages.filter(Page.tags == tag)
    pages = pages.order(-Page.published_at)
    return show_pages(pages)
Esempio n. 25
0
def add_chapter(manga, chapter_name, chapter_num, pages):
    # Ensure that chapter_num is a float
    chapter_num = float(chapter_num)
    # Ensure that the manga does not have a chapter with the same number
    if manga.chapters.filter_by(num=chapter_num).first():
        return
    new_chapter = Chapter(chapter_name, chapter_num, manga)
    # Representation is different if its an integer
    num_string = chapter_to_string(chapter_num)
    # Make a new folder for the chapter
    url = new_chapter.manga.url + "/Chapter_" + num_string
    # Rename and add all the chapter pages
    curr_page = 1
    for page in pages:
        # Skip resource forks
        if "__MACOSX" in page.filename:
            continue
        filename = rename(page, "%03d" % curr_page)
        # Make sure nothing that isn't an image file doesn't get through.
        if not allowed_file(page.filename):
            continue
        new_page = Page(curr_page, save_file(page, url, filename), new_chapter)
        db.session.add(new_page)
        # Remember to increment curr_page
        curr_page += 1
    zip_directory(manga, num_string, url)
    # Manga has been updated, so update the last updated date
    manga.last_updated = datetime.utcnow()
    # Add and commit to the database
    db.session.add(new_chapter)
    db.session.commit()
Esempio n. 26
0
    def test_page_parents(self):
        book = self.create_book("jump to python")
        p1 = Page(subject="p1", content="..", book=book)
        p1.save()
        p2 = Page(subject="p2", content="..", book=book, parent=p1)
        p2.save()
        p3 = Page(subject="p3", content="..", book=book, parent=p2)
        p3.save()
        p4 = Page(subject="p4", content="..", book=book, parent=p2)
        p4.save()

        self.assertFalse(p1.get_parents())
        self.assertTrue(p1 in p2.get_parents())
        self.assertTrue(p1 in p3.get_parents())
        self.assertTrue(p2 in p3.get_parents())
        self.assertTrue(p1 in p4.get_parents())
Esempio n. 27
0
async def parse(article, session, recursion_depth, from_page_id, limit_rd=1):
    async with SEMA:
        global URL
        task = [asyncio.ensure_future(fetch(URL.format(article), session))]
        response = await asyncio.gather(*task)
        data = html.fromstring(response[0])
        anchors = data.xpath('//a[@title]')

        entities = []
        for anchor in anchors:
            href = unquote(anchor.attrib['href'])
            # проверить, что урл начинается с /wiki, а также этот урл не повторяется в БД
            if not is_valid_ref(
                    href, db_session
            ) or 'страница отсутствует' in anchor.attrib['title']:
                continue

            page = Page(url=URL.format(href), from_page_id=from_page_id)
            db_session.add(page)
            db_session.commit()
            db_session.refresh(page)
            entities.append((page.id, href))

        # Если дошли до конца рекурсии, останавливаемся
        if recursion_depth > limit_rd:
            return

        # Создаем новый ивент-луп под полученные ссылки, и также рекурсивно запускаем эту функцию под них
        subtasks = []
        for page_id, page_url in entities:
            subtasks.append(
                asyncio.ensure_future(
                    parse(page_url, session, recursion_depth + 1, page_id)))
        await asyncio.gather(*subtasks)
Esempio n. 28
0
def inicio(request):
    if request.method == "POST":
        url = request.POST.get('url')
        url = procUrl(url)
        try:
            encontrada = Page.objects.get(url_original=url)
        except Page.DoesNotExist:
            pag = Page(url_original=url)
            pag.save()
            encontrada = Page.objects.get(url_original=url)
        respuesta = '<a href ="' + str(encontrada.id) + '">'
        respuesta += "http://localhost:1234/" + str(encontrada.id) + '</a>'
        return HttpResponse(respuesta)
    listado = Page.objects.all()
    respuesta = "<ol>"
    for elemento in listado:
        respuesta += '<li><a href ="' + str(elemento.url_original) + '">'
        respuesta += str(elemento.url_original) + '</a>' + " = "
        respuesta += '<a href="' + str(elemento.id) + '">'
        respuesta += "http://localhost:1234/" + str(elemento.id) + '</a>'
    respuesta += "</ol>"
    template = get_template("pag.html")
    argumentos = {
        'contenido': respuesta,
    }
    return HttpResponse(template.render(Context(argumentos)))
Esempio n. 29
0
def edit(request, name):
    """Allows users to edit wiki pages."""
    try:
        page = Page.objects.get(name=name)
    except Page.DoesNotExist:
        page = None

    if request.method == 'POST':
        form = PageForm(request.POST)
        if form.is_valid():
            if not page:
                page = Page()
            page.name = form.cleaned_data['name']
            page.save()

            revision = Revision()
            revision.page = page
            revision.content = form.cleaned_data['content']
            if request.user.is_authenticated():
                revision.editor = request.user
            revision.save()
            return HttpResponseRedirect(page.get_absolute_url())
    else:
        if page:
            revision = page.get_latest_revision()
            form = PageForm(initial={'name': page.name, 'content': revision.content})
        else:
            form = PageForm(initial={'name': name})

    ctx = { 'form': form }
    return render_to_response('wiki/edit.html', ctx, context_instance=RequestContext(request))
Esempio n. 30
0
def processCmsRequest(request, resource):
    if request.user.is_authenticated():
        loged = "<br><br>Logged in as " + request.user.username +\
                ". <a href='/admin/logout/'>Logout</a><br>"
    else:
        loged = "<br><br>Not logged. <a href='/admin/login/'>Login</a><br>"
    if request.method == 'GET':
        try:
            page = Page.objects.get(name=resource)
            return HttpResponse(page.page + loged)
        except Page.DoesNotExist:
            return HttpResponseNotFound("Page not found" + loged)
    elif request.method == 'PUT':
        if request.user.is_authenticated():
            try:
                newPage = Page.objects.get(name=resource)
                newPage.page = request.body
            except Page.DoesNotExist:
                newPage = Page(name = resource, page = request.body)
            newPage.save()
            return HttpResponse("Added to the list")
        else:
            return HttpResponse("Couldn't add to the list" + loged)
    else:
        return HttpResponse(status=403)