def __init__(self, show_title=True, title=u'Shoutbox', entrycount=10, hide_form=False): super(ShoutboxWidget, self).__init__() self.title = title self.show_title = show_title self.hide_form = hide_form self.entries = ShoutboxEntry.query.order_by(ShoutboxEntry.postdate.desc()) \ .limit(entrycount).all() self.newposturl = escape(url_for('shoutbox/post', next=get_request().path))
def can_edit(self, user=None): if user is None: user = get_request().user if not user.is_somebody: return if not self.author.is_somebody: return user.has_privilege(BOARD_MODERATE) else: return self.author == user or user.has_privilege(BOARD_MODERATE)
def is_unread(self, user=None): if user is None: user = get_request().user if isinstance(user, AnonymousUser): return False global_lastread = GlobalLastRead.query.get(user.id) if not global_lastread: return False if global_lastread.date > self.modification_date: return False local_lastread = LocalLastRead.query.get((user.id,self.id)) if not local_lastread: return True if local_lastread.date >= self.modification_date: return False return True
def is_unread(self, user=None): if user is None: user = get_request().user if isinstance(user, AnonymousUser): return False global_lastread = GlobalLastRead.query.get(user.id) if not global_lastread or not self.modification_date: return False if global_lastread.date > self.modification_date: return False topics=Topic.query \ .filter(Topic.modification_date > global_lastread.date) \ .filter(Topic.forum_id == self.id).all() for topic in topics: if topic.is_unread(user): return True return False
def can_delete(self, user=None): if user is None: user = get_request().user return self.topic.can_see(user) and user.has_privilege(BOARD_MODERATE)
def can_create_topic(self, user=None): if user is None: user = get_request().user return self.allow_anonymous or user.is_somebody
def can_see(self, user=None): if user is None: user = get_request().user return self.is_public or user.is_somebody