##// END OF EJS Templates
Feed of posts for the specific IP (works only for moderators who can delete posts)
Feed of posts for the specific IP (works only for moderators who can delete posts)

File last commit:

r1603:0695b6a9 default
r1641:d57d7e7e default
Show More
export.py
57 lines | 1.5 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(),
}
if post.attachments.exists():
post_image = post.get_first_image()
post_json['image'] = post_image.file.url
post_json['image_preview'] = post_image.get_preview_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]()