Skip to content

Commit

Permalink
Create faq models and views
Browse files Browse the repository at this point in the history
  • Loading branch information
vinikvuo committed Aug 8, 2023
1 parent fc63151 commit 0fa0e8f
Show file tree
Hide file tree
Showing 7 changed files with 85 additions and 2 deletions.
2 changes: 2 additions & 0 deletions mvj/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@
AreaSearchViewSet,
DirectReservationLinkViewSet,
DirectReservationToFavourite,
FAQViewSet,
FavouriteViewSet,
GeneratePDF,
InformationCheckViewSet,
Expand Down Expand Up @@ -227,6 +228,7 @@
AreaSearchAttachmentViewset,
basename="pub_area_search_attachment",
)
pub_router.register(r"faq", FAQViewSet, basename="pub_faq")
pub_router.register(r"favourite", FavouriteViewSet, basename="pub_favourite")
pub_router.register(r"form", FormViewSet, basename="pub_form")
pub_router.register(r"intended_use", IntendedUsePSViewSet, basename="pub_intended_use")
Expand Down
9 changes: 9 additions & 0 deletions plotsearch/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
PlotSearchSubtype,
PlotSearchType,
)
from plotsearch.models.plot_search import FAQ


class PlotSearchAdmin(FieldPermissionsAdminMixin, admin.ModelAdmin):
Expand All @@ -32,9 +33,17 @@ class FavouriteAdmin(FieldPermissionsAdminMixin, admin.ModelAdmin):
inlines = [FavouriteTargetInline]


class FAQAdmin(admin.ModelAdmin):
list_display = (
"answer",
"question",
)


admin.site.register(PlotSearch, PlotSearchAdmin)
admin.site.register(PlotSearchStage, NameAdmin)
admin.site.register(Favourite, FavouriteAdmin)
admin.site.register(PlotSearchType, NameAdmin)
admin.site.register(AreaSearchIntendedUse, NameAdmin)
admin.site.register(PlotSearchSubtype, NameAdmin)
admin.site.register(FAQ, FAQAdmin)
29 changes: 29 additions & 0 deletions plotsearch/migrations/0027_faq.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Generated by Django 3.2.13 on 2023-07-28 06:37

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("plotsearch", "0026_areasearchstatus"),
]

operations = [
migrations.CreateModel(
name="FAQ",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("question", models.TextField(unique=True)),
("answer", models.TextField()),
],
),
]
5 changes: 5 additions & 0 deletions plotsearch/models/plot_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -502,5 +502,10 @@ def get_external_url(self):
return "{}/direct-reservation/{}".format(settings.PUBLIC_UI_URL, self.uuid)


class FAQ(models.Model):
question = models.TextField(unique=True)
answer = models.TextField()


auditlog.register(PlotSearch)
auditlog.register(InformationCheck)
10 changes: 10 additions & 0 deletions plotsearch/serializers/plot_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
)
from plotsearch.models.info_links import TargetInfoLink
from plotsearch.models.plot_search import (
FAQ,
AreaSearchAttachment,
AreaSearchStatus,
AreaSearchStatusNote,
Expand Down Expand Up @@ -1085,3 +1086,12 @@ def create(self, validated_data):
)

return instance


class FAQSerializer(serializers.ModelSerializer):
class Meta:
model = FAQ
fields = (
"question",
"answer",
)
18 changes: 18 additions & 0 deletions plotsearch/tests/api/test_public.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import pytest
from faker import Faker
from rest_framework.reverse import reverse

from plotsearch.models.plot_search import FAQ

fake = Faker("fi_FI")


@pytest.mark.django_db
def test_faq_list(client):
FAQ.objects.create(question=fake.name(), answer=fake.name())

url = reverse("pub_faq-list")

response = client.get(path=url, content_type="application/json")

assert response.status_code == 200
14 changes: 12 additions & 2 deletions plotsearch/views/plot_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,18 @@
PlotSearchType,
TargetStatus,
)
from plotsearch.models.plot_search import AreaSearchAttachment, DirectReservationLink
from plotsearch.models.plot_search import (
FAQ,
AreaSearchAttachment,
DirectReservationLink,
)
from plotsearch.permissions import AreaSearchAttachmentPermissions
from plotsearch.serializers.plot_search import (
AreaSearchAttachmentSerializer,
AreaSearchDetailSerializer,
AreaSearchSerializer,
DirectReservationLinkSerializer,
FAQSerializer,
FavouriteSerializer,
InformationCheckSerializer,
IntendedUseSerializer,
Expand Down Expand Up @@ -287,7 +292,6 @@ def render_to_response(


class DirectReservationToFavourite(APIView):

permission_classes = (IsAuthenticated,)

def get(self, request, *args, **kwargs):
Expand All @@ -305,3 +309,9 @@ def get(self, request, *args, **kwargs):
target.refresh_from_db()

return Response(FavouriteSerializer(favourite).data, status=200)


class FAQViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
queryset = FAQ.objects.all()
permission_classes = (MvjDjangoModelPermissionsOrAnonReadOnly,)
serializer_class = FAQSerializer

0 comments on commit 0fa0e8f

Please sign in to comment.