Example #1
0
def category(request, template_name="projects/category.html"):
    query = request.GET.get('q', None)

    if get_setting('site', 'global', 'searchindex') and query:
        projects = Project.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user, 'projects.search')
        projects = Project.objects.filter(filters).distinct()

    categories = Category.objects.all()
    category_id = request.GET.get('category', None)

    if category_id:
        try:
            category = Category.objects.get(pk=category_id)
        except:
            category = None

        if category:
            projects = projects.filter(category=category)

    log_defaults = {
        'event_id' : 1180400,
        'event_data': '%s searched by %s' % ('Project', request.user),
        'description': '%s searched' % 'Project',
        'user': request.user,
        'request': request,
        'source': 'projects'
    }

    EventLog.objects.log(**log_defaults)

    return render_to_response(template_name, {'projects':projects, 'categories': categories
        },
        context_instance=RequestContext(request))
Example #2
0
    def __init__(self, *args, **kwargs):
        super(FileForm, self).__init__(*args, **kwargs)
        default_groups = Group.objects.filter(status=True, status_detail="active")

        if args:
            post_data = args[0]
        else:
            post_data = None

        if self.user and not self.user.profile.is_superuser:
            filters = get_query_filters(self.user, 'user_groups.view_group', **{'perms_field': False})
            groups = default_groups.filter(filters).distinct()
            groups_list = list(groups.values_list('pk', 'name'))

            users_groups = self.user.profile.get_groups()
            for g in users_groups:
                if [g.id, g.name] not in groups_list:
                    groups_list.append([g.id, g.name])
        else:
            groups_list = default_groups.values_list('pk', 'name')

        self.fields['group'].choices = groups_list

        if self.instance and self.instance.pk:
            self.fields['file_sub_cat'].queryset = FilesCategory.objects.filter(
                                                        parent=self.instance.file_cat)

        if post_data:
            file_cat = post_data.get('file_cat', '0')
            if file_cat and file_cat != '0' and file_cat != u'':
                file_cat = FilesCategory.objects.get(pk=int(file_cat))
                self.fields['file_sub_cat'].queryset = FilesCategory.objects.filter(parent=file_cat)
        if 'file' in self.fields:
            self.fields['file'].validators = [FileValidator()]
Example #3
0
    def __init__(self, *args, **kwargs):
        super(ArticleForm, self).__init__(*args, **kwargs)
        if self.instance.pk:
            self.fields['body'].widget.mce_attrs['app_instance_id'] = self.instance.pk
        else:
            self.fields['body'].widget.mce_attrs['app_instance_id'] = 0
            self.fields['group'].initial = Group.objects.get_initial_group_id()
        default_groups = Group.objects.filter(status=True, status_detail="active")

        if self.user and not self.user.profile.is_superuser:
            if 'status_detail' in self.fields:
                self.fields.pop('status_detail')

            filters = get_query_filters(self.user, 'user_groups.view_group', **{'perms_field': False})
            groups = default_groups.filter(filters).distinct()
            groups_list = list(groups.values_list('pk', 'name'))

            users_groups = self.user.profile.get_groups()
            for g in users_groups:
                if [g.id, g.name] not in groups_list:
                    groups_list.append([g.id, g.name])
        else:
            groups_list = default_groups.values_list('pk', 'name')

        self.fields['group'].choices = groups_list
        self.fields['google_profile'].help_text = mark_safe(GOOGLE_PLUS_HELP_TEXT)
        self.fields['timezone'].initial = settings.TIME_ZONE
Example #4
0
    def filter_categories(self, user, qs):
        """ return a queryset with categories `user` is allowed to see """
        if not user.is_staff:
            filters = get_query_filters(user, 'forums.view_category')
            qs = qs.filter(Q(hidden=False) & filters).distinct()

        return qs
Example #5
0
def detail(request, slug, template_name="committees/detail.html"):
    committee = get_object_or_404(Committee, slug=slug)

    if has_perm(request.user, 'committees.view_committee', committee):
        EventLog.objects.log(instance=committee)
        officers = committee.officers()

        #has_group_view_permission is True if there is at least one
        #group where the user is a member that has a view_committee permission.
        has_group_view_permission = False
        #Check user for group view permissions
        if request.user.is_authenticated():
            groups = request.user.group_set.all()
            perms = has_groups_perms(committee).filter(group__in=groups)
            for perm in perms:
                #Check if permission has view committee permission
                has_group_view_permission |= perm.codename == 'view_committee'
                if has_group_view_permission:
                    break

        filters = get_query_filters(request.user, 'files.view_file')
        files = File.objects.filter(filters).filter(group=committee.group).distinct()

        return render_to_response(template_name,
            {
                'committee': committee,
                'officers': officers,
                'files': files,
                'has_group_view_permission': has_group_view_permission,
            },
            context_instance=RequestContext(request))
    else:
        raise Http403
Example #6
0
    def __init__(self, *args, **kwargs):
        mts = kwargs.pop('mts')
        self.user = kwargs.pop('user')
        super(ProfileSearchForm, self).__init__(*args, **kwargs)
        self.fields['first_name'].widget.attrs.update({'placeholder': _('Exact Match Search')})
        self.fields['last_name'].widget.attrs.update({'placeholder': _('Exact Match Search')})
        self.fields['email'].widget.attrs.update({'placeholder': _('Exact Match Search')})

        if not mts:
            del self.fields['membership_type']
            del self.fields['member_only']
        else:
            choices = [(0, _('SELECT ONE'))]
            choices += [(mt.id, mt.name) for mt in mts]
            self.fields['membership_type'].widget = forms.widgets.Select(
                                    choices=choices)
            
        # group choices
        filters = get_query_filters(self.user, 'user_groups.view_group', **{'perms_field': False})
        group_choices = [(0, _('SELECT ONE'))] + list(Group.objects.filter(
                            status=True, status_detail="active"
                             ).filter(filters).distinct().order_by('name'
                            ).values_list('pk', 'name'))
        self.fields['group'].widget = forms.widgets.Select(
                                    choices=group_choices)
Example #7
0
def navigation(context, nav_id):
    """
    Renders the nav and its nav items.
    This will call nav_item that will call itself recursively nesting
    the subnavs
    """
    user = AnonymousUser()

    if 'user' in context:
        if isinstance(context['user'], User):
            user = context['user']

    try:
        nav_id = Variable(nav_id)
        nav_id = nav_id.resolve(context)
    except:
        pass

    try:
        filters = get_query_filters(user, 'navs.view_nav')
        navs = Nav.objects.filter(filters).filter(id=nav_id)
        if user.is_authenticated():
            if not user.profile.is_superuser:
                navs = navs.distinct()
        nav = navs[0]
    except:
        return None
    context.update({
        "nav": nav,
        "items": nav.top_items,
    })
    return context
Example #8
0
    def render(self, context):
        user = AnonymousUser()

        if 'user' in context:
            if isinstance(context['user'], User):
                user = context['user']

        try:
            pk = Variable(self.pk)
            pk = pk.resolve(context)
        except:
            pk = self.pk

        try:
            filters = get_query_filters(user, 'navs.view_nav')
            nav = Nav.objects.filter(filters).filter(pk=pk)
            if user.is_authenticated():
                if not user.profile.is_superuser:
                    nav = nav.distinct()

            context[self.context_var] = nav[0]
        except:
            pass

        return unicode()
Example #9
0
    def __init__(self, *args, **kwargs):
        super(StoryForm, self).__init__(*args, **kwargs)
        if self.instance.image:
            self.fields["photo_upload"].help_text = (
                '<input name="remove_photo" id="id_remove_photo" type="checkbox"/> Remove current image: <a target="_blank" href="/files/%s/">%s</a>'
                % (self.instance.image.pk, basename(self.instance.image.file.name))
            )
        else:
            self.fields.pop("remove_photo")

        default_groups = Group.objects.filter(status=True, status_detail="active")

        if self.user and not self.user.profile.is_superuser:
            if "status_detail" in self.fields:
                self.fields.pop("status_detail")

            filters = get_query_filters(self.user, "user_groups.view_group", **{"perms_field": False})
            groups = default_groups.filter(filters).distinct()
            groups_list = list(groups.values_list("pk", "name"))

            users_groups = self.user.profile.get_groups()
            for g in users_groups:
                if [g.id, g.name] not in groups_list:
                    groups_list.append([g.id, g.name])
        else:
            groups_list = default_groups.values_list("pk", "name")

        self.fields["group"].choices = groups_list
Example #10
0
def search(request, template_name="user_groups/search.html"):
    """
    This page lists out all user groups.  If a search index
    is available, this page also allows you to search through
    user groups.
    """
    query = request.GET.get('q', None)
    form = GroupSearchForm(request.GET)
    cat = None

    filters = get_query_filters(request.user, 'groups.view_group', perms_field=False)
    groups = Group.objects.filter(filters).distinct()

    if request.user.is_authenticated():
        groups = groups.select_related()

    if form.is_valid():
        cat = form.cleaned_data['search_category']

        if query and cat:
            groups = groups.filter(**{cat: query} )

    groups = groups.order_by('slug')

    EventLog.objects.log()

    return render_to_response(template_name, {'groups':groups, 'form': form},
        context_instance=RequestContext(request))
Example #11
0
    def render(self, context):
        user = AnonymousUser()

        if 'user' in context:
            if isinstance(context['user'], User):
                user = context['user']

        try:
            pk = Variable(self.pk)
            pk = pk.resolve(context)
        except:
            pk = self.pk

        try:
            filters = get_query_filters(user, 'boxes.view_box')
            box = Box.objects.filter(filters).filter(pk=pk)
            if user.is_authenticated():
                if not user.profile.is_superuser:
                    box = box.distinct()
            context['box'] = box[0]
            template = get_template('boxes/edit-link.html')
            output = '<div id="box-%s" class="boxes">%s %s</div>' % (
                box[0].pk,
                box[0].content,
                template.render(context),
            )
            return output
        except:
            return unicode()
Example #12
0
def search(request, template_name="news/search.html"):
    query = request.GET.get('q', None)
    form = NewsSearchForm(request.GET)

    if form.is_valid():
        try:
            news_group = int(form.cleaned_data.get('news_group', None))
        except:
            news_group = None

        if get_setting('site', 'global', 'searchindex') and query:
            news = News.objects.search(query, user=request.user)
            # use order (existing for all modules) for sorting cause the current
            # haystack + whoosh cannot sort by release_dt correctly
            news = news.order_by('-order')
        else:
            filters = get_query_filters(request.user, 'news.view_news')
            news = News.objects.filter(filters).distinct()
            news = news.order_by('-release_dt')
        if news_group:
            news = news.filter(groups__in=[news_group])
    
        if not has_perm(request.user, 'news.view_news'):
            news = news.filter(release_dt_local__lte=datetime.now())

    EventLog.objects.log()

    return render_to_response(template_name, {'search_news': news,
                                              'form': form},
        context_instance=RequestContext(request))
Example #13
0
    def __init__(self, *args, **kwargs):
        if 'user' in kwargs:
            self.user = kwargs.pop('user', None)
        else:
            self.user = None

        data = args[0] if args else kwargs['data'] if 'data' in kwargs else None
        category = data['file_cat'] if data and 'file_cat' in data else None

        super(FileSearchForm, self).__init__(*args, **kwargs)

        user = self.user or AnonymousUser()
        filters = get_query_filters(user, 'user_groups.view_group', **{'perms_field': False})
        groups = Group.objects.filter(filters).distinct()
        groups_list = [[g.id, g.name] for g in groups]
        if user.is_authenticated:
            users_groups = self.user.profile.get_groups()
            for g in users_groups:
                if [g.id, g.name] not in groups_list:
                    groups_list.append([g.id, g.name])

        groups_list.insert(0, ['', '------------'])
        self.fields['group'].choices = tuple(groups_list)

        # Update categories and subcategories choices
        main_categories = FilesCategory.objects.filter(parent__isnull=True)
        self.fields['file_cat'].queryset = main_categories
        if category:
            sub_categories = FilesCategory.objects.filter(parent=category)
            self.fields['file_sub_cat'].empty_label = "-----------"
            self.fields['file_sub_cat'].queryset = sub_categories
Example #14
0
def nearest(request, template_name="locations/nearest.html"):
    locations = []
    lat, lng = None, None
    query = request.GET.get('q')
    filters = get_query_filters(request.user, 'locations.view_location')

    if query:
        lat, lng = get_coordinates(address=query)

    all_locations = Location.objects.filter(filters).distinct()
    if not request.user.is_anonymous:
        all_locations = all_locations.select_related()

    if all((lat,lng)):
        for location in all_locations:
            location.distance = location.get_distance2(lat, lng)
            if location.distance is not None:
                locations.append(location)
            locations.sort(key=lambda x: x.distance)

    EventLog.objects.log()

    return render_to_resp(request=request, template_name=template_name, context={
        'locations':locations,
        'origin': {'lat':lat,'lng':lng},
        })
