コード例 #1
0
ファイル: models.py プロジェクト: rosix-ru/django-bwp
 def get(self, request, pk=None, **kwargs):
     """ Получает объект согласно привилегий """
     if pk:
         try:
             object = self.queryset(request, **kwargs).get(pk=pk)
         except:
             return get_http_404(request)
         return self.get_object_detail(request, object, **kwargs)
     else:
         return self.get_collection(request, **kwargs)
コード例 #2
0
ファイル: models.py プロジェクト: rosix-ru/django-bwp
 def copy(self, request, pk, clone=None, **kwargs):
     """ Получает копию объекта согласно привилегий.
     """
     if self.has_add_permission(request):
         try:
             object = self.queryset(request, **kwargs).get(pk=pk)
         except:
             return get_http_404(request)
         return self.get_copy_object_detail(request, object, clone, **kwargs)
     else:
         return get_http_403(request)
コード例 #3
0
ファイル: models.py プロジェクト: rosix-ru/django-bwp
    def get_collection(self, request, pk, **kwargs):
        """ Метод получения вложенных объектов """
        try:
            object = self.related_model.queryset(request).get(pk=pk)
        except:
            return get_http_404(request)
        qs = getattr(object, self.related_name).select_related().all()
        qs = self.queryset_from_filters(qs, **kwargs)
        qs = self.filter_queryset(request, qs, **kwargs)
        qs = self.page_queryset(request, qs, **kwargs)
        total = self.get_queryset_total(qs)

        properties = [ x['name'] for x in self.get_list_display()\
            if not x['name'] in self.get_fields() ]
        # Задаём использование натуральных ключей для того, чтобы не
        # ставился автоматически use_split_keys = True
        data = self.serialize(qs, use_natural_keys=True, properties=properties)
        if total:
            data['total'] = total
        return JSONResponse(data=data)