##// END OF EJS Templates
Made quote button actually button so it is impossible to accidentally quote its text
Made quote button actually button so it is impossible to accidentally quote its text

File last commit:

r1846:3bc31272 default
r1909:004a4ff8 default
Show More
sync_filters.py
66 lines | 1.7 KiB | text/x-python | PythonLexer
import xml.etree.ElementTree as et
from boards.models import Post, Tag
TAG_THREAD = 'thread'
TAG_TAGS = 'tags'
TAG_TAG = 'tag'
TAG_TIME_FROM = 'timestamp_from'
class PostFilter:
def __init__(self, content=None):
self.content = content
def filter(self, posts):
return posts
def add_filter(self, model_tag, value):
return model_tag
class ThreadFilter(PostFilter):
def filter(self, posts):
op_id = self.content.text
op = Post.objects.filter(opening=True, id=op_id).first()
if op:
return posts.filter(thread=op.get_thread())
else:
return posts.none()
def add_filter(self, model_tag, value):
thread_tag = et.SubElement(model_tag, TAG_THREAD)
thread_tag.text = str(value)
class TagsFilter(PostFilter):
def filter(self, posts):
tags = []
for tag_tag in self.content:
try:
tags.append(Tag.objects.get(name=tag_tag.text))
except Tag.DoesNotExist:
pass
if tags:
return posts.filter(thread__tags__in=tags)
else:
return posts.none()
def add_filter(self, model_tag, value):
tags_tag = et.SubElement(model_tag, TAG_TAGS)
for tag_name in value:
tag_tag = et.SubElement(tags_tag, TAG_TAG)
tag_tag.text = tag_name
class TimestampFromFilter(PostFilter):
def filter(self, posts):
from_time = self.content.text
return posts.filter(pub_time__gt=from_time)
def add_filter(self, model_tag, value):
tags_from_time = et.SubElement(model_tag, TAG_TIME_FROM)
tags_from_time.text = value