Пример #1
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)
Пример #2
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)
Пример #3
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)
Пример #4
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)
Пример #5
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)
Пример #6
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)
Пример #7
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)
Пример #8
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)
Пример #9
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)
Пример #10
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)
Пример #11
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)
Пример #12
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)
Пример #13
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)
Пример #14
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)
Пример #15
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)
Пример #16
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)
Пример #17
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)
Пример #18
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)
Пример #19
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)
Пример #20
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})
Пример #21
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)
Пример #22
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)
Пример #23
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)
Пример #24
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)
Пример #25
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)
Пример #26
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)
Пример #27
0
def stars_employee_subcategory_detail_list(request, employee_id, subcategory_id):
    """
    Returns stars list detail from employee divided by subcategory
    ---
    serializer: stars.serializers.StarSmallSerializer
    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)
        subcategory = get_object_or_404(Subcategory, pk=subcategory_id)
        stars = Star.objects.filter(to_user=employee, subcategory=subcategory).order_by('-date')
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(stars, request)
        serializer = StarSmallSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Пример #28
0
def get_messages_from_all(request):
    """
    Get all messages sent
    ---
    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':
        messages = Message.objects.all()
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(messages, request)
        serializer = MessageSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Пример #29
0
def employee_skills(request, employee_id):
    """
    Get employee skills
    ---
    response_serializer: employees.serializers.EmployeeSkillsSerializer
    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)
        skills = employee.skills.all()
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(skills, request)
        serializer = EmployeeSkillsSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Пример #30
0
def participant_list(request):
    """
    Returns the full participant list or result list if you use ?search=
    ---
    serializer: events.serializers.ParticipantSerializer
    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]
            participant_list = Participant.objects.filter(
                Q(fullname__icontains=initial_term) |
                Q(email__icontains=initial_term))

            if len(search_terms_array) > 1:
                for term in range(1, len(search_terms_array)):
                    participant_list = participant_list.filter(Q(fullname__icontains=search_terms_array[term]) |
                                                               Q(email__icontains=search_terms_array[term]))
        else:
            participant_list = get_list_or_404(Participant)
        paginator = PageNumberPagination()
        results = paginator.paginate_queryset(participant_list, request)
        serializer = ParticipantSerializer(results, many=True)
        return paginator.get_paginated_response(serializer.data)
Пример #31
0
 def users_groups_posts_list(self, request):
     users_groups = Group.objects.filter(
         members=request.user) | Group.objects.filter(owner=request.user)
     if len(users_groups) == 0:
         return Response(data={'message': 'Your groups were not found'},
                         status=status.HTTP_406_NOT_ACCEPTABLE)
     groups_posts = Post.objects.none()
     for group in users_groups:
         groups_posts = groups_posts | Post.objects.filter(group=group)
     groups_posts = sorted(groups_posts,
                           key=attrgetter('date_posted'),
                           reverse=True)
     if len(groups_posts) == 0:
         return Response(data={'message': 'Your posts were not found'},
                         status=status.HTTP_406_NOT_ACCEPTABLE)
     users_posts = PostSerializer(groups_posts,
                                  context={
                                      "host": request.get_host()
                                  },
                                  many=True).data
     paginator = PageNumberPagination()
     data = paginator.paginate_queryset(users_posts, request)
     return paginator.get_paginated_response(data=data)
Пример #32
0
def showSearch(request):
    # get the word/letter given by the user from the parameter of url, q (?q='searchedword')
    title = request.GET['q']
    # Check if the users choose any way of sorting from the parameter of url, gen (?gen='Action')
    # and order it accordingly.
    # Ordered in movieid by default.
    if 'orderby' in request.GET:
        orderby = request.GET['orderby']
    else:
        orderby = 'movieid'

    # Check if the ordering of movies chosen by the user is from highest average rating to the lowest
    if orderby == '-avg_rating':
        # Retrieve title, genre and tmdbid of the movies
        # from the Titles Model join the Ratings and Links Model
        # where the title of movies contain the given word/letter and
        # the movies have at least 50 ratings and in the descending order of average rating
        queryset = Titles.objects.annotate(
            avg_rating=Avg('ratings__rating'),
            count_rating=Count('ratings__movieid')).filter(
                title__icontains=title,
                count_rating__gte=50).values('title', 'genre',
                                             'links__tmdbid').order_by(orderby)
    else:
        # Retrieve title, genre and tmdbid of the movies
        # from the Titles Model join the Ratings and Links Model
        # where the title of the movies contain the given word/letter
        # and in the given order the users preferred besides average rating
        queryset = Titles.objects.annotate(
            avg_rating=Avg('ratings__rating')).filter(
                title__icontains=title).values(
                    'title', 'genre', 'links__tmdbid').order_by(orderby)
    paginator = PageNumberPagination()
    paginator.page_size = 7
    result_page = paginator.paginate_queryset(queryset, request)
    serializer = SearchSerializer(result_page, many=True)
    return paginator.get_paginated_response(serializer.data)
Пример #33
0
def products_list(request):
    if request.method == 'GET':
        skin_type = request.GET.get('skin_type')
        if not skin_type or not skin_type in ['oily', 'dry', 'sensitive']:
            return empty_view()
        category = request.GET.get('category')
        exclude_ingredient = request.GET.get('exclude_ingredient')
        include_ingredient = request.GET.get('include_ingredient')

        kwargs = {}  # filter의 조건 ( 카테고리, 필수 포함 성분들 )
        exclude = {}  # exclude의 조건 ( 배제 대상 성분들 )
        having = 1  # include_ingredient의 개수
        if category:
            kwargs['category'] = category
        if include_ingredient:
            kwargs['ingredients__in'] = list(include_ingredient.split(','))
            having = len(kwargs['ingredients__in'])
        if exclude_ingredient:
            exclude['ingredients__in'] = list(exclude_ingredient.split(','))

        queryset = Item.objects\
            .filter(**kwargs)\
            .exclude(**exclude)\
            .order_by('-'+skin_type, 'price')\
            .annotate(count=Count('id'))\
            .filter(count=having)   # 같은 id의 개수가 필수 성분 개수와 같을 때, include_ingredient 조건 충족

        paginator = PageNumberPagination()  # pagination
        paginator.page_size = 50  # 50개마다

        page = paginator.paginate_queryset(queryset, request)
        if page is not None:
            serializer = ProductsSerializer(page, many=True)
            return paginator.get_paginated_response(serializer.data)

        serializer = ProductsSerializer(queryset, many=True)
        return Response(serializer.data)
Пример #34
0
def tutorials(request):
    """
    get: Return all tutorials
    post: submit a tutorial
    """
    if request.method == 'GET':
        paginator = PageNumberPagination()
        tutorials = Tutorial.objects.all().order_by('id').filter(publish=True)
        context = paginator.paginate_queryset(tutorials, request)
        serializer = TutorialSerializer(context, many=True)
        return paginator.get_paginated_response(serializer.data)
    elif request.method == 'POST':
        postserializer = TutorialPOST(data=request.data)
        if postserializer.is_valid():
            link_count = Tutorial.objects.filter(
                link=request.data['link']).count()
            if link_count == 0:
                tags, title = generate_tags(request.data['link'])
                if 'other' in tags:
                    return JSONResponse({"message ": "Not a Tutorial link"},
                                        status=status.HTTP_406_NOT_ACCEPTABLE)
                else:
                    tutorial_object = Tutorial.objects.create(
                        title=title,
                        link=request.data['link'],
                        category=request.data['category'])
                    for tag in tags:
                        obj, created = Tag.objects.get_or_create(name=tag)

                    tag_obj_list = Tag.objects.filter(name__in=tags)
                    tutorial_object.tags.set(tag_obj_list)
                    return JSONResponse({"message ": "Created, Thanks"},
                                        status=status.HTTP_201_CREATED)
            return JSONResponse({"message ": "Created, Thanks"},
                                status=status.HTTP_201_CREATED)
        return JSONResponse({"message": "Not Valid, Try Again"},
                            status=status.HTTP_406_NOT_ACCEPTABLE)
Пример #35
0
    def list(self, request):
        date = request.GET.get(date_parameter.name, None)
        start_date = request.GET.get(start_date_parameter.name, None)
        open_cases = request.GET.get(open_cases_parameter.name, None)
        team = request.GET.get(team_parameter.name, None)
        reason = request.GET.get(reason_parameter.name, None)
        open_status = request.GET.get(open_status_parameter.name, None)
        no_pagination = request.GET.get(no_pagination_parameter.name, None)

        queryset = self.get_queryset()

        if date:
            queryset = queryset.filter(start_date=date)
        if start_date:
            queryset = queryset.filter(start_date__gte=start_date)
        if open_cases:
            open_cases = open_cases == "true"
            queryset = queryset.filter(end_date__isnull=open_cases)
        if team:
            queryset = queryset.filter(team=team)
        if reason:
            queryset = queryset.filter(reason=reason)
        if open_status:
            queryset = queryset.filter(
                case_states__end_date__isnull=True,
                case_states__status__name=open_status,
            )

        if no_pagination == "true":
            serializer = CaseSerializer(queryset, many=True)
            return Response(serializer.data)

        paginator = PageNumberPagination()
        context = paginator.paginate_queryset(queryset, request)
        serializer = CaseSerializer(context, many=True)

        return paginator.get_paginated_response(serializer.data)
Пример #36
0
    def search(self, request):
        postal_code = request.GET.get(postal_code_parameter.name, None)
        street_name = request.GET.get(street_name_parameter.name, None)
        number = request.GET.get(street_number_parameter.name, None)
        suffix = request.GET.get(suffix_parameter.name, None)
        team = request.GET.get(team_parameter.name, None)

        if postal_code is None and street_name is None:
            return HttpResponseBadRequest(
                "A postal_code or street_name queryparameter should be provided"
            )
        if postal_code is not None and number is None:
            return HttpResponseBadRequest("number queryparameter is required")
        if street_name is not None and number is None:
            return HttpResponseBadRequest("number queryparameter is required")

        address_queryset = search(
            street_name=street_name,
            postal_code=postal_code,
            number=number,
            suffix=suffix,
        )

        cases = Case.objects.none()
        for address in address_queryset:
            cases = cases | address.cases.all()

        cases = cases.filter(end_date=None)

        if team:
            cases = cases.filter(team=team)

        paginator = PageNumberPagination()
        context = paginator.paginate_queryset(cases, request)
        serializer = CaseSerializer(context, many=True)

        return paginator.get_paginated_response(serializer.data)
Пример #37
0
def room_search(request):
    # 아래 두줄을 paginator = OwnPagination() 으로 줄여줄수 있지만
    # Custom pagination 사용하지 않을때도 알아야하니깐 나두자
    max_price = request.GET.get("max_price", None)
    min_price = request.GET.get("min_price", None)
    beds = request.GET.get("beds", None)
    bedrooms = request.GET.get("bedrooms", None)
    bathrooms = request.GET.get("bathrooms", None)
    lat = request.GET.get("lat", None)
    lng = request.GET.get("lng", None)

    filter_kwargs = {}
    if max_price is not None:
        filter_kwargs["price__lte"] = max_price
    if min_price is not None:
        filter_kwargs["price__gte"] = min_price
    if beds is not None:
        filter_kwargs["beds__gte"] = beds
    if bedrooms is not None:
        filter_kwargs["beds__gte"] = bedrooms
    if bathrooms is not None:
        filter_kwargs["beds__gte"] = bathrooms
    if lat is not None and lng is not None:
        filter_kwargs["lat__gte"] = float(lat) - 0.005
        filter_kwargs["lat__lte"] = float(lat) + 0.005
        filter_kwargs["lng__gte"] = float(lng) - 0.005
        filter_kwargs["lng__lte"] = float(lng) + 0.005

    paginator = PageNumberPagination()
    paginator.page_size = 10
    try:
        rooms = Room.objects.filter(**filter_kwargs)
    except ValueError:
        rooms = Room.objects.all()
    results = paginator.paginate_queryset(rooms, request)
    serializer = RoomSerializer(results, many=True)
    return paginator.get_paginated_response(serializer.data)