Example #15
0
    def __init__(self, *args, **kwargs):
        super(NewsForm, self).__init__(*args, **kwargs)
        if self.instance.pk:
            self.fields['body'].widget.mce_attrs['app_instance_id'] = self.instance.pk
        else:
            self.fields['body'].widget.mce_attrs['app_instance_id'] = 0
            self.fields['group'].initial = Group.objects.get_initial_group_id()

        default_groups = Group.objects.filter(status=True, status_detail="active")

        #if not self.user.profile.is_superuser:
        if self.user and not self.user.profile.is_superuser:
            if 'status_detail' in self.fields:
                self.fields.pop('status_detail')

            filters = get_query_filters(self.user, 'user_groups.view_group', **{'perms_field': False})
            groups = default_groups.filter(filters).distinct()
            groups_list = list(groups.values_list('pk', 'name'))

            users_groups = self.user.profile.get_groups()
            for g in users_groups:
                if [g.id, g.name] not in groups_list:
                    groups_list.append([g.id, g.name])
        else:
            groups_list = default_groups.values_list('pk', 'name')

        self.fields['group'].choices = groups_list
        self.fields['google_profile'].help_text = mark_safe(GOOGLE_PLUS_HELP_TEXT)
        self.fields['timezone'].initial = settings.TIME_ZONE

        # only show the remove photo checkbox if there is already a thumbnail
        if self.instance.thumbnail:
            self.fields['photo_upload'].help_text = '<input name="remove_photo" id="id_remove_photo" type="checkbox"/> Remove current image: <a target="_blank" href="/files/%s/">%s</a>' % (self.instance.thumbnail.pk, basename(self.instance.thumbnail.file.name))
        else:
            self.fields.pop('remove_photo')
Example #16
0
def tinymce_fb(request, template_name="files/templates/tinymce_fb.html"):
    """
    Get a list of files (images) for tinymce file browser.
    """
    query = u''
    try:
        page_num = int(request.GET.get('page', 1))
    except:
        page_num = 1

    form = FileSearchMinForm(request.GET)
    if form.is_valid():
        query = form.cleaned_data.get('q', '')
    filters = get_query_filters(request.user, 'files.view_file')
    files = File.objects.filter(filters).distinct().order_by('-create_dt')
    type = request.GET.get('type', '')
    if type == 'image':
        files = files.filter(f_type='image')
    elif type == 'media':
        files = files.filter(f_type='video')
    if query:
        files = files.filter(Q(file__icontains=query)|
                             Q(name__icontains=query))
    paginator = Paginator(files, 10)
    files = paginator.page(page_num)

    return render_to_response(
        template_name, {
            "files": files,
            'page_num': page_num,
            'page_range': paginator.page_range,
            'csrf_token': csrf_get_token(request),
            'can_upload_file': has_perm(request.user, 'files.add_file')
        }, context_instance=RequestContext(request))
Example #17
0
def search(request, template_name="resumes/search.html"):
    """
    This page lists out all resumes from newest to oldest.
    If a search index is available, this page will also
    have the option to search through resumes.
    """
    has_index = get_setting('site', 'global', 'searchindex')
    query = request.GET.get('q', None)

    if has_index and query:
        resumes = Resume.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user, 'resumes.view_resume')
        resumes = Resume.objects.filter(filters).distinct()
        if request.user.is_authenticated():
            resumes = resumes.select_related()
    resumes = resumes.order_by('-create_dt')

    EventLog.objects.log(**{
        'event_id' : 354000,
        'event_data': '%s searched by %s' % ('Resume', request.user),
        'description': '%s searched' % 'Resume',
        'user': request.user,
        'request': request,
        'source': 'resumes'
    })

    return render_to_response(template_name, {'resumes':resumes},
        context_instance=RequestContext(request))
Example #18
0
    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user', None)
        super(NewsSearchForm, self).__init__(*args, **kwargs)

        group_filters = get_query_filters(user, 'groups.view_group', perms_field=False)
        group_choices = Group.objects.filter(group_filters).distinct(
                                        ).order_by('name').values_list('id', 'name')
        self.fields['news_group'].choices = [('','All')] + list(group_choices)
Example #19
0
def search(request, template_name="entities/search.html"):
    filters = get_query_filters(request.user, 'entities.view_entity')
    entities = Entity.objects.filter(filters).distinct()

    EventLog.objects.log()

    return render_to_resp(request=request, template_name=template_name,
        context={'entities':entities})
Example #20
0
def search(request, template_name="entities/search.html"):
    filters = get_query_filters(request.user, 'entities.view_entity')
    entities = Entity.objects.filter(filters).distinct()

    EventLog.objects.log()

    return render_to_response(template_name, {'entities':entities},
        context_instance=RequestContext(request))
Example #21
0
    def render(self, context):

        request = context.get('request', None)

        # make sure data in query and cat are valid
        form = EventSimpleSearchForm(request.GET)
        if form.is_valid():
            cat = form.cleaned_data.get('search_category', None)
            query = form.cleaned_data.get('q', None)
        else:
            cat = None
            query = ''

        day = self.day.resolve(context)
        type_slug = self.type_slug.resolve(context)

        types = Type.objects.filter(slug=type_slug)

        type = None
        if types:
            type = types[0]

        day = datetime(day.year, day.month, day.day)
        weekday = day.strftime('%a')

        #one day offset so we can get all the events on that day
        bound = timedelta(hours=23, minutes=59)

        start_dt = day+bound
        end_dt = day

        filters = get_query_filters(context['user'], 'events.view_event')
        events = Event.objects.filter(filters).filter(start_dt__lte=start_dt, end_dt__gte=end_dt).distinct().extra(select={'hour': 'extract( hour from start_dt )'}).extra(select={'minute': 'extract( minute from start_dt )'})
        events = events.filter(enable_private_slug=False)

        if type:
            events = events.filter(type=type)

        if weekday == 'Sun' or weekday == 'Sat':
            events = events.filter(on_weekend=True)

        if self.ordering == "single_day":
            events = events.order_by('-priority', 'hour', 'minute')
        else:
            if self.ordering:
                events = events.order_by(self.ordering)
            else:
                events = events.order_by('-priority', 'start_dt')

        if cat == 'priority':
            events = events.filter(**{cat : True })
        elif query and cat:
            events = events.filter(**{cat : query})

        context[self.context_var] = events
        return ''
Example #22
0
def search(request, template_name="directories/search.html"):
    filters = get_query_filters(request.user, 'directories.view_directory')
    directories = Directory.objects.filter(filters).distinct()
    cat = None
    category = None
    sub_category = None

    if not request.user.is_anonymous():
        directories = directories.select_related()

    query = request.GET.get('q', None)
    # Handle legacy tag links
    if query and "tag:" in query:
        return HttpResponseRedirect("%s?q=%s&search_category=tags__icontains" %(reverse('directories'), query.replace('tag:', '')))

    form = DirectorySearchForm(request.GET, is_superuser=request.user.is_superuser)

    if form.is_valid():
        cat = form.cleaned_data['search_category']
        category = form.cleaned_data['category']
        sub_category = form.cleaned_data['sub_category']
        search_method = form.cleaned_data['search_method']

        if query and cat:
            search_type = '__iexact'
            if search_method == 'starts_with':
                search_type = '__istartswith'
            elif search_method == 'contains':
                search_type = '__icontains'

            search_filter = {'%s%s' % (cat, search_type): query}
            directories = directories.filter( **search_filter)

    if category:
        directories = directories.filter(categories__category__id=category)
    if sub_category:
        directories = directories.filter(categories__parent__id=sub_category)

    directories = directories.order_by('headline')

    EventLog.objects.log()

    try:
        category = int(category)
    except:
        category = 0
    categories, sub_categories = Directory.objects.get_categories(category=category)

    return render_to_response(template_name,
        {'directories': directories,
        'categories': categories,
        'form' : form,
        'sub_categories': sub_categories,
        'a_to_z': string.lowercase[:26]},
        context_instance=RequestContext(request))
