Modify

Ticket #3 (closed news: fixed)

Opened 2 years ago

Last modified 17 months ago

Поддержка контекстных ссылок в Sape

Reported by: lostclus Owned by: lostclus
Priority: minor Component: clients
Version: 0.1 Keywords:
Cc:

Description (last modified by lostclus) (diff)

В trunk добавлена экспериментальная поддержка контекстных ссылок сапы ([35], [36]). К базовому классу клиента и к классу площадки добавлен метод content_filter(), который принимает объект запроса и unicode-строку, содержащую HTML для обработки, возвращает обработанный HTML. Поддержка контекстных ссылок сапы реализована отдельным клиентом SapeContextClient (имя точки входа sape_context).

Пример использования:

>>> import linkexchange
>>> clients = [('sape_context', [], dict(user = 'user123456789',
...   db_driver = ('shelv', [], dict(filename = 'sape-context-XXX.db'))))]
>>> platform = linkexchange.Platform(clients)
req = linkexchange.PageRequest(host = 'example.com', uri = '/',
...   cookies = cookies_dict)
>>> new_content = platform.content_filter(req, old_content)

Внимание! Куки нужно передать обязательно, иначе будете палиться тегами <sape_index>.

Attachments

Change History

comment:1 Changed 2 years ago by lostclus

  • Status changed from new to accepted

comment:2 Changed 2 years ago by lostclus

  • Description modified (diff)

comment:3 Changed 2 years ago by lostclus

  • Description modified (diff)

comment:4 Changed 2 years ago by lostclus

Использование контекстных ссылок с Django

Для использования контекстных ссылок с Django необходимо сделать следующее:

  1. Добавить 'linkexchange.django' в INSTALLED_APPS в файле settings.py проекта, а также добавить 'django.core.context_processors.request' в TEMPLATE_CONTEXT_PROCESSORS.
  2. Создать файл linkexchange.cfg, в котором определить клиент sape_context, и дать ссылку на него в параметре LINKEXCHANGE_CONFIG в файле settings.py.
  3. В шаблонах использовать ограничивающий тег linkexchange_filter или одноименный фильтр для обработки контента, в котором будут размещаться контекстные ссылки.

Фрагмент файла settings.py для примера:

from os.path import dirname, join

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'linkexchange.django',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.request',
    'linkexchange.django.context_processors.linkexchange',
    )

LINKEXCHANGE_CONFIG = join(dirname(__file__), 'linkexchange.cfg')

Фрагмент файла linkexchange.cfg для примера:

[client-1]
type = sape
user = user12345
db_driver.type = shelve
db_driver.filename = %(basedir)s/sape-XXX.db

[client-2]
type = sape_context
user = user12345
db_driver.type = shelve
db_driver.filename = %(basedir)s/sape-context-XXX.db

Пример шаблона:

{% load linkexchange_tags %}

{% linkexchange_filter request %}
В этом тексте будут размещаться контекстные ссылки.
{% endlinkexchange_filter %}

А здесь для размещения используется фильтр:
{{ page.content|linkexchange_filter:request }}

comment:5 Changed 2 years ago by lostclus

comment:6 Changed 2 years ago by lostclus

Все найденные баги относительно контекстных ссылок исправлены, документация по контекстным ссылкам добавлена на страницах вики.

comment:7 Changed 2 years ago by lostclus

  • Status changed from accepted to closed
  • Resolution set to fixed

comment:8 Changed 17 months ago by lostclus

  • Type changed from enhancement to news
View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.
[ Наша юридическая контора делает услугу регистрация ооо дешево в налоговой ]