def restore_object(self, attrs, instance=None): if instance: metadata = JsonField.to_json(attrs.get('metadata')) if self.partial and metadata: if not isinstance(instance.metadata, dict): instance.metadata = {} instance.metadata.update(metadata) attrs['metadata'] = instance.metadata return super(ProjectSerializer, self).restore_object(attrs, instance) if 'request' in self.context: created_by = self.context['request'].user return Project( name=attrs.get('name'), organization=attrs.get('organization'), created_by=created_by, metadata=attrs.get('metadata'), ) return attrs
def restore_object(self, attrs, instance=None): if instance: metadata = JsonField.to_json(attrs.get('metadata')) owner = attrs.get('organization') if self.partial and metadata: if not isinstance(instance.metadata, dict): instance.metadata = {} instance.metadata.update(metadata) attrs['metadata'] = instance.metadata if self.partial and owner: # give the new owner permissions set_owners_permission(owner, instance) # clear cache safe_delete('{}{}'.format(PROJ_PERM_CACHE, self.object.pk)) return super(ProjectSerializer, self).restore_object(attrs, instance) if 'request' in self.context: created_by = self.context['request'].user return Project( name=attrs.get('name'), organization=attrs.get('organization'), created_by=created_by, metadata=attrs.get('metadata'), ) return attrs
def restore_object(self, attrs, instance=None): if instance: metadata = JsonField.to_json(attrs.get("metadata")) owner = attrs.get("organization") if self.partial and metadata: if not isinstance(instance.metadata, dict): instance.metadata = {} instance.metadata.update(metadata) attrs["metadata"] = instance.metadata if self.partial and owner: # give the new owner permissions set_owners_permission(owner, instance) # clear cache safe_delete("{}{}".format(PROJ_PERM_CACHE, self.object.pk)) return super(ProjectSerializer, self).restore_object(attrs, instance) if "request" in self.context: created_by = self.context["request"].user return Project( name=attrs.get("name"), organization=attrs.get("organization"), created_by=created_by, metadata=attrs.get("metadata"), ) return attrs
def update(self, instance, validated_data): metadata = JsonField.to_json(validated_data.get('metadata')) if metadata is None: metadata = dict() owner = validated_data.get('organization') if self.partial and metadata: if not isinstance(instance.metadata, dict): instance.metadata = {} instance.metadata.update(metadata) validated_data['metadata'] = instance.metadata if self.partial and owner: # give the new owner permissions set_owners_permission(owner, instance) if is_organization(owner.profile): owners_team = get_or_create_organization_owners_team( owner.profile) members_team = get_organization_members_team(owner.profile) OwnerRole.add(owners_team, instance) ReadOnlyRole.add(members_team, instance) # clear cache safe_delete('{}{}'.format(PROJ_PERM_CACHE, instance.pk)) project = super(ProjectSerializer, self)\ .update(instance, validated_data) project.xform_set.exclude(shared=project.shared)\ .update(shared=project.shared, shared_data=project.shared) return instance
def update(self, instance, validated_data): metadata = JsonField.to_json(validated_data.get('metadata')) if metadata is None: metadata = dict() owner = validated_data.get('organization') if self.partial and metadata: if not isinstance(instance.metadata, dict): instance.metadata = {} instance.metadata.update(metadata) validated_data['metadata'] = instance.metadata if self.partial and owner: # give the new owner permissions set_owners_permission(owner, instance) if is_organization(owner.profile): owners_team = get_organization_owners_team(owner.profile) members_team = get_organization_members_team(owner.profile) OwnerRole.add(owners_team, instance) ReadOnlyRole.add(members_team, instance) # clear cache safe_delete('{}{}'.format(PROJ_PERM_CACHE, instance.pk)) project = super(ProjectSerializer, self)\ .update(instance, validated_data) project.xform_set.exclude(shared=project.shared)\ .update(shared=project.shared, shared_data=project.shared) return instance
def validate_metadata(self, value): msg = serializers.ValidationError(_("Invaid value for metadata")) try: json_val = JsonField.to_json(value) except ValueError: raise serializers.ValidationError(msg) else: if json_val is None: raise serializers.ValidationError(msg) return value
def update(self, instance, validated_data): metadata = JsonField.to_json(validated_data.get('metadata')) if self.partial and metadata: if not isinstance(instance.metadata, dict): instance.metadata = {} instance.metadata.update(metadata) validated_data['metadata'] = instance.metadata return super(ProjectSerializer, self).update(instance, validated_data)
def validate_metadata(self, value): # pylint: disable=no-self-use """ Validate metadaata is a valid JSON value. """ msg = serializers.ValidationError(_("Invaid value for metadata")) try: json_val = JsonField.to_json(value) except ValueError: raise serializers.ValidationError(msg) else: if json_val is None: raise serializers.ValidationError(msg) return value
def restore_object(self, attrs, instance=None): if instance: metadata = JsonField.to_json(attrs.get('metadata')) if self.partial and metadata: if not isinstance(instance.metadata, dict): instance.metadata = {} instance.metadata.update(metadata) attrs['metadata'] = instance.metadata return super(ProjectSerializer, self).restore_object( attrs, instance) if 'request' in self.context: created_by = self.context['request'].user return Project( name=attrs.get('name'), organization=attrs.get('organization'), created_by=created_by, metadata=attrs.get('metadata'),) return attrs