serializers.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # coding=utf-8
  2. from django.conf import settings
  3. from rest_framework import serializers
  4. from apps.images.models import Images
  5. from apps.activity.models import Activity
  6. from utils.exceptions import CustomError
  7. class ActivitySerializer(serializers.ModelSerializer):
  8. cover_url = serializers.SerializerMethodField()
  9. create_user_t = serializers.CharField(source='create_user.name', read_only=True)
  10. def get_cover_url(self, obj):
  11. if obj.cover:
  12. return '{}{}'.format(settings.MEDIA_URL, obj.cover.picture)
  13. return ''
  14. class Meta:
  15. model = Activity
  16. fields = '__all__'
  17. def create(self, validated_data):
  18. cover = self.initial_data.get('image', None)
  19. validated_data['create_user'] = self.context['request'].user
  20. if not cover:
  21. raise CustomError(u'请上传封面!')
  22. validated_data['cover'] = Images.objects.employee_addnew(validated_data['create_user'], Images.ACTIVITY_COVER, cover)
  23. instance = super(ActivitySerializer, self).create(validated_data)
  24. return instance
  25. def update(self, instance, validated_data):
  26. old_cover = None
  27. cover = self.initial_data.get('image', None)
  28. if cover:
  29. old_cover = instance.cover
  30. validated_data['cover'] = Images.objects.employee_addnew(self.context['request'].user, Images.ACTIVITY_COVER, cover)
  31. instance = super(ActivitySerializer, self).update(instance, validated_data)
  32. if old_cover:
  33. old_cover.del_images()
  34. return instance