diff --git a/trajectfi/asgi.py b/trajectfi/asgi.py index 61da327..9cf77f7 100644 --- a/trajectfi/asgi.py +++ b/trajectfi/asgi.py @@ -7,10 +7,12 @@ https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/ """ +import sys import os from django.core.asgi import get_asgi_application +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "trajectfi.settings") application = get_asgi_application() diff --git a/trajectfi/settings.py b/trajectfi/settings.py index e6e5c58..4446818 100644 --- a/trajectfi/settings.py +++ b/trajectfi/settings.py @@ -13,6 +13,7 @@ import os from pathlib import Path + import dj_database_url # Build paths inside the project like this: BASE_DIR / 'subdir'. @@ -161,3 +162,8 @@ # Custom settings AUTH_USER_MODEL = "core.User" + +INSTALLED_APPS = [ + "core.tests", # Register the models path + "rest_framework", +] diff --git a/trajectfi/urls.py b/trajectfi/urls.py index 95cae23..bbddb17 100644 --- a/trajectfi/urls.py +++ b/trajectfi/urls.py @@ -17,6 +17,40 @@ from django.contrib import admin from django.urls import include, path +from django.db.models import Count +from rest_framework import serializers, generics +from rest_framework.response import Response +from rest_framework.views import APIView +from django.urls import path +from core.tests.models import AcceptedToken, Listing # type: ignore + + +# Serializer +class AcceptedTokenSerializer(serializers.ModelSerializer): + listing_count = serializers.SerializerMethodField() + + class Meta: + model = AcceptedToken + fields = ["contract_address", "name", "listing_count"] + + def get_listing_count(self, obj): + return obj.listing_count + + +# View +class AcceptedTokenListView(generics.ListAPIView): + queryset = AcceptedToken.objects.annotate(listing_count=Count("listing")) + serializer_class = AcceptedTokenSerializer + + +# URL Configuration +urlpatterns = [ + path( + "api/accepted-tokens/", + AcceptedTokenListView.as_view(), + name="accepted-token-list", + ), +] urlpatterns = [ path("admin/", admin.site.urls),