예제 #1
0
    def read(self, request, user_name, pag=0, offset=0):

        user = user_authentication(request, user_name)
        isIE = is_ie(request)

        format = request.GET.get('format', 'default')
        orderby = request.GET.get('orderby', '-creation_date')
        scope = request.GET.get('scope', 'all')

        #paginate
        a = int(pag)
        b = int(offset)

        # Get all the gadgets in the catalogue
        gadgetlist = get_resources_that_must_be_shown(user,
                                                      isIE).order_by(orderby)
        gadgetlist = filter_gadgets_by_organization(user, gadgetlist,
                                                    user.groups.all(), scope)
        items = len(gadgetlist)

        if not (a == 0 or b == 0):
            # Get the requested gadgets
            c = ((a - 1) * b)
            d = (b * a)

            if a == 1:
                c = 0
            gadgetlist = gadgetlist[c:d]

        return get_resource_response(gadgetlist, format, items, user)
예제 #2
0
    def update(self, request, user_name, vendor, name, version):
        user = user_authentication(request, user_name)

        # Get the gadget data from the request
        preferred = PUT_parameter(request, 'preferred')

        if preferred != None:
            # Set all version of this gadget as no preferred
            old_preferred_versions = UserRelatedToGadgetResource.objects.filter(
                gadget__vendor=vendor, gadget__short_name=name, user=user, preferred_by=True)
            for old_version in old_preferred_versions:
                old_version.preferred_by = False
                old_version.save()

            new_preferred_versions = UserRelatedToGadgetResource.objects.filter(
                gadget__vendor=vendor, gadget__short_name=name, gadget__version=version, user=user)

            userRelated = None
            if len(new_preferred_versions) == 0:
                resource = get_object_or_404(GadgetResource, short_name=name,
                                             vendor=vendor, version=version)
                userRelated = UserRelatedToGadgetResource()
                userRelated.gadget = resource
                userRelated.user = user
                userRelated.added_by = False
            else:
                userRelated = new_preferred_versions[0]

            userRelated.preferred_by = True
            userRelated.save()

            resource = get_object_or_404(GadgetResource, short_name=name,
                                         vendor=vendor, version=version)

            return get_resource_response([resource], 'json', 1, user)
예제 #3
0
    def read(self, request, user_name, pag=0, offset=0):

        user = user_authentication(request, user_name)
        isIE = is_ie(request)

        format = request.GET.get('format', 'default')
        orderby = request.GET.get('orderby', '-creation_date')
        scope = request.GET.get('scope', 'all')

        #paginate
        a = int(pag)
        b = int(offset)

        # Get all the gadgets in the catalogue
        gadgetlist = get_resources_that_must_be_shown(user, isIE).order_by(orderby)
        gadgetlist = filter_gadgets_by_organization(user, gadgetlist, user.groups.all(), scope)
        items = len(gadgetlist)

        if not(a == 0 or b == 0):
        # Get the requested gadgets
            c = ((a - 1) * b)
            d = (b * a)

            if a == 1:
                c = 0
            gadgetlist = gadgetlist[c:d]

        return get_resource_response(gadgetlist, format, items, user)
예제 #4
0
    def read(self, request, user_name, criteria, pag=0, offset=0):

        user = user_authentication(request, user_name)

        orderby = request.GET.get('orderby', '-creation_date')
        format = request.GET.get('format', 'default')
        scope = request.GET.get('scope', 'all')

        if criteria == 'connectEventSlot':
            search_criteria = request.GET.getlist('search_criteria')
        else:
            search_criteria = request.GET.get('search_criteria')

        resources = CatalogueResource.objects.none()

        if criteria == 'and':
            filters = get_and_filter(search_criteria, user)
        elif criteria == 'or' or criteria == 'simple_or':
            filters = get_or_filter(search_criteria, user)
        elif criteria == 'not':
            filters = get_not_filter(search_criteria, user)
        elif criteria == 'event':
            filters = get_event_filter(search_criteria)
        elif criteria == 'slot':
            filters = get_slot_filter(search_criteria)
        elif criteria == 'tag':
            filters = get_tag_filter(search_criteria)
        elif criteria == 'connectSlot':
            # get all resource compatible with the given events
            search_criteria = search_criteria.split()
            for e in search_criteria:
                resources = CatalogueResource.objects.filter(
                    Q(gadgetwiring__friendcode=e),
                    Q(gadgetwiring__wiring='out'))

        elif criteria == 'connectEvent':
            # get all resource compatible with the given slots
            search_criteria = search_criteria.split()
            filters = Q()
            for e in search_criteria:
                filters = filters | Q(gadgetwiring__friendcode=e)
            filters = filters & Q(gadgetwiring__wiring='out')

        resources = CatalogueResource.objects.filter(filters)
        resources = filter_resources_by_scope(resources, scope)
        resources = resources.order_by(orderby)
        resources = group_resources(resources)
        resources = filter_resources_by_organization(user, resources, user.groups.all())

        items = len(resources)
        resources = get_paginatedlist(resources, pag, offset)

        return get_resource_response(resources, format, items, user)
예제 #5
0
    def update(self, request, user_name, vendor, name, version):
        user = user_authentication(request, user_name)

        # Get the gadget data from the request
        preferred = PUT_parameter(request, 'preferred')

        if preferred != None:
            # Set all version of this gadget as no preferred
            old_preferred_versions = UserRelatedToGadgetResource.objects.filter(
                gadget__vendor=vendor,
                gadget__short_name=name,
                user=user,
                preferred_by=True)
            for old_version in old_preferred_versions:
                old_version.preferred_by = False
                old_version.save()

            new_preferred_versions = UserRelatedToGadgetResource.objects.filter(
                gadget__vendor=vendor,
                gadget__short_name=name,
                gadget__version=version,
                user=user)

            userRelated = None
            if len(new_preferred_versions) == 0:
                resource = get_object_or_404(GadgetResource,
                                             short_name=name,
                                             vendor=vendor,
                                             version=version)
                userRelated = UserRelatedToGadgetResource()
                userRelated.gadget = resource
                userRelated.user = user
                userRelated.added_by = False
            else:
                userRelated = new_preferred_versions[0]

            userRelated.preferred_by = True
            userRelated.save()

            resource = get_object_or_404(GadgetResource,
                                         short_name=name,
                                         vendor=vendor,
                                         version=version)

            return get_resource_response([resource], 'json', 1, user)
예제 #6
0
    def read(self, request, user_name, pag=0, offset=0):

        user = user_authentication(request, user_name)

        format = request.GET.get('format', 'default')
        orderby = request.GET.get('orderby', '-creation_date')
        scope = request.GET.get('scope', 'all')

        # Get all resource in the catalogue
        resources = filter_resources_by_scope(CatalogueResource.objects.all(), scope)
        resources = resources.order_by(orderby)
        resources = group_resources(resources)
        resources = filter_resources_by_organization(user, resources, user.groups.all())
        items = len(resources)

        resources = get_paginatedlist(resources, int(pag), int(offset))

        return get_resource_response(resources, format, items, user)
예제 #7
0
    def read(self, request, user_name, pag=0, offset=0):

        user = user_authentication(request, user_name)

        orderby = request.GET.get('orderby', '-creation_date')
        format = request.GET.get('format', 'default')
        scope = request.GET.get('scope', 'all')
        search_criteria = request.GET.getlist('search_criteria')
        search_boolean = request.GET.get('search_boolean')

        if search_boolean == 'AND':
            join_filters = lambda x, y: x & y
        else:
            join_filters = lambda x, y: x | y

        filters = Q()
        if search_criteria[0] != "":
            filters = get_and_filter(search_criteria[0], user)
        if search_criteria[1] != "":
            filters = join_filters(filters, get_or_filter(search_criteria[1], user))
        if search_criteria[2] != "":
            filters = join_filters(filters, get_not_filter(search_criteria[2], user))
        if search_criteria[3] != "":
            filters = join_filters(filters, get_tag_filter(search_criteria[3]))
        if search_criteria[4] != "":
            filters = join_filters(filters, get_event_filter(search_criteria[4]))
        if search_criteria[5] != "":
            filters = join_filters(filters, get_slot_filter(search_criteria[5]))

        resources = CatalogueResource.objects.filter(filters)
        resources = filter_resources_by_scope(resources, scope).distinct()
        resources = resources.order_by(orderby)
        resources = group_resources(resources)
        resources = filter_resources_by_organization(user, resources, user.groups.all())
        items = len(resources)

        resources = get_paginatedlist(resources, pag, offset)

        return get_resource_response(resources, format, items, user)
예제 #8
0
    def read(self, request, user_name, pag=0, offset=0):

        user = user_authentication(request, user_name)
        isIE = is_ie(request)

        orderby = request.GET.get('orderby', '-creation_date')
        format = request.GET.get('format', 'default')
        scope = request.GET.get('scope', 'all')
        search_criteria = request.GET.getlist('search_criteria')
        search_boolean = request.GET.get('search_boolean')

        andlist = []
        orlist = []
        notlist = []
        taglist = []
        eventlist = []
        slotlist = []
        # This variable counts the number of criteria for the search
        # to be passed as a parameter to the function
        # get_uniquelist in order to get the gadgets that match the
        # number of criteria
        fields = 0

        if (search_criteria[0] != ""):
            andlist = get_and_list(search_criteria[0], user, isIE)
            fields = fields + 1
        if (search_criteria[1] != ""):
            orlist = get_or_list(search_criteria[1], user, isIE)
            fields = fields + 1
        if (search_criteria[2] != ""):
            notlist = get_not_list(search_criteria[2], user, isIE)
            fields = fields + 1
        if (search_criteria[3] != ""):
            #get all the gadgets that match any of the given tags
            criteria = search_criteria[3].split()
            for e in criteria:
                taglist += get_resources_that_must_be_shown(
                    user, isIE).filter(usertag__tag__name__icontains=e)
            taglist = get_uniquelist(taglist)
            fields = fields + 1
        if (search_criteria[4] != ""):
            #get all the gadgets that match any of the given events
            criteria = search_criteria[4].split()
            for e in criteria:
                eventlist += get_resources_that_must_be_shown(
                    user,
                    isIE).filter(Q(gadgetwiring__friendcode__icontains=e),
                                 Q(gadgetwiring__wiring='out'))
            eventlist = get_uniquelist(eventlist)
            fields = fields + 1
        if (search_criteria[5] != ""):
            #get all the gadgets that match any of the given slots
            criteria = search_criteria[5].split()
            for e in criteria:
                slotlist += get_resources_that_must_be_shown(
                    user,
                    isIE).filter(Q(gadgetwiring__friendcode__icontains=e),
                                 Q(gadgetwiring__wiring='in'))
            slotlist = get_uniquelist(slotlist)
            fields = fields + 1

        gadgetlist = andlist + orlist + notlist + taglist + eventlist + slotlist
        if search_boolean == "AND":
            gadgetlist = get_uniquelist(gadgetlist, fields)
        else:
            gadgetlist = get_uniquelist(gadgetlist)

        gadgetlist = filter_gadgets_by_organization(user, gadgetlist,
                                                    user.groups.all(), scope)
        items = len(gadgetlist)

        gadgetlist = get_sortedlist(gadgetlist, orderby)
        gadgetlist = get_paginatedlist(gadgetlist, pag, offset)

        return get_resource_response(gadgetlist, format, items, user)
예제 #9
0
    def read(self, request, user_name, criteria, pag=0, offset=0):

        user = user_authentication(request, user_name)
        isIE = is_ie(request)

        orderby = request.GET.get('orderby', '-creation_date')
        format = request.GET.get('format', 'default')
        scope = request.GET.get('scope', 'all')

        if criteria == 'connectEventSlot':
            search_criteria = request.GET.getlist('search_criteria')
        else:
            search_criteria = request.GET.get('search_criteria')

        gadgetlist = []

        if criteria == 'and':
            gadgetlist = get_and_list(search_criteria, user, isIE)
        elif (criteria == 'or' or criteria == 'simple_or'):
            gadgetlist = get_or_list(search_criteria, user, isIE)
        elif criteria == 'not':
            gadgetlist = get_not_list(search_criteria, user, isIE)
        elif criteria == 'event':
            #get all the gadgets that match any of the given events
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(
                    user,
                    isIE).filter(Q(gadgetwiring__friendcode__icontains=e),
                                 Q(gadgetwiring__wiring='out'))

        elif criteria == 'slot':
            #get all the gadgets that match any of the given slots
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(
                    user,
                    isIE).filter(Q(gadgetwiring__friendcode__icontains=e),
                                 Q(gadgetwiring__wiring='in'))

        elif criteria == 'tag':
            #get all the gadgets that match any of the given tags
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(
                    user, isIE).filter(usertag__tag__name__icontains=e)

        elif criteria == 'connectSlot':
            #get all the gadgets compatible with the given events
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(
                    user, isIE).filter(Q(gadgetwiring__friendcode=e),
                                       Q(gadgetwiring__wiring='out'))

        elif criteria == 'connectEvent':
            #get all the gadgets compatible with the given slots
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(
                    user, isIE).filter(Q(gadgetwiring__friendcode=e),
                                       Q(gadgetwiring__wiring='in'))

        elif criteria == 'connectEventSlot':
            #get all the gadgets compatible with the given slots
            search_criteria[0] = search_criteria[0].split()
            for e in search_criteria[0]:
                gadgetlist += get_resources_that_must_be_shown(
                    user, isIE).filter(Q(gadgetwiring__friendcode=e),
                                       Q(gadgetwiring__wiring='in'))
            #get all the gadgets compatible with the given events
            search_criteria[1] = search_criteria[1].split()
            for e in search_criteria[1]:
                gadgetlist += get_resources_that_must_be_shown(
                    user, isIE).filter(Q(gadgetwiring__friendcode=e),
                                       Q(gadgetwiring__wiring='out'))

        gadgetlist = get_uniquelist(gadgetlist)

        gadgetlist = filter_gadgets_by_organization(user, gadgetlist,
                                                    user.groups.all(), scope)

        items = len(gadgetlist)
        gadgetlist = get_sortedlist(gadgetlist, orderby)
        gadgetlist = get_paginatedlist(gadgetlist, pag, offset)

        return get_resource_response(gadgetlist, format, items, user)
예제 #10
0
    def read(self, request, user_name, pag=0, offset=0):

        user = user_authentication(request, user_name)
        isIE = is_ie(request)

        orderby = request.GET.get('orderby', '-creation_date')
        format = request.GET.get('format', 'default')
        scope = request.GET.get('scope', 'all')
        search_criteria = request.GET.getlist('search_criteria')
        search_boolean = request.GET.get('search_boolean')

        andlist = []
        orlist = []
        notlist = []
        taglist = []
        eventlist = []
        slotlist = []
        # This variable counts the number of criteria for the search
        # to be passed as a parameter to the function
        # get_uniquelist in order to get the gadgets that match the
        # number of criteria
        fields = 0

        if (search_criteria[0] != ""):
            andlist = get_and_list(search_criteria[0], user, isIE)
            fields = fields + 1
        if (search_criteria[1] != ""):
            orlist = get_or_list(search_criteria[1], user, isIE)
            fields = fields + 1
        if (search_criteria[2] != ""):
            notlist = get_not_list(search_criteria[2], user, isIE)
            fields = fields + 1
        if (search_criteria[3] != ""):
            #get all the gadgets that match any of the given tags
            criteria = search_criteria[3].split()
            for e in criteria:
                taglist += get_resources_that_must_be_shown(user, isIE).filter(
                    usertag__tag__name__icontains=e)
            taglist = get_uniquelist(taglist)
            fields = fields + 1
        if (search_criteria[4] != ""):
            #get all the gadgets that match any of the given events
            criteria = search_criteria[4].split()
            for e in criteria:
                eventlist += get_resources_that_must_be_shown(user, isIE).filter(
                    Q(gadgetwiring__friendcode__icontains=e),
                    Q(gadgetwiring__wiring='out'))
            eventlist = get_uniquelist(eventlist)
            fields = fields + 1
        if (search_criteria[5] != ""):
            #get all the gadgets that match any of the given slots
            criteria = search_criteria[5].split()
            for e in criteria:
                slotlist += get_resources_that_must_be_shown(user, isIE).filter(
                    Q(gadgetwiring__friendcode__icontains=e),
                    Q(gadgetwiring__wiring='in'))
            slotlist = get_uniquelist(slotlist)
            fields = fields + 1

        gadgetlist = andlist + orlist + notlist + taglist + eventlist + slotlist
        if search_boolean == "AND":
            gadgetlist = get_uniquelist(gadgetlist, fields)
        else:
            gadgetlist = get_uniquelist(gadgetlist)

        gadgetlist = filter_gadgets_by_organization(user, gadgetlist, user.groups.all(), scope)
        items = len(gadgetlist)

        gadgetlist = get_sortedlist(gadgetlist, orderby)
        gadgetlist = get_paginatedlist(gadgetlist, pag, offset)

        return get_resource_response(gadgetlist, format, items, user)
예제 #11
0
    def read(self, request, user_name, criteria, pag=0, offset=0):

        user = user_authentication(request, user_name)
        isIE = is_ie(request)

        orderby = request.GET.get('orderby', '-creation_date')
        format = request.GET.get('format', 'default')
        scope = request.GET.get('scope', 'all')

        if criteria == 'connectEventSlot':
            search_criteria = request.GET.getlist('search_criteria')
        else:
            search_criteria = request.GET.get('search_criteria')

        gadgetlist = []

        if criteria == 'and':
            gadgetlist = get_and_list(search_criteria, user, isIE)
        elif (criteria == 'or' or criteria == 'simple_or'):
            gadgetlist = get_or_list(search_criteria, user, isIE)
        elif criteria == 'not':
            gadgetlist = get_not_list(search_criteria, user, isIE)
        elif criteria == 'event':
            #get all the gadgets that match any of the given events
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(user, isIE).filter(
                    Q(gadgetwiring__friendcode__icontains=e),
                    Q(gadgetwiring__wiring='out'))

        elif criteria == 'slot':
            #get all the gadgets that match any of the given slots
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(user, isIE).filter(
                    Q(gadgetwiring__friendcode__icontains=e),
                    Q(gadgetwiring__wiring='in'))

        elif criteria == 'tag':
            #get all the gadgets that match any of the given tags
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(user, isIE).filter(
                    usertag__tag__name__icontains=e)

        elif criteria == 'connectSlot':
            #get all the gadgets compatible with the given events
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(user, isIE).filter(
                    Q(gadgetwiring__friendcode=e),
                    Q(gadgetwiring__wiring='out'))

        elif criteria == 'connectEvent':
            #get all the gadgets compatible with the given slots
            search_criteria = search_criteria.split()
            for e in search_criteria:
                gadgetlist += get_resources_that_must_be_shown(user, isIE).filter(
                    Q(gadgetwiring__friendcode=e),
                    Q(gadgetwiring__wiring='in'))

        elif criteria == 'connectEventSlot':
            #get all the gadgets compatible with the given slots
            search_criteria[0] = search_criteria[0].split()
            for e in search_criteria[0]:
                gadgetlist += get_resources_that_must_be_shown(user, isIE).filter(
                    Q(gadgetwiring__friendcode=e),
                    Q(gadgetwiring__wiring='in'))
            #get all the gadgets compatible with the given events
            search_criteria[1] = search_criteria[1].split()
            for e in search_criteria[1]:
                gadgetlist += get_resources_that_must_be_shown(user, isIE).filter(
                    Q(gadgetwiring__friendcode=e),
                    Q(gadgetwiring__wiring='out'))

        gadgetlist = get_uniquelist(gadgetlist)

        gadgetlist = filter_gadgets_by_organization(user, gadgetlist, user.groups.all(), scope)

        items = len(gadgetlist)
        gadgetlist = get_sortedlist(gadgetlist, orderby)
        gadgetlist = get_paginatedlist(gadgetlist, pag, offset)

        return get_resource_response(gadgetlist, format, items, user)