Пример #38
0
 def get(self, request, uid, format=None):
   # print("product", uid)
   if uid is "0":
     getqueryset = Product.objects.all()
     filter_word = request.query_params.get('search', '') #search
     if filter_word: #search filter
       getqueryset_productname = getqueryset.filter(productName__icontains=filter_word) #search by productname
       getqueryset_productdescription = getqueryset.filter(productDescription__icontains=filter_word) #search by productdescription
       getqueryset = getqueryset_productname | getqueryset_productdescription
     
     sortby_list = request.query_params.getlist("sortby") #Sorting # (-word) for descending and (word) for ascending
     if sortby_list:
       for word in sortby_list:
         getqueryset = getqueryset.order_by(word)
 
     page_number = request.query_params.get('page','') #pagination setup
     if page_number:
       paginator = PageNumberPagination()
       paginator.page_size = 1
       result_page = paginator.paginate_queryset(getqueryset, request)
       getserializer = productSerializer(result_page, many=True)
       return paginator.get_paginated_response(getserializer.data)
     
     getProductForOrder = request.query_params.getlist("fororder")
     print(getProductForOrder)
     if getProductForOrder:
       emptyqueryset = Product.objects.none()
       for productid in getProductForOrder:
         queryset_temp = getqueryset.filter(productID=productid)
         emptyqueryset = emptyqueryset | queryset_temp
       getqueryset = emptyqueryset
       
     getserializer = productSerializer(getqueryset, many=True)
   else:
     getqueryset = Product.objects.get(productID = uid) ##GET request for a specific ProductID
     getserializer = productSerializer(getqueryset, many=False)
   return Response(data=getserializer.data, status=status.HTTP_200_OK)
Пример #39
0
def challenge_phase_list(request, challenge_pk):
    try:
        challenge = Challenge.objects.get(pk=challenge_pk)
    except Challenge.DoesNotExist:
        response_data = {'error': 'Challenge does not exist'}
        return Response(response_data, status=status.HTTP_406_NOT_ACCEPTABLE)

    if request.method == 'GET':
        challenge_phase = ChallengePhase.objects.filter(challenge=challenge)
        paginator = PageNumberPagination()
        paginator.page_size = settings.REST_FRAMEWORK['PAGE_SIZE']
        result_page = paginator.paginate_queryset(challenge_phase, request)
        serializer = ChallengePhaseSerializer(result_page, many=True)
        response_data = serializer.data
        return paginator.get_paginated_response(response_data)

    elif request.method == 'POST':
        serializer = ChallengePhaseSerializer(data=request.data,
                                              context={'challenge': challenge})
        if serializer.is_valid():
            serializer.save()
            response_data = serializer.data
            return Response(response_data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #40
0
    def get(self, request, format=None):
        paginator = PageNumberPagination()
        paginator.page_size = 10
        activityControlQueryset = ActivityControl.objects.filter(
            is_saved=True, auth_user=request.user)

        activity_data = Activity.objects.filter(
            pk__in=[x.activity.pk for x in activityControlQueryset
                    ]).prefetch_related('activity_attachment')
        if 'search' in request.GET:
            activity_data = activity_data.filter(
                content__contains=request.GET.get('search', None))
        if activity_data:
            result_page = paginator.paginate_queryset(activity_data, request)
            data = ActivitySerializer(instance=result_page,
                                      many=True,
                                      context={
                                          'request': request
                                      }).data
            return paginator.get_paginated_response(data)
        else:
            raise DataNotFoundException

        return Response(status=HTTP_500_INTERNAL_SERVER_ERROR)
Пример #41
0
    def get(self, request, slug, formate=None):
        paginator = PageNumberPagination()
        paginator.page_size = 10
        profile = get_object_or_404(UsersProfile, slug=slug)
        bookmarked_activity = ActivityControl.objects.filter(
            auth_user=profile.auth_user, is_saved=True).values('activity_id')
        bookmarked_activity.exclude(is_hidden=True)
        bookmarked_activity.exclude(is_reported=False)
        bookmarked_activity = bookmarked_activity.values('activity_id')
        activity_data = Activity.objects.filter(
            pk__in=[bookmarked_activity]).prefetch_related(
                'activity_attachment')
        if activity_data:
            result_page = paginator.paginate_queryset(activity_data, request)
            data = ActivitySerializer(instance=result_page,
                                      many=True,
                                      context={
                                          'request': request
                                      }).data
            return paginator.get_paginated_response(data)
        else:
            raise DataNotFoundException

        return Response(status=HTTP_500_INTERNAL_SERVER_ERROR)
Пример #42
0
 def get(self, request, **kwargs):
     flat_id = kwargs['flat_id']
     component_id = kwargs['component_id']
     type = request.data.pop("type", None)
     paginator = PageNumberPagination()
     paginator.page_size = 10
     if type == 'pending':
         tasks = Tasks.objects.annotate(
             name=F('building_component__component__name'),
             description=F('building_component__description')
         ).filter(building_component__flat_id=flat_id).filter(
             Q(
                 Q(building_component__component__parent_id=component_id)
                 | Q(building_component__component_id=component_id))
         ).exclude(status='done')
     elif type == 'done':
         tasks = Tasks.objects.annotate(
             name=F('building_component__component__name'),
             description=F('building_component__description')
         ).filter(
             building_component__flat_id=flat_id, status='done'
         ).filter(
             Q(
                 Q(building_component__component__parent_id=component_id)
                 | Q(building_component__component_id=component_id)))
     else:
         tasks = Tasks.objects.annotate(
             name=F('building_component__component__name'),
             description=F('building_component__description')
         ).filter(building_component__flat_id=flat_id).filter(
             Q(
                 Q(building_component__component__parent_id=component_id)
                 | Q(building_component__component_id=component_id)))
     result_page = paginator.paginate_queryset(tasks, request)
     serializer = TaskSerializer(result_page, many=True)
     return paginator.get_paginated_response(data=serializer.data)
Пример #43
0
 def get(
     request,
     slug,
 ):
     paginator = PageNumberPagination()
     paginator.page_size = 10
     profile = get_object_or_404(UsersProfile, slug=slug)
     friends = Friend.objects.friends(profile.auth_user)
     if 'query' in request.GET and len(request.GET['query']) > 3:
         friends = [
             x for x in friends
             if request.GET['query'] in x.first_name + ' ' + x.last_name
         ]
     if friends:
         result_page = paginator.paginate_queryset(friends, request)
         data = AuthUserSerializerLogin(instance=result_page,
                                        many=True,
                                        context={
                                            'request': request
                                        }).data
         return paginator.get_paginated_response(data)
     else:
         raise DataNotFoundException
     return Response(status=HTTP_500_INTERNAL_SERVER_ERROR)
Пример #44
0
def room_serach(request):
    max_price = request.GET.get("max_price", None)
    min_price = request.GET.get("min_price", None)
    beds = request.GET.get("beds", None)
    bedrooms = request.GET.get("bedrooms", None)
    bathrooms = request.GET.get("bathrooms", None)
    lat = request.GET.get("lat", None)
    lng = request.GET.get("lng", None)
    filter_kwargs = {}
    if max_price is not None:
        filter_kwargs["price__lte"] = max_price
    if min_price is not None:
        filter_kwargs["price__gte"] = min_price
    if beds is not None:
        filter_kwargs["beds__gte"] = beds
    if bedrooms is not None:
        filter_kwargs["bedrooms__gte"] = bedrooms
    if bathrooms is not None:
        filter_kwargs["bathrooms__gte"] = bathrooms
    paginator = PageNumberPagination()
    paginator.page_size = 10
    if lat is not None and lng is not None:
        filter_kwargs["lat__gte"] = float(lat) - 0.005
        filter_kwargs["lat__lte"] = float(lat) + 0.005
        filter_kwargs["lng__gte"] = float(lng) - 0.005
        filter_kwargs["lng__lte"] = float(lng) + 0.005
    try:
        rooms = Room.objects.filter(**filter_kwargs)
        # **filter_kwargs(unpacking) :
        # * 을 할경우 dict 의 모든 key 값을 반환한다
        # ** 을 할 경우 key = "value" 값으로 반환해준다
    except ValueError:
        rooms = Room.objects.all()
    results = paginator.paginate_queryset(rooms, request)
    serializer = RoomSerializer(results, many=True).data
    return paginator.get_paginated_response(serializer)
Пример #45
0
def all_objects(request, object):
    serializer_class, model = get_serializer_and_model_or_404(object)
    paginator = PageNumberPagination()

    # must be Json array having 'n' strings
    raw_fields = request.GET.get(EXTRA_PARAMS['FIELDS'], None)
    try:
        fields = process_fields_query(raw_fields)
    except JSONDecodeError:
        return Response({
            "errors": {
                "fields": ['Value must be valid JSON.']
            }
        }, status=status.HTTP_400_BAD_REQUEST)

    sort_query = request.GET.get(EXTRA_PARAMS['SORT'], None)
    sort = process_sort_query(sort_query, model)

    query_set = model.objects.all().order_by(sort)

    page = paginator.paginate_queryset(query_set, request)
    serializer = serializer_class(
        page, many=True, fields=fields, context={'request': request})
    return paginator.get_paginated_response(serializer.data)
Пример #46
0
def get_posts(request):

    text = request.data['text']

    try:
        social_media = request.data['social_media']
    except:
        social_media = None

    if text == '':
        queryset = Post.objects.filter(content=None, social_media=social_media)
    else:
        queryset = Post.objects.filter(Q(content__icontains=text)
                                       | Q(title__icontains=text),
                                       social_media=social_media)

    paginator = PageNumberPagination()
    paginator.page_size = 10

    result_page = paginator.paginate_queryset(queryset, request)

    serializer = PostSerializer(result_page, many=True)

    return paginator.get_paginated_response(serializer.data)
Пример #47
0
def products_list(request):

    if request.method == 'GET':

        search = request.GET.get('search', '')
        order = request.GET.get('order', '')
        per_page = request.GET.get('per_page', 5)

        products = Product.objects.search_products(search, order)

        paginator = PageNumberPagination()
        paginator.page_size = per_page
        result_page = paginator.paginate_queryset(products, request)
        serializer = ProductSerializerGET(result_page, many=True)

        return paginator.get_paginated_response(serializer.data)
        
    elif request.method == 'POST':
        product_data = JSONParser().parse(request)
        product_serializer = ProductSerializer(data=product_data)
        if product_serializer.is_valid():
            product_serializer.save()
            return JsonResponse(product_serializer.data, status=status.HTTP_201_CREATED) 
        return JsonResponse(product_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Пример #48
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)
Пример #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) # Response( serializer.data, status=200)
Пример #50
0
def ordenes_toma_muestra(request):
    """
    Lista las ordenes que vienen de recepcion y son enviadas al area de toma de muestra.
    Aqui empieza el proceso de trazabilidad de un laboratorio.
    """

    args = tuple()
    kwargs = {}
    empleado = request.user.empleado

    class OrdenSerializerTomaMuestra(OrdenSerializer):
        def to_representation(self, obj):
            representacion = super(OrdenSerializerTomaMuestra, self).to_representation(obj)
            representacion['toma_muestra'] = getattr(obj, 'recepcion', None) is not None
            return representacion

    if request.method == 'GET':
        param = request.GET.get('param', '')
        fecha = request.GET.get('fecha', '')
        hoy = timezone.now().date()
        servicios = Laboratorio.objects.all().values_list('servicio_id', flat=True)

        querys = (
            Q(paciente__pnombre__icontains=param) | Q(paciente__papellido__icontains=param) |
            Q(paciente__cedula__icontains=param) | Q(id__icontains=param)
        )

        ordenes = Orden.objects.filter(
            id__in=OrdenProducto.objects.filter(
                servicio__nombre__id__in=servicios
            ).values_list('orden_id', flat=True).distinct(),
            institucion__id=1
        ).exclude(anulada=True).order_by('fecha').select_related('paciente')

        if param:
            ordenes = ordenes.filter(querys)
        elif fecha:
            year, month, day = fecha.split('-')
            fecha_filter = datetime.date(year=int(year), month=int(month), day=int(day))
            ordenes = ordenes.filter(fecha__range=(fecha_filter, fecha_filter + datetime.timedelta(days=1)))
        else:
            hoy = datetime.date.today()
            ordenes = ordenes.filter(fecha__range=(hoy, hoy + datetime.timedelta(days=1)))
    
        pagination = PageNumberPagination()
        pagination.page_size = 100

        result_pagination = pagination.paginate_queryset(ordenes, request)
        serializer = OrdenSerializerTomaMuestra(result_pagination, many=True)
        return pagination.get_paginated_response(serializer.data)

    else:
        serializer = RecepcionSerializer(data=request.data)
        if 'hoja_gasto' in request.data:
            serializer_hoja_gasto = HojaGastoSerializer(data=request.data['hoja_gasto'], many=True)
            valid_serializer = serializer.is_valid()
            valid_hoja_gasto = serializer_hoja_gasto.is_valid()
            if valid_hoja_gasto and valid_serializer:
                serializer.save(estado=Recepcion.EN_CURSO, empleado=empleado)
                recepcion = serializer_hoja_gasto.save()
                recepcion.orden._save_status_if_need()  # svorden
                args = ([serializer.data, serializer_hoja_gasto.data], )
            else:
                args = ([getattr(serializer, 'errors', []), getattr(serializer_hoja_gasto, 'errors', [])], )
                kwargs['status'] = status.HTTP_400_BAD_REQUEST
        else:
            if serializer.is_valid():
                serializer.save(estado=Recepcion.EN_CURSO, empleado=empleado)
                args = (serializer.data, )
            else:
                args = (serializer.errors, )
                kwargs['status'] = status.HTTP_400_BAD_REQUEST

    return Response(*args, **kwargs)
def get_paginated_queryset_response(qs, request):
    paginator = PageNumberPagination()
    paginator.page_size = 10
    paginated_qs = paginator.paginate_queryset(qs, request)
    serializer = PostSerializer(paginated_qs, many=True , context={"request_user" : request.user})
    return paginator.get_paginated_response(serializer.data) # Response( serializer.data, status=200)
Пример #52
0
def index(request):
    paginator = PageNumberPagination()
    movies = Movie.objects.all()
    page = paginator.paginate_queryset(movies,request)
    serializer = MovieListSerializer(page, many=True)
    return paginator.get_paginated_response(serializer.data)
Пример #53
0
 def get(self, request, format=None):
     paginator = PageNumberPagination()
     obj = Shelter.objects.all()
     context = paginator.paginate_queryset(obj, request)
     serializer = ShelterSerializer(context, many=True)
     return paginator.get_paginated_response(serializer.data)
Пример #54
0
 def get(self, request, pk, format=None):
     paginator = PageNumberPagination()
     obj = Animal.objects.filter(shelter=pk)
     context = paginator.paginate_queryset(obj, request)
     serializer = AnimalSerializer(context, many=True)
     return paginator.get_paginated_response(serializer.data)
Пример #55
0
def get_paginated_queryset_response(querySet, request):
    paginator = PageNumberPagination()
    paginator.page_size = 20
    paginated_querySet = paginator.paginate_queryset(querySet, request)
    serializer = PostSerializer(paginated_querySet, many=True, context={"request": request})
    return paginator.get_paginated_response(serializer.data)
Пример #56
0
def get_paginated_queryset_response(queryset, request):
    paginator = PageNumberPagination()
    paginator.page_size = 10
    paginated_queryset = paginator.paginate_queryset(queryset, request)
    serializer = TweetSerializer(paginated_queryset, many=True)
    return paginator.get_paginated_response(serializer.data)
Пример #57
0
 def get(self, request, format=None):
     items = Colaborador.objects.all()
     paginator = PageNumberPagination()
     result_page = paginator.paginate_queryset(items, request)
     serializer = ColaboradorSerializer(result_page, many=True)
     return paginator.get_paginated_response(serializer.data)
Пример #58
0
def _paginate_response(data, request):
    paginator = PageNumberPagination()
    result_page = paginator.paginate_queryset(data, request)
    return paginator.get_paginated_response(result_page)
    def advance_search(self, request):
        queryset = super().get_queryset()
        filtros = request.data['filtros']
        next_connector = None
        apply_filters = 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 = 'USER'

            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 INSTANCES
                if attribute.entity_set.filter(id__in=[1, 2]).exists():
                    check_attribute_type = 'INSTANCE'

                if condition == 'is_set' or condition == 'not_set':
                    if condition == 'is_set':
                        # validar is set attribute
                        if check_attribute_type == 'USER':
                            users = User.objects.filter(
                                Q(userdata__attribute_id=data_key))
                            q = Q(instanceassociationuser__user_id__in=users)
                            apply_filters = people_search.apply_connector(
                                next_connector, apply_filters, q)
                        else:
                            q = Q(attributevalue__attribute_id=data_key)
                            apply_filters = people_search.apply_connector(
                                next_connector, apply_filters, q)

                    if condition == 'not_set':
                        # validar not set attribute
                        if check_attribute_type == 'USER':
                            users = User.objects.filter(~Q(
                                userdata__attribute_id=data_key))
                            q = Q(instanceassociationuser__user_id__in=users)
                            apply_filters = people_search.apply_connector(
                                next_connector, apply_filters, q)
                        else:
                            q = ~Q(attributevalue__attribute_id=data_key)
                            apply_filters = people_search.apply_connector(
                                next_connector, apply_filters, q)
                else:
                    if check_attribute_type == 'USER':
                        # filter by attribute user
                        last_attributes = people_search.get_last_attributes(
                            data_key, model=UserData, type_id='user_id')
                        # query_search = list(User.objects.filter(userdata__id__in=last_attributes).values_list('id',flat=True))
                        s = Q(instanceassociationuser__user__userdata__id__in=
                              last_attributes)

                        val_field = 'userdata__data_value'

                    else:
                        # filter by attribute instance
                        last_attributes = people_search.get_last_attributes(
                            data_key,
                            model=models.AttributeValue,
                            type_id='instance_id')
                        s = Q(attributevalue__id__in=last_attributes)

                        val_field = 'attributevalue__value'

                    qs = models.Instance.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('user__bot_id',
                                               value,
                                               condition,
                                               exact=True)
                qs = AssignationMessengerUser.objects.filter(s).values_list(
                    'user_id',
                    flat=True).exclude(user_id__isnull=True).distinct()
                query = Q(instanceassociationuser__user_id__in=list(qs))
                apply_filters = people_search.apply_connector(
                    next_connector, apply_filters, query)

            elif search_by == 'channel':
                # filter by channel
                s = people_search.apply_filter('channel_id', value, condition)
                qs = User.objects.filter(s).order_by('-id').values_list(
                    'id', flat=True)
                query = Q(instanceassociationuser__user_id__in=list(qs))
                apply_filters = people_search.apply_connector(
                    next_connector, apply_filters, query)

            elif search_by == 'dates':
                # filter 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':
                        queryset = queryset.filter(created_at__gte=date_from,
                                                   created_at__lte=date_to)

            elif search_by == 'group':
                # filter by group
                s = people_search.apply_filter('group__id',
                                               value,
                                               condition,
                                               exact=True)
                qs = AssignationMessengerUser.objects.filter(s).values_list(
                    'user_id',
                    flat=True).exclude(user_id__isnull=True).distinct()
                queryset = Q(instanceassociationuser__user_id__in=list(qs))
                apply_filters = people_search.apply_connector(
                    next_connector, apply_filters, queryset)

            elif search_by == 'program':
                # filter by program
                s = people_search.apply_filter('program__id',
                                               value,
                                               condition,
                                               exact=True)
                qs = ProgramAssignation.objects.filter(s).values_list(
                    'user_id', flat=True).exclude(user_id__isnull=True)
                queryset = Q(instanceassociationuser__user_id__in=list(qs))
                apply_filters = people_search.apply_connector(
                    next_connector, apply_filters, queryset)

            elif search_by == 'sequence':
                queryset = people_search.by_sequence(
                    models.Instance, 'instanceassociationuser__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'):
            # string search on datatable
            filter_search = Q()
            params = ['id', 'name']

            for x in params:
                filter_search |= Q(**{
                    f"{x}__icontains":
                    self.request.query_params.get('search')
                })
            queryset = queryset.filter(filter_search)

        queryset = queryset.filter(apply_filters)

        pagination = PageNumberPagination()
        qs = pagination.paginate_queryset(queryset, request)
        serializer = InstanceDetailSerializer(qs, many=True)
        return pagination.get_paginated_response(serializer.data)
Пример #60
0
 def get(self, request):
     users = User.objects.all()
     paginator = PageNumberPagination()
     paginated_users = paginator.paginate_queryset(users, request)
     serializer = UserListSerializer(paginated_users, many=True)
     return paginator.get_paginated_response(serializer.data)