added download api

This commit is contained in:
mi1468 2025-07-13 14:10:29 +03:30
parent 4c2b402b7a
commit efe7f27962
5 changed files with 59 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)

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

@ -0,0 +1,20 @@
from django.db import models
class Download(models.Model):
TYPE_CHOICES = [
('windows', 'Windows'),
('android', 'android'),
('linux', 'Linux'),
# Add more types as needed
]
name = models.CharField(max_length=255)
description = models.TextField(blank=True)
url = models.URLField()
version = models.CharField(max_length=50)
type = models.CharField(max_length=50, choices=TYPE_CHOICES)
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
@ -101,6 +102,10 @@ urlpatterns = [
path('edit_meeting', meetingView. editMeeting, name='edit_meeting'), path('edit_meeting', meetingView. editMeeting, name='edit_meeting'),
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)