Compare commits

...

2 Commits

Author SHA1 Message Date
0338751297 added download api 2025-07-13 14:21:59 +03:30
efe7f27962 added download api 2025-07-13 14:10:29 +03:30
5 changed files with 52 additions and 0 deletions

View File

@ -16,6 +16,7 @@ from core.models.AssignRoomUser import AssignRoomUser
from core.models.AssignedRule import AssignedRule from core.models.AssignedRule import AssignedRule
from core.models.Meeting import Meeting from core.models.Meeting import Meeting
from core.models.Invitation import Invitation from core.models.Invitation import Invitation
from core.models.download import Download
admin.site.register(Image) admin.site.register(Image)
@ -33,3 +34,4 @@ admin.site.register(AssetBundleRoom)
admin.site.register(AssignRoomUser) admin.site.register(AssignRoomUser)
admin.site.register(Meeting) admin.site.register(Meeting)
admin.site.register(Invitation) admin.site.register(Invitation)
admin.site.register(Download)

13
core/models/download.py Normal file
View File

@ -0,0 +1,13 @@
from django.db import models
class Download(models.Model):
name = models.CharField(max_length=255)
description = models.TextField(blank=True)
url = models.URLField(blank=True) # Optional if file is used
version = models.CharField(max_length=50)
type = models.CharField(max_length=50)
file = models.FileField(upload_to='downloads/', blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.name} ({self.type}) - v{self.version}"

View File

@ -0,0 +1,7 @@
from rest_framework import serializers
from core.models.download import Download
class DownloadSerializer(serializers.ModelSerializer):
class Meta:
model = Download
fields = ['id', 'name', 'description', 'url', 'version', 'type']

View File

@ -17,6 +17,7 @@ from .views import subscriptionView
from django.urls import include, path from django.urls import include, path
from django.conf import settings from django.conf import settings
from django.conf.urls.static import static from django.conf.urls.static import static
from .views import downloadView
@ -102,6 +103,10 @@ urlpatterns = [
path('get_user_meetings', meetingView. get_user_meetings, name='get_user_meetings'), path('get_user_meetings', meetingView. get_user_meetings, name='get_user_meetings'),
path('latest-download/', downloadView.get_latest_downloads_by_type),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

View File

@ -0,0 +1,25 @@
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from core.models.download import Download
from core.serializers.DownloadSerializer import DownloadSerializer
@api_view(['GET'])
def get_latest_downloads_by_type(request):
types = Download.objects.values_list('type', flat=True).distinct()
latest_items = []
for download_type in types:
latest_item = (
Download.objects
.filter(type=download_type)
.order_by('-version') # Note: This is simple string sort
.first()
)
if latest_item:
latest_items.append(latest_item)
serializer = DownloadSerializer(latest_items, many=True)
return Response(serializer.data)