Exemple #1
0
class OrganizationSerializer(BaseInternalModelSerializer):
    user_is_member = serializers.ReadOnlyField()
    id = serializers.ReadOnlyField()
    is_active = serializers.BooleanField(read_only=True)
    avatar = RemoteFileField(required=False)

    class Meta:
        model = Organization
        fields = (
            'id',
            'name',
            'is_active',
            'billing_email',
            'billing_phone',
            'billing_address_one',
            'billing_name',
            'billing_address_two',
            'billing_city',
            'billing_state',
            'billing_zip_code',
            'stripe_payment_tokens',
            'plan_name',
            'avatar',
            'available_states',
            'user_is_member',
            'features',
            'client_label',
            'client_label_plural'
        )

    def create(self, validated_data):
        org = Organization.objects.create(**validated_data)
        org.is_active = True
        org.save()
        return org
class UserSerializer(serializers.ModelSerializer):
    username = serializers.ReadOnlyField()
    is_staff = serializers.ReadOnlyField()
    user_groups = UserGroupSerializer(many=True, read_only=True)
    gravatar = serializers.CharField(source='generate_gravatar',
                                     read_only=True)

    class Meta:
        model = User
        fields = ('id', 'username', 'first_name', 'last_name', 'is_staff',
                  'user_groups', 'locale', 'remote_avatar', 'gravatar')
class CardSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    grammarCard = GrammarCardSerializer(read_only=True)

    class Meta:
        model = Card
        fields = ('id', 'front', 'back', 'flip', 'grammarCard')
class KoylaSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    grammarCard = GrammarCardSerializer(read_only=True)

    class Meta:
        model = Koyla
        fields = ('id', 'word', 'la', 'comment', 'grammarCard')
Exemple #5
0
class FloipListSerializer(serializers.HyperlinkedModelSerializer):
    """
    FloipListSerializer class.
    """
    url = serializers.HyperlinkedIdentityField(view_name='flow-results-detail',
                                               lookup_field='uuid')
    id = ReadOnlyUUIDField(source='uuid')  # pylint: disable=C0103
    name = serializers.ReadOnlyField(source='id_string')
    created = serializers.ReadOnlyField(source='date_created')
    modified = serializers.ReadOnlyField(source='date_modified')

    class JSONAPIMeta:  # pylint: disable=old-style-class,no-init,R0903
        """
        JSON API metaclass.
        """
        resource_name = 'packages'

    class Meta:
        model = XForm
        fields = ('url', 'id', 'name', 'title', 'created', 'modified')
def test_extract_attributes():
    fields = {
        'id': serializers.Field(),
        'username': serializers.Field(),
        'deleted': serializers.ReadOnlyField(),
    }
    resource = {'id': 1, 'deleted': None, 'username': '******'}
    expected = {'username': '******', 'deleted': None}
    assert sorted(JSONRenderer.extract_attributes(
        fields,
        resource)) == sorted(expected), 'Regular fields should be extracted'
    assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted(
        {'username':
         ''}), 'Should not extract read_only fields on empty serializer'
Exemple #7
0
def test_extract_attributes():
    fields = {
        "id": serializers.Field(),
        "username": serializers.Field(),
        "deleted": serializers.ReadOnlyField(),
    }
    resource = {"id": 1, "deleted": None, "username": "******"}
    expected = {"username": "******", "deleted": None}
    assert sorted(JSONRenderer.extract_attributes(
        fields,
        resource)) == sorted(expected), "Regular fields should be extracted"
    assert sorted(JSONRenderer.extract_attributes(fields, {})) == sorted(
        {"username":
         ""}), "Should not extract read_only fields on empty serializer"
Exemple #8
0
class MembershipSerializer(serializers.ModelSerializer):
    included_serializers = {
        "organization": "core.serializers.OrganizationSerializer",
        "user": "******",
    }

    user_name = serializers.ReadOnlyField(source="user.username")
    organization_name = serializers.ReadOnlyField(source="organization.name")

    organization = ResourceRelatedField(
        allow_null=False,
        required=True,
        queryset=Organization.objects.all(),
        related_link_view_name="membership-related",
    )

    user = ResourceRelatedField(
        allow_null=False,
        required=True,
        queryset=User.objects.all(),
        related_link_view_name="membership-related",
    )

    class Meta:
        model = Membership
        fields = (
            "organization",
            "user",
            "user_name",
            "organization_name",
            "role",
            "url",
        )

    def get_owner(self):
        """Return the owner of the resource, once data is validated."""
        return self.validated_data["organization"]
Exemple #9
0
class AnonOrganizationSerializer(BaseInternalModelSerializer):
    avatar = RemoteFileField(required=False)
    user_is_member = serializers.ReadOnlyField()

    class Meta:
        model = Organization
        fields = (
            'id',
            'name',
            'avatar',
            'features',
            'client_label',
            'client_label_plural',
            'user_is_member'
        )
Exemple #10
0
class OrderLineSerializer(serializers.ModelSerializer):
    """
        Defines how the OrderLine fields are serialized
    """
    order = serializers.ReadOnlyField(source='order.id')

    item = ResourceRelatedField(queryset=Item.objects,
                                related_link_view_name='orderlineitem-list',
                                related_link_url_kwarg='orderline_pk',
                                self_link_view_name='orderline-relationships')

    included_serializers = {
        'item': ItemSerializer,
    }

    class Meta:
        model = OrderLine
        fields = ('id', 'order', 'item', 'quantity')

    class JSONAPIMeta:
        included_resources = ['item']
Exemple #11
0
class SalePSerializer(serializers.ModelSerializer):
    """
        Defines how the Sale fields are serialized, without the payment methods
    """
    association = serializers.ReadOnlyField(source='association.name')
    items = ResourceRelatedField(queryset=Item.objects,
                                 many=True,
                                 related_link_view_name='item-list',
                                 related_link_url_kwarg='sale_pk',
                                 self_link_view_name='sale-relationships')

    included_serializers = {'items': ItemSerializer}

    class Meta:
        model = Sale
        fields = ('id', 'name', 'description', 'creation_date', 'begin_date',
                  'end_date', 'max_payment_date', 'max_item_quantity',
                  'association', 'items')

    class JSONAPIMeta:
        included_resources = ['items']
Exemple #12
0
class RelatedModelSerializer(serializers.ModelSerializer):
    blog = serializers.ReadOnlyField(source="entry.blog")

    class Meta:
        model = Comment
        fields = ("id", "blog")
class IntroSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()

    class Meta:
        model = Intro
        fields = ('id', 'title', 'body')
class AlphabetSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()

    class Meta:
        model = Alphabet
        fields = ('id', 'letter', 'name', 'example')
Exemple #15
0
class FloipSerializer(serializers.HyperlinkedModelSerializer):
    """
    FloipSerializer class.
    """
    url = serializers.HyperlinkedIdentityField(view_name='floip-detail',
                                               lookup_field='pk')
    profile = serializers.SerializerMethodField()
    created = serializers.ReadOnlyField(source='date_created')
    modified = serializers.ReadOnlyField(source='date_modified')
    # pylint: disable=invalid-name
    flow_results_specification_version = serializers.SerializerMethodField()
    resources = serializers.SerializerMethodField()

    class JSONAPIMeta:  # pylint: disable=old-style-class,no-init,R0903
        """
        JSON API metaclass.
        """
        resource_name = 'packages'

    class Meta:
        model = XForm
        fields = ('url', 'id', 'id_string', 'title', 'profile', 'created',
                  'modified', 'flow_results_specification_version',
                  'resources')

    def get_profile(self, value):  # pylint: disable=no-self-use,W0613
        """
        Returns the data-package profile.
        """
        return 'data-package'

    # pylint: disable=no-self-use,unused-argument
    def get_flow_results_specification_version(self, value):
        """
        Returns the flow results specification version.
        """
        return '1.0.0-rc1'

    def get_resources(self, value):  # pylint: disable=no-self-use,W0613
        """
        Returns empty dict, a dummy holder for the eventually generated data
        package resources.
        """
        return {}

    def _process_request(self, request, update_instance=None):
        data = deepcopy(request.data)
        if 'profile' in data and data['profile'] == 'flow-results-package':
            data['profile'] = 'data-package'
        descriptor = BytesIO(json.dumps(data).encode('utf-8'))
        descriptor.seek(0, os.SEEK_END)
        floip_file = InMemoryUploadedFile(descriptor,
                                          'floip_file',
                                          request.data.get('name') + '.json',
                                          'application/json',
                                          descriptor.tell(),
                                          charset=None)
        kwargs = {
            'user': request.user,
            'post': None,
            'files': {
                'floip_file': floip_file
            },
            'owner': request.user,
        }
        if update_instance:
            kwargs['id_string'] = update_instance.id_string
            kwargs['project'] = update_instance.project
        instance = do_publish_xlsform(**kwargs)
        if isinstance(instance, XForm):
            return instance

        raise serializers.ValidationError(instance)

    def create(self, validated_data):
        request = self.context['request']

        return self._process_request(request)

    def update(self, instance, validated_data):
        request = self.context['request']

        return self._process_request(request, instance)

    def to_representation(self, instance):
        request = self.context['request']
        data_id = str(UUID(instance.uuid))
        data_url = request.build_absolute_uri(
            reverse('flow-results-responses', kwargs={'uuid': data_id}))
        package = survey_to_floip_package(json.loads(instance.json), data_id,
                                          instance.date_created,
                                          instance.date_modified, data_url)

        data = package.descriptor
        if data['profile'] != 'flow-results-package':
            data['profile'] = 'flow-results-package'

        return data
class GrammarCardSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()

    class Meta:
        model = GrammarCard
        fields = ('id', 'title', 'body', 'comment', 'category')
Exemple #17
0
class RelatedModelSerializer(serializers.ModelSerializer):
    blog = serializers.ReadOnlyField(source='entry.blog')

    class Meta:
        model = Comment
        fields = ('id', 'blog')
Exemple #18
0
class HotelSerializer(serializers.ModelSerializer):

    verbose_name = serializers.ReadOnlyField(source='__str__')