-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
96e8f10
commit dde4271
Showing
7 changed files
with
134 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# -*- coding: utf-8 -*- | ||
|
||
from django.core.urlresolvers import reverse | ||
|
||
from rest_framework import serializers | ||
|
||
from lib.tools import validator | ||
from system.library.image.models import LibraryImage | ||
from system.media.models import Media | ||
|
||
|
||
class LibraryImageSerializer(serializers.ModelSerializer): | ||
""" | ||
系统素材库 - 图片库 序列化类 | ||
""" | ||
image = serializers.PrimaryKeyRelatedField(error_messages={ | ||
'required': u'必须上传图片文件', | ||
}) | ||
image_url = serializers.SerializerMethodField('get_image_url') | ||
image_detail = serializers.SerializerMethodField('get_image_detail') | ||
|
||
def get_image_url(self, obj): | ||
if obj.image: | ||
return reverse('filetranslator:download', kwargs={'key': obj.image.pk}) | ||
else: | ||
return None | ||
|
||
def get_image_detail(self, obj): | ||
if obj.image: | ||
return obj.image.__dict__ | ||
else: | ||
return {} | ||
|
||
def validate_image(self, attrs, source): | ||
image = attrs.get(source) | ||
if not image: | ||
raise serializers.ValidationError(u'必须上传图片文件') | ||
return attrs | ||
|
||
def save(self, **kwargs): | ||
""" | ||
重载默认的 save 方法,使得在 POST 请求新建公众号时可以调用 LibraryMusic manager 中的方法 | ||
:return: 保存好的 object | ||
""" | ||
view = self.context.get('view') | ||
|
||
if view and view.request.method == 'POST': | ||
self.object = LibraryImage.manager.add( | ||
official_account=self.object.official_account, | ||
plugin_iden=self.object.plugin_iden, | ||
image=self.object.image, | ||
) | ||
return self.object | ||
else: | ||
return super(LibraryImageSerializer, self).save(**kwargs) | ||
|
||
class Meta: | ||
model = LibraryImage | ||
fields = ('id', 'official_account', 'plugin_iden', 'image', 'image_url', 'image_detail', 'fid', 'media_id') | ||
read_only_fields = ('fid', 'media_id') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# -*- coding: utf-8 -*- | ||
from django.conf.urls import patterns, include, url | ||
|
||
from api.library.image.views import LibraryImageListAPI, LibraryImageDetailAPI | ||
|
||
urlpatterns = patterns('', | ||
url(r'^$', LibraryImageListAPI.as_view(), name='list'), | ||
url(r'^(?P<pk>[0-9]+)', LibraryImageDetailAPI.as_view(), name='detail'), | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# -*- coding: utf-8 -*- | ||
|
||
from django.core.urlresolvers import reverse | ||
from django.core.exceptions import ValidationError | ||
|
||
from rest_framework.generics import GenericAPIView | ||
from rest_framework.views import APIView | ||
from rest_framework.response import Response | ||
from rest_framework import authentication, permissions, mixins, filters | ||
from rest_framework import status, parsers | ||
|
||
from system.official_account.models import OfficialAccount | ||
from system.library.image.models import LibraryImage | ||
from api.library.image.serializer import LibraryImageSerializer | ||
|
||
|
||
class LibraryImageListAPI(mixins.ListModelMixin, mixins.CreateModelMixin, GenericAPIView): | ||
permission_classes = (permissions.IsAuthenticated, ) | ||
model = LibraryImage | ||
serializer_class = LibraryImageSerializer | ||
filter_fields = ('official_account', 'plugin_iden') | ||
ordering = ('id', ) | ||
|
||
def get_queryset(self): | ||
return LibraryImage.manager.get_list(official_account=self.request.GET.get('official_account')) | ||
|
||
def get(self, request, *args, **kwargs): | ||
# 对 official_account 参数进行检查 | ||
official_account_id = request.GET.get('official_account') | ||
if not official_account_id: | ||
return Response({'official_account': [u'缺少 official_account 参数']}, status=status.HTTP_400_BAD_REQUEST) | ||
if not OfficialAccount.manager.exists(official_account_id): | ||
return Response({'official_account': [u'指定公众号不存在']}, status=status.HTTP_400_BAD_REQUEST) | ||
|
||
return super(LibraryImageListAPI, self).list(request, *args, **kwargs) | ||
|
||
def post(self, request, *args, **kwargs): | ||
return super(LibraryImageListAPI, self).create(request, *args, **kwargs) | ||
|
||
|
||
class LibraryImageDetailAPI(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, GenericAPIView): | ||
permission_classes = (permissions.IsAuthenticated, ) | ||
model = LibraryImage | ||
serializer_class = LibraryImageSerializer | ||
|
||
def get(self, request, *args, **kwargs): | ||
return self.retrieve(request, *args, **kwargs) | ||
|
||
def patch(self, request, *args, **kwargs): | ||
return self.partial_update(request, *args, **kwargs) | ||
|
||
def delete(self, request, *args, **kwargs): | ||
return self.destroy(request, *args, **kwargs) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters