Example #1
0
 def list(self, request):
     self.check_permissions(request)
     paginator = PageNumberPagination()
     users = User.objects.all()
     paginator.paginate_queryset(users, request)
     serializer = UserSerializer(users, many=True)
     serializer_users = serializer.data
     return paginator.get_paginated_response(serializer_users)
Example #2
0
    def list(self, request):
        self.check_permissions(request)
        # Instanciar el paginador
        paginator = PageNumberPagination()
        users = User.objects.all()
        # Pagina el Queryset
        paginator.paginate_queryset(users, request)
        serializer = UserSerializer(users, many=True)
        serialized_users = serializer.data #Lista de diccionarios
        #renderer = JSONRenderer()
        #json_users = renderer.render(serialized_users) # Lista de diccionarios --> JSON

        # Devolver respuesta paginada
        return paginator.get_paginated_response(serialized_users)
Example #3
0
def other_location_events(request, employee_id):
    """
    Returns the full upcoming events list for employee location
    ---
    serializer: events.serializers.EventSerializer
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    """
    events = []
    if request.method == 'GET':
        employee = get_object_or_404(Employee, pk=employee_id)
        events_list = Event.objects.filter(is_active=True)

        for event in events_list:
            if event.location != employee.location:
                events.append(event)

        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(events, request)
        serializer = EventSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #4
