def render(self, context): print('render view tag...') if 'request' not in context: return "" request = context['request'] # get the url for the view url = Variable(self.url_or_view).resolve(context) if not settings.USE_AJAX_REQUESTS: # do not load the whole template, just the content, like an ajax request #request.is_ajax = True # not needed since the jQuery.get() is implying this urlconf = getattr(request, "urlconf", settings.ROOT_URLCONF) resolver = urlresolvers.RegexURLResolver(r'^/', urlconf) # get the view function view, args, kwargs = resolver.resolve(url) try: if callable(view): ret = view(context['request'], *args, **kwargs).render() return ret.rendered_content raise Exception("%r is not callable" % view) except: if settings.TEMPLATE_DEBUG: raise else: print('return js code for jquery') return """<div id="%(div_id)s">loading ...</div> <script> $.get( "%(url)s", function( data ) { $( "#%(div_id)s" ).html( data ); }); </script>""" % {'div_id': url.replace("/", ""), 'url': url} return ""
def render(self, context): # If not a user or not an admin, don't return the form. if not isinstance(context['user'], User): return '' if not context['user'].profile.is_superuser: return '' try: setting_name = Variable(self.setting_name) setting_name = setting_name.resolve(context) except: setting_name = self.setting_name full_setting_name = ''.join(['module_theme_', setting_name]).upper() try: setting_value = Variable(full_setting_name) setting_value = setting_value.resolve(context) setting_value = setting_value.replace('.html', '') except: setting_value = None settings_list = Setting.objects.filter(scope='module', scope_category='theme', name=setting_name) settings_value_list = Setting.objects.filter( scope='template', scope_category=setting_value) context['setting_name'] = setting_name context['setting_value'] = setting_value context['settings_value_list'] = settings_value_list context['scope_category'] = 'theme' context['setting_form'] = build_settings_form(context['user'], settings_list)() context['setting_value_form'] = build_settings_form( context['user'], settings_value_list)() template_name = 'theme_includes/setting_edit_form.html' try: theme = context['THEME'] try: t = get_template("%s/templates/%s" % (theme, template_name)) except TemplateDoesNotExist: #load the true default template directly to be sure #that we are not loading the active theme's template t = get_default_template(template_name) return t.render(context) except: if settings.TEMPLATE_DEBUG: raise return ''
def render(self, context): # If not a user or not an admin, don't return the form. if not isinstance(context['user'], User): return '' if not context['user'].profile.is_superuser: return '' try: setting_name = Variable(self.setting_name) setting_name = setting_name.resolve(context) except: setting_name = self.setting_name full_setting_name = ''.join(['module_theme_', setting_name]).upper() try: setting_value = Variable(full_setting_name) setting_value = setting_value.resolve(context) setting_value = setting_value.replace('.html', '') except: setting_value = None settings_list = Setting.objects.filter(scope='module', scope_category='theme', name=setting_name) settings_value_list = Setting.objects.filter(scope='template', scope_category=setting_value) context['setting_name'] = setting_name context['setting_value'] = setting_value context['settings_value_list'] = settings_value_list context['scope_category'] = 'theme' context['setting_form'] = build_settings_form(context['user'], settings_list)() context['setting_value_form'] = build_settings_form(context['user'], settings_value_list)() template_name = 'theme_includes/setting_edit_form.html' try: theme = context['THEME'] try: t = get_template("%s/templates/%s" % (theme, template_name)) except TemplateDoesNotExist: #load the true default template directly to be sure #that we are not loading the active theme's template t = get_default_template(template_name) return t.render(context) except: if settings.TEMPLATE_DEBUG: raise return ''
def render(self, context): pk = 0 template_name = 'forms/embed_form_new.html' if 'pk' in self.kwargs: try: pk = Variable(self.kwargs['pk']) pk = pk.resolve(context) except: pk = self.kwargs['pk'] # context string if 'template_name' in self.kwargs: try: template_name = Variable(self.kwargs['template_name']) template_name = pk.resolve(context) except: template_name = self.kwargs['template_name'] # context string template_name = template_name.replace('"', '') try: form = Form.objects.get(pk=pk) context['embed_form'] = form.object context['embed_form_for_form'] = FormForForm( form.object, AnonymousUser()) template = get_template(template_name) output = '<div class="embed-form">%s</div>' % template.render( context) return output except: try: form = Form.objects.get(pk=pk) context['embed_form'] = form context['embed_form_for_form'] = FormForForm( form, AnonymousUser()) template = get_template(template_name) output = '<div class="embed-form">%s</div>' % template.render( context) return output except: return ""
def render(self, context): pk = 0 template_name = 'forms/embed_form.html' if 'pk' in self.kwargs: try: pk = Variable(self.kwargs['pk']) pk = pk.resolve(context) except: pk = self.kwargs['pk'] # context string if 'template_name' in self.kwargs: try: template_name = Variable(self.kwargs['template_name']) template_name = pk.resolve(context) except: template_name = self.kwargs['template_name'] # context string template_name = template_name.replace('"', '') try: form = Form.objects.get(pk=pk) context['form'] = form.object context['form_for_form'] = FormForForm(form.object, AnonymousUser()) template = get_template(template_name) output = '<div class="embed-form">%s</div>' % template.render(context) return output except: try: form = Form.objects.get(pk=pk) context['form'] = form context['form_for_form'] = FormForForm(form, AnonymousUser()) template = get_template(template_name) output = '<div class="embed-form">%s</div>' % template.render(context) return output except: return ""
def render(self, context): # If not a user or not an admin, don't return the form. if not isinstance(context['user'], User): return '' if not context['user'].profile.is_superuser: return '' try: setting_name = Variable(self.setting_name) setting_name = setting_name.resolve(context) except: setting_name = self.setting_name full_setting_name = ''.join(['module_theme_', setting_name]).upper() try: setting_value = Variable(full_setting_name) setting_value = setting_value.resolve(context) setting_value = setting_value.replace('.html', '') except: setting_value = None settings_list = Setting.objects.filter(scope='module', scope_category='theme', name=setting_name) settings_value_list = Setting.objects.filter(scope='template', scope_category=setting_value) context['setting_name'] = setting_name context['setting_value'] = setting_value context['settings_value_list'] = settings_value_list context['scope_category'] = 'theme' context['setting_form'] = build_settings_form(context['user'], settings_list)() context['setting_value_form'] = build_settings_form(context['user'], settings_value_list)() template_name = 'theme_includes/setting_edit_form.html' try: theme = context['THEME'] t = context.template.engine.get_template("%s/templates/%s" % (theme, template_name)) return t.render(context=context) except: return ''
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = u'' exclude = u'' randomize = False group = u'' status_detail = u'active' if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = str(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = tags.split(',') if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] if user == "anon" or user == "anonymous": user = AnonymousUser() # for performance reason, if user is not passed in, use AnonymousUser # else: # # check the context for an already existing user # # and see if it is really a user object # if 'user' in context: # if isinstance(context['user'], User): # user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'exclude' in self.kwargs: try: exclude = Variable(self.kwargs['exclude']) exclude = str(exclude.resolve(context)) except: exclude = self.kwargs['exclude'] exclude = exclude.replace('"', '') exclude = exclude.split(',') if 'group' in self.kwargs: try: group = Variable(self.kwargs['group']) group = str(group.resolve(context)) except: group = self.kwargs['group'] try: group = int(group) except: group = None if 'status_detail' in self.kwargs: try: status_detail = Variable(self.kwargs['status_detail']) status_detail = status_detail.resolve(context) except: status_detail = self.kwargs['status_detail'] # get the list of items self.perms = getattr(self, 'perms', str()) # Only use the search index if there is a query passed if query: for tag in tags: tag = tag.strip() query = '%s "tag:%s"' % (query, tag) items = self.model.objects.search(user=user, query=query) else: filters = get_query_filters(user, self.perms) items = self.model.objects.filter(filters) if user.is_authenticated: items = items.distinct() if tags: # tags is a comma delimited list # this is fast; but has one hole # it finds words inside of other words # e.g. "prev" is within "prevent" tag_queries = [Q(tags__iexact=t.strip()) for t in tags] tag_queries += [ Q(tags__istartswith=t.strip() + ",") for t in tags ] tag_queries += [ Q(tags__iendswith=", " + t.strip()) for t in tags ] tag_queries += [ Q(tags__iendswith="," + t.strip()) for t in tags ] tag_queries += [ Q(tags__icontains=", " + t.strip() + ",") for t in tags ] tag_queries += [ Q(tags__icontains="," + t.strip() + ",") for t in tags ] tag_query = reduce(or_, tag_queries) items = items.filter(tag_query) if hasattr(self.model, 'group') and group: items = items.filter(group=group) if hasattr(self.model, 'groups') and group: items = items.filter(groups__in=[group]) if hasattr(self.model(), 'status_detail'): items = items.filter(status_detail__iexact=status_detail) items = self.custom_model_filter(items, user) objects = [] # exclude certain primary keys if exclude: excludes = [] for ex in exclude: if ex.isdigit(): excludes.append(int(ex)) if query: items = items.exclude(primary_key__in=excludes) else: items = items.exclude(pk__in=excludes) # if order is not specified it sorts by relevance if order: items = items.order_by(order) if randomize: items = list(items) objects = random.sample(items, min(len(items), limit)) else: objects = items[:limit] if query: objects = [item.object for item in objects] context[self.context_var] = objects if 'template' in self.kwargs: try: template = Variable(self.kwargs['template']) template = str(template.resolve(context)) except: template = self.kwargs['template'] t = context.template.engine.get_template(template) return t.render(context=context, autoescape=context.autoescape) return ""
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = u'' randomize = False group = u'' if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = str(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = [t.strip() for t in tags.split(',')] if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] else: # check the context for an already existing user if 'user' in context: user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'group' in self.kwargs: try: group = Variable(self.kwargs['group']) group = str(group.resolve(context)) except: group = self.kwargs['group'] try: group = int(group) except: group = None filters = get_query_filters(user, self.perms) items = self.model.objects.filter(filters) if isinstance(user, User) and user.is_authenticated: if not user.profile.is_superuser: items = items.distinct() if tags: # tags is a comma delimited list # this is fast; but has one hole # it finds words inside of other words # e.g. "prev" is within "prevent" tag_queries = [Q(tags__iexact=t.strip()) for t in tags] tag_queries += [Q(tags__istartswith=t.strip() + ",") for t in tags] tag_queries += [Q(tags__iendswith=", " + t.strip()) for t in tags] tag_queries += [Q(tags__iendswith="," + t.strip()) for t in tags] tag_queries += [ Q(tags__icontains=", " + t.strip() + ",") for t in tags ] tag_queries += [ Q(tags__icontains="," + t.strip() + ",") for t in tags ] tag_query = reduce(or_, tag_queries) items = items.filter(tag_query) if group: items = items.filter(group=group) objects = [] # Removed seconds and microseconds so we can cache the query better now = datetime.now().replace(second=0, microsecond=0) # Custom filter for stories date_query = reduce(or_, [Q(end_dt__gte=now), Q(expires=False)]) date_query = reduce(and_, [Q(start_dt__lte=now), date_query]) items = items.filter(date_query) if order: items = items.order_by(order) else: items = items.order_by('-position', '-start_dt') # if order is not specified it sorts by relevance if randomize: items = list(items) objects = random.sample(items, min(len(items), limit)) else: objects = items[:limit] context[self.context_var] = objects return ""
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = 'next_upcoming' event_type = '' group = u'' start_dt = u'' randomize = False if 'start_dt' in self.kwargs: try: start_dt = datetime.strptime( self.kwargs['start_dt'].replace('"', '').replace('"', ''), '%m/%d/%Y-%H:%M') except ValueError: pass if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = unicode(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = tags.split(',') if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] if user == "anon" or user == "anonymous": user = AnonymousUser() else: # check the context for an already existing user # and see if it is really a user object if 'user' in context: if isinstance(context['user'], User): user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'type' in self.kwargs: try: event_type = Variable(self.kwargs['type']) event_type = event_type.resolve(context) except: event_type = self.kwargs['type'] if 'group' in self.kwargs: try: group = Variable(self.kwargs['group']) group = unicode(group.resolve(context)) except: group = self.kwargs['group'] try: group = int(group) except: group = None filters = get_query_filters(user, 'events.view_event') items = Event.objects.filter(filters) if user.is_authenticated(): if not user.profile.is_superuser: items = items.distinct() if event_type: items = items.filter(type__name__iexact=event_type) if tags: # tags is a comma delimited list # this is fast; but has one hole # it finds words inside of other words # e.g. "prev" is within "prevent" tag_queries = [Q(tags__iexact=t.strip()) for t in tags] tag_queries += [Q(tags__istartswith=t.strip() + ",") for t in tags] tag_queries += [Q(tags__iendswith=", " + t.strip()) for t in tags] tag_queries += [Q(tags__iendswith="," + t.strip()) for t in tags] tag_queries += [ Q(tags__icontains=", " + t.strip() + ",") for t in tags ] tag_queries += [ Q(tags__icontains="," + t.strip() + ",") for t in tags ] tag_query = reduce(or_, tag_queries) items = items.filter(tag_query) if hasattr(self.model, 'group') and group: items = items.filter(group=group) objects = [] if start_dt: items = items.filter(start_dt__gte=start_dt) # if order is not specified it sorts by relevance if order: if order == "next_upcoming": if not start_dt: # Removed seconds and microseconds so we can cache the query better now = datetime.now().replace(second=0, microsecond=0) items = items.filter(start_dt__gt=now) items = items.order_by("start_dt") elif order == "current_and_upcoming": if not start_dt: now = datetime.now().replace(second=0, microsecond=0) items = items.filter( Q(start_dt__gt=now) | Q(end_dt__gt=now)) items = items.order_by("start_dt") elif order == "current_and_upcoming_by_hour": now = datetime.now().replace(second=0, microsecond=0) today = datetime.now().replace(second=0, hour=0, minute=0, microsecond=0) tomorrow = today + timedelta(days=1) items = items.filter( Q(start_dt__lte=tomorrow) & Q(end_dt__gte=today)).extra( select={ 'hour': 'extract( hour from start_dt )' }).extra(select={ 'minute': 'extract( minute from start_dt )' }).extra(where=["extract( hour from start_dt ) >= %s"], params=[now.hour]) items = items.distinct() items = items.order_by('hour', 'minute') else: items = items.order_by(order) if randomize: objects = [item for item in random.sample(items, items.count())][:limit] else: objects = [item for item in items[:limit]] context[self.context_var] = objects return ""
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = u'' exclude = u'' randomize = False group = u'' status_detail = u'active' if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = unicode(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = tags.split(',') if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] if user == "anon" or user == "anonymous": user = AnonymousUser() # for performance reason, if user is not passed in, use AnonymousUser # else: # # check the context for an already existing user # # and see if it is really a user object # if 'user' in context: # if isinstance(context['user'], User): # user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'exclude' in self.kwargs: try: exclude = Variable(self.kwargs['exclude']) exclude = unicode(exclude.resolve(context)) except: exclude = self.kwargs['exclude'] exclude = exclude.replace('"', '') exclude = exclude.split(',') if 'group' in self.kwargs: try: group = Variable(self.kwargs['group']) group = unicode(group.resolve(context)) except: group = self.kwargs['group'] try: group = int(group) except: group = None if 'status_detail' in self.kwargs: try: status_detail = Variable(self.kwargs['status_detail']) status_detail = status_detail.resolve(context) except: status_detail = self.kwargs['status_detail'] # get the list of items self.perms = getattr(self, 'perms', unicode()) # Only use the search index if there is a query passed if query: for tag in tags: tag = tag.strip() query = '%s "tag:%s"' % (query, tag) items = self.model.objects.search(user=user, query=query) else: filters = get_query_filters(user, self.perms) items = self.model.objects.filter(filters) if user.is_authenticated(): items = items.distinct() if tags: # tags is a comma delimited list # this is fast; but has one hole # it finds words inside of other words # e.g. "prev" is within "prevent" tag_queries = [Q(tags__iexact=t.strip()) for t in tags] tag_queries += [Q(tags__istartswith=t.strip() + ",") for t in tags] tag_queries += [Q(tags__iendswith=", " + t.strip()) for t in tags] tag_queries += [Q(tags__iendswith="," + t.strip()) for t in tags] tag_queries += [Q(tags__icontains=", " + t.strip() + ",") for t in tags] tag_queries += [Q(tags__icontains="," + t.strip() + ",") for t in tags] tag_query = reduce(or_, tag_queries) items = items.filter(tag_query) if hasattr(self.model, 'group') and group: items = items.filter(group=group) if hasattr(self.model, 'groups') and group: items = items.filter(groups__in=[group]) if hasattr(self.model(), 'status_detail'): items = items.filter(status_detail__iexact=status_detail) items = self.custom_model_filter(items, user) objects = [] # exclude certain primary keys if exclude: excludes = [] for ex in exclude: if ex.isdigit(): excludes.append(int(ex)) if query: items = items.exclude(primary_key__in=excludes) else: items = items.exclude(pk__in=excludes) # if order is not specified it sorts by relevance if order: items = items.order_by(order) if randomize: objects = [item for item in random.sample(items, len(items))][:limit] else: objects = [item for item in items[:limit]] if query: objects = [item.object for item in objects] context[self.context_var] = objects if 'template' in self.kwargs: try: template = Variable(self.kwargs['template']) template = unicode(template.resolve(context)) except: template = self.kwargs['template'] t = loader.get_template(template) return t.render(Context(context, autoescape=context.autoescape)) return ""
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = 'next_upcoming' event_type = '' group = u'' randomize = False if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = unicode(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = tags.split(',') if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] if user == "anon" or user == "anonymous": user = AnonymousUser() else: # check the context for an already existing user # and see if it is really a user object if 'user' in context: if isinstance(context['user'], User): user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'type' in self.kwargs: try: event_type = Variable(self.kwargs['type']) event_type = event_type.resolve(context) except: event_type = self.kwargs['type'] if 'group' in self.kwargs: try: group = Variable(self.kwargs['group']) group = unicode(group.resolve(context)) except: group = self.kwargs['group'] try: group = int(group) except: group = None filters = get_query_filters(user, 'events.view_event') items = Event.objects.filter(filters) if user.is_authenticated(): if not user.profile.is_superuser: items = items.distinct() if event_type: items = items.filter(type__name__iexact=event_type) if tags: # tags is a comma delimited list # this is fast; but has one hole # it finds words inside of other words # e.g. "prev" is within "prevent" tag_queries = [Q(tags__iexact=t.strip()) for t in tags] tag_queries += [Q(tags__istartswith=t.strip()+",") for t in tags] tag_queries += [Q(tags__iendswith=", "+t.strip()) for t in tags] tag_queries += [Q(tags__iendswith=","+t.strip()) for t in tags] tag_queries += [Q(tags__icontains=", "+t.strip()+",") for t in tags] tag_queries += [Q(tags__icontains=","+t.strip()+",") for t in tags] tag_query = reduce(or_, tag_queries) items = items.filter(tag_query) if hasattr(self.model, 'group') and group: items = items.filter(group=group) objects = [] # if order is not specified it sorts by relevance if order: if order == "next_upcoming": # Removed seconds and microseconds so we can cache the query better now = datetime.now().replace(second=0, microsecond=0) items = items.filter(start_dt__gt = now) items = items.order_by("start_dt") elif order == "current_and_upcoming": now = datetime.now().replace(second=0, microsecond=0) items = items.filter(Q(start_dt__gt=now) | Q(end_dt__gt=now)) items = items.order_by("start_dt") else: items = items.order_by(order) if randomize: objects = [item for item in random.sample(items, items.count())][:limit] else: objects = [item for item in items[:limit]] context[self.context_var] = objects return ""
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = 'next_upcoming' event_type = '' group = u'' start_dt = u'' randomize = False if 'start_dt' in self.kwargs: try: start_dt = datetime.strptime(self.kwargs['start_dt'].replace('"', '').replace('"', ''), '%m/%d/%Y-%H:%M') except ValueError: pass if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = unicode(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = tags.split(',') if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] if user == "anon" or user == "anonymous": user = AnonymousUser() else: # check the context for an already existing user # and see if it is really a user object if 'user' in context: if isinstance(context['user'], User): user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'type' in self.kwargs: try: event_type = Variable(self.kwargs['type']) event_type = event_type.resolve(context) except: event_type = self.kwargs['type'] if 'group' in self.kwargs: try: group = Variable(self.kwargs['group']) group = unicode(group.resolve(context)) except: group = self.kwargs['group'] try: group = int(group) except: group = None filters = get_query_filters(user, 'events.view_event') items = Event.objects.filter(filters) if user.is_authenticated(): if not user.profile.is_superuser: items = items.distinct() if event_type: items = items.filter(type__name__iexact=event_type) if tags: # tags is a comma delimited list # this is fast; but has one hole # it finds words inside of other words # e.g. "prev" is within "prevent" tag_queries = [Q(tags__iexact=t.strip()) for t in tags] tag_queries += [Q(tags__istartswith=t.strip()+",") for t in tags] tag_queries += [Q(tags__iendswith=", "+t.strip()) for t in tags] tag_queries += [Q(tags__iendswith=","+t.strip()) for t in tags] tag_queries += [Q(tags__icontains=", "+t.strip()+",") for t in tags] tag_queries += [Q(tags__icontains=","+t.strip()+",") for t in tags] tag_query = reduce(or_, tag_queries) items = items.filter(tag_query) if hasattr(self.model, 'group') and group: items = items.filter(groups=group) if hasattr(self.model, 'groups') and group: items = items.filter(groups__in=[group]) objects = [] if start_dt: items = items.filter(start_dt__gte=start_dt) # exclude private events items = items.filter(enable_private_slug=False) # if order is not specified it sorts by relevance if order: if order == "next_upcoming": if not start_dt: # Removed seconds and microseconds so we can cache the query better now = datetime.now().replace(second=0, microsecond=0) items = items.filter(start_dt__gt=now) items = items.order_by("start_dt") elif order == "current_and_upcoming": if not start_dt: now = datetime.now().replace(second=0, microsecond=0) items = items.filter(Q(start_dt__gt=now) | Q(end_dt__gt=now)) items = items.order_by("start_dt") elif order == "current_and_upcoming_by_hour": now = datetime.now().replace(second=0, microsecond=0) today = datetime.now().replace(second=0, hour=0, minute=0, microsecond=0) tomorrow = today + timedelta(days=1) items = items.filter(Q(start_dt__lte=tomorrow) & Q(end_dt__gte=today)).extra(select={'hour': 'extract( hour from start_dt )'}).extra(select={'minute': 'extract( minute from start_dt )'}).extra(where=["extract( hour from start_dt ) >= %s"], params=[now.hour]) items = items.distinct() items = items.order_by('hour', 'minute') else: items = items.order_by(order) if randomize: objects = [item for item in random.sample(items, items.count())][:limit] else: objects = [item for item in items[:limit]] context[self.context_var] = objects return ""
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = u'' randomize = False group = u'' if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = unicode(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = [t.strip() for t in tags.split(',')] if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] else: # check the context for an already existing user if 'user' in context: user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'group' in self.kwargs: try: group = Variable(self.kwargs['group']) group = unicode(group.resolve(context)) except: group = self.kwargs['group'] try: group = int(group) except: group = None filters = get_query_filters(user, self.perms) items = self.model.objects.filter(filters) if user.is_authenticated(): if not user.profile.is_superuser: items = items.distinct() if tags: # tags is a comma delimited list # this is fast; but has one hole # it finds words inside of other words # e.g. "prev" is within "prevent" tag_queries = [Q(tags__iexact=t.strip()) for t in tags] tag_queries += [Q(tags__istartswith=t.strip()+",") for t in tags] tag_queries += [Q(tags__iendswith=", "+t.strip()) for t in tags] tag_queries += [Q(tags__iendswith=","+t.strip()) for t in tags] tag_queries += [Q(tags__icontains=", "+t.strip()+",") for t in tags] tag_queries += [Q(tags__icontains=","+t.strip()+",") for t in tags] tag_query = reduce(or_, tag_queries) items = items.filter(tag_query) if group: items = items.filter(group=group) objects = [] # Removed seconds and microseconds so we can cache the query better now = datetime.now().replace(second=0, microsecond=0) # Custom filter for stories date_query = reduce(or_, [Q(end_dt__gte=now), Q(expires=False)]) date_query = reduce(and_, [Q(start_dt__lte=now), date_query]) items = items.filter(date_query) if order: items = items.order_by(order) else: items = items.order_by('-position', '-start_dt') # if order is not specified it sorts by relevance if randomize: objects = [item for item in random.sample(items, len(items))][:limit] else: objects = [item for item in items[:limit]] context[self.context_var] = objects return ""
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = u'' exclude = u'' randomize = False if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = unicode(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = tags.split(',') if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] if user == "anon" or user == "anonymous": user = AnonymousUser() else: # check the context for an already existing user # and see if it is really a user object if 'user' in context: if isinstance(context['user'], User): user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'exclude' in self.kwargs: try: exclude = Variable(self.kwargs['exclude']) exclude = unicode(tags.resolve(context)) except: exclude = self.kwargs['exclude'] exclude = exclude.replace('"', '') exclude = exclude.split(',') # get the list of items self.perms = getattr(self, 'perms', unicode()) filters = get_query_filters(user, self.perms) items = self.model.objects.filter(filters).distinct() if tags: # tags is a comma delimited list # this is fast; but has one hole # it finds words inside of other words # e.g. "event" is within "prevent" tag_queries = [Q(tags__icontains=t) for t in tags] tag_query = reduce(or_, tag_queries) items = items.filter(tag_query) objects = [] if items: #exclude certain primary keys if exclude: excludes = [] for ex in exclude: if ex.isdigit(): excludes.append(int(ex)) items = items.exclude(pk__in=excludes) # if order is not specified it sorts by relevance if order: items = items.order_by(order) if randomize: objects = [item for item in random.sample(items, len(items))][:limit] else: objects = [item for item in items[:limit]] context[self.context_var] = objects if 'template' in self.kwargs: try: template = Variable(self.kwargs['template']) template = unicode(template.resolve(context)) except: template = self.kwargs['template'] t = loader.get_template(template) return t.render(Context(context, autoescape=context.autoescape)) return ""
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = 'next_upcoming' event_type = '' randomize = False if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = unicode(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = tags.split(',') if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] if user == "anon" or user == "anonymous": user = AnonymousUser() else: # check the context for an already existing user # and see if it is really a user object if 'user' in context: if isinstance(context['user'], User): user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'type' in self.kwargs: try: event_type = Variable(self.kwargs['type']) event_type = event_type.resolve(context) except: event_type = self.kwargs['type'] filters = get_query_filters(user, 'events.view_event') items = Event.objects.filter(filters) if user.is_authenticated(): if not user.profile.is_superuser: items = items.distinct() if event_type: items = items.filter(type__name__iexact=event_type) if tags: # tags is a comma delimited list # this is fast; but has one hole # it finds words inside of other words # e.g. "prev" is within "prevent" tag_queries = [Q(tags__iexact=t.strip()) for t in tags] tag_queries += [Q(tags__istartswith=t.strip() + ",") for t in tags] tag_queries += [Q(tags__iendswith=", " + t.strip()) for t in tags] tag_queries += [Q(tags__iendswith="," + t.strip()) for t in tags] tag_queries += [ Q(tags__icontains=", " + t.strip() + ",") for t in tags ] tag_queries += [ Q(tags__icontains="," + t.strip() + ",") for t in tags ] tag_query = reduce(or_, tag_queries) items = items.filter(tag_query) objects = [] # if order is not specified it sorts by relevance if order: if order == "next_upcoming": # Removed seconds and microseconds so we can cache the query better now = datetime.now().replace(second=0, microsecond=0) items = items.filter(start_dt__gt=now) items = items.order_by("start_dt") elif order == "current_and_upcoming": now = datetime.now().replace(second=0, microsecond=0) items = items.filter(Q(start_dt__gt=now) | Q(end_dt__gt=now)) items = items.order_by("start_dt") else: items = items.order_by(order) if randomize: objects = [item for item in random.sample(items, items.count())][:limit] else: objects = [item for item in items[:limit]] context[self.context_var] = objects return ""
def render(self, context): tags = u'' query = u'' user = AnonymousUser() limit = 3 order = 'next_upcoming' event_type = '' randomize = False if 'random' in self.kwargs: randomize = bool(self.kwargs['random']) if 'tags' in self.kwargs: try: tags = Variable(self.kwargs['tags']) tags = unicode(tags.resolve(context)) except: tags = self.kwargs['tags'] tags = tags.replace('"', '') tags = tags.split(',') if 'user' in self.kwargs: try: user = Variable(self.kwargs['user']) user = user.resolve(context) except: user = self.kwargs['user'] if user == "anon" or user == "anonymous": user = AnonymousUser() else: # check the context for an already existing user # and see if it is really a user object if 'user' in context: if isinstance(context['user'], User): user = context['user'] if 'limit' in self.kwargs: try: limit = Variable(self.kwargs['limit']) limit = limit.resolve(context) except: limit = self.kwargs['limit'] limit = int(limit) if 'query' in self.kwargs: try: query = Variable(self.kwargs['query']) query = query.resolve(context) except: query = self.kwargs['query'] # context string if 'order' in self.kwargs: try: order = Variable(self.kwargs['order']) order = order.resolve(context) except: order = self.kwargs['order'] if 'type' in self.kwargs: try: event_type = Variable(self.kwargs['type']) event_type = event_type.resolve(context) except: event_type = self.kwargs['type'] # process tags for tag in tags: tag = tag.strip() query = '%s "tag:%s"' % (query, tag) filters = get_query_filters(user, 'events.view_event') items = Event.objects.filter(filters).distinct() if event_type: items = items.filter(type__name__iexact=event_type) objects = [] # if order is not specified it sorts by relevance if order: if order == "next_upcoming": # Removed seconds so we can cache the query better now = datetime.now().replace(second=0) items = items.filter(start_dt__gt = now) items = items.order_by("start_dt") else: items = items.order_by(order) if items: if randomize: objects = [item for item in random.sample(items, items.count())][:limit] else: objects = [item for item in items[:limit]] context[self.context_var] = objects return ""