Skip to content

Commit

Permalink
Merge pull request #34 from Pet-projects-CodePET/feature/counter_user…
Browse files Browse the repository at this point in the history
…s_projects

[+] Создала счетчик пользователей и проектов
  • Loading branch information
Nadya2502 authored Feb 21, 2024
2 parents 4b4a880 + 964498c commit e4e80e5
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 14 deletions.
Empty file added src/__init__.py
Empty file.
Empty file added src/backend/__init__.py
Empty file.
Empty file.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from rest_framework import serializers

from .models import Section
from src.backend.apps.general.models import Section


class SectionSerializer(serializers.ModelSerializer):
Expand Down
8 changes: 8 additions & 0 deletions src/backend/api/v1/general/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django.urls import path

from api.v1.general.views import CounterApiView, SectionViewSet

urlpatterns = [
path("section", SectionViewSet.as_view({"get": "list"})),
path("counter", CounterApiView.as_view()),
]
32 changes: 32 additions & 0 deletions src/backend/api/v1/general/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from django.db import connection
from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import generics, viewsets
from rest_framework.response import Response

from apps.general.models import Section

from .serializers import SectionSerializer


class SectionViewSet(viewsets.ModelViewSet):
"""Текстовая секция на странице"""

queryset = Section.objects.all()
serializer_class = SectionSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = ["page_id"]


class CounterApiView(generics.RetrieveAPIView):
"""Счетчик проектов и пользователей"""

@method_decorator(cache_page(600))
def get(self, request):
with connection.cursor() as cursor:
cursor.execute(
"SELECT count(*) from project_project union all SELECT count(*) from users_user "
)
row = cursor.fetchall()
return Response({"projects": row[0][0], "users": row[1][0]})
1 change: 1 addition & 0 deletions src/backend/api/v1/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
urlpatterns = [
path("", include("api.v1.users.urls")),
path("", include("djoser.urls.authtoken")),
path("", include("api.v1.general.urls")),
path("schema/", SpectacularAPIView.as_view(), name="schema"),
path("schema/docs/", SpectacularSwaggerView.as_view(url_name="schema")),
]
9 changes: 6 additions & 3 deletions src/backend/apps/general/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
# Generated by Django 5.0.1 on 2024-02-19 14:20
# Generated by Django 5.0.1 on 2024-02-17 10:06

from django.db import migrations, models

from django.conf import settings

class Migration(migrations.Migration):
initial = True

dependencies = []

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.CreateModel(
Expand Down
19 changes: 19 additions & 0 deletions src/backend/apps/general/migrations/0002_section_page_id.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 5.0.1 on 2024-02-19 20:16

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("general", "0001_initial"),
]

operations = [
migrations.AddField(
model_name="section",
name="page_id",
field=models.IntegerField(
default=0, verbose_name="Идентификатор страницы"
),
),
]
3 changes: 3 additions & 0 deletions src/backend/apps/general/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ class Section(models.Model):
description = models.TextField(
verbose_name="Текст", max_length=DESCRIPRION_LENGTH, null=False
)
page_id = models.IntegerField(
verbose_name="Идентификатор страницы", null=False, default=0
)

def __str__(self):
return self.title
9 changes: 0 additions & 9 deletions src/backend/apps/general/views.py

This file was deleted.

0 comments on commit e4e80e5

Please sign in to comment.