Exemple #1
0
 def put(self, request, pk):
     article = get_object_or_404(Article, pk=pk)
     serializer = ArticleDetailsSerializer(article,
                                           data=request.data,
                                           context={'request': request})
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemple #2
0
def create_article():
    user = current_identity
    if user.is_not_author() and user.is_not_admin():
        pass
    title = request.json.get('title')
    description = request.json.get('description')
    body = request.json.get('body')
    tags_input = request.json.get('tags')
    categories_input = request.json.get('categories')
    tags = []
    categories = []
    for category in categories_input:
        categories.append(
            get_or_create(db.session, Category, {'description': category.get('description', None)},
                          name=category['name'])[0])

    for tag in tags_input:
        tags.append(get_or_create(db.session, Tag, {'description': tag.get('description')}, name=tag['name'])[0])

    user_id = user.id

    article = Article(title=title, description=description, body=body, user_id=user_id, tags=tags,
                      categories=categories)
    db.session.add(article)
    db.session.commit()
    response = {'full_messages': ['Article created successfully']}
    response.update(ArticleDetailsSerializer(article).data)
    return jsonify(response)
Exemple #3
0
    def retrieve(self, request, **kwargs):
        serializer_context = {'request': request}

        try:
            article = self.queryset.get(slug=kwargs['slug'])
        except Article.DoesNotExist:
            raise NotFound('An article with this slug does not exist.')

        serializer = self.serializer_class(article, context=serializer_context)
        serializer = ArticleDetailsSerializer(article,
                                              context=serializer_context)
        return Response(serializer.data, status=status.HTTP_200_OK)
Exemple #4
0
    def update(self, request, slug):
        serializer_context = {'request': request}

        try:
            article = self.queryset.get(slug=slug)
        except Article.DoesNotExist:
            raise NotFound('An article with this slug does not exist.')

        serializer_data = request.data
        '''
        serializer = self.serializer_class(
            article,
            context=serializer_context,
            data=serializer_data,
            partial=True
        )
        '''
        serializer = ArticleDetailsSerializer(article,
                                              context=serializer_context,
                                              data=serializer_data,
                                              partial=True)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        return Response(serializer.data, status=status.HTTP_200_OK)
Exemple #5
0
    def post(self, request):
        data = list()
        order = 0
        images = request.data.getlist('images')
        if isinstance(images, list) and len(images) > 0 and isinstance(
                images[0], dict):
            for item in images:
                try:
                    if int(item['order']):
                        order = int(item['order'])
                except ValueError as e:
                    order += 1
                    logger = logging.getLogger('articles.views.list')
                    logger.error(e)
                data.append({'original': item['image'], 'order': order})
        else:
            for item in images:
                data.append({'original': item, 'order': order})
                order += 1

        images_serializer = ImageSerializer(data=data,
                                            many=True,
                                            context={'request': request})
        images_valid = False
        if images_serializer.is_valid():
            images_valid = True

        serializer = CreateArticleSerializer(data=request.data,
                                             context={'request': request})
        if serializer.is_valid():
            article = serializer.save()
            if images_valid:
                images = images_serializer.save()
                article.images.set(images)
                article.set_main_image()
            serializer = ArticleDetailsSerializer(article,
                                                  context={'request': request})
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemple #6
0
def update_article(article_slug):
    article = Article.query.filter_by(slug=article_slug).first()
    if article is None:
        return get_error_response(messages='not found', status_code=404)
    title = request.json.get('title')
    if title:
        article.title = title

    description = request.json.get('description')
    if description:
        article.description = description

    body = request.json.get('body')
    if body:
        article.body = body

    tags_input = request.json.get('tags')
    categories_input = request.json.get('categories')
    tags = []
    categories = []
    if categories_input:
        for category in categories_input:
            categories.append(
                get_or_create(db.session, Category, {'description': category.get('description', None)},
                              name=category['name'])[0])

    if tags_input:
        for tag in tags_input:
            tags.append(get_or_create(db.session, Tag, {'description': tag.get('description')}, name=tag['name'])[0])

    article.tags = tags
    article.categories = categories
    db.session.commit()
    response = {'full_messages': ['Article updated successfully']}
    response.update(ArticleDetailsSerializer(article).data)
    return jsonify(response)
Exemple #7
0
def by_id(article_id):
    article = Article.query.get(article_id)
    # article = Article.query.filter_by(slug=article_slug).first_or_404()
    return jsonify(ArticleDetailsSerializer(article).data), 200
Exemple #8
0
def show_article(article_slug):
    article = Article.query.filter_by(slug=article_slug).first()
    # article = Article.query.filter_by(slug=article_slug).first_or_404()
    return jsonify(ArticleDetailsSerializer(article).data), 200
Exemple #9
0
 def get(self, request, pk):
     article = get_object_or_404(Article, pk=pk)
     serializer = ArticleDetailsSerializer(article,
                                           context={'request': request})
     return Response(serializer.data)
Exemple #10
0
 def get(self, request):
     return ArticleDetailsSerializer(self.article).data