0
def keyword_list(request):
    """
    Returns full keyword list ordered by name
    ---
    serializer: categories.serializers.KeywordSerializer
    parameters:
    - name: pagination
      required: false
      type: string
      paramType: query
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        keywords = get_list_or_404(Keyword, is_active=True)
        if request.GET.get('pagination'):
            pagination = request.GET.get('pagination')
            if pagination == 'true':
                paginator = PageNumberPagination()
                results = paginator.paginate_queryset(keywords, request)
                serializer = KeywordSerializer(results, many=True)
                return paginator.get_paginated_response(serializer.data)
            else:
                return Response(status=status.HTTP_400_BAD_REQUEST)
        else:
            serializer = KeywordSerializer(keywords, many=True)
            return Response(serializer.data, status=status.HTTP_200_OK)
Example #5
0
def employee_skill_remove(request, employee_id):
    """
    Remove employee skill
    ---
    response_serializer: employees.serializers.EmployeeSkillsSerializer
    parameters:
    - name: skill
      type: string
      required: true
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    - code: 500
      message: Internal Server Error
    """
    if request.method == 'PATCH':
        if 'skill' in request.data:
            skill = request.data['skill'].upper()
            keyword = get_object_or_404(Keyword, name=skill)
            employee = get_object_or_404(Employee, pk=employee_id)
            employee.skills.remove(keyword)
            employee.save()
            skills = employee.skills.all()
            paginator = PageNumberPagination()
            results = paginator.paginate_queryset(skills, request)
            serializer = EmployeeSkillsSerializer(results, many=True)
            return paginator.get_paginated_response(serializer.data)
Example #6
0
def get_notifications(request, employee_id):
    """
    Get all notifications for employee id
    ---
    response_serializer: activities.serializers.NotificationSerializer
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    - code: 500
      message: Internal Server Error
    """
    if request.method == 'GET':
        employee = get_object_or_404(Employee, pk=employee_id)
        activities = Activity.objects.annotate(
            profile=F('to_user')).values('datetime',
                                         'text',
                                         'profile').filter(to_user=employee)
        messages = Message.objects.annotate(
            profile=F('from_user')).values('datetime',
                                           'text',
                                           'profile').filter(Q(to_user='******') |
                                                             Q(to_user=employee.location.name) |
                                                             Q(to_user=employee.username))
        notifications = list(chain(activities, messages))
        notifications = sorted(notifications, reverse=True)
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(notifications, request)
        serializer = NotificationSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #7
0
def get_messages(request, employee_id):
    """
    Get all messages for employee id
    ---
    response_serializer: activities.serializers.MessageSerializer
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    - code: 500
      message: Internal Server Error
    """
    if request.method == 'GET':
        employee = get_object_or_404(Employee, pk=employee_id)
        messages = Message.objects.filter(
            Q(to_user='******') |
            Q(to_user=employee.location.name) |
            Q(to_user=employee.username))
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(messages, request)
        serializer = MessageSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #8
0
def stars_keyword_list(request):
    """
    Returns stars list grouped by keyword or result list if you use ?search=
    ---
    serializer: stars.serializers.StarKeywordList
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden, authentication credentials were not provided
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        if request.GET.get('search'):
            search_term = request.GET.get('search')
            star_list = Star.objects.filter(
                Q(keyword__name__icontains=search_term)).values('keyword__pk',
                                                                'keyword__name').annotate(num_stars=Count('keyword')).order_by('-num_stars')
        else:
            star_list = Star.objects.all().values('keyword__pk', 'keyword__name').annotate(num_stars=Count('keyword')).order_by('-num_stars')
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(star_list, request)
        serializer = StarKeywordList(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #9
0
def stars_keyword_list_detail(request, keyword_id):
    """
    Returns stars list detail for keyword id.
    ---
    response_serializer: stars.serializers.StarTopEmployeeLists
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden, authentication credentials were not provided
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        keyword = get_object_or_404(Keyword, pk=keyword_id)
        stars = Star.objects.filter(keyword=keyword).values(
            'to_user__pk',
            'to_user__username',
            'to_user__first_name',
            'to_user__last_name',
            'to_user__level',
            'to_user__avatar').annotate(num_stars=Count('keyword')).order_by('-num_stars')
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(stars, request)
        serializer = StarTopEmployeeLists(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #10
0
def employee_skills_search(request, terms):
    """
    Returns the full employee list or result list from search skill terms
    ---
    serializer: employees.serializers.EmployeeListSerializer
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    - code: 500
      message: Internal server error.
    """
    if request.method == 'GET':
        search_terms_array = terms.split()

        initial_term = search_terms_array[0]
        employee_list = Employee.objects.filter(skills__name__icontains=initial_term).annotate(Count('id'))

        if len(search_terms_array) > 1:
            for term in range(1, len(search_terms_array)):
                employee_list = employee_list.filter(search_terms_array[term])
    paginator = PageNumberPagination()
    results = paginator.paginate_queryset(employee_list, request)
    serializer = EmployeeListSerializer(results, many=True)
    return paginator.get_paginated_response(serializer.data)
Example #11
0
def employee_list_group_by_badges_detail(request, badge_id):
    """
    Returns employee list grouped by badge, you should provide badge_id
    ---
    response_serializer: stars.serializers.EmployeeGroupedListSerializer
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden, authentication credentials were not provided
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        badge = get_object_or_404(Badge, pk=badge_id)
        employee_list = EmployeeBadge.objects.filter(badge=badge).values(
            'to_user__pk',
            'to_user__username',
            'to_user__first_name',
            'to_user__last_name',
            'to_user__level',
            'to_user__avatar')
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(employee_list, request)
        serializer = EmployeeGroupedListSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #12
0
def employee_list_group_by_badges(request):
    """
    Returns badge list with employee counter or result list if you use ?search=
    ---
    response_serializer: stars.serializers.EmployeeBadgeListSerializer
    parameters:
    - name: search
      required: false
      type: string
      paramType: query
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden, authentication credentials were not provided
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        if request.GET.get('search'):
            search_term = request.GET.get('search')
            badge_list = EmployeeBadge.objects.filter(
                Q(badge__name__icontains=search_term)).values(
                    'badge__pk',
                    'badge__name').annotate(num_employees=Count('to_user')).order_by('-num_employees')
        else:
            badge_list = EmployeeBadge.objects.all().values(
                'badge__pk',
                'badge__name').annotate(num_employees=Count('to_user')).order_by('-num_employees')
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(badge_list, request)
        serializer = EmployeeBadgeListSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #13
0
def person(request, pk=None, search=None, order=None):
    if request.method == 'GET' and pk==None:
        """
        Returns a JSON response with a listing of person objects
        """
        search = request.query_params.get('search')
        order = request.query_params.get('order') 

        if (search==None):
            search = '';

        if (order == None or order == ''):
            order = 'name'


        people = Person.objects.filter(name__istartswith=search).order_by(order).all()

        paginator = PageNumberPagination()    
        # From the docs:
        # The paginate_queryset method is passed the initial queryset 
        # and should return an iterable object that contains only the 
        # data in the requested page.
        result_page = paginator.paginate_queryset(people, request)
        # Now we just have to serialize the data
        serializer = PersonSerializer(result_page, many=True)
        # From the docs:
        # The get_paginated_response method is passed the serialized page 
        # data and should return a Response instance.
        return paginator.get_paginated_response(serializer.data)

    elif request.method == 'POST':
        serializer = PersonSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save(photo = get_gravatar_url(serializer.data['email'], size=150))
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    try:
        person = Person.objects.get(pk=pk)
    except Person.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = PersonSerializer(person)
        return Response(serializer.data)

    elif request.method == 'PUT':
        serializer = PersonSerializer(person, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        else:
            return Response(serilizer.errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        person.delete()
        serializer = PersonSerializer(person)
        return Response(serializer.data)
Example #14
0
    def get_paginated_response(self):
        paginator = PageNumberPagination()

        page = paginator.paginate_queryset(self.queryset, self.request)

        model_serializer = self.serializer_class(page, many=True, context={"request": self.request})

        return paginator.get_paginated_response(model_serializer.data)
Example #15
0
def paginated_queryset(queryset, request):
	"""
	Return a paginated queryset.
	"""
	paginator = PageNumberPagination()
	paginator.page_size = settings.REST_FRAMEWORK['PAGE_SIZE']
	result_page = paginator.paginate_queryset(queryset, request)
	return (paginator, result_page)
Example #16
0
	def _get(self,request,*args,**kwargs):
		"""
		自己重写get() ,以上定义的Name些 xxx_class全部失效,完全自己处理数据返回
		自定义的 {status,errcode,errmsg,result} 就在这里自行添加了
		所以基本上从APIView继承就可以了,如果需要分页处理,看看ListViewAPI
		"""
		# if  request.user.is_authenticated:
		# 	return Response({'status':0})  #这里直接拒绝掉了
		ser = SerializerDBTable( self.get_queryset(),many=True)
		data = ser.data
		return Response(data)

		#手动控制分页
		page = PageNumberPagination()
		page.paginate_queryset(self.queryset.all()[:200],request)
		return page.get_paginated_response(ser.data)


		return Response({'result':data})
Example #17
0
 def get_page_response(self, query_set, request, serializer_class):
     """
     simple function to convert query set to rest framework paginated
     response,
     :param query_set: query set
     :param request: wsgi request
     :param serializer_class: serialzer for query set
     :return: paginated response.
     """
     paginator = PageNumberPagination()
     result_page = paginator.paginate_queryset(query_set, request)
     serializer = serializer_class(result_page, many=True)
     return paginator.get_paginated_response(serializer.data)
Example #18
0
 def get(self, request, format=None):
     """
     Returns a JSON response with a listing of course objects
     """
     paginator = PageNumberPagination()
     # From the docs:
     # The paginate_queryset method is passed the initial queryset
     # and should return an iterable object that contains only the
     # data in the requested page.
     result_page = paginator.paginate_queryset(self.get_queryset(), request)
     # Now we just have to serialize the data.
     serializer = CommunityPostSerializer(result_page, many=True, context={'request': request})
     # From the docs:
     # The get_paginated_response method is passed the serialized page
     # data and should return a Response instance.
     return paginator.get_paginated_response(serializer.data)
Example #19
0
def diffs(request, doctype_name, dataset_name):
    queryset = TreeNode.objects.select_related(
        'dataset', 'tree2_diffs'
    ).filter(
        dataset__doctype__name=doctype_name,
        dataset__name=dataset_name,
        tree2_diffs__isnull=False
    )

    paginator = PageNumberPagination()
    paginator.page_size = 1

    result_page = paginator.paginate_queryset(queryset, request)
    serializer = KeySerializer(result_page, many=True)

    return paginator.get_paginated_response(serializer.data)
Example #20
0
def blogs_list(request):
    "GET: displays all the blogs POST: take a new blog as I/P (or) modified text"
    if request.method == 'GET':
        blogs = Blog.objects.all()
        pages = PageNumberPagination()
        page_data = pages.paginate_queryset(blogs, request)
        serializer = BlogSerializer(page_data, many=True)
        return pages.get_paginated_response(serializer.data)
    elif request.method == 'POST':
        data = request.data
        title = data.pop('title')
        text = data.pop('text')
        try:
            blog_exists = Blog.objects.filter(title=title)
            if blog_exists:
                para_list = text.split('\n\n')
                para_text = Paragraph.objects.filter(blog=blog_exists)
                dummy = json.loads(blog_exists[0].seq)
                para_delete = para_text.exclude(text__in = para_list)
                if para_delete:
                    comm_delete = Comment.objects.filter(paragraph__in=para_delete).delete()
                    for i in para_delete:
                        dummy.remove(i.id)
                    para_delete.delete()
                para_text = para_text.filter().values_list('text', flat=True)
                for i in range(0, len(para_list)):
                    if para_list[i] not in para_text:
                        para_save = Paragraph(blog=blog_exists[0], text=para_list[i])
                        para_save.save()
                        dummy = dummy[:i] + [para_save.id] + dummy[i:]
                blog_exists[0].seq = json.dumps(dummy)
                blog_exists[0].save()
                return Response({"status":"success", "message":"Text is updated"}, status=status.HTTP_201_CREATED)
            else:
                blog_save = Blog(title=title)
                blog_save.save()
                paragraphs = text.split('\n\n')
                para_list = [Paragraph(blog=blog_save, text=t) for t in paragraphs]
                Paragraph.objects.bulk_create(para_list)
                if para_list:
                    blog_save.seq = json.dumps(list(Paragraph.objects.filter(blog=blog_save).order_by('id').values_list('id', flat=True)), cls=DjangoJSONEncoder)
                else:
                    blog_save.seq = json.dumps(list())
                blog_save.save()
                return Response({"status":"success", "message":"New Blog created"}, status=status.HTTP_201_CREATED)
        except Exception as ex:
            return Response({"status":"fail", 'message':str(ex)}, status=status.HTTP_400_BAD_REQUEST)
Example #21
0
def search(request, query):
    """
    Lista resultados de búsqueda de palabra clave. Usa paginación y muestra
    hasta 20 resultados por página.
    Además muestra links para páginas previas y siguientes.

    # Puedes obtener los resultados en archivo TSV

    Este archivo contiene la información en campos separados por tabs
    (fácil de importar a MS Excel)

    Solo es necesario usar la dirección `search.tsv`:

    * <http://manolo.rocks/api/search.tsv/romulo/>
    ---
    type:
      query:
        required: true
        type: string
    parameters:
      - name: query
        description: nombre o palabra clave a busar, por ejemplo Romulo
        type: string
        paramType: path
        required: true
    """
    query_request = QueryDict('q={}'.format(query))
    form = ApiForm(query_request)
    if request.user.is_authenticated():
        all_items = form.search(premium=True)
    else:
        all_items = form.search(premium=False)

    pagination = PageNumberPagination()
    paginated_results = pagination.paginate_queryset(all_items, request)
    paginated_results = [i.object for i in paginated_results]

    serializer = ManoloSerializer(paginated_results, many=True)

    data = {
        'count': pagination.page.paginator.count,
        'next': pagination.get_next_link(),
        'previous': pagination.get_previous_link(),
        'results': serializer.data,
    }
    return JSONResponse(data)
Example #22
0
 def get_nearest(self, request, *args, **kwargs):
     #-82.1013183593750000 40.1766586303710014
     logger.error('NearestUserViewSet: ' +kwargs['latitude']+' '+kwargs['longitude'])
     current_user = request.user
     
     pref_qs = Preferences.objects.all()
     preferences = get_object_or_404(pref_qs, user=current_user)
     # Get the current date
     now = date.today()
     
     min_date = now - relativedelta(years=preferences.max_age)
     max_date = now - relativedelta(years=preferences.min_age)
     
     logger.error('min_date ' + str(min_date))
     logger.error('max_date ' + str(max_date))
     
     distance_pref = preferences.distance
     gender_pref = preferences.gender_pref
     logger.error('Preferences: Gender ' + gender_pref + ' distance ' + str(distance_pref))
     # Filter for all prospects already processed by user
     match_set = Match.objects.filter(Q(source=current_user) | Q(target=current_user)).all()
     #for prospect in match_set:
     email_set = set()
     for x in match_set:
         logger.error('Matched emails ' + x.source.email +' and ' + x.target.email)
         email_set.add(x.source.email)
         email_set.add(x.target.email)
     
     #email_set = {y.email for x in match_set for y in x.users.all()}   #set()
     
     # Exclude login user
     '''email_set.add(current_user.email)
     for match in match_set:
         email_set.add(match.)'''
     
     gps_reading = fromstr('POINT('+kwargs['latitude']+' '+kwargs['longitude']+')', srid=4326)
     nearest_users = User.geo.exclude(email__in=email_set).exclude(preferences__hidden=True).filter(Q(date_of_birth__gte=min_date) & Q(date_of_birth__lte=max_date))
     nearest_users = nearest_users.filter(gender=gender_pref).filter(location__distance_lte=(gps_reading, D(mi=distance_pref))).distance(gps_reading).order_by('distance')
 
     paginator = PageNumberPagination()
    
     result_page = paginator.paginate_queryset(nearest_users.all(), request)
     
     serializer = UserSerializer(result_page , many=True)
     return paginator.get_paginated_response(serializer.data)
def comment_list(request):
    response = {}
    result = {}

    if request.method == "POST":
        member_id = request.data["memberId"]
        board_id = request.data["boardId"]
        comment = request.data["comment"]

        if member_id is None or comment is None:
            response["STS"] = ERR_USER_PARAM
            response["MSG"] = MSG[ERR_USER_PARAM]

            return Response(response)

        comment = Comment(board_id=board_id, member_id=member_id, comment=comment)
        comment.save()

        result["id"] = comment.id
        result["comment"] = comment.comment
        result["regdt"] = comment.regdt

        response["STS"] = SUCCESS
        response["MSG"] = MSG[SUCCESS]
        response["DAT"] = result

        return Response(response)

    if request.method == "GET":
        paginator = PageNumberPagination()

        board_list = Comment.objects.order_by("-id").all()
        result_page = paginator.paginate_queryset(board_list, request)
        comment_list_serializer = CommentListSerializer(result_page, many=True)

        result["comment_list"] = comment_list_serializer.data
        result["total_cnt"] = len(board_list)

        response["STS"] = SUCCESS
        response["MSG"] = MSG[SUCCESS]
        response["DAT"] = result

        return Response(response)
Example #24
0
def employee_deactivated_list(request):
    """
    Returns the full employee deactivated list
    ---
    serializer: employees.serializers.EmployeeListSerializer
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        employee_list = get_list_or_404(Employee, is_active=False)
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(employee_list, request)
        serializer = EmployeeListSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #25
0
def event_list(request):
    """
    Returns the full events list or result list if you use ?search=
    ---
    serializer: events.serializers.EventSerializer
    parameters:
    - name: search
      required: false
      type: string
      paramType: query
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    - code: 500
      message: Internal Server Error
    """
    if request.method == 'GET':
        if request.GET.get('search'):
            request_terms = request.GET.get('search')
            search_terms_array = request_terms.split()

            initial_term = search_terms_array[0]
            event_list = Event.objects.annotate(
                num_participants=Count('participants', distinct=True),
                num_collaborators=Count('collaborators', distinct=True)).filter(
                    Q(title__icontains=initial_term) |
                    Q(description__icontains=initial_term))
            if len(search_terms_array) > 1:
                for term in range(1, len(search_terms_array)):
                    event_list = event_list.filter(Q(title__icontains=search_terms_array[term]) |
                                                   Q(description__icontains=search_terms_array[term]))
        else:
            event_list = Event.objects.annotate(
                num_participants=Count('participants', distinct=True),
                num_collaborators=Count('collaborators', distinct=True)).all()
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(event_list, request)
        serializer = EventSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #26
0
def feeds_to_user(request):
    # load = json.loads(request.body)
    # device = load.get('device_id')
    device = request.GET['device_id']
    print"===========DEvice Id====",device
    if not device:
        return HttpBadRequest("Enter device id")

    user_obj=UserProfile.objects.get(device_id = device)
    user_interests = user_obj.interests_category.all()
    user_languages = user_obj.user_languages.all()
    paginator = PageNumberPagination()

    interest_list=[]
    language_list=[]
    for interest in user_interests:
        interest_list.append(interest)
    for language in user_languages:
        language_list.append(language)

    newsfeeds_objs1 = NewsFeedItems.objects.filter(category__in=interest_list)\
                                            .filter(language__in=language_list)\
                                            .order_by('-pubdate')
    
    newsfeeds_objs = paginator.paginate_queryset(newsfeeds_objs1, request)

    feed_item=[]
    for newsfeeds_obj in newsfeeds_objs:
        user_feeds={}
        user_feeds['title']=newsfeeds_obj.title
        user_feeds['descrption']=newsfeeds_obj.content
        user_feeds['image_url']=newsfeeds_obj.image_url
        news_pubdate = datetime.datetime.strftime(newsfeeds_obj.pubdate,'%a, %d %b %Y %I:%M:%S')
        user_feeds['pubdate']=str(news_pubdate)
        user_feeds['link']=newsfeeds_obj.link
        user_feeds['category']=newsfeeds_obj.category
        user_feeds['language']=newsfeeds_obj.language
        user_feeds['source']=newsfeeds_obj.source
        feed_item.append(user_feeds)

    data = {'status_code':200,'feeds_details': feed_item}
    return Response(data, status=status.HTTP_200_OK)
Example #27
0
def employee_list(request, format=None):
    """
    Returns the full employee list or result list if you use ?search=
    ---
    serializer: employees.serializers.EmployeeListSerializer
    parameters:
    - name: search
      required: false
      type: string
      paramType: query
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        if request.GET.get('search'):
            request_terms = request.GET.get('search')
            search_terms_array = request_terms.split()

            initial_term = search_terms_array[0]
            employee_list = Employee.objects.filter(
                Q(first_name__icontains=initial_term) |
                Q(last_name__icontains=initial_term) |
                Q(username__icontains=initial_term)).filter(is_active=True, is_base_profile_complete=True)
            if len(search_terms_array) > 1:
                for term in range(1, len(search_terms_array)):
                    employee_list = employee_list.filter(
                        Q(first_name__icontains=search_terms_array[term]) |
                        Q(last_name__icontains=search_terms_array[term]) |
                        Q(username__icontains=search_terms_array[term])).filter(
                                                                            is_active=True,
                                                                            is_base_profile_complete=True)
        else:
            employee_list = get_list_or_404(Employee, is_active=True, is_base_profile_complete=True)
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(employee_list, request)
        serializer = EmployeeListSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #28
0
def event_activities(request, event_id):
    """
    Returns activity list for event
    ---
    serializer: events.serializers.EventActivitySerializer
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden.
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        event = get_object_or_404(Event, pk=event_id)
        activities = EventActivity.objects.filter(event=event)
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(activities, request)
        serializer = EventActivitySerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #29
0
def stars_employee_subcategory_list(request, employee_id):
    """
    Returns stars list from employee grouped by subcategories
    ---
    serializer: stars.serializers.StarEmployeesSubcategoriesSerializer
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden, authentication credentials were not provided
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        employee = get_object_or_404(Employee, pk=employee_id)
        employee_stars = Star.objects.filter(to_user=employee).values('subcategory__pk', 'subcategory__name').annotate(num_stars=Count('subcategory')).order_by('-num_stars', 'subcategory__name')
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(employee_stars, request)
        serializer = StarEmployeesSubcategoriesSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Example #30
0
def stars_employee_list(request, employee_id):
    """
    Returns stars list from employee
    ---
    serializer: stars.serializers.StarSerializer
    responseMessages:
    - code: 401
      message: Unauthorized. Authentication credentials were not provided. Invalid token.
    - code: 403
      message: Forbidden, authentication credentials were not provided
    - code: 404
      message: Not found
    """
    if request.method == 'GET':
        employee = get_object_or_404(Employee, pk=employee_id)
        employee_stars = Star.objects.filter(to_user=employee)
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(employee_stars, request)
        serializer = StarSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
    def advance_search(self, request):
        queryset = models.User.objects.all()
        filtros = request.data['filtros']
        next_connector = None
        date_filter = Q()
        filter_search = Q()

        people_search = PeopleFilterSearch()

        for idx, f in enumerate(filtros):
            data_key = f['data_key']
            value = f['data_value']
            condition = f['condition']
            search_by = f['search_by']
            check_attribute_type = 'INSTANCE'

            if search_by == 'attribute':
                attribute = Attribute.objects.get(pk=data_key)
                is_exact = attribute.type in ['numeric', 'category']

                # check if attribute belongs to user or instance, Priority to USER
                if attribute.entity_set.filter(id__in=[4, 5]).exists():
                    check_attribute_type = 'USER'

                if condition == 'is_set' or condition == 'not_set':
                    model_field = dict(
                        instanceassociationuser__instance__attributevalue__attribute_id
                        =data_key)
                    if check_attribute_type == 'USER':
                        model_field = dict(userdata__attribute_id=data_key)

                    if condition == 'is_set':
                        qs = models.User.objects.filter(**model_field)
                    else:
                        qs = models.User.objects.exclude(**model_field)

                    queryset = people_search.apply_connector(
                        next_connector, queryset, qs)

                else:
                    if check_attribute_type == 'INSTANCE':
                        # filter by attribute instance
                        last_attributes = people_search.get_last_attributes(
                            data_key,
                            model=InstanceAttributeValue,
                            type_id='instance_id')
                        s = Q(
                            instanceassociationuser__instance__attributevalue__id__in
                            =last_attributes)

                        val_field = 'instanceassociationuser__instance__attributevalue__value'

                    else:
                        # filter by attribute user
                        last_attributes = people_search.get_last_attributes(
                            data_key, model=models.UserData, type_id='user_id')
                        s = Q(userdata__id__in=last_attributes)

                        val_field = 'userdata__data_value'

                    qs = models.User.objects.filter(s)
                    if attribute.type == 'numeric':
                        qs = qs.exclude(**{
                            f"{val_field}__isnull": True
                        }).exclude(**{f"{val_field}": ""})
                        qs = qs.annotate(as_float=Cast(
                            Func(F(val_field),
                                 Value('/[^0-9]/'),
                                 Value(''),
                                 function='regexp_replace'), FloatField()))
                        val_field = 'as_float'

                    s = people_search.apply_filter(val_field,
                                                   value,
                                                   condition,
                                                   exact=is_exact)
                    queryset = people_search.apply_connector(
                        next_connector, queryset, qs.filter(s))

            elif search_by == 'bot':
                condition = condition if condition == 'is' else 'is_not'
                s = people_search.apply_filter('bot_id',
                                               value,
                                               condition,
                                               exact=True)
                qs = models.User.objects.filter(s)
                queryset = people_search.apply_connector(
                    next_connector, queryset, qs)

            elif search_by == 'channel':
                # filter by channel
                s = people_search.apply_filter('userchannel__channel_id',
                                               value,
                                               condition,
                                               exact=True)
                qs = models.User.objects.filter(s)
                queryset = people_search.apply_connector(
                    next_connector, queryset, qs)

            elif search_by == 'dates':
                date_from = datetime.combine(
                    datetime.strptime(f['date_from'], '%Y-%m-%d'),
                    time.min) - timedelta(days=1)
                date_to = datetime.combine(
                    datetime.strptime(f['date_to'], '%Y-%m-%d'),
                    time.max) - timedelta(days=1)

                if date_from and date_to:
                    if data_key == 'created_at':
                        date_filter = Q(created_at__gte=date_from,
                                        created_at__lte=date_to)

                    if data_key == 'last_seen':
                        date_filter = Q(
                            userchannel__interaction__created_at__gte=date_from,
                            userchannel__interaction__created_at__lte=date_to)

                    if data_key == 'last_user_message':
                        date_filter = Q(
                            userchannel__interaction__category=1,
                            userchannel__interaction__created_at__gte=date_from,
                            userchannel__interaction__created_at__lte=date_to)

                    if data_key == 'last_channel_interaction':
                        date_filter = Q(
                            userchannel__interaction__category=2,
                            userchannel__interaction__created_at__gte=date_from,
                            userchannel__interaction__created_at__lte=date_to)

                if data_key == 'window':
                    date_filter = Q(
                        userchannel__interaction__category=1,
                        userchannel__interaction__created_at__gt=timezone.now(
                        ) - timedelta(1))

            elif search_by == 'group':
                # filter by group and by parent group
                s = people_search.apply_filter(
                    'assignationmessengeruser__group_id',
                    value,
                    condition,
                    exact=True)
                s2 = people_search.apply_filter(
                    'assignationmessengeruser__group__parent_id',
                    value,
                    condition,
                    exact=True)
                qs = models.User.objects.filter(s | s2)
                queryset = people_search.apply_connector(
                    next_connector, queryset, qs)

            elif search_by == 'program':
                # filter by program
                s = people_search.apply_filter(
                    'assignationmessengeruser__group__programassignation__program_id',
                    value,
                    condition,
                    exact=True)
                qs = models.User.objects.filter(s)
                queryset = people_search.apply_connector(
                    next_connector, queryset, qs)

            elif search_by == 'sequence':
                queryset = people_search.by_sequence(models.User, 'id',
                                                     next_connector, value,
                                                     condition, queryset)
                if isinstance(queryset, bool):
                    return Response({'message': 'subscribed API error'},
                                    status=HTTP_500_INTERNAL_SERVER_ERROR)

            next_connector = f['connector']

        if request.query_params.get('search'):
            # search by queryparams
            params = ['username', 'first_name', 'last_name', 'created_at']

            for x in params:
                filter_search |= Q(**{
                    f"{x}__icontains":
                    self.request.query_params.get('search')
                })
            if self.request.query_params.get('search').isnumeric():
                filter_search |= Q(id=self.request.query_params.get('search'))
                filter_search |= Q(
                    bot_id=self.request.query_params.get('search'))
                filter_search |= Q(
                    channel_id=self.request.query_params.get('search'))

        queryset = queryset.filter(date_filter).filter(
            filter_search).distinct()
        queryset = queryset.annotate(last_interaction=Max(
            'userchannel__interaction__id')).order_by('-last_interaction')

        pagination = PageNumberPagination()
        qs = pagination.paginate_queryset(queryset, request)
        serializer = serializers.UserSerializer(qs, many=True)
        return pagination.get_paginated_response(serializer.data)
Example #32
0
    def get(self, request, format="JSON"):
        user = request.user
        try:
            dept_id = user.dept.id
            dept_arr = []
            depts = Department.objects.all()
            getDept(dept_id, depts, dept_arr).append(dept_id)
            query_params = list(request.query_params.keys())
            kwargs = {}
            if 'name' in query_params:
                kwargs['name__contains'] = request.query_params['name']
            kwargs['user__dept_id__in'] = dept_arr
            buidling_list = Buidling.objects.filter(
                **kwargs).order_by('-addtime')
            page = PageNumberPagination()  # 生成分页器对象
            page.page_size = 20  # 设置每页的条数
            page.page_query_param = 'page'  # url中查询第几页的key默认为'page
            page.page_size_query_param = 'limit'  # url中这一页数据的条数的key, 默认为None
            # page.max_page_size = 5  # 每页的最大数据条数

            page_list = page.paginate_queryset(buidling_list, request,
                                               self)  # 生成这一页的数据列表
            # page_list.
            # 将这一页的数据列表序列化
            # return Response(ret.data)  # 返回查到的数据列表
            ret = BuidlingListSerialiser(page_list, many=True)
            jsondata = {}
            for building in ret.data:
                online = 0
                offline = 0
                open = 0
                close = 0
                total = 0
                power = ActualData.objects.filter(
                    device__building_id=building['id']).aggregate(
                        power=Sum('tPower'))
                for group in building['group']:
                    for device in group['device']:
                        total += 1
                        if device['status'] == '0':
                            offline += 1
                        else:
                            online += 1
                        if device['switch'] == '0':
                            close += 1
                        else:
                            open += 1
                building['power'] = power
                building['online'] = online
                building['offline'] = offline
                building['open'] = open
                building['close'] = close
                building['device_total'] = total
            jsondata['code'] = 20000
            jsondata['total'] = page.page.paginator.count
            jsondata['items'] = ret.data
            content = user.username + '进行获取楼层列表操作;结果:成功!'
            Logs.objects.create(content=content,
                                user=user,
                                addtime=datetime.datetime.now(),
                                ip=request.META['REMOTE_ADDR'])
            return Response(jsondata)
        except:
            content = user.username + '进行获取楼层列表操作;结果:失败!'
            Logs.objects.create(content=content,
                                user=user,
                                addtime=datetime.datetime.now(),
                                ip=request.META['REMOTE_ADDR'])
            return Response({'code': 0, 'msg': '设备列表获取失败'})
Example #33
0
 def get(self, request, format=None):
     usuarios = Users.objects.all()
     paginator = PageNumberPagination()
     result_page = paginator.paginate_queryset(usuarios, request)
     serializer = UsersSerializer(result_page, many=True)
     return paginator.get_paginated_response(serializer.data)
Example #34
0
def get_paginated_queryset_response(qs, request, *args, **kwargs):
    paginator = PageNumberPagination()
    paginator.page_size = TWEETS_ON_SINGLE_PAGE
    paginated_qs = paginator.paginate_queryset(qs, request)
    serializer = TweetReadSerializer(paginated_qs, many=True)
    return paginator.get_paginated_response(serializer.data)
Example #35
0
File: api.py Project: b59118/lava
 def tests(self, request, **kwargs):
     tests = TestCase.objects.filter(suite__job=self.get_object()).order_by("id")
     paginator = PageNumberPagination()
     page = paginator.paginate_queryset(tests, request)
     serializer = TestCaseSerializer(page, many=True, context={"request": request})
     return paginator.get_paginated_response(serializer.data)
Example #36
0
File: api.py Project: b59118/lava
 def suites(self, request, **kwargs):
     suites = self.get_object().testsuite_set.all().order_by("id")
     paginator = PageNumberPagination()
     page = paginator.paginate_queryset(suites, request)
     serializer = TestSuiteSerializer(page, many=True, context={"request": request})
     return paginator.get_paginated_response(serializer.data)
Example #37
0
def element_fancy_search(request, query):
    """
    List all ancestors' pk of the first element found.
    """

    queryset = TreeNode.objects.only('id')

    for param in query.split():
        if '!' in param:
            p = param.split('!')
            if len(p) > 2:
                break
            queryset = queryset.filter(
                dataset__doctype__name=p[0],
                dataset__name=p[1]
            )
        elif '@' in param:
            # Search specified element by attribute
            p = param.split('@')
            if len(p) > 2:
                continue
            if p[0] and p[1]:
                if '=' in p[1]:
                    a = p[1].split('=')
                    if len(a) > 2:
                        continue
                    if a[0] and a[1]:
                        # 'e@a=v' Search specified element by attribute name and value
                        queryset = queryset.filter(
                            element__type__name=p[0],
                            element__attributes__type__name=a[0],
                            element__attributes__value=a[1]
                        )
                    elif a[1]:
                        # 'e@=v' Search specified element by attribute value
                        queryset = queryset.filter(
                            element__type__name=p[0],
                            element__attributes__value=a[1]
                        )
                else:
                    # 'e@a' Search specified element by attribute name
                    queryset = queryset.filter(
                        element__type__name=p[0],
                        element__attributes__type__name=p[1],
                    )
            elif p[1]:
                # Search any element by attribute
                if '=' in p[1]:
                    a = p[1].split('=')
                    if len(a) > 2:
                        continue
                    if a[0] and a[1]:
                        # '@a=v' Search any element by attribute name and value
                        queryset = queryset.filter(
                            element__attributes__type__name=a[0],
                            element__attributes__value=a[1]
                        )
                    elif a[1]:
                        # '@=v' Search any element by attribute value
                        queryset = queryset.filter(
                            element__attributes__value=a[1]
                        )
                else:
                    # '@a' Search any element by attribute name
                    queryset = queryset.filter(
                        element__attributes__type__name=p[1]
                    )
            else:
                # '@' Search any element with attribute
                queryset = queryset.filter(
                    element__attributes__isnull=False
                )
        else:
            # if '=' in p[1]:
                # 'e=t' Search element by content
            # else:
            # 'e' Search specified element by name
            queryset = queryset.filter(
                element__type__name=param
            )

    paginator = PageNumberPagination()
    paginator.page_size = 1

    result_page = paginator.paginate_queryset(queryset, request)
    serializer = KeySerializer(result_page, many=True)

    return paginator.get_paginated_response(serializer.data)
Example #38
0
def paginate_orders(request, orders):
    paginator = PageNumberPagination()
    result_page = paginator.paginate_queryset(orders, request)
    serializer = OrderSerializer(result_page, many=True)
    return paginator.get_paginated_response(serializer.data)
Example #39
0
def get_paginated_queryset_response(qs, request):
	paginator = PageNumberPagination()
	paginator.page_size = 20
	paginated_qs = paginator.paginate_queryset(qs, request)
	serializer = TweetSerializer(paginated_qs, many=True, context={'request':request})
	return paginator.get_paginated_response(serializer.data) #Response(serializer.data, status=200)
Example #40
0
    def get(self, request, *args, **kwargs):

        project_id = request.query_params.get('project', None)
        search_param = self.request.query_params.get('q', None)

        if project_id:
            try:
                project_obj = Project.objects.get(id=project_id)
                paginator = PageNumberPagination()
                paginator.page_size = 200

                if is_project_manager_or_team_admin(project_obj, request.user):
                    if search_param:
                        data = Site.objects.filter(
                            Q(name__icontains=search_param)
                            | Q(identifier__icontains=search_param),
                            project=project_obj,
                            is_active=True,
                            site__isnull=True,
                            is_survey=False)

                    else:
                        data = Site.objects.filter(project=project_obj,
                                                   is_active=True,
                                                   site__isnull=True,
                                                   is_survey=False)

                    result_page = paginator.paginate_queryset(data, request)

                    sites = MySiteSerializer(result_page,
                                             many=True,
                                             context={'request': request})
                    return paginator.get_paginated_response({
                        'data':
                        sites.data,
                        'query':
                        search_param
                    })

                else:
                    region_ids = request.roles.filter(group__name__in=["Region Supervisor", "Region Reviewer"],
                                                      region__is_active=True, project=project_obj, ended_at=None).\
                        distinct('region_id').values_list('region_id', flat=True)
                    reg_sites = []

                    for reg in region_ids:
                        region = Region.objects.get(id=reg)
                        reg_sites.extend(region.get_sites_id())

                    sites_id = request.roles.select_related('user', 'group', 'site', 'organization',
                                                                          'staff_project', 'region').filter(
                        group__name__in=["Site Supervisor", "Reviewer"], ended_at=None, project=project_obj).\
                        distinct('site_id').values_list('site_id', flat=True)

                    total_sites = list(chain(reg_sites, sites_id))
                    if search_param:
                        data = Site.objects.filter(
                            Q(name__icontains=search_param)
                            | Q(identifier__icontains=search_param),
                            id__in=total_sites)
                    else:
                        data = Site.objects.filter(id__in=total_sites)

                    result_page = paginator.paginate_queryset(data, request)

                    sites = MySiteSerializer(result_page,
                                             many=True,
                                             context={'request': request})
                    return paginator.get_paginated_response({
                        'data':
                        sites.data,
                        'query':
                        search_param
                    })

            except Exception as e:
                return Response(data=str(e), status=status.HTTP_204_NO_CONTENT)
        else:
            return Response(data="Project Id params required.",
                            status=status.HTTP_400_BAD_REQUEST)
Example #41
0
 def get(self, request, format=None):
     items = Like.objects.all()
     paginator = PageNumberPagination()
     result_page = paginator.paginate_queryset(items, request)
     serializer = LikeSerializer(result_page, many=True)
     return paginator.get_paginated_response(serializer.data)
Example #42
0
 def get(self, request, format=None):
     paginator = PageNumberPagination()
     queryset = CurrencyRepository.getCurrencies()
     context = paginator.paginate_queryset(queryset, request)
     serializer = CurrencySerializer(context, many=True)
     return paginator.get_paginated_response(serializer.data)
Example #43
0
 def get(self, request, format=None):
     pagination = PageNumberPagination()
     dossies = dossie_service.getAllDossies()
     result = pagination.paginate_queryset(dossies, request)
     serializer = dossie_serializer.DossieSerializer(result, many=True)
     return pagination.get_paginated_response(serializer.data)
Example #44
0
    def get(self, request):
        global role_list, project_list
        pro_id = request.query_params.get('id', None)
        if pro_id:
            resp = dict()
            project = Project.objects.get(id=int(pro_id))
            if request.auth:
                colla_user = ProjectCollaborator.objects.filter(
                    project=project, user=request.user).count()
            else:
                colla_user = 0

            try:
                allow_download = ProjectReport.objects.get(project=project)
            except:
                allow_download = False
            if (project.role == 1) and (
                    request.user != project.create_user) and (colla_user == 0):
                resp['code'] = 2
            elif project.role == 2:
                user_list = project.role_value
                if request.auth:
                    if (request.user.username not in user_list) and \
                            (request.user != project.create_user) and \
                            (colla_user == 0):
                        resp['code'] = 2
                else:
                    resp['code'] = 2
            elif project.role == 3:
                if request.user != project.create_user and colla_user == 0:
                    viewcode = project.role_value
                    viewcode_name = 'viewcode-{}'.format(project.id)
                    r_viewcode = request.data.get(viewcode_name, 0)
                    if viewcode != r_viewcode:
                        resp['code'] = 3
            else:
                serializer = ProjectSerializer(project)
                resp = {'code': 0, 'data': serializer.data}
            return Response(resp)

        else:
            kw = request.query_params.get('kw', '')
            sort = request.query_params.get('sort', 0)
            role = request.query_params.get('role', -1)
            if sort in ['', 0, '0']:
                sort_str = ''
            else:
                sort_str = '-'

            if kw == '':
                is_kw = False
            else:
                is_kw = True

            if request.auth:
                is_auth = True
            else:
                is_auth = False

            if role in ['', -1, '-1']:
                is_role = False
                role_list = [0, 3]
            else:
                is_role = True

            if (is_kw is False) and (is_auth) and (is_role is False):
                colla_list = [
                    i.project.id for i in ProjectCollaborator.objects.filter(
                        user=request.user)
                ]
                project_list = Project.objects.filter(
                    Q(role__in=role_list) | \
                    Q(role=2, role_value__contains=str(request.user.username)) | \
                    Q(create_user=request.user) | \
                    Q(id__in=colla_list)
                ).order_by("{}create_time".format(sort_str))

            elif (is_kw is False) and (is_auth) and (is_role):
                if role in ['0', 0]:
                    project_list = Project.objects.filter(role=0).order_by(
                        "{}create_time".format(sort_str))
                elif role in ['1', 1]:
                    project_list = Project.objects.filter(
                        create_user=request.user,
                        role=1).order_by("{}create_time".format(sort_str))
                elif role in ['2', 2]:
                    project_list = Project.objects.filter(
                        role=2,
                        role_value__contains=str(
                            request.user.username)).order_by(
                                "{}create_time".format(sort_str))
                elif role in ['3', 3]:
                    project_list = Project.objects.filter(role=3).order_by(
                        "{}create_time".format(sort_str))
                elif role in ['99', 99]:
                    colla_list = [
                        i.project.id
                        for i in ProjectCollaborator.objects.filter(
                            user=request.user)
                    ]
                    project_list = Project.objects.filter(
                        id__in=colla_list).order_by(
                            "{}create_time".format(sort_str))
                else:
                    return Response({'code': 2, 'data': []})

            elif (is_kw is False) and (is_auth is False) and (is_role is
                                                              False):
                project_list = Project.objects.filter(
                    role__in=[0, 3]).order_by("{}create_time".format(sort_str))

            elif (is_kw is False) and (is_auth is False) and (is_role):
                if role in ['0', 0]:
                    project_list = Project.objects.filter(role=0).order_by(
                        "{}create_time".format(sort_str))
                elif role in ['3', 3]:
                    project_list = Project.objects.filter(role=3).order_by(
                        "{}create_time".format(sort_str))
                else:
                    return Response({'code': 2, 'data': []})

            elif (is_kw) and (is_auth) and (is_role is False):
                colla_list = [
                    i.project.id for i in ProjectCollaborator.objects.filter(
                        user=request.user)
                ]
                project_list = Project.objects.filter(
                    Q(role__in=[0, 3]) | \
                    Q(role=2, role_value__contains=str(request.user.username)) | \
                    Q(create_user=request.user) | \
                    Q(id__in=colla_list),
                    Q(name__icontains=kw) | Q(intro__icontains=kw)
                ).order_by('{}create_time'.format(sort_str))

            elif (is_kw) and (is_auth) and (is_role):
                if role in ['0', 0]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=0).order_by("{}create_time".format(sort_str))
                elif role in ['1', 1]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        create_user=request.user).order_by(
                            "{}create_time".format(sort_str))
                elif role in ['2', 2]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=2,
                        role_value__contains=str(
                            request.user.username)).order_by(
                                "{}create_time".format(sort_str))
                elif role in ['3', 3]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=3).order_by("{}create_time".format(sort_str))
                elif role in ['99', 99]:
                    colla_list = [
                        i.project.id
                        for i in ProjectCollaborator.objects.filter(
                            user=request.user)
                    ]
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        id__in=colla_list).order_by(
                            "{}create_time".format(sort_str))
                else:
                    return Response({'code': 1, 'data': []})

            elif (is_kw) and (is_auth is False) and (is_role is False):
                project_list = Project.objects.filter(
                    Q(name__icontains=kw) | Q(intro__icontains=kw),
                    role__in=[0, 3]).order_by("{}create_time".format(sort_str))

            elif (is_kw) and (is_auth is False) and (is_role):
                if role in ['0', 0]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=0).order_by("{}create_time".format(sort_str))
                elif role in ['3', 3]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=3).order_by("{}create_time".format(sort_str))
                else:
                    return Response({'code': 1, 'data': []})

            page = PageNumberPagination()
            page_projects = page.paginate_queryset(project_list,
                                                   request,
                                                   view=self)
            serializer = ProjectSerializer(page_projects, many=True)
            resp = {
                'code': 0,
                'data': serializer.data,
                'count': project_list.count()
            }
            return Response(resp)
Example #45
0
    def get(self, request):
        pro_id = request.query_params.get('id', None)
        if pro_id:
            resp = dict()
            # 获取文集信息
            project = Project.objects.get(id=int(pro_id))
            # 获取文集的协作用户信息
            # print(request.auth)
            # print(request.user)
            if request.auth:  # 对登陆用户查询其协作文档信息
                colla_user = ProjectCollaborator.objects.filter(
                    project=project, user=request.user).count()
            else:
                colla_user = 0

            # 获取文集前台下载权限
            try:
                allow_download = ProjectReport.objects.get(project=project)
            except:
                allow_download = False

            # 私密文集并且访问者非创建者非协作者
            if (project.role == 1) and (
                    request.user != project.create_user) and (colla_user == 0):
                # return Response({'code': 2, 'data': []})
                resp['code'] = 2
            # 指定用户可见文集
            elif project.role == 2:
                user_list = project.role_value
                if request.auth:  # 认证用户判断是否在许可用户列表中
                    if (request.user.username not in user_list) and \
                            (request.user != project.create_user) and \
                            (colla_user == 0):  # 访问者不在指定用户之中
                        resp['code'] = 2
                else:  # 游客直接返回404
                    resp['code'] = 2
            # 访问码可见
            elif project.role == 3:
                # 浏览用户不为创建者、协作者
                if request.user != project.create_user and colla_user == 0:
                    viewcode = project.role_value
                    viewcode_name = 'viewcode-{}'.format(project.id)
                    r_viewcode = request.data.get(viewcode_name, 0)  # 获取访问码
                    if viewcode != r_viewcode:  # 访问码不等于文集访问码,跳转到访问码认证界面
                        # return Response({'code': 3})
                        resp['code'] = 3
            else:
                serializer = ProjectSerializer(project)
                resp = {'code': 0, 'data': serializer.data}
            return Response(resp)

        else:
            kw = request.query_params.get('kw', '')  # 搜索词
            sort = request.query_params.get('sort',
                                            0)  # 排序,0表示按时间升序排序,1表示按时间降序排序,默认为0
            role = request.query_params.get('role', -1)  # 筛选文集权限,默认为显示所有可显示的文集

            # 是否排序
            if sort in ['', 0, '0']:
                sort_str = ''
            else:
                sort_str = '-'

            # 是否搜索
            if kw == '':
                is_kw = False
            else:
                is_kw = True

            # 是否认证
            if request.auth:
                is_auth = True
            else:
                is_auth = False

            # 是否筛选
            if role in ['', -1, '-1']:
                is_role = False
                role_list = [0, 3]
            else:
                is_role = True

            # 没有搜索 and 认证用户 and 没有筛选
            if (is_kw is False) and (is_auth) and (is_role is False):
                colla_list = [
                    i.project.id for i in ProjectCollaborator.objects.filter(
                        user=request.user)
                ]  # 用户的协作文集列表
                project_list = Project.objects.filter(
                    Q(role__in=role_list) | \
                    Q(role=2, role_value__contains=str(request.user.username)) | \
                    Q(create_user=request.user) | \
                    Q(id__in=colla_list)
                ).order_by("{}create_time".format(sort_str))

            # 没有搜索 and 认证用户 and 有筛选
            elif (is_kw is False) and (is_auth) and (is_role):
                if role in ['0', 0]:
                    project_list = Project.objects.filter(role=0).order_by(
                        "{}create_time".format(sort_str))
                elif role in ['1', 1]:
                    project_list = Project.objects.filter(
                        create_user=request.user,
                        role=1).order_by("{}create_time".format(sort_str))
                elif role in ['2', 2]:
                    project_list = Project.objects.filter(
                        role=2,
                        role_value__contains=str(
                            request.user.username)).order_by(
                                "{}create_time".format(sort_str))
                elif role in ['3', 3]:
                    project_list = Project.objects.filter(role=3).order_by(
                        "{}create_time".format(sort_str))
                elif role in ['99', 99]:
                    colla_list = [
                        i.project.id
                        for i in ProjectCollaborator.objects.filter(
                            user=request.user)
                    ]  # 用户的协作文集列表
                    project_list = Project.objects.filter(
                        id__in=colla_list).order_by(
                            "{}create_time".format(sort_str))
                else:
                    return Response({'code': 2, 'data': []})

            # 没有搜索 and 游客 and 没有筛选
            elif (is_kw is False) and (is_auth is False) and (is_role is
                                                              False):
                project_list = Project.objects.filter(
                    role__in=[0, 3]).order_by("{}create_time".format(sort_str))

            # 没有搜索 and 游客 and 有筛选
            elif (is_kw is False) and (is_auth is False) and (is_role):
                if role in ['0', 0]:
                    project_list = Project.objects.filter(role=0).order_by(
                        "{}create_time".format(sort_str))
                elif role in ['3', 3]:
                    project_list = Project.objects.filter(role=3).order_by(
                        "{}create_time".format(sort_str))
                else:
                    return Response({'code': 2, 'data': []})

            # 有搜索 and 认证用户 and 没有筛选
            elif (is_kw) and (is_auth) and (is_role is False):
                colla_list = [
                    i.project.id for i in ProjectCollaborator.objects.filter(
                        user=request.user)
                ]  # 用户的协作文集
                # 查询所有可显示的文集
                project_list = Project.objects.filter(
                    Q(role__in=[0, 3]) | \
                    Q(role=2, role_value__contains=str(request.user.username)) | \
                    Q(create_user=request.user) | \
                    Q(id__in=colla_list),
                    Q(name__icontains=kw) | Q(intro__icontains=kw)
                ).order_by('{}create_time'.format(sort_str))

            # 有搜索 and 认证用户 and 有筛选
            elif (is_kw) and (is_auth) and (is_role):
                if role in ['0', 0]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=0).order_by("{}create_time".format(sort_str))
                elif role in ['1', 1]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        create_user=request.user).order_by(
                            "{}create_time".format(sort_str))
                elif role in ['2', 2]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=2,
                        role_value__contains=str(
                            request.user.username)).order_by(
                                "{}create_time".format(sort_str))
                elif role in ['3', 3]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=3).order_by("{}create_time".format(sort_str))
                elif role in ['99', 99]:
                    colla_list = [
                        i.project.id
                        for i in ProjectCollaborator.objects.filter(
                            user=request.user)
                    ]  # 用户的协作文集列表
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        id__in=colla_list).order_by(
                            "{}create_time".format(sort_str))
                else:
                    return Response({'code': 1, 'data': []})

            # 有搜索 and 游客 and 没有筛选
            elif (is_kw) and (is_auth is False) and (is_role is False):
                project_list = Project.objects.filter(
                    Q(name__icontains=kw) | Q(intro__icontains=kw),
                    role__in=[0, 3]).order_by("{}create_time".format(sort_str))

            # 有搜索 and 游客 and 有筛选
            elif (is_kw) and (is_auth is False) and (is_role):
                if role in ['0', 0]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=0).order_by("{}create_time".format(sort_str))
                elif role in ['3', 3]:
                    project_list = Project.objects.filter(
                        Q(name__icontains=kw) | Q(intro__icontains=kw),
                        role=3).order_by("{}create_time".format(sort_str))
                else:
                    return Response({'code': 1, 'data': []})

            page = PageNumberPagination()  # 实例化一个分页器
            page_projects = page.paginate_queryset(project_list,
                                                   request,
                                                   view=self)  # 进行分页查询
            serializer = ProjectSerializer(page_projects,
                                           many=True)  # 对分页后的结果进行序列化处理
            resp = {
                'code': 0,
                'data': serializer.data,
                'count': project_list.count()
            }
            return Response(resp)
Example #46
0
 def post(self, request, **kwargs):
     try:
         task_id = kwargs['task_id']
         comment = ''
         file_list = []
         dir = os.path.join(settings.MEDIA_ROOT, "comments")
         if not os.path.exists(dir):
             os.makedirs(dir)
         if 'files' in request.data:
             files = request.data.getlist('files')
             for file in files:
                 uploaded_file = CommonView.handle_uploaded_file(
                     request, file)
                 if uploaded_file != "":
                     file_list.append(uploaded_file)
         if 'text' in request.data:
             comment = request.data["text"]
         if comment != '' or len(file_list) > 0:
             comment_form = {
                 "text": comment,
                 "file_type": file_list if (len(file_list) > 0) else None,
                 "task_id": task_id,
                 "user": request.user,
                 "type": "text"
             }
             new_comment = Comments(**comment_form)
             new_comment.save()
             task = Tasks.objects.get(id=task_id)
             task.save()
             if request.user.is_staff:
                 user_name = request.user.get_full_name()
             else:
                 user_name = request.user.handworker.company_name
             if comment != '':
                 # Send Notification
                 message = NotificationText.get_task_comment_notification_text(
                     user_name, task.building_component.component.name)
                 task_thread = threading.Thread(
                     target=NotificationsView.create_notfication,
                     args=(request, 'task_comment', message, task_id,
                           request.user.id))
                 task_thread.start()
             if len(file_list) > 0:
                 # Send Notification
                 message = NotificationText.get_attach_file_notification_text(
                     user_name, task.building_component.component.name)
                 task_thread = threading.Thread(
                     target=NotificationsView.create_notfication,
                     args=(request, 'attach_file', message, task_id,
                           request.user.id))
                 task_thread.start()
             paginator = PageNumberPagination()
             paginator.page_size = 10
             comments = Comments.objects.filter(
                 task_id=task_id).order_by('-created_at')
             result_page = paginator.paginate_queryset(comments, request)
             serializer = CommentSerializer(result_page, many=True)
             return paginator.get_paginated_response(data=serializer.data)
         else:
             return Response(
                 {
                     'success': False,
                     'message': "Something went wrong."
                 },
                 status=status.HTTP_404_NOT_FOUND)
     except Exception as e:
         LogHelper.efail(e)
         return Response(
             {
                 'success': False,
                 'message': "Something went wrong."
             },
             status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Example #47
0
def products(request):
    # query params
    skin_type = request.query_params.get("skin_type")
    if skin_type is None:
        raise InvalidQueryParam("skin_type should be specified")
    elif skin_type not in configs.SKIN_TYPES:
        raise InvalidQueryParam("Invalid query param: skin_type")
    category = request.query_params.get("category")
    page = request.query_params.get("page")
    exclude_ingredient = request.query_params.get("exclude_ingredient")
    include_ingredient = request.query_params.get("include_ingredient")

    # querysets
    querysets = Item.objects.all()
    if category is not None:
        querysets = querysets.filter(category=category)

    def preprocessing(param):
        param_list = param.split(",")
        # remove left/right space, normalize to lower case
        return [param.strip().lower() for param in param_list]

    if exclude_ingredient is not None:
        ingr_list = preprocessing(exclude_ingredient)
        for ingr in ingr_list:
            querysets = querysets.exclude(ingredients__name=ingr)

    if include_ingredient is not None:
        ingr_list = preprocessing(include_ingredient)
        for ingr in ingr_list:
            querysets = querysets.filter(ingredients__name=ingr)

    # sum by skin_type and ordering(score desc, price asc)
    querysets = querysets.annotate(
        score=Sum("ingredients__{}".format(skin_type))).order_by(
            "-score", "price")

    # paging
    if page is not None:
        try:
            page = int(page)
        except:
            raise InvalidQueryParam("Invalid query param: page")

        paginator = PageNumberPagination()
        paginator.page_size = settings.QUERY_PAGE_SIZE
        querysets = paginator.paginate_queryset(querysets, request)

    # serializing
    serializer = ItemSerializer(querysets,
                                many=True,
                                fields=[
                                    "id", "imgUrl", "name", "price",
                                    "ingredients", "monthlySales"
                                ],
                                image_type="thumbnail")

    if not len(serializer.data):
        raise NotFound

    return Response(serializer.data)
Example #48
0
    def get(self,request):
        pro_id = request.query_params.get('pid','') # 文集ID
        doc_id = request.query_params.get('did','') # 文档ID
        doc_format = request.query_params.get('type','json') # 返回格式

        # 存在文集ID和文档ID,进行数据库检索
        if pro_id != '' and doc_id != '':
            # 获取文集信息
            project = Project.objects.get(id=int(pro_id))
            # 获取文集的协作用户信息
            if request.auth:
                colla_user = ProjectCollaborator.objects.filter(project=project, user=request.user)
                if colla_user.exists():
                    colla_user_role = colla_user[0].role
                    colla_user = colla_user.count()
                else:
                    colla_user = colla_user.count()
            else:
                colla_user = 0

            # 私密文集且访问者非创建者、协作者 - 不能访问
            if (project.role == 1) and (request.user != project.create_user) and (colla_user == 0):
                return Response({'code':2})
            # 指定用户可见文集
            elif project.role == 2:
                user_list = project.role_value
                if request.user.is_authenticated:  # 认证用户判断是否在许可用户列表中
                    if (request.user.username not in user_list) and \
                            (request.user != project.create_user) and \
                            (colla_user == 0):  # 访问者不在指定用户之中,也不是协作者
                        return Response({'code': 2})
                else:  # 游客直接返回404
                    return Response({'code': 2})
            # 访问码可见
            elif project.role == 3:
                # 浏览用户不为创建者和协作者 - 需要访问码
                if (request.user != project.create_user) and (colla_user == 0):
                    viewcode = project.role_value
                    viewcode_name = 'viewcode-{}'.format(project.id)
                    r_viewcode = request.data.get(viewcode_name,0)  # 获取访问码
                    if viewcode != r_viewcode:  # cookie中的访问码不等于文集访问码,跳转到访问码认证界面
                        return Response({'code':3})

            # 获取文档内容
            try:
                doc = Doc.objects.get(id=int(doc_id), status=1)
                if doc_format == 'json':
                    serializer = DocSerializer(doc)
                    resp = {'code':0,'data':serializer.data}
                    return Response(resp)
                elif doc_format == 'html':
                    logger.info("返回HTML")
                    # return Response({'status':'html'})
                    return render(request,'app_api/single_doc_detail.html',locals())
                else:
                    logger.info(doc_format)
            except ObjectDoesNotExist:
                return Response({'code':4})
        # 不存在文集ID和文档ID,返回用户自己的文档列表
        else:
            if request.auth:
                doc_list = Doc.objects.filter(create_user=request.user,status=1).order_by('-modify_time')
                page = PageNumberPagination()  # 实例化一个分页器
                page_docs = page.paginate_queryset(doc_list, request, view=self)  # 进行分页查询
                serializer = DocSerializer(page_docs, many=True)  # 对分页后的结果进行序列化处理
                resp = {
                    'code': 0,
                    'data': serializer.data,
                    'count': doc_list.count()
                }
                return Response(resp)
            else:
                return Response({'code':4})
Example #49
0
def get_paginated_queryset_response(qs, request):
    paginator = PageNumberPagination()
    paginator.page_size = 20
    paginated_qs = paginator.paginate_queryset(qs, request)
    serializer = TweetSerializer(paginated_qs, many=True)
    return paginator.get_paginated_response(serializer.data)
Example #50
0
def get_paginated_queryset(request, qs, serializer_obj, page_size=10):
    paginator = PageNumberPagination()
    paginator.page_size = page_size
    page = paginator.paginate_queryset(qs, request)
    serializer = serializer_obj(page, many=True, context={'request': request})
    return paginator.get_paginated_response(serializer.data)
Example #51
0
def paginationapi(request):
    paginator = PageNumberPagination()
    query_set = details.objects.all()
    context = paginator.paginate_queryset(query_set, request)
    serializer = detailsSerializer(context, many=True)
    return paginator.get_paginated_response(serializer.data)
    def parseRequestToFilter(self, request, dbModel, serModel):
        if(request.body is not None):
            try:
                queryset = dbModel.objects.all()

                page = PageNumberPagination()

                try:
                    if request.body != '':
                        req_params = json.loads('%s' % request.body.decode().replace('\n',''))
                    else:
                        req_params = None
                except Exception as e:
                    req_params = None
                    print('step0: %s' % e)

                # 分页
                try:
                    self.pageno = int(request.GET.get('page', 1))

                    if req_params is not None and req_params['pager'] is not None:
                        # if req_params['pager']['page'] is not None:
                        #     page.page = req_params['pager']['page']
                        #     self.pageno = int(req_params['pager']['page'])
                        # else:
                        #     page.page = self.pageno

                        if req_params['pager']['size'] is not None:
                            page.page_size = req_params['pager']['size']
                            self.pagesize = int(req_params['pager']['size'])
                        else:
                            page.page_size = self.pagesize

                except Exception as e:
                    page.page = self.pageno
                    page.page_size = self.pagesize
                    print('step1: %s' %e)

                # 字段筛选
                try:
                    if req_params is not None and req_params['filter'] != '':
                        condtions = self.parseCondtions(req_params['filter'])
                        queryset = queryset.filter(condtions)
                except Exception as e:
                    print('step2: %s' %e)

                # 排序
                try:
                    if req_params is not None and req_params['order'] is not None:
                        queryset = queryset.order_by(*req_params['order'])
                except Exception as e:
                    print('step3: %s' %e)
                    pass

                # 计算总页数
                self.rows = queryset.count()
                if self.rows > 0: self.pagetotal = math.ceil(self.rows / self.pagesize)

                # 查询
                page_roles = page.paginate_queryset(queryset=queryset, request=request, view=self)
                ser = serModel(instance=page_roles, many=True)


                return self.successful(data=ser.data)

            except Exception as e:
                print('step4: %s' %e)
                return  self.unsuccessful(msg= str(e))

        else:
            return  self.unsuccessful()
Example #53
0
 def get(self, request, format=None):
     items = AgencyType.objects.order_by('pk')
     paginator = PageNumberPagination()
     result_page = paginator.paginate_queryset(items, request)
     serializer = AgencyTypeSerializer(result_page, many=True)
     return paginator.get_paginated_response(serializer.data)
Example #54
0
def _paginate_response(data, request):
    paginator = PageNumberPagination()
    result_page = paginator.paginate_queryset(data, request)
    return paginator.get_paginated_response(result_page)
 def get(self, request, format=None):
     movies = Movie.objects.all()
     paginator = PageNumberPagination()
     result = paginator.paginate_queryset(movies, request)
     serializer = MovieSerializer(result, many=True)
     return paginator.get_paginated_response(serializer.data)
Example #56
0
def location_search_company(request):
    """
	사용자의 위치에 따른 업체 검색 API

	---
	# 내용
		- q = 검색어
		- page = 현재 페이지
		- page_size = 한번에 뿌려주는 상품 갯수
	# Header
		- id-member : header에 id_member를 캐치해서 선택된 addr, dis를 활용한다.
		* header에 id-member값이 없을경우, 비회원 전체검색 로직
	"""
    paginator = PageNumberPagination()

    paginator.page_size_query_param = "page_size"
    Search = request.GET['q']

    # 회원 검색
    if 'id-member' in request.headers:
        try:
            member_addr = Memberaddr.objects.filter(
                id_member=request.headers['id-member']).get(select='Y')
            addr = member_addr.addr
            dis = member_addr.distance
        except Memberaddr.DoesNotExist:
            content = {"message": "설정된 주소가 없습니다. 주소를 설정해 주세요.", "result": {}}
            return Response(content, status=status.HTTP_204_NO_CONTENT)
        location = [addr] + list(
            NearbyLocation.objects.filter(dong=addr).filter(
                distance=dis).values_list('nearby_dong', flat=True))
        company_list = Company.objects.filter(name__contains=Search).filter(
            addr__in=location).order_by('-cdate')
        if company_list.count() == 0:
            content = {
                "message": "검색한 업체가 없습니다.",
                "result": {
                    "입력한 검색어": Search
                }
            }
            return Response(content, status=status.HTTP_204_NO_CONTENT)

        paginated_company_list = paginator.paginate_queryset(
            company_list, request)

        if paginated_company_list is not None:
            serializers = CompanySearchSerializer(paginated_company_list,
                                                  many=True,
                                                  context={'request': request})
            return paginator.get_paginated_response(serializers.data)

        serializer = CompanySearchSerializer(company_list,
                                             many=True,
                                             context={'request': request})
        return Response(serializer.data, status=status.HTTP_200_OK)

    # 비회원
    else:
        company = Company.objects.filter(
            name__contains=Search).order_by('-cdate')
        if company.count() == 0:
            content = {
                "message": "검색한 없체가 없습니다.",
                "result": {
                    "입력한 검색어": Search
                }
            }
            return Response(content, status=status.HTTP_204_NO_CONTENT)
        paginated_company = paginator.paginate_queryset(company, request)
        if paginated_company is not None:
            serializers = CompanySearchSerializer(paginated_company,
                                                  many=True,
                                                  context={'request': request})
            return paginator.get_paginated_response(serializers.data)

        serializer = CompanySearchSerializer(company,
                                             many=True,
                                             context={'request': request})

        return Response(serializer.data, status=status.HTTP_200_OK)
Example #57
0
 def get(self, request):
     users = User.objects.all()
     paginator = PageNumberPagination()
     paginated_users = paginator.paginate_queryset(users, request)
     serializer = AuthorListSerializer(paginated_users, many=True)
     return paginator.get_paginated_response(serializer.data)
Example #58
0
    def list(self, request):
        paginator = PageNumberPagination()
        paginator.page_size = helper.settings.PAGE_SIZE

        if request.user.is_superuser:
            if "search" in request.GET:
                if "filter" in request.GET and request.GET['filter'] != '':
                    if request.GET['filter'] == 'expiring_soon':
                        agrements = Agreements.objects.filter(
                            end_date__lte=helper.datetime.now().date() +
                            helper.timedelta(15),
                            end_date__gte=helper.datetime.now(),
                            product__name__icontains=request.GET['search'])
                    else:
                        agrements = Agreements.objects.filter(
                            product__name__icontains=request.GET['search'],
                            status=request.GET['filter'])
                else:
                    agrements = Agreements.objects.filter(
                        product__name__icontains=request.GET['search'])
            else:
                if "filter" in request.GET and request.GET['filter'] != '':
                    if request.GET['filter'] == 'expiring_soon':
                        agrements = Agreements.objects.filter(
                            end_date__lte=helper.datetime.now().date() +
                            helper.timedelta(15),
                            end_date__gte=helper.datetime.now())
                    else:
                        agrements = Agreements.objects.filter(
                            status=request.GET['filter'])
                else:
                    agrements = Agreements.objects.all()
        else:
            if "search" in request.GET:
                if "filter" in request.GET and request.GET['filter'] != '':
                    if request.GET['filter'] == 'expiring_soon':
                        agrements = Agreements.objects.filter(
                            vendor=request.user,
                            end_date__lte=helper.datetime.now().date() +
                            helper.timedelta(15),
                            end_date__gte=helper.datetime.now(),
                            product__name__icontains=request.GET['search'])
                    else:
                        agrements = Agreements.objects.filter(
                            vendor=request.user,
                            product__name__icontains=request.GET['search'],
                            status=request.GET['filter'])
                else:
                    agrements = Agreements.objects.filter(
                        vendor=request.user,
                        product__name__icontains=request.GET['search'])
            else:
                if "filter" in request.GET and request.GET['filter'] != '':
                    if request.GET['filter'] == 'expiring_soon':
                        agrements = Agreements.objects.filter(
                            vendor=request.user,
                            end_date__lte=helper.datetime.now().date() +
                            helper.timedelta(15),
                            end_date__gte=helper.datetime.now())
                    else:
                        agrements = Agreements.objects.filter(
                            vendor=request.user, status=request.GET['filter'])
                else:
                    agrements = Agreements.objects.filter(vendor=request.user)

        page_context = paginator.paginate_queryset(agrements, request)

        return paginator.get_paginated_response(
            ReadAgreementSerializer(page_context, many=True).data)
Example #59
0
 def get(self, request, format=None):
     pagination = PageNumberPagination()
     clientes = pre_cliente_service.getAllClients()
     result = pagination.paginate_queryset(clientes, request)
     serializer = pre_cliente_serializer.PreClienteSerializer(result, many=True)
     return pagination.get_paginated_response(serializer.data)