remotes/origin/hotfix/LIL-691
gzbender 7 years ago
parent ddb3bdf723
commit 2a1d515104
  1. 96
      api/v1/serializers/mixins.py
  2. 19
      web/src/components/blocks/BlockImages.vue
  3. 31
      web/src/js/modules/api.js

@ -32,35 +32,23 @@ class DispatchContentMixin(object):
if 'id' in cdata and cdata['id']:
t = Text.objects.get(id=cdata.pop('id'))
serializer = TextCreateSerializer(t, data=cdata)
if serializer.is_valid():
serializer.save()
else:
serializer = TextCreateSerializer(data=cdata)
if serializer.is_valid():
serializer.save()
if serializer.is_valid():
serializer.save()
elif ctype == 'image':
if 'id' in cdata and cdata['id']:
image = Image.objects.get(id=cdata.pop('id'))
serializer = ImageCreateSerializer(image, data=cdata)
if serializer.is_valid():
image = serializer.save()
else:
continue
try:
image_object = ImageObject.objects.get(id=cdata['img'])
except ImageObject.DoesNotExist:
pass
else:
image.img = image_object
image.save()
else:
serializer = ImageCreateSerializer(data=cdata)
if serializer.is_valid():
image = serializer.save()
else:
continue
if serializer.is_valid():
image = serializer.save()
else:
continue
if 'img' in cdata:
try:
image_object = ImageObject.objects.get(id=cdata['img'])
image_object = ImageObject.objects.get(id=cdata.get('img'))
except ImageObject.DoesNotExist:
pass
else:
@ -71,25 +59,15 @@ class DispatchContentMixin(object):
if 'id' in cdata and cdata['id']:
it = ImageText.objects.get(id=cdata.pop('id'))
serializer = ImageTextCreateSerializer(it, data=cdata)
if serializer.is_valid():
it = serializer.save()
else:
continue
try:
image_object = ImageObject.objects.get(id=cdata['img'])
except ImageObject.DoesNotExist:
pass
else:
it.img = image_object
it.save()
else:
serializer = ImageTextCreateSerializer(data=cdata)
if serializer.is_valid():
it = serializer.save()
else:
continue
if serializer.is_valid():
it = serializer.save()
else:
continue
if 'img' in cdata:
try:
image_object = ImageObject.objects.get(id=cdata['img'])
image_object = ImageObject.objects.get(id=cdata.get('img'))
except ImageObject.DoesNotExist:
pass
else:
@ -100,52 +78,36 @@ class DispatchContentMixin(object):
if 'id' in cdata and cdata['id']:
v = Video.objects.get(id=cdata.pop('id'))
serializer = VideoCreateSerializer(v, data=cdata)
if serializer.is_valid():
serializer.save()
else:
serializer = VideoCreateSerializer(data=cdata)
if serializer.is_valid():
serializer.save()
if serializer.is_valid():
serializer.save()
elif ctype == 'images':
if 'id' in cdata and cdata['id']:
g = Gallery.objects.get(id=cdata['id'])
g.position = cdata['position']
g.title = cdata['title']
g.uuid = cdata['uuid']
setattr(g, obj_type, obj)
g.save()
if 'images' in cdata:
for image in cdata['gallery_images']:
if 'img' in image and image['img']:
if 'id' in image and image['id']:
gi = GalleryImage.objects.get(id=image['id'])
gi.img = ImageObject.objects.get(id=image['img'])
gi.save()
else:
gi = GalleryImage.objects.create(
gallery=g,
img=ImageObject.objects.get(id=image['img'])
)
else:
g = Gallery(
position=cdata['position'],
title=cdata['title'],
uuid=cdata['uuid'],
)
setattr(g, obj_type, obj)
g.save()
if 'images' in cdata:
for image in cdata['images']:
if 'img' in image and image['img']:
if 'id' in image and image['id']:
gi = GalleryImage.objects.get(id=image['id'])
gi.img = ImageObject.objects.get(id=image['img'])
gi.save()
else:
gi = GalleryImage.objects.create(
gallery=g,
img=ImageObject.objects.get(id=image['img'])
)
setattr(g, obj_type, obj)
if 'gallery_images' in cdata:
for image in cdata['gallery_images']:
if 'img' in image and image['img']:
if 'id' in image and image['id']:
gi = GalleryImage.objects.get(id=image['id'])
gi.img = ImageObject.objects.get(id=image['img'])
gi.save()
else:
gi = GalleryImage.objects.create(
gallery=g,
img=ImageObject.objects.get(id=image['img'])
)
class DispatchMaterialMixin(object):

@ -23,7 +23,7 @@
</div>
<div class="kit__gallery">
<div class="kit__preview" v-for="(image, index) in images" v-bind:class="{ 'kit__preview--loading': image.loading }">
<img :src="image.img.image_thumbnail" class="kit__pic">
<img v-if="image.img && image.img.image_thumbnail" :src="image.img.image_thumbnail" class="kit__pic">
<button type="button" @click="onRemoveImage(index)">
<svg class="icon icon-delete">
<use xlink:href="/static/img/sprite.svg#icon-delete"></use>
@ -51,6 +51,7 @@
this.$emit('update:title', event.target.value);
},
onImageAdded(event) {
const gallery = this.images[0].gallery;
Array.from(event.target.files).forEach((file) => {
let reader = new FileReader();
reader.onload = () => {
@ -58,19 +59,27 @@
console.log('images before before', JSON.stringify(images));
images.push({
gallery,
img_file: reader.result,
img: {},
img: {
id: null,
image_thumbnail: '',
},
loading: true,
});
// this.$emit('update:images', images);
this.$emit('update:images', images);
api.uploadImage(reader.result, this.accessToken)
.then((response) => {
let images = this.images;
console.log('images before', JSON.stringify(images));
/*console.log('images before', JSON.stringify(images));
images.push({
gallery,
img: response.data,
});*/
images.forEach((image, index) => {
if (image.img_file === reader.result) {
images[index].img_file = null;
delete images[index]['img_file'];
images[index].img = response.data;
images[index].loading = false;
}

@ -204,10 +204,15 @@ export const api = {
const position = ++index;
const data = Object.assign({position}, block);
if (['image', 'image-text'].indexOf(data.type) > -1) {
data.img = data.img.id;
data.img = data.img && data.img.id;
}
else if (data.type === 'images') {
data.gallery_images = data.gallery_images.map(image => image.id);
data.gallery_images = data.gallery_images.map(image => {
return {
id: image.id,
img: image.img && image.img.id,
};
});
}
else if (data.type === 'video') {
data.url = data.video_url;
@ -226,6 +231,28 @@ export const api = {
return 1;
}
return 0;
}).map(block => {
const templates = {
image: {
img: {},
},
'image-text': {
txt: '',
img: {},
},
images: {
gallery_images: [],
},
video: {
video_url: '',
},
text: {
txt: '',
}
}
return Object.assign({
type: '', id: null, uuid: '', title: '',
}, templates[block.type], block);
});
},
addCourse: (courseJson, accessToken) => {

Loading…
Cancel
Save