From 4a2f06e4f0203c841e50b0a59e41fb83ab5b39ca Mon Sep 17 00:00:00 2001 From: Bhupesh-V Date: Thu, 29 Aug 2019 20:34:27 +0530 Subject: [PATCH] possible fix for #28 --- api/views.py | 8 +++---- app/admin.py | 4 ++-- app/migrations/0002_auto_20190829_1937.py | 28 +++++++++++++++++++++++ app/models.py | 1 + app/resources.py | 2 +- app/views.py | 4 ++-- 6 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 app/migrations/0002_auto_20190829_1937.py diff --git a/api/views.py b/api/views.py index ae4e58c..afe5246 100644 --- a/api/views.py +++ b/api/views.py @@ -32,7 +32,7 @@ def tutorials(request): """ if request.method == 'GET': paginator = PageNumberPagination() - tutorials = Tutorial.objects.all().order_by('id') + 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) @@ -76,7 +76,7 @@ def tutorial_tag(request, tags): paginator = PageNumberPagination() tags = tags.split(',') custom_tutorial = Tutorial.objects.filter( - tags__name__in=tags).order_by('id').distinct() + tags__name__in=tags).order_by('id').distinct().filter(publish=True) context = paginator.paginate_queryset(custom_tutorial, request) serializer = TutorialSerializer(context, many=True) return paginator.get_paginated_response(serializer.data) @@ -90,7 +90,7 @@ def tutorial_tag_category(request, tags, category): category = category.split(',') custom_tutorial = Tutorial.objects.filter( tags__name__in=tags, category__in=category - ).order_by('id').distinct() + ).order_by('id').filter(publish=True).distinct() context = paginator.paginate_queryset(custom_tutorial, request) serializer = TutorialSerializer(context, many=True) return paginator.get_paginated_response(serializer.data) @@ -110,7 +110,7 @@ def tags(request): def latest(request): """returns latest 10 tutorials from tutorialdb""" paginator = PageNumberPagination() - results = Tutorial.objects.all().order_by('-created_date')[:10] + results = Tutorial.objects.all().filter(publish=True).order_by('-created_date')[:10] context = paginator.paginate_queryset(results, request) serializer = TutorialSerializer(context, many=True) return paginator.get_paginated_response(serializer.data) diff --git a/app/admin.py b/app/admin.py index 86c0eb5..bb681f8 100644 --- a/app/admin.py +++ b/app/admin.py @@ -3,12 +3,12 @@ from .models import Tag, Tutorial from .resources import TagResource, TutorialResource - @admin.register(Tag) class TagAdmin(ImportExportModelAdmin): resource_class = TagResource @admin.register(Tutorial) -class TutorialAdmin(ImportExportModelAdmin): +class TutorialAdmin(ImportExportModelAdmin, admin.ModelAdmin): + list_display = ('id', 'title', 'publish') resource_class = TutorialResource diff --git a/app/migrations/0002_auto_20190829_1937.py b/app/migrations/0002_auto_20190829_1937.py new file mode 100644 index 0000000..57bdd32 --- /dev/null +++ b/app/migrations/0002_auto_20190829_1937.py @@ -0,0 +1,28 @@ +# Generated by Django 2.2.3 on 2019-08-29 14:07 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('app', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='tutorial', + name='publish', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='tutorial', + name='category', + field=models.CharField(choices=[('article', 'Article'), ('book', 'Book'), ('cheatsheet', 'Cheatsheet'), ('course', 'Course'), ('docs', 'Documentation'), ('video', 'Video')], max_length=20), + ), + migrations.AlterField( + model_name='tutorial', + name='tags', + field=models.ManyToManyField(to='app.Tag'), + ), + ] diff --git a/app/models.py b/app/models.py index dae571c..82c38fc 100644 --- a/app/models.py +++ b/app/models.py @@ -35,6 +35,7 @@ class Tutorial(models.Model): tags = models.ManyToManyField(Tag) category = models.CharField(max_length=20, choices=CATEGORIES) created_date = models.DateTimeField(default=timezone.now) + publish = models.BooleanField(default=False) def __str__(self): return self.title diff --git a/app/resources.py b/app/resources.py index b021bac..b64f872 100644 --- a/app/resources.py +++ b/app/resources.py @@ -12,7 +12,7 @@ class TutorialResource(resources.ModelResource): class Meta: model = Tutorial exclude = ('id',) - export_order = ('title', 'link', 'tags', 'category', 'created_date') + export_order = ('title', 'link', 'tags', 'category', 'created_date', 'publish') import_id_fields = ('title', 'link') diff --git a/app/views.py b/app/views.py index fddef19..830bebc 100644 --- a/app/views.py +++ b/app/views.py @@ -31,11 +31,11 @@ def search_query(request): tutorials = Tutorial.objects.filter( (Q(title__icontains=query) | Q(tags__name__in=list_query)) & Q(category__icontains=category) - ).order_by('id').distinct() + ).order_by('id').filter(publish=True).distinct() else: tutorials = Tutorial.objects.filter( (Q(title__icontains=query) | Q(tags__name__in=list_query)) - ).order_by('id').distinct() + ).order_by('id').filter(publish=True).distinct() end_time = time.time() total = len(tutorials) result_time = round(end_time - start_time, 3)