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.Meeting import Meeting
from core.models.Invitation import Invitation
from core.models.download import Download
admin.site.register(Image)
@ -33,3 +34,4 @@ admin.site.register(AssetBundleRoom)
admin.site.register(AssignRoomUser)
admin.site.register(Meeting)
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.conf import settings
from django.conf.urls.static import static
from .views import downloadView
@ -101,6 +102,10 @@ urlpatterns = [
path('edit_meeting', meetingView. editMeeting, name='edit_meeting'),
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)

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)