Example #1
0
def serve_update(request):
    """
    user_identity - unique user id.
    System for updating game files.
    url: /request-update?version={version}
    :param request: GET
    :return:
    """

    version = int(request.GET.get('version', '-1'))

    current_version = GameBuild.objects.get(name="game").version

    if version >= current_version:
        response = JsonResponse({"status": "up-to-date"})
        response.status_code = 200
    else:
        files = []

        all_graphic = Graphic.objects.all()
        all_sounds = Sound.objects.all()

        zip_name = f"update_{current_version}.zip"

        [
            files.append(db_object.path) for db_object in all_graphic
            if db_object.version > version
        ]
        [
            files.append(db_object.path) for db_object in all_sounds
            if db_object.version > version
        ]

        print(files)

        response = HttpResponse(content_type='application/zip')

        zip_file = zipfile.ZipFile(response, 'w')
        for filename in files:
            zip_file.write(filename)
        response['Content-Disposition'] = f'attachment; filename={zip_name}'

        print(response.items())

    return response