Example #23
0
def emergency_announcement(context, user):

    filters = get_query_filters(user, 'announcements.view_emergencyannouncement')
    announcements = EmergencyAnnouncement.objects.filter(filters).distinct()
    announcements = announcements.filter(enabled=True).order_by('-create_dt')

    context.update({
        "user": user,
        "announcements": announcements
    })
    return context
Example #24
0
def topic(request, id, template_name="help_files/topic.html"):
    """ List of topic help files """
    topic = get_object_or_404(Topic, pk=id)

    filters = get_query_filters(request.user, 'help_files.view_helpfile')
    help_files = HelpFile.objects.filter(filters).filter(topics__in=[topic.pk]).distinct()
    if not request.user.is_anonymous:
        help_files = help_files.select_related()

    EventLog.objects.log(instance=topic)

    return render_to_resp(request=request, template_name=template_name,
        context={'topic':topic, 'help_files':help_files})
Example #25
0
def search(request, template_name="committees/search.html"):
    query = request.GET.get('q', None)
    if query:
        committees = Committee.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user, 'committees.view_committee')
        committees = Committee.objects.filter(filters).distinct()

    committees = committees.order_by('-create_dt')

    EventLog.objects.log()

    return render_to_response(template_name, {'committees': committees},
        context_instance=RequestContext(request))
Example #26
0
def search(request, template_name="studygroups/search.html"):
    query = request.GET.get('q', None)
    if query:
        studygroups = StudyGroup.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user, 'studygroups.view_studygroup')
        studygroups = StudyGroup.objects.filter(filters).distinct()

    studygroups = studygroups.order_by('-create_dt')

    EventLog.objects.log()

    return render_to_response(template_name, {'studygroups': studygroups},
        context_instance=RequestContext(request))
Example #27
0
def search(request, template_name="files/search.html"):
    """
    This page lists out all files from newest to oldest.
    If a search index is available, this page will also
    have the option to search through files.
    """
    query = u''
    category = None
    sub_category = None
    group = None

    form = FileSearchForm(request.GET, **{'user': request.user})

    if form.is_valid():
        query = form.cleaned_data.get('q', '')
        category = form.cleaned_data.get('file_cat', None)
        sub_category = form.cleaned_data.get('file_sub_cat', None)
        group = form.cleaned_data.get('group', None)

    filters = get_query_filters(request.user, 'files.view_file')
    files = File.objects.filter(filters).distinct()
    if query:
        files = files.filter(Q(file__icontains=query)|
                             Q(name__icontains=query)|
                             Q(description__icontains=query)|
                             Q(tags__icontains=query))
    if category:
        files = files.filter(file_cat=category)
    if sub_category:
        files = files.filter(file_sub_cat=sub_category)
    if group:
        files = files.filter(group_id=group)

    files = files.order_by('-update_dt')

    EventLog.objects.log()

    layout = get_setting("module", "files", "layout")
    base_template_path = "files/base.html"
    if layout == 'grid':
        base_template_path = "base-wide.html"

    return render_to_response(
        template_name, {
            'files': files,
            'form': form,
            'layout': layout,
            'base_template_path': base_template_path,
        }, context_instance=RequestContext(request))
Example #28
0
def search(request, template_name="discounts/search.html"):
    if not has_perm(request.user, 'discounts.view_discount'):
        raise Http403

    filters = get_query_filters(request.user, 'discounts.view_discount')
    discounts = Discount.objects.filter(filters).distinct()
    query = request.GET.get('q', None)
    if query:
        discounts = discounts.filter(discount_code__icontains=query)

    EventLog.objects.log()

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={'discounts': discounts})
Example #29
0
def group_choices(user):
    """
    returns a list of (group.pk, group.label) for groups viewable
    for the given user.
    """

    filters = get_query_filters(user, 'groups.view_group', perms_field=False)
    groups = Group.objects.filter(filters).exclude(type="membership").distinct()

    if not user.profile.is_superuser:
        groups = groups.exclude(allow_self_add=False)

    choices = [(group.pk, "%s (%s)" % (group.label, group.name)) for group in groups]

    return choices
Example #30
0
def search(request, template_name="forms/search.html"):
    if not has_perm(request.user, "forms.view_form"):
        raise Http403

    filters = get_query_filters(request.user, "forms.view_form")
    forms = Form.objects.filter(filters).distinct()
    query = request.GET.get("q", None)
    if query:
        forms = forms.filter(Q(title__icontains=query) | Q(intro__icontains=query) | Q(response__icontains=query))

    forms = forms.order_by("-pk")

    EventLog.objects.log()

    return render_to_response(template_name, {"forms": forms}, context_instance=RequestContext(request))
Example #31
0
def search(request, template_name="studygroups/search.html"):
    query = request.GET.get('q', None)
    if query:
        studygroups = StudyGroup.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user,
                                    'studygroups.view_studygroup')
        studygroups = StudyGroup.objects.filter(filters).distinct()

    studygroups = studygroups.order_by('-create_dt')

    EventLog.objects.log()

    return render_to_response(template_name, {'studygroups': studygroups},
                              context_instance=RequestContext(request))
Example #32
0
def group_choices(user):
    """
    returns a list of (group.pk, group.label) for groups viewable
    for the given user.
    """

    filters = get_query_filters(user, 'groups.view_group', perms_field=False)
    groups = Group.objects.filter(filters).exclude(type="membership").distinct()

    if not user.profile.is_superuser:
        groups = groups.exclude(allow_self_add=False)

    choices = [(group.pk, "%s (%s)" % (group.label, group.name)) for group in groups]

    return choices
