diff --git a/nocodetools/models.py b/nocodetools/models.py index f4d86bc..8393e6c 100644 --- a/nocodetools/models.py +++ b/nocodetools/models.py @@ -16,6 +16,10 @@ class Page(me.EmbeddedDocument): class Code(me.Document): pages = me.ListField(me.EmbeddedDocumentField(Page)) + keyword = me.ListField(me.StringField(max_length=50), default=list) + description = me.StringField(default='', blank=True) + object_type = me.StringField(choices=("portfolio", "project")) + object_id = me.StringField() created_at = me.DateTimeField(default=timezone.now) updated_at = me.DateTimeField(default=timezone.now) diff --git a/nocodetools/serializers.py b/nocodetools/serializers.py index 293b271..613a718 100644 --- a/nocodetools/serializers.py +++ b/nocodetools/serializers.py @@ -21,6 +21,8 @@ class PageSerializer(serializers.Serializer): class CodeSerializer(serializers.Serializer): id = serializers.SerializerMethodField() pages = PageSerializer(many=True, required=False) + keyword = serializers.ListField(child=serializers.CharField(), required=False, allow_empty=True) + description = serializers.CharField(allow_blank=True, required=False) created_at = serializers.SerializerMethodField() updated_at = serializers.SerializerMethodField() @@ -34,6 +36,9 @@ class CodeSerializer(serializers.Serializer): return str(obj.id) def create(self, validated_data): + request = self.context['request'] + validated_data['object_type'] = request.query_params.get('type') + validated_data['object_id'] = request.query_params.get('id') pages_data = validated_data.pop('pages') pages = [ Page( @@ -63,5 +68,10 @@ class CodeSerializer(serializers.Serializer): ) ) + if 'keyword' in validated_data: + instance.keyword = validated_data['keyword'] + if 'description' in validated_data: + instance.description = validated_data['description'] + instance.save() return instance diff --git a/nocodetools/views.py b/nocodetools/views.py index 3b6056c..76251b2 100644 --- a/nocodetools/views.py +++ b/nocodetools/views.py @@ -59,7 +59,7 @@ class NoCodeToolAPIView(APIView): obj_serializer = NocodetoolObjectMapService.mapping_model_serializer(related_type) - serializer = CodeSerializer(data=request.data) + serializer = CodeSerializer(data=request.data, context={'request': request}) if serializer.is_valid(): code = serializer.save() obj.code_id = str(code.id) @@ -97,7 +97,7 @@ class NoCodeToolAPIView(APIView): thumbnail_file = data.pop("thumbnail", None) obj_serializer = NocodetoolObjectMapService.mapping_model_serializer(related_type) - serializer = CodeSerializer(code, data=data, partial=True) + serializer = CodeSerializer(code, data=data, partial=True, context={'request': request}) if serializer.is_valid(): updated_code = serializer.save()