class EditRecordViewSet(viewsets.ModelViewSet, ReadsModelViewSetMixin, MixedPermissionModelViewSet): queryset = EditRecord.objects.all().order_by('-get_date') serializer_class = EditRecordSerializer filter_backends = ( filters.OrderingFilter, EditorFilter, EditRecordServiceInfoFilter, ) ordering_fields = ('username', ) permission_classes_by_action = { #'retrieve': [RuleORPermissionFactory('detail', ['is_manager',]),], 'update': [ RuleORPermissionFactory('detail', [ 'is_manager', ]), ], 'partial_update': [ RuleORPermissionFactory('detail', [ 'is_manager', ]), ], 'destroy': [ RuleORPermissionFactory('detail', [ 'is_manager', ]), ], } @action( detail=True, methods=[ 'get', ], url_name='analysis', url_path='action/analysis', ) def analysis(self, request, pk=None): res = {} obj = self.get_object() [ res['len_block'], res['same_character'], res['src_count'], res['dst_count'] ] = obj.diff() res['edit_distance'] = obj.edit_distance() res['delete_count'] = res['src_count'] - res['same_character'] res['insert_count'] = res['dst_count'] - res['same_character'] res['diff_count'] = res['dst_count'] - res['src_count'] return Response(data=res, status=status.HTTP_202_ACCEPTED)
class BusinessContentViewSet(viewsets.ModelViewSet): queryset = BusinessContent.objects.all() serializer_class = BusinessContentSerializer permission_classes = (RuleORPermissionFactory('list', [ 'is_manager', '__read__', ]), )
class OrganizationViewSet(viewsets.ModelViewSet): queryset = Organization.objects.all() serializer_class = OrganizationSerializer filter_backends = ( filters.OrderingFilter, filters.SearchFilter, ) permission_classes = (RuleORPermissionFactory('list', [ 'is_manager', '__read__', ]), )
class QAndAViewSet(viewsets.ModelViewSet): queryset = QAndA.objects.all() serializer_class = QAndASerializer filter_backends = (QAndACategoryFilter, ) permission_classes = (RuleORPermissionFactory('list', [ 'is_manager', '__read__', ]), ) def perform_create(self, serializer): instance = serializer.save(order=len(QAndA.objects.all()), ) instance.save()
class AnnouncementViewSet(viewsets.ModelViewSet, ResourceViewSet): queryset = Announcement.objects.all().order_by('-datetime') serializer_class = AnnouncementSerializer filter_backends = ( filters.OrderingFilter, filters.SearchFilter, dffilters.DjangoFilterBackend, ) ordering_fields = ('datetime', ) search_fields = ('category', ) filterset_fields = ('category', 'org_id') permission_classes = (RuleORPermissionFactory('list', [ 'is_manager', '__read__', ]), ) def get_fullpath(self, obj, dir, resource): fullpath = os.path.join(obj.path, dir, resource) return fullpath
class AnnouncementViewSet(viewsets.ModelViewSet, ResourceViewSet): queryset = Announcement.objects.all().order_by('-datetime') serializer_class = AnnouncementSerializer filter_backends = ( filters.OrderingFilter, filters.SearchFilter, dffilters.DjangoFilterBackend, ) ordering_fields = ('datetime', ) search_fields = ('category', ) filterset_fields = ('category', 'org_id') permission_classes = (RuleORPermissionFactory('list', [ 'is_manager', '__read__', ]), ) def get_fullpath(self, obj, dir, resource): fullpath = os.path.join(obj.path, dir, resource) return fullpath @action( detail=False, methods=['get'], url_name='latest', url_path='action/latest', ) def latest(self, request, pk=None): from datetime import datetime from dateutil.relativedelta import relativedelta year = datetime.today().year month = datetime.today().month begin_date = datetime(year, month, 1) + relativedelta(months=-12) end_date = datetime.today() query = Announcement.objects category = request.query_params.get('category') if category: query = query.filter(category=category) query = query.filter(datetime__gte=begin_date, datetime__lte=end_date).order_by("-datetime") s = AnnouncementSerializer(instance=query, many=True) return Response(data=s.data, status=status.HTTP_202_ACCEPTED)
class RecommendationSubjectViewSet(viewsets.ModelViewSet, ResourceViewSet): queryset = RecommendationSubject.objects.all() serializer_class = RecommendationSubjectSerializer filter_backends = (dffilters.DjangoFilterBackend, ) permission_classes = (RuleORPermissionFactory('list', [ 'is_manager', '__read__', ]), ) def perform_create(self, serializer): instance = serializer.save(order=len( RecommendationSubject.objects.all()), ) instance.save() def get_fullpath(self, obj, dir, resource): fullpath = None if dir == 'cover': if resource == 'image': fullpath = obj.cover_image return fullpath