Example #33
0
def search(request, template_name="committees/search.html"):
    query = request.GET.get('q', None)
    if query:
        committees = Committee.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user, 'committees.view_committee')
        committees = Committee.objects.filter(filters).distinct()

    committees = committees.order_by('-create_dt')

    EventLog.objects.log()

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={'committees': committees})
Example #34
0
def search(request, template_name="pages/search.html"):
    """
    Search pages.
    """
    query = request.GET.get('q')

    filters = get_query_filters(request.user,
                                'pages.view_page',
                                association_id=get_association_id(request))
    pages = Page.objects.filter(filters).distinct()
    if query:
        if "category:" in query or "sub_category:" in query:
            # handle category and sub_category
            key, name = query.split(':', 1)
            categories = Category.objects.filter(name__iexact=name)
            if categories.exists():
                category = categories[0]
                if key == 'category':
                    page_ids = CategoryItem.objects.filter(
                        content_type_id=ContentType.objects.get_for_model(
                            Page),
                        category_id=category.id,
                        parent_id__isnull=True).values_list('object_id',
                                                            flat=True)
                else:
                    page_ids = CategoryItem.objects.filter(
                        content_type_id=ContentType.objects.get_for_model(
                            Page),
                        parent_id=category.id,
                        category_id__isnull=True).values_list('object_id',
                                                              flat=True)
                pages = pages.filter(id__in=page_ids)
            else:
                pages = Page.objects.none()

        else:
            pages = pages.filter(
                Q(title__icontains=query)
                | Q(content__icontains=query)
                | Q(slug__icontains=query))
            pages = pages.exclude(status_detail='archive')

    pages = pages.order_by('-create_dt')

    EventLog.objects.log()

    return render_to_response(template_name, {'pages': pages},
                              context_instance=RequestContext(request))
Example #35
0
def search(request, template_name="directories/search.html"):
    filters = get_query_filters(request.user, 'directories.view_directory')
    directories = Directory.objects.filter(filters).distinct()
    cat = None

    if not request.user.is_anonymous():
        directories = directories.select_related()

    query = request.GET.get('q', None)

    form = DirectorySearchForm(request.GET,
                               is_superuser=request.user.is_superuser)

    if form.is_valid():
        search_category = form.cleaned_data['search_category']
        query = form.cleaned_data.get('q')
        search_method = form.cleaned_data['search_method']
        cat = form.cleaned_data.get('cat')
        sub_cat = form.cleaned_data.get('sub_cat')

        if cat:
            directories = directories.filter(cat=cat)
        if sub_cat:
            directories = directories.filter(sub_cat=sub_cat)

        if query and 'tag:' in query:
            tag = query.strip('tag:')
            directories = directories.filter(tags__icontains=tag)
        elif query and search_category:
            search_type = '__iexact'
            if search_method == 'starts_with':
                search_type = '__istartswith'
            elif search_method == 'contains':
                search_type = '__icontains'

            search_filter = {'%s%s' % (search_category, search_type): query}
            directories = directories.filter(**search_filter)

    directories = directories.order_by('headline')

    EventLog.objects.log()

    return render_to_response(template_name, {
        'directories': directories,
        'form': form,
        'a_to_z': string.lowercase[:26]
    },
                              context_instance=RequestContext(request))
Example #36
0
def search(request, template_name="files/search.html"):
    """
    This page lists out all files from newest to oldest.
    If a search index is available, this page will also
    have the option to search through files.
    """
    query = u''
    category = None
    sub_category = None
    group = None

    form = FileSearchForm(request.GET, **{'user': request.user})

    if form.is_valid():
        query = form.cleaned_data.get('q', '')
        category = form.cleaned_data.get('file_cat', None)
        sub_category = form.cleaned_data.get('file_sub_cat', None)
        group = form.cleaned_data.get('group', None)

    filters = get_query_filters(request.user, 'files.view_file')
    files = File.objects.filter(filters).distinct()
    if query:
        files = files.filter(
            Q(file__icontains=query) | Q(name__icontains=query)
            | Q(description__icontains=query) | Q(tags__icontains=query))
    if category:
        files = files.filter(file_cat=category)
    if sub_category:
        files = files.filter(file_sub_cat=sub_category)
    if group:
        files = files.filter(group_id=group)

    files = files.order_by('-update_dt')

    EventLog.objects.log()

    layout = get_setting("module", "files", "layout")
    base_template_path = "files/base.html"
    if layout == 'grid':
        base_template_path = "base-wide.html"

    return render_to_response(template_name, {
        'files': files,
        'form': form,
        'layout': layout,
        'base_template_path': base_template_path,
    },
                              context_instance=RequestContext(request))
Example #37
0
def search(request, template_name="forms/search.html"):
    if not has_perm(request.user,'forms.view_form'):
        raise Http403

    filters = get_query_filters(request.user, 'forms.view_form')
    forms = Form.objects.filter(filters).distinct()
    query = request.GET.get('q', None)
    if query:
        forms = forms.filter(Q(title__icontains=query) | Q(intro__icontains=query) | Q(response__icontains=query))

    forms = forms.order_by('-pk')

    EventLog.objects.log()

    return render_to_resp(request=request, template_name=template_name,
        context={'forms':forms})
Example #38
0
    def __init__(self, *args, **kwargs):
        super(PhotoSetEditForm, self).__init__(*args, **kwargs)
        default_groups = Group.objects.filter(status=True, status_detail="active")

        if not self.user.profile.is_superuser:
            if 'status_detail' in self.fields:
                self.fields.pop('status_detail')

            if get_setting('module', 'user_groups', 'permrequiredingd') == 'change':
                filters = get_groups_query_filters(self.user,)
            else:
                filters = get_query_filters(self.user, 'user_groups.view_group', **{'perms_field': False})
            default_groups = default_groups.filter(filters).distinct()

        self.fields['group'].queryset = default_groups
        self.fields['group'].empty_label = None
Example #39
0
def search(request, template_name="help_files/search.html"):
    """ Help Files Search """
    query = request.GET.get('q', None)

    if get_setting('site', 'global', 'searchindex') and query:
        help_files = HelpFile.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user, 'help_files.view_helpfile')
        help_files = HelpFile.objects.filter(filters).distinct()
        if not request.user.is_anonymous():
            help_files = help_files.select_related()

    EventLog.objects.log()

    return render_to_response(template_name, {'help_files': help_files},
                              context_instance=RequestContext(request))
Example #40
0
def get_box_list(user):
    """
    Generate a list of 2-tuples of form id and form title
    This will be used as a special select
    """
    from tendenci.apps.boxes.models import Box
    from tendenci.apps.perms.utils import get_query_filters
    filters = get_query_filters(user, 'boxes.view_box')
    boxes = Box.objects.filter(filters)
    #To avoid hitting the database n time by calling .object
    #We will use the values in the index field.
    l = [('', 'None')]
    for box in boxes:
        l.append((box.pk, box.title))

    return l
Example #41
0
def search(request, template_name="forms/search.html"):
    if not has_perm(request.user,'forms.view_form'):
        raise Http403

    filters = get_query_filters(request.user, 'forms.view_form')
    forms = Form.objects.filter(filters).distinct()
    query = request.GET.get('q', None)
    if query:
        forms = forms.filter(Q(title__icontains=query) | Q(intro__icontains=query) | Q(response__icontains=query))

    forms = forms.order_by('-pk')

    EventLog.objects.log()

    return render_to_resp(request=request, template_name=template_name,
        context={'forms':forms})
