Skip to content

Commit

Permalink
ratification api
Browse files Browse the repository at this point in the history
  • Loading branch information
longhotsummer committed Oct 15, 2024
1 parent 9752fd8 commit 1bcff20
Show file tree
Hide file tree
Showing 6 changed files with 65 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class Migration(migrations.Migration):
options={
"verbose_name": "ratification",
"verbose_name_plural": "ratifications",
"db_table": "africanlii_ratification",
},
),
migrations.CreateModel(
Expand Down Expand Up @@ -106,6 +107,7 @@ class Migration(migrations.Migration):
"verbose_name": "ratification country",
"verbose_name_plural": "ratification countries",
"ordering": ["country__name"],
"db_table": "africanlii_ratificationcountry",
},
),
migrations.AddConstraint(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.14 on 2024-10-15 14:45

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("peachjam", "0167_ratification_ratificationcountry_and_more"),
]

operations = [
migrations.AddField(
model_name="ratification",
name="updated_at",
field=models.DateTimeField(auto_now=True, verbose_name="updated at"),
),
]
1 change: 1 addition & 0 deletions peachjam/models/ratification.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class Ratification(models.Model):
)
source_url = models.URLField(_("source URL"), null=True, blank=True)
last_updated = models.DateField(_("last updated"), null=True, blank=True)
updated_at = models.DateTimeField(_("updated at"), auto_now=True)

class Meta:
verbose_name = _("ratification")
Expand Down
20 changes: 18 additions & 2 deletions peachjam_api/public_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@
from rest_framework.decorators import action
from rest_framework.permissions import BasePermission, DjangoModelPermissions

from peachjam.models import Gazette, Judgment
from peachjam_api.serializers import GazetteSerializer, JudgmentSerializer
from peachjam.models import Gazette, Judgment, Ratification
from peachjam_api.serializers import (
GazetteSerializer,
JudgmentSerializer,
RatificationSerializer,
)


class JudgmentAPIPermission(BasePermission):
Expand Down Expand Up @@ -97,3 +101,15 @@ class JudgmentsViewSet(BaseDocumentViewSet):
.all()
)
serializer_class = JudgmentSerializer


class RatificationsViewSet(viewsets.ReadOnlyModelViewSet):
permission_classes = [DjangoModelPermissions]
queryset = (
Ratification.objects.select_related("work").prefetch_related("countries").all()
)
serializer_class = RatificationSerializer
filterset_fields = {
"updated_at": ["exact", "gte", "lte"],
}
ordering = ["updated_at"]
21 changes: 21 additions & 0 deletions peachjam_api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
Label,
Legislation,
Predicate,
Ratification,
RatificationCountry,
Relationship,
Work,
)
Expand Down Expand Up @@ -206,3 +208,22 @@ class Meta:
"url",
"work_frbr_uri",
)


class RatificationCountrySerializer(serializers.ModelSerializer):
class Meta:
model = RatificationCountry
exclude = ["id", "ratification"]


class RatificationSerializer(serializers.ModelSerializer):
countries = RatificationCountrySerializer(many=True)
work = serializers.CharField(source="work.frbr_uri")

class Meta:
model = Ratification
fields = (
"work",
"last_updated",
"countries",
)
5 changes: 5 additions & 0 deletions peachjam_api/urls_public.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
public_views.GazettesViewSet,
basename="gazettes",
)
router.register(
r"ratifications",
public_views.RatificationsViewSet,
basename="ratifications",
)

urlpatterns = [
# public-facing API
Expand Down

0 comments on commit 1bcff20

Please sign in to comment.