Example #1
0
class ExpenseSerializer(HyperlinkedModelSerializer):

    expense_category = SlugRelatedField(
        queryset=ExpenseCategory.objects.none(),
        slug_field='name'
    )

    currency = SlugRelatedField(
        queryset=Currency.objects.all(),
        slug_field='iso_code'
    )

    class Meta:
        model = Expense
        fields = (
            'id',
            'url',
            'expense_category',
            'date',
            'amount',
            'currency',
            'description',
        )

    def __init__(self, *args, **kwargs):
        request = kwargs.get('context', {}).get('request')

        user_categories = ExpenseCategory.objects.filter(user=request.user)
        self.fields['expense_category'].queryset = user_categories

        super(ExpenseSerializer, self).__init__(*args, **kwargs)
Example #2
0
class ProposalSerializer(ModelSerializer):
    category_id = SlugRelatedField(source='category', slug_field='id', read_only=True)
    category_name = SlugRelatedField(source='category', slug_field='name', read_only=True)
    category_source = SlugRelatedField(source='category', slug_field='source', read_only=True)
    category_source_fill = SlugRelatedField(source='category', slug_field='source_fill', read_only=True)
    user = ProfileSerializerProposal(read_only=True)
    are_you_voted = SerializerMethodField('check_voting')

    def check_voting(self, proposal):
        user = Profile.objects.get(user=self.context['request'].user)
        proposal_user = ProposalVoteUser.objects.filter(
            Q(user=user, proposal=proposal)
        ).distinct()
        if proposal_user.exists() and proposal_user.count() > 0:
            return True
        return False

    class Meta:
        model = Proposal
        fields = [
            'id',
            'title',
            'deadline',
            'description',
            'articles',
            'discussions',
            'category_id',
            'category_name',
            'category_source',
            'category_source_fill',
            'user',
            'are_you_voted'
        ]
Example #3
0
class IncomeSerializer(HyperlinkedModelSerializer):

    income_source = SlugRelatedField(queryset=IncomeSource.objects.none(),
                                     slug_field='name')

    currency = SlugRelatedField(queryset=Currency.objects.all(),
                                slug_field='iso_code')

    class Meta:
        model = Income
        fields = (
            'id',
            'url',
            'income_source',
            'date',
            'amount',
            'currency',
            'description',
        )

    def __init__(self, *args, **kwargs):
        request = kwargs.get('context', {}).get('request')

        user_sources = IncomeSource.objects.filter(user=request.user)
        self.fields['income_source'].queryset = user_sources

        super(IncomeSerializer, self).__init__(*args, **kwargs)
Example #4
0
class CommentSerializer(serializers.ModelSerializer):
    author = SlugRelatedField(slug_field='first_name', read_only=True)
    assigned_to_feedback = SlugRelatedField(slug_field='feedback_text',
                                            read_only=True)

    class Meta:
        model = Comment
        fields = '__all__'
class MessageSerializer(serializers.ModelSerializer):
    sender = SlugRelatedField(slug_field='email', queryset=User.objects.all())
    receiver = SlugRelatedField(slug_field='email',
                                queryset=User.objects.all())
    unread = BooleanField(default=True)

    class Meta:
        model = Message
        read_only_fields = ['creation_date']
Example #6
0
class ComplianceReportCreateSerializer(serializers.ModelSerializer):
    status = SlugRelatedField(
        slug_field='status',
        queryset=ComplianceReportStatus.objects.filter(status__in=['Draft']))
    type = SlugRelatedField(slug_field='the_type',
                            queryset=ComplianceReportType.objects.all())
    compliance_period = SlugRelatedField(
        slug_field='description', queryset=CompliancePeriod.objects.all())
    organization = OrganizationMinSerializer(read_only=True)
    schedule_c = ScheduleCDetailSerializer(allow_null=True, required=False)
    schedule_a = ScheduleADetailSerializer(allow_null=True, required=False)

    def create(self, validated_data):
        schedule_c_data = None
        if 'schedule_c' in validated_data:
            schedule_c_data = validated_data.pop('schedule_c')

        schedule_a_data = None
        if 'schedule_a' in validated_data:
            schedule_a_data = validated_data.pop('schedule_a')

        instance = ComplianceReport.objects.create(**validated_data)

        if schedule_c_data and 'records' in schedule_c_data:
            records_data = schedule_c_data.pop('records')
            schedule_c = ScheduleC.objects.create(**schedule_c_data,
                                                  compliance_report=instance)
            instance.schedule_c = schedule_c
            for record_data in records_data:
                record = ScheduleCRecord.objects.create(**record_data,
                                                        schedule=schedule_c)
                schedule_c.records.add(record)
                schedule_c.save()

        if schedule_a_data and 'records' in schedule_a_data:
            records_data = schedule_a_data.pop('records')
            schedule_a = ScheduleA.objects.create(**schedule_a_data,
                                                  compliance_report=instance)
            instance.schedule_a = schedule_a
            for record_data in records_data:
                record = ScheduleARecord.objects.create(**record_data,
                                                        schedule=schedule_a)
                schedule_a.records.add(record)
                schedule_a.save()

        instance.save()
        return instance

    class Meta:
        model = ComplianceReport
        fields = ('status', 'type', 'compliance_period', 'organization',
                  'schedule_a', 'schedule_c')
class RoomSerializer(serializers.ModelSerializer):
    listeners = SlugRelatedField(read_only=True,
                                 many=True,
                                 slug_field='username')
    controller = SlugRelatedField(read_only=True, slug_field='username')
    current_song = SongSerializer(read_only=True,
                                  default={},
                                  required=False,
                                  allow_null=True)

    class Meta:
        model = Room
        fields = ['id', 'controller', 'listeners', 'current_song', 'name']
class ProductExpirySerializer(ModelSerializer):
    user_name = SlugRelatedField(required=False,
                                 read_only=True,
                                 slug_field='name',
                                 source='user')
    product_name = SlugRelatedField(required=False,
                                    read_only=True,
                                    slug_field='name',
                                    source='product')

    class Meta:
        model = ProductExpiry
        fields = '__all__'
Example #9
0
class PizzaSerializer(serializers.ModelSerializer):
    pizza_topping = SlugRelatedField(read_only=True,
                                     many=True,
                                     slug_field="topping_name")
    pizza_size = SlugRelatedField(read_only=True, slug_field="size_name")

    class Meta:
        model = models.Pizza
        fields = (
            "id",
            "pizza_type",
            "pizza_size",
            "pizza_topping",
        )
Example #10
0
class UserSerializer(ModelSerializer):
    # groups = PrimaryKeyRelatedField(queryset=Group.objects.all(), many=True)
    groups = SlugRelatedField(many=True,
                              queryset=Group.objects.all(),
                              slug_field='name',
                              required=False)

    user_permissions = SlugRelatedField(many=True,
                                        queryset=Permission.objects.all(),
                                        slug_field='codename',
                                        required=False)

    class Meta:
        model = User
        fields = ('email', 'username', 'groups', 'user_permissions')