Example #42
0
def get_form_list(user):
    """
    Generate a list of 2-tuples of form id and form title
    This will be used as a special select
    """
    from tendenci.apps.forms_builder.forms.models import Form
    from tendenci.apps.perms.utils import get_query_filters
    filters = get_query_filters(user, 'forms.view_form')
    forms = Form.objects.filter(filters)
    #To avoid hitting the database n time by calling .object
    #We will use the values in the index field.
    l = []
    for form in forms:
        l.append((form.pk, form.title))

    return l
Example #43
0
def search(request, template_name="jobs/search.html"):
    query = request.GET.get('q', None)
    my_pending_jobs = request.GET.get('my_pending_jobs', False)
    category = None
    subcategory = None
    use_search_index = get_setting('site', 'global', 'searchindex') and query

    if use_search_index:
        jobs = Job.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user, 'jobs.view_job')
        jobs = Job.objects.filter(filters).distinct()
        if not request.user.is_anonymous():
            jobs = jobs.select_related()

    form = JobSearchForm(request.GET)
    if form.is_valid():
        query = form.cleaned_data.get('q')
        category = form.cleaned_data.get('categories')
        subcategory = form.cleaned_data.get('subcategories')

    if category:
        jobs = jobs.filter(categories__category=category)
    if subcategory:
        jobs = jobs.filter(categories__parent=subcategory)

    # filter for "my pending jobs"
    if my_pending_jobs and not request.user.is_anonymous():
        template_name = "jobs/my_pending_jobs.html"
        jobs = jobs.filter(
            creator_username=request.user.username,
            status_detail__contains='pending'
        )
    
    if use_search_index:
        # reversing is an all-or-nothing action in Whoosh, unfortunately
        jobs = jobs.order_by('-status_detail', '-list_type', '-post_dt')
    else:
        jobs = jobs.order_by('status_detail', 'list_type', '-post_dt')

    EventLog.objects.log()

    return render_to_response(
        template_name,
        {'jobs': jobs, 'form': form},
        context_instance=RequestContext(request)
    )
Example #44
0
def nav(context, nav_id, show_title=False, is_site_map=False):

    """
    Renders the nav from cache
    if not will use the navigation tag for rendering the nav
    """
    user = AnonymousUser()
    association_id = get_association_id(context)
    if is_site_map == 'False':
        is_site_map = False

    if 'user' in context:
        if isinstance(context['user'], User):
            user = context['user']
            if hasattr(user, 'profile'):
                association_id = user.profile.current_association_id

    try:
        nav_id = Variable(nav_id)
        nav_id = nav_id.resolve(context)
    except:
        pass

    try:
        filters = get_query_filters(user, 'navs.view_nav', association_id=association_id)
        navs = Nav.objects.filter(filters)  #.filter(id=nav_id)
        if user.is_authenticated():
            if not user.profile.is_superuser:
                navs = navs.distinct()

        nav_object = None
        nav = None
        if navs and len(navs) > 0:
            nav_object = navs[0]
            if nav_object:
                nav = get_nav(nav_object.pk, is_site_map=is_site_map, association_id=association_id)
                if not nav:
                    nav = cache_nav(nav_object, show_title, is_site_map=is_site_map, association_id=association_id)
    except:
        return None

    context.update({
        "cached": nav,
        "nav_id": nav_id,
        "show_title": show_title,
    })
    return context
Example #45
0
def search(request, release_year=None, template_name="news/search.html"):
    query = request.GET.get('q', None)
    form = NewsSearchForm(request.GET, user=request.user)

    if form.is_valid():
        try:
            news_group = int(form.cleaned_data.get('news_group', None))
        except:
            news_group = None

        if get_setting('site', 'global', 'searchindex') and query:
            news = News.objects.search(query, user=request.user)
            # use order (existing for all modules) for sorting cause the current
            # haystack + whoosh cannot sort by release_dt correctly
            news = news.order_by('-order')
        else:
            filters = get_query_filters(
                request.user,
                'news.view_news',
                association_id=get_association_id_req(request))
            news = News.objects.filter(filters).distinct()
            news = news.order_by('-release_dt')
        if news_group:
            news = news.filter(groups__in=[news_group])

        if not has_perm(request.user, 'news.view_news'):
            news = news.filter(release_dt_local__lte=datetime.now())

    EventLog.objects.log()

    release_years = News.objects.datetimes('release_dt', 'year', order='DESC')
    release_years_list = [rel.year for rel in release_years]

    if release_year:
        release_year = int(release_year)
        if release_year < 1900:
            raise Http404
        news = news.filter(release_dt_local__year=release_year)

    return render_to_response(template_name, {
        'search_news': news,
        'form': form,
        'release_year': release_year,
        'release_years_list': release_years_list,
        'association_name': get_association_name(request)
    },
                              context_instance=RequestContext(request))
Example #46
0
def search(request, cat_slug=None, template_name="videos/list.html"):
    """
    This page lists out all videos. The order can be customized.
    If a search index is available, this page will also
    have the option to search through videos.
    """
    form = VideoSearchForm(request.GET)

    categories = Category.objects.all()
    video_types = VideoType.objects.all()

    filters = get_query_filters(request.user, 'videos.view_video')
    videos = Video.objects.filter(filters).distinct()
    if request.user.is_authenticated:
        videos = videos.select_related()

    if form.is_valid():
        query = form.cleaned_data['q']
        cat = form.cleaned_data['cat']
        vtype = form.cleaned_data['vtype']
        if query:
            videos = videos.filter(
                Q(title__icontains=query) | Q(description__icontains=query))
        if cat:
            categories = Category.objects.filter(slug=cat)
            category = None
            if categories:
                category = categories[0]
            if category:
                videos = videos.filter(category=category)
        if vtype:
            vtypes = VideoType.objects.filter(slug=vtype)
            video_type = None
            if vtypes:
                video_type = vtypes[0]
            if video_type:
                videos = videos.filter(video_type=video_type)
    if get_setting('module', 'videos', 'order_by_release_dt'):
        videos = videos.order_by('-release_dt')
    else:
        videos = videos.order_by('-position', '-create_dt')

    EventLog.objects.log()

    return render_to_resp(request=request,
                          template_name=template_name,
                          context=locals())
Example #47
0
    def __init__(self, *args, **kwargs):
        super(PhotoEditForm, self).__init__(*args, **kwargs)
        default_groups = Group.objects.filter(status=True, status_detail="active")

        if self.user and not self.user.profile.is_superuser:
            filters = get_query_filters(self.user, 'user_groups.view_group', **{'perms_field': False})
            groups = default_groups.filter(filters).distinct()
            groups_list = list(groups.values_list('pk', 'name'))

            users_groups = self.user.profile.get_groups()
            for g in users_groups:
                if [g.id, g.name] not in groups_list:
                    groups_list.append([g.id, g.name])
        else:
            groups_list = default_groups.values_list('pk', 'name')

        self.fields['group'].choices = groups_list
