Commit e8679f39 by Bodor Máté

Resolve marge conflict

parents 15d24c7f be12f47f
Pipeline #805 failed with stage
in 1 minute 22 seconds
.vscode/ .vscode/
recircle/db.sqlite3 *.sqlite3
recircle/clouds.yaml recircle/clouds.yaml
environment.sh environment.sh
.idea/ .idea/
__pycache__
...@@ -13,11 +13,11 @@ django-nose = "*" ...@@ -13,11 +13,11 @@ django-nose = "*"
[packages] [packages]
django = "*" django = "*"
djangorestframework = "*" djangorestframework = "*"
djoser = "*"
django-cors-headers = "*" django-cors-headers = "*"
openstacksdk = "*" openstacksdk = "*"
python-novaclient = "*" python-novaclient = "*"
keystoneauth1 = "*" keystoneauth1 = "*"
djoser = "*"
[requires] [requires]
python_version = "3.6" python_version = "3.6"
...@@ -82,7 +82,9 @@ class Image(models.Model): ...@@ -82,7 +82,9 @@ class Image(models.Model):
uploaded_by_user=False, uploaded_by_user=False,
description=description description=description
) )
return new_image for attr, value in new_image.__dict__.items():
setattr(remote_image, attr, value)
return remote_image
@classmethod @classmethod
def create_from_user(cls, description, file_format, image_file, name, user): def create_from_user(cls, description, file_format, image_file, name, user):
...@@ -96,4 +98,24 @@ class Image(models.Model): ...@@ -96,4 +98,24 @@ class Image(models.Model):
uploaded_by_user=True, uploaded_by_user=True,
description=description description=description
) )
return new_image for attr, value in new_image.__dict__.items():
setattr(remote_image, attr, value)
return remote_image
def delete(self):
interface = OpenstackImageManager(settings.CONNECTION)
if interface.delete(self.remote_id):
super().delete()
def get(self):
interface = OpenstackImageManager(settings.CONNECTION)
image = interface.get(self.remote_id)
for attr, value in self.__dict__.items():
setattr(image, attr, value)
return image
def update(self, data):
for (key, value) in data.items():
setattr(self, key, value)
self.save()
return self.get()
...@@ -3,9 +3,15 @@ from rest_framework import serializers ...@@ -3,9 +3,15 @@ from rest_framework import serializers
from .models import Image from .models import Image
class ImageUpdateSerializer(serializers.Serializer):
name = serializers.CharField(required=False)
description = serializers.CharField(required=False)
class ImageSerializer(serializers.ModelSerializer): class ImageSerializer(serializers.ModelSerializer):
image_file = serializers.FileField(write_only=True) image_file = serializers.FileField(write_only=True)
file_format = serializers.CharField(max_length=10, write_only=True) file_format = serializers.CharField(max_length=10)
size = serializers.IntegerField()
class Meta: class Meta:
model = Image model = Image
...@@ -18,5 +24,7 @@ class ImageSerializer(serializers.ModelSerializer): ...@@ -18,5 +24,7 @@ class ImageSerializer(serializers.ModelSerializer):
"created_at", "created_at",
"uploaded_by_user", "uploaded_by_user",
"created_by", "created_by",
"id",
"size",
) )
read_only_fields = ("created_at", "uploaded_by_user", "created_by", "remote_id", ) read_only_fields = ("created_at", "uploaded_by_user", "created_by", "remote_id", "size", )
# from django.shortcuts import render # from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet from rest_framework.viewsets import ViewSet
from rest_framework.response import Response from rest_framework.response import Response
from django.shortcuts import get_object_or_404
from rest_framework import status
from django.core.exceptions import ObjectDoesNotExist
from image.models import Image from image.models import Image
from image.serializers import ImageSerializer from image.serializers import ImageSerializer
from image.serializers import ImageUpdateSerializer
class ImageViewSet(ModelViewSet): class ImageViewSet(ViewSet):
serializer_class = ImageSerializer
queryset = Image.objects.all() def list(self, request):
# def list(self, request): image_list = []
# return HttpResponse("list") images = Image.objects.all()
for image in images:
image_list.append(image.get())
serializer = ImageSerializer(image_list, many=True)
return Response(serializer.data)
def create(self, request): def create(self, request):
serializer = ImageSerializer(data=request.data) serializer = ImageSerializer(data=request.data)
...@@ -26,14 +34,30 @@ class ImageViewSet(ModelViewSet): ...@@ -26,14 +34,30 @@ class ImageViewSet(ModelViewSet):
serializer = ImageSerializer(instance=new_image) serializer = ImageSerializer(instance=new_image)
return Response(serializer.data) return Response(serializer.data)
# def retrieve(self, request, pk=None): def retrieve(self, request, pk=None):
# return HttpResponse("retrive") queryset = Image.objects.all()
image = get_object_or_404(queryset, pk=pk)
serializer = ImageSerializer(instance=image)
image = image.get()
serializer = ImageSerializer(instance=image)
return Response(serializer.data)
# def update(self, request, pk=None): def update(self, request, pk=None):
# return HttpResponse("update") serializer = ImageUpdateSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
queryset = Image.objects.all()
image = get_object_or_404(queryset, pk=pk)
image = image.update(serializer.validated_data)
serializer = ImageSerializer(instance=image)
return Response(serializer.data)
# def partial_update(self, request, pk=None): def partial_update(self, request, pk=None):
# return HttpResponse("patch") return self.update(request, pk)
# def destroy(self, request, pk=None): def destroy(self, request, pk=None):
# return HttpResponse("delete") try:
image = Image.objects.get(id=pk)
image.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
except ObjectDoesNotExist:
return Response(status=status.HTTP_204_NO_CONTENT)
# Generated by Django 2.2.3 on 2019-07-23 08:41
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('instance', '0009_auto_20190715_0929'),
('instance', '0009_auto_20190715_1354'),
]
operations = [
]
Subproject commit e01d873c78ac17fed0438936f979de3cbaca6a5e Subproject commit f1525f9340d02647953b3996bc33e5828dedf544
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment