##// END OF EJS Templates
sans-serif for everything
sans-serif for everything

File last commit:

r1725:13d5acda default
r2016:13d5cbdc default
Show More
export.py
57 lines | 1.4 KiB | text/x-python | PythonLexer
from django.contrib.auth.context_processors import PermWrapper
from boards import utils
PARAMETER_TRUNCATED = 'truncated'
DIFF_TYPE_HTML = 'html'
DIFF_TYPE_JSON = 'json'
class Exporter():
@staticmethod
def export(post, request, include_last_update) -> str:
pass
class HtmlExporter(Exporter):
@staticmethod
def export(post, request, include_last_update):
if request is not None and PARAMETER_TRUNCATED in request.GET:
truncated = True
reply_link = False
else:
truncated = False
reply_link = True
return post.get_view(truncated=truncated, reply_link=reply_link,
perms=PermWrapper(request.user))
class JsonExporter(Exporter):
@staticmethod
def export(post, request, include_last_update):
post_json = {
'id': post.id,
'title': post.title,
'text': post.get_raw_text(),
}
post_image = post.get_first_image()
if post_image:
post_json['image'] = post_image.file.url
post_json['image_preview'] = post_image.get_thumb_url()
if include_last_update:
post_json['bump_time'] = utils.datetime_to_epoch(
post.get_thread().bump_time)
return post_json
EXPORTERS = {
DIFF_TYPE_HTML: HtmlExporter,
DIFF_TYPE_JSON: JsonExporter,
}
def get_exporter(export_type: str) -> Exporter:
return EXPORTERS[export_type]()