Example #48
0
def search(request, template_name="jobs/search.html"):
    query = request.GET.get('q', None)
    my_pending_jobs = request.GET.get('my_pending_jobs', False)

    filters = get_query_filters(request.user, 'jobs.view_job')
    jobs = Job.objects.filter(filters).distinct()
    if not request.user.is_anonymous:
        jobs = jobs.select_related()

    form = JobSearchForm(request.GET)
    if form.is_valid():
        query = form.cleaned_data.get('q')
        cat = form.cleaned_data.get('cat')
        sub_cat = form.cleaned_data.get('sub_cat')

        if cat:
            jobs = jobs.filter(cat=cat)
        if sub_cat:
            jobs = jobs.filter(sub_cat=sub_cat)
        if query:
            if 'tag:' in query:
                tag = query.strip('tag:')
                jobs = jobs.filter(tags__icontains=tag)
            else:
                jobs = jobs.filter(
                    Q(title__icontains=query)
                    | Q(description__icontains=query))
    else:
        jobs = Job.objects.none()

    # filter for "my pending jobs"
    if my_pending_jobs and not request.user.is_anonymous:
        template_name = "jobs/my_pending_jobs.html"
        jobs = jobs.filter(creator_username=request.user.username,
                           status_detail__contains='pending')

    jobs = jobs.order_by('list_type', '-post_dt', '-update_dt')

    EventLog.objects.log()

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={
                              'jobs': jobs,
                              'form': form
                          })
Example #49
0
    def __init__(self, *args, **kwargs):
        mts = kwargs.pop('mts')
        self.user = kwargs.pop('user')
        super(ProfileSearchForm, self).__init__(*args, **kwargs)
        self.fields['first_name'].widget.attrs.update(
            {'placeholder': _('Enter first name')})
        self.fields['last_name'].widget.attrs.update(
            {'placeholder': _('Enter last name')})
        self.fields['email'].widget.attrs.update(
            {'placeholder': _('Enter email')})

        if not mts:
            del self.fields['membership_type']
            del self.fields['member_only']
        else:
            choices = [(0, _('SELECT ONE'))]
            choices += [(mt.id, mt.name) for mt in mts]
            self.fields['membership_type'].widget = forms.widgets.Select(
                choices=choices)
            self.fields['membership_type'].widget.attrs.update(
                {'class': 'form-control'})

        # group choices
        filters = get_query_filters(self.user, 'user_groups.view_group',
                                    **{'perms_field': False})
        group_choices = [
            (0, _('SELECT ONE')), (-1, _('NONE - Not in any group!'))
        ] + list(
            Group.objects.filter(status=True, status_detail="active").filter(
                filters).distinct().order_by('name').values_list('pk', 'name'))
        self.fields['group'].widget = forms.widgets.Select(
            choices=group_choices)
        self.fields['group'].widget.attrs.update({'class': 'form-control'})
        # industry
        if get_setting('module', 'users', 'showindustry'):
            industry_choices = [(0, _('SELECT ONE'))] + list(
                Industry.objects.filter(
                    status=True, status_detail="active").order_by(
                        'position', '-update_dt').values_list(
                            'pk', 'industry_name'))
            self.fields['industry'].widget = forms.widgets.Select(
                choices=industry_choices)
            self.fields['industry'].widget.attrs.update(
                {'class': 'form-control'})
        else:
            del self.fields['industry']
Example #50
0
    def get_images(self, user=None, status=True, status_detail='active'):
        """
        Returns the images of this photosets and filters according
        to the given user's permissions.
        This makes use of the search index to avoid hitting the database.
        """
        # user information
        user = user or AnonymousUser()

        filters = get_query_filters(user, 'photos.view_image')

        photos = Image.objects.filter(filters).filter(photoset=self.pk)

        if user.is_authenticated:
            photos = photos.distinct()

        return photos
Example #51
0
def search(request, cat_slug=None, template_name="videos/list.html"):
    """
    This page lists out all videos. The order can be customized.
    If a search index is available, this page will also
    have the option to search through videos.
    """
    query = request.GET.get('q', None)

    categories = Category.objects.all()
    video_types = VideoType.objects.all()
    cat = request.GET.get('cat', cat_slug)
    vtype = request.GET.get('type', '')

    filters = get_query_filters(request.user, 'videos.view_video')
    videos = Video.objects.filter(filters).distinct()
    if request.user.is_authenticated():
        videos = videos.select_related()

    if query:
        videos = videos.filter(
            Q(title__icontains=query) | Q(description__icontains=query))
    if cat:
        categories = Category.objects.filter(slug=cat)
        category = None
        if categories:
            category = categories[0]
        if category:
            videos = videos.filter(category=category)
    if vtype:
        vtypes = VideoType.objects.filter(slug=vtype)
        video_type = None
        if vtypes:
            video_type = vtypes[0]
        if video_type:
            videos = videos.filter(video_type=video_type)
    if get_setting('module', 'videos', 'order_by_release_dt'):
        videos = videos.order_by('-release_dt')
    else:
        videos = videos.order_by('-position', '-create_dt')

    EventLog.objects.log()

    return render_to_response(template_name,
                              locals(),
                              context_instance=RequestContext(request))
Example #52
0
    def __init__(self, *args, **kwargs):
        super(NewsForm, self).__init__(*args, **kwargs)
        if self.instance.pk:
            self.fields['body'].widget.mce_attrs[
                'app_instance_id'] = self.instance.pk
        else:
            self.fields['body'].widget.mce_attrs['app_instance_id'] = 0
            self.fields['groups'].initial = [
                Group.objects.get_initial_group_id()
            ]

        default_groups = Group.objects.filter(status=True,
                                              status_detail="active")

        #if not self.user.profile.is_superuser:
        if not self.user.is_superuser:
            if 'status_detail' in self.fields:
                self.fields.pop('status_detail')

            filters = get_query_filters(self.user, 'user_groups.view_group',
                                        **{'perms_field': False})
            groups = default_groups.filter(filters).distinct()
            groups_list = list(groups.values_list('pk', 'name'))

            users_groups = self.user.profile.get_groups()
            for g in users_groups:
                if [g.id, g.name] not in groups_list:
                    groups_list.append([g.id, g.name])
        else:
            groups_list = default_groups.values_list('pk', 'name')

        self.fields['groups'].choices = groups_list
        self.fields['google_profile'].help_text = mark_safe(
            GOOGLE_PLUS_HELP_TEXT)
        self.fields['timezone'].initial = settings.TIME_ZONE

        # only show the remove photo checkbox if there is already a thumbnail
        if self.instance.thumbnail:
            self.fields[
                'photo_upload'].help_text = '<input name="remove_photo" id="id_remove_photo" type="checkbox"/> Remove current image: <a target="_blank" href="/files/%s/">%s</a>' % (
                    self.instance.thumbnail.pk,
                    basename(self.instance.thumbnail.file.name))
        else:
            self.fields.pop('remove_photo')
        self.fields['release_dt'].initial = datetime.now()
Example #53
0
def my_jobs(request, template_name="jobs/my_jobs.html"):
    query = request.GET.get('q', None)
    if not request.user.is_anonymous():
        if get_setting('site', 'global', 'searchindex') and query:
            jobs = Job.objects.search(query, user=request.user)
        else:
            filters = get_query_filters(request.user, 'jobs.view_job')
            jobs = Job.objects.filter(filters).distinct()
            jobs = jobs.select_related()
        jobs = jobs.order_by('status_detail', 'list_type', '-post_dt')
        jobs = jobs.filter(creator_username=request.user.username)

        EventLog.objects.log()

        return render_to_response(template_name, {'jobs': jobs},
                                  context_instance=RequestContext(request))
    else:
        return HttpResponseRedirect(reverse('jobs'))
Example #54
0
def search(request, template_name="case_studies/search.html"):
    query = request.GET.get('q', None)

    if get_setting('site', 'global', 'searchindex') and query:
        case_studies = CaseStudy.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user, 'case_studies.view_casestudy')
        case_studies = CaseStudy.objects.filter(filters).distinct()
        if not request.user.is_anonymous():
            case_studies = case_studies.select_related()
    case_studies = case_studies.order_by('-create_dt')
    services = Service.objects.all()
    technologies = Technology.objects.all()

    EventLog.objects.log()

    return render_to_response(template_name, {'case_studies': case_studies, 'services': services, 'technologies': technologies},
        context_instance=RequestContext(request))
Example #55
0
def topic(request, id, template_name="help_files/topic.html"):
    """ List of topic help files """
    topic = get_object_or_404(Topic, pk=id)

    filters = get_query_filters(request.user, 'help_files.view_helpfile')
    help_files = HelpFile.objects.filter(filters).filter(
        topics__in=[topic.pk]).distinct()
    if not request.user.is_anonymous:
        help_files = help_files.select_related()

    EventLog.objects.log(instance=topic)

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={
                              'topic': topic,
                              'help_files': help_files
                          })
Example #56
0
def search(request, template_name="photos/search.html"):
    """ Photos search """
    query = request.GET.get('q', None)
    filters = get_query_filters(request.user, 'photos.view_image')
    photos = Image.objects.filter(filters).distinct()
    if not request.user.is_anonymous():
        photos = photos.select_related()

    if query:
        photos = photos.filter(
            Q(title__icontains=query) | Q(caption__icontains=query)
            | Q(tags__icontains=query) | Q(license__name__icontains=query))

    photos = photos.order_by('-create_dt')

    EventLog.objects.log()

    return render_to_response(template_name, {"photos": photos},
                              context_instance=RequestContext(request))
Example #57
0
def search(request, template_name="contacts/search.html"):
    if request.user.is_anonymous():
        raise Http403
    if not has_perm(request.user, 'contacts.view_contact'):
        raise Http403

    query = request.GET.get('q', None)
    if get_setting('site', 'global', 'searchindex') and query:
        contacts = Contact.objects.search(query, user=request.user)
    else:
        filters = get_query_filters(request.user, 'contacts.view_contact')
        contacts = Contact.objects.filter(filters).distinct()
        if not request.user.is_anonymous():
            contacts = contacts.select_related()

    contacts = contacts.order_by('-create_dt')

    return render_to_response(template_name, {'contacts': contacts},
                              context_instance=RequestContext(request))
Example #58
0
    def render(self, context):
        context['setting_name'] = unicode(self.template).replace(
            'MODULE_THEME_', '').lower()
        try:
            setting_value = Variable(self.template).resolve(context)
        except VariableDoesNotExist:
            setting_value = None

        if setting_value:
            # First try to render this as a box
            user = AnonymousUser()
            if 'user' in context:
                if isinstance(context['user'], User):
                    user = context['user']
            try:
                # for performance reason, pass AnonymousUser() to reduce the joins of objectpermissions
                # in the meantime, we do want to show public items on homepage
                filters = get_query_filters(AnonymousUser(), 'boxes.view_box')
                box = Box.objects.filter(filters).filter(pk=setting_value)
                context['box'] = box[0]
                template = get_template('theme_includes/box.html')
                return template.render(context)
            except:
                # Otherwise try to render a template
                try:
                    template_name = os.path.join('theme_includes',
                                                 setting_value)
                    theme = context.get(
                        'THEME', get_setting('module', 'theme_editor',
                                             'theme'))
                    theme_template = get_theme_template(template_name,
                                                        theme=theme)
                    try:
                        t = get_template(theme_template)
                    except TemplateDoesNotExist:
                        t = get_default_template(template_name)
                    return t.render(context)
                except:
                    if settings.TEMPLATE_DEBUG:
                        raise
                    return ''
        else:
            return ''
Example #59
0
def photoset_view_latest(request, template_name="photos/photo-set/latest.html"):
    """ View latest photo set """
    query = request.GET.get('q', None)
    filters = get_query_filters(request.user, 'photos.view_photoset')
    photo_sets = PhotoSet.objects.filter(filters).distinct()
    if not request.user.is_anonymous():
        photo_sets = photo_sets.select_related()

    if query:
        photo_sets = photo_sets.filter(Q(name__icontains=query)|
                                       Q(description__icontains=query)|
                                       Q(tags__icontains=query))

    photo_sets = photo_sets.order_by('position', '-create_dt')

    EventLog.objects.log()

    return render_to_response(template_name, {"photo_sets": photo_sets},
        context_instance=RequestContext(request))
Example #60
0
def search(request, slug=None, template_name="staff/search.html"):
    """Staff plugin search list view"""
    if slug:
        department = get_object_or_404(Department, slug=slug)
    else:
        department = None

    query = request.GET.get('q')
    # department_id is legacy code that is still used by some sites
    department_id = request.GET.get('department', '')
    try:
        department_id = int(department_id)
    except:
        department_id = None

    filters = get_query_filters(request.user, 'staff.view_staff')
    staff = Staff.objects.filter(filters).distinct()
    if not request.user.is_anonymous:
        staff = staff.select_related()

    if query:
        staff = staff.filter(
            Q(name__icontains=query) | Q(department__name__icontains=query))

    if department:
        staff = staff.filter(department__id=department.id)
    else:
        if department_id:
            staff = staff.filter(department__id=department_id)
            [department
             ] = Department.objects.filter(id=department_id)[:1] or [None]

    staff = staff.order_by('-position', 'name', '-status', 'status_detail')

    EventLog.objects.log()

    return render_to_resp(request=request,
                          template_name=template_name,
                          context={
                              'staff_members': staff,
                              'department': department
                          })