Exemplo n.º 1
0
class RepositoryVersionSerializer(ModelSerializer,
                                  NestedHyperlinkedModelSerializer):
    _href = NestedHyperlinkedIdentityField(
        view_name='versions-detail',
        lookup_field='number',
        parent_lookup_kwargs={'repository_pk': 'repository__pk'},
    )
    _content_href = NestedHyperlinkedIdentityField(
        view_name='versions-content',
        lookup_field='number',
        parent_lookup_kwargs={'repository_pk': 'repository__pk'},
    )
    _added_href = NestedHyperlinkedIdentityField(
        view_name='versions-added-content',
        lookup_field='number',
        parent_lookup_kwargs={'repository_pk': 'repository__pk'},
    )
    _removed_href = NestedHyperlinkedIdentityField(
        view_name='versions-removed-content',
        lookup_field='number',
        parent_lookup_kwargs={'repository_pk': 'repository__pk'},
    )
    number = serializers.IntegerField(read_only=True)
    content_summary = serializers.DictField(help_text=_(
        'A list of counts of each type of content in this version.'),
                                            read_only=True)
    add_content_units = serializers.ListField(help_text=_(
        'A list of content units to add to a new repository version'),
                                              write_only=True)
    remove_content_units = serializers.ListField(help_text=_(
        'A list of content units to remove from the latest repository version'
    ),
                                                 write_only=True)
    base_version = NestedHyperlinkedRelatedField(
        required=False,
        help_text=_(
            'A repository version whose content will be used as the initial set of content '
            'for the new repository version'),
        queryset=models.RepositoryVersion.objects.all(),
        view_name='versions-detail',
        lookup_field='number',
        parent_lookup_kwargs={'repository_pk': 'repository__pk'},
    )

    class Meta:
        model = models.RepositoryVersion
        fields = ModelSerializer.Meta.fields + (
            '_href', '_content_href', '_added_href', '_removed_href', 'number',
            'content_summary', 'add_content_units', 'remove_content_units',
            'base_version')
Exemplo n.º 2
0
class MinimalisticKanbanBoardColumnTaskAssignmentSerializer(
        BaseModelSerializer):
    """
    KanbanBoardColumnSerializer for the kanban board column task assignment
    """
    class Meta:
        model = KanbanBoardColumnTaskAssignment
        fields = (
            'pk',
            'kanban_board',
            'kanban_board_column',
            'url',
        )

    kanban_board = InternalKanbanBoardSerializer(
        read_only=True, many=False, source='kanban_board_column.kanban_board')

    kanban_board_column = InternalKanbanBoardColumnSerializer(read_only=True,
                                                              many=False)

    url = NestedHyperlinkedIdentityField(
        view_name='kanbanboard-tasks-detail',
        parent_lookup_kwargs={
            'kanbanboard_pk': 'kanban_board_column__kanban_board__pk'
        },
        lookup_url_kwarg='pk',
        lookup_field='pk')
Exemplo n.º 3
0
class ZaakBesluitSerializer(serializers.Serializer):
    """
    Serializer the reverse relation between Besluit-Zaak.

    We use the UUID of the Besluit to generate the URL/UUID of the ZaakBesluit
    instance, since it's a FK relationship, we can safely do this. Effectively,
    we're feeding the :class:`Besluit` instance to this serializer.
    """

    url = NestedHyperlinkedIdentityField(
        view_name="zaakbesluit-detail",
        lookup_field="uuid",
        parent_lookup_kwargs={"zaak_uuid": "zaak__uuid"},
        read_only=True,
    )
    uuid = serializers.UUIDField(
        help_text=_("Unieke resource identifier (UUID4)"), read_only=True)
    besluit = LengthHyperlinkedRelatedField(
        queryset=Besluit.objects.all(),
        view_name="besluit-detail",
        lookup_field="uuid",
        min_length=1,
        max_length=1000,
        help_text=_(
            "URL-referentie naar het BESLUIT (in de Besluiten API), waar "
            "ook de relatieinformatie opgevraagd kan worden."),
    )

    def validate_besluit(self, besluit: Besluit):
        zaak = self.context["view"]._get_zaak()
        if not besluit.zaak == zaak:
            raise serializers.ValidationError(
                _("Het Besluit verwijst niet naar de juiste zaak"),
                code="invalid-zaak")
        return besluit
Exemplo n.º 4
0
class RuneInstanceSerializer(serializers.ModelSerializer):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/runes-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )
    # owner = serializers.HyperlinkedRelatedField(view_name='profiles-detail', source='owner.user.username', read_only=True)
    # TODO: Fix owner field so as not to cause a query explosion

    class Meta:
        model = RuneInstance
        fields = [
            'id', 'url', 'com2us_id', 'assigned_to',
            'type', 'slot', 'stars', 'level', 'quality', 'original_quality', 'value',
            'substat_upgrades_remaining', 'efficiency', 'max_efficiency',
            'main_stat', 'main_stat_value',
            'innate_stat', 'innate_stat_value',
            'substat_1', 'substat_1_value', 'substat_1_craft',
            'substat_2', 'substat_2_value', 'substat_2_craft',
            'substat_3', 'substat_3_value', 'substat_3_craft',
            'substat_4', 'substat_4_value', 'substat_4_craft',
        ]

    def create(self, validated_data):
        validated_data['owner'] = self.context['request'].user.summoner
        return super(RuneInstanceSerializer, self).create(validated_data)
Exemplo n.º 5
0
class IssueCommentSerializer(serializers.HyperlinkedModelSerializer):
    issue = NestedHyperlinkedRelatedField(
        view_name="issues-detail",
        read_only=True,
        parent_lookup_kwargs={"lab_pk": "lab__pk"},
        lookup_url_kwarg="number",
    )

    url = NestedHyperlinkedIdentityField(
        view_name="issue-comments-detail",
        parent_lookup_kwargs={
            "lab_pk": "issue__lab__pk",
            "issue_number": "issue__number",
        },
    )

    def create(self, validated_data):
        context_kwargs = self.context["view"].kwargs
        issue = Issue.objects.get(lab=context_kwargs["lab_pk"],
                                  number=context_kwargs["issue_number"])
        instance = IssueComment.objects.create(**validated_data, issue=issue)
        # instance.issue =
        return instance

    class Meta:
        model = IssueComment
        fields = ["id", "url", "issue", "body", "created", "deleted"]
        read_only_fields = ["created"]
Exemplo n.º 6
0
class ArtifactInstanceSerializer(serializers.ModelSerializer,
                                 AddOwnerOnCreate):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/artifacts-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )
    precise_slot = serializers.CharField(source='get_precise_slot_display')

    class Meta:
        model = ArtifactInstance
        fields = (
            'id',
            'url',
            'com2us_id',
            'assigned_to',
            'rta_assigned_to',
            'slot',
            'element',
            'archetype',
            'precise_slot',
            'level',
            'quality',
            'original_quality',
            'efficiency',
            'max_efficiency',
            'main_stat',
            'main_stat_value',
            'effects',
            'effects_value',
            'effects_upgrade_count',
            'effects_reroll_count',
        )
Exemplo n.º 7
0
class StarSerializer(FlexFieldsSerializerMixin,
                     serializers.HyperlinkedModelSerializer):
    """
    Serializes and deserializes a Star for a Point.
    Validates each deserialized field.
    """

    _url = NestedHyperlinkedIdentityField(
        read_only=True,
        view_name='point-star-detail',
        parent_lookup_kwargs={'point_pk': 'point__pk'})
    point = wrap_url(serializers.HyperlinkedRelatedField)(
        read_only=True, view_name='point-detail')
    creator = wrap_url(serializers.HyperlinkedRelatedField)(
        read_only=True, view_name='user-detail')

    class Meta:
        model = Star
        fields = ('_url', 'id', 'created', 'point', 'creator')

    expandable_fields = {
        'creator': (CreatorSerializer, {
            'source': 'creator'
        }),
    }
Exemplo n.º 8
0
class FormResponseSerializer(serializers.HyperlinkedModelSerializer):
    url = NestedHyperlinkedIdentityField(view_name='form-response-detail',
                                         lookup_field='id',
                                         parent_lookup_kwargs={
                                             'form_slug': 'form__slug',
                                         })
    form = relations.HyperlinkedRelatedField(view_name='form-detail',
                                             read_only=True,
                                             lookup_field='slug')

    def create(self, validated_data):
        form = Form.objects.get(slug=self.context['view'].kwargs['form_slug'])
        validated_data['form'] = form
        return super().create(validated_data)

    class Meta:
        fields = (
            'url',
            'form',
            'values',
            # 'created_by',
            'created_at',
            'updated_at',
        )
        read_only_fields = (
            'created_at',
            'updated_at',
        )
        model = FormResponse
Exemplo n.º 9
0
class RuneInstanceSerializer(serializers.ModelSerializer, AddOwnerOnCreate):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/runes-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )

    class Meta:
        model = RuneInstance
        fields = [
            'id',
            'url',
            'com2us_id',
            'assigned_to',
            'type',
            'slot',
            'stars',
            'level',
            'quality',
            'original_quality',
            'value',
            'substat_upgrades_remaining',
            'efficiency',
            'max_efficiency',
            'main_stat',
            'main_stat_value',
            'innate_stat',
            'innate_stat_value',
            'substats',
            'substat_values',
            'substats_enchanted',
            'substats_grind_value',
        ]
Exemplo n.º 10
0
class RuneBuildSerializer(serializers.ModelSerializer, AddOwnerOnCreate):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/rune-builds-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )
    runes = RuneInstanceSerializer(many=True, read_only=True)

    class Meta:
        model = RuneBuild
        fields = [
            'id',
            'url',
            'name',
            'monster',
            'runes',
            'hp',
            'hp_pct',
            'attack',
            'attack_pct',
            'defense',
            'defense_pct',
            'speed',
            'speed_pct',
            'crit_rate',
            'crit_damage',
            'resistance',
            'accuracy',
            'avg_efficiency',
        ]
Exemplo n.º 11
0
class PensumBasicThresholdFactorSerializer(NestedHyperlinkedModelSerializer):
    class Meta:
        model = PensumBasicThresholdFactors
        fields = [
            'url',
            'pk',
            'name',
            'factor_type',
            'value',
            # hidden
            'pensum'
        ]

    parent_lookup_kwargs = {
        'schedule_slug': 'pensum__schedule__slug',
        'pensums_employee': 'pensum__employee__abbreviation'
    }
    url = NestedHyperlinkedIdentityField(
        view_name='pensum-factors-detail',
        lookup_field='pk',
        parent_lookup_kwargs=parent_lookup_kwargs)

    pensum = ParentHiddenRelatedField(queryset=Pensum.objects.all(),
                                      parent_lookup_kwargs={
                                          'schedule_slug':
                                          'schedule__slug',
                                          'pensums_employee':
                                          'employee__abbreviation'
                                      })
Exemplo n.º 12
0
class IssueSerializer(serializers.HyperlinkedModelSerializer):
    comments = NestedHyperlinkedIdentityField(
        view_name="issue-comments-list",
        parent_lookup_kwargs={"lab_pk": "lab__pk"},
        lookup_url_kwarg="issue_number",
    )
    url = NestedHyperlinkedIdentityField(
        view_name="issues-detail",
        parent_lookup_kwargs={"lab_pk": "lab__pk"},
        lookup_field="number",
    )
    description = serializers.CharField(max_length=MAX_BODY_TEXT_LENGTH,
                                        allow_blank=True,
                                        required=False)
    experiments = NestedHyperlinkedRelatedField(
        many=True,
        queryset=Experiment.objects.all(),
        view_name="experiments-detail",
        parent_lookup_kwargs={"lab_pk": "lab__pk"},
        lookup_url_kwarg="number",
        lookup_field="number",
        required=False,
    )

    def create(self, validated_data):
        context_kwargs = self.context["view"].kwargs
        lab = Lab.objects.get(pk=context_kwargs["lab_pk"])
        instance = Issue.objects.create(**validated_data, lab=lab)
        return instance

    class Meta:
        model = Issue
        fields = [
            "number",
            "id",
            "url",
            "state",
            "title",
            "description",
            "created",
            "comments",
            "experiments",
            "lab",
            "deleted",
        ]
        read_only_fields = ["lab", "created"]
Exemplo n.º 13
0
class MaterialStorageSerializer(serializers.ModelSerializer, AddOwnerOnCreate):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/storage-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )

    class Meta:
        model = MaterialStorage
        fields = ['id', 'url', 'item', 'quantity']
Exemplo n.º 14
0
class MonsterPieceSerializer(serializers.ModelSerializer, AddOwnerOnCreate):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/monster-pieces-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )

    class Meta:
        model = MonsterPiece
        fields = ['id', 'url', 'monster', 'pieces']
Exemplo n.º 15
0
class ParticipantNestedSerializer(ModelSerializer):
    """Serializer for fully nested Participant object."""

    url = NestedHyperlinkedIdentityField(
        view_name="participants-detail",
        parent_lookup_kwargs={"event_pk": "event__pk"})

    class Meta:
        model = Participant
        exclude = ["event"]
Exemplo n.º 16
0
class ParticipantSerializer(EventResourceSerializer):
    """Serializer for Participant object."""

    url = NestedHyperlinkedIdentityField(
        view_name="participants-detail",
        parent_lookup_kwargs={"event_pk": "event__pk"})

    class Meta:
        model = Participant
        fields = "__all__"
Exemplo n.º 17
0
class BuildingInstanceSerializer(serializers.ModelSerializer,
                                 AddOwnerOnCreate):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/buildings-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )

    class Meta:
        model = BuildingInstance
        fields = ['id', 'url', 'building', 'level']
Exemplo n.º 18
0
class BillSerializer(EventResourceSerializer):
    """Serializer for Bill object."""

    url = NestedHyperlinkedIdentityField(
        view_name="bills-detail",
        parent_lookup_kwargs={"event_pk": "event__pk"})
    participants = ParticipantField(many=True, validators=[])

    class Meta:
        model = Bill
        fields = "__all__"
Exemplo n.º 19
0
class BillNestedSerializer(ModelSerializer):
    """Serializer for fully nested Bill object."""

    url = NestedHyperlinkedIdentityField(
        view_name="bills-detail",
        parent_lookup_kwargs={"event_pk": "event__pk"})
    participants = ParticipantField(many=True)

    class Meta:
        model = Bill
        fields = "__all__"
Exemplo n.º 20
0
class BenchmarkSerializer(serializers.HyperlinkedModelSerializer):
    url = NestedHyperlinkedIdentityField(
        view_name='benchmark-detail',
        parent_lookup_kwargs={'repo': 'repository__id'})
    repository = HyperlinkedRelatedField(read_only=True,
                                         view_name='repository-detail')

    class Meta:
        model = Benchmark
        fields = (URL, 'repository', 'measurement_name', 'percentile_25',
                  'percentile_50', 'upper_threshold', 'num_cases')
Exemplo n.º 21
0
class MonsterInstanceSerializer(serializers.ModelSerializer):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/monsters-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )
    # owner = serializers.HyperlinkedRelatedField(view_name='profiles-detail', source='owner.user.username', read_only=True)
    # TODO: Fix owner field so as not to cause a query explosion
    runes = RuneInstanceSerializer(many=True,
                                   read_only=True,
                                   source='runeinstance_set')

    class Meta:
        model = MonsterInstance
        fields = [
            'id',
            'url',
            'com2us_id',
            'created',
            'monster',
            'custom_name',
            'stars',
            'level',
            'skill_1_level',
            'skill_2_level',
            'skill_3_level',
            'skill_4_level',
            'base_hp',
            'base_attack',
            'base_defense',
            'base_speed',
            'base_crit_rate',
            'base_crit_damage',
            'base_resistance',
            'base_accuracy',
            'rune_hp',
            'rune_attack',
            'rune_defense',
            'rune_speed',
            'rune_crit_rate',
            'rune_crit_damage',
            'rune_resistance',
            'rune_accuracy',
            'avg_rune_efficiency',
            'fodder',
            'in_storage',
            'ignore_for_fusion',
            'priority',
            'notes',
            'runes',
        ]

    def create(self, validated_data):
        validated_data['owner'] = self.context['request'].user.summoner
        return super(MonsterInstanceSerializer, self).create(validated_data)
Exemplo n.º 22
0
class PaymentNestedSerializer(ModelSerializer):
    """Serializer for fully nested Payment object."""

    url = NestedHyperlinkedIdentityField(
        view_name="payments-detail",
        parent_lookup_kwargs={"event_pk": "event__pk"})
    issuer = ParticipantField()
    acquirer = ParticipantField()

    class Meta:
        model = Payment
        fields = "__all__"
Exemplo n.º 23
0
class BenchmarkDescriptionSerializer(serializers.HyperlinkedModelSerializer):
    url = NestedHyperlinkedIdentityField(
        view_name='benchmark_description-detail',
        parent_lookup_kwargs={'repo': 'repository__id'})

    repository = HyperlinkedRelatedField(read_only=True,
                                         view_name='repository-detail')

    class Meta:
        model = BenchmarkDescription
        fields = (URL, 'repository', 'num_projects', 'selection_type', 'date',
                  'project_data')
Exemplo n.º 24
0
class BuildingInstanceSerializer(serializers.ModelSerializer):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/buildings-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )

    class Meta:
        model = BuildingInstance
        fields = ['id', 'url', 'building', 'level']

    def create(self, validated_data):
        validated_data['owner'] = self.context['request'].user.summoner
        return super(BuildingInstanceSerializer, self).create(validated_data)
Exemplo n.º 25
0
class RuneCraftInstanceSerializer(serializers.ModelSerializer):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/rune-crafts-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )

    class Meta:
        model = RuneCraftInstance
        fields = ['id', 'url', 'com2us_id', 'type', 'rune', 'stat', 'quality', 'value']

    def create(self, validated_data):
        validated_data['owner'] = self.context['request'].user.summoner
        return super(RuneCraftInstanceSerializer, self).create(validated_data)
Exemplo n.º 26
0
class MonsterPieceSerializer(serializers.ModelSerializer):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/monster-pieces-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )

    class Meta:
        model = MonsterPiece
        fields = ['id', 'url', 'monster', 'pieces']

    def create(self, validated_data):
        validated_data['owner'] = self.context['request'].user.summoner
        return super(MonsterPieceSerializer, self).create(validated_data)
Exemplo n.º 27
0
class CommentsDetailSerializer(serializers.ModelSerializer):
    # post_pk: url에서 받는 인자, 'post__pk': parent model의 기본키 접근을 위한 ORM 문법
    url = NestedHyperlinkedIdentityField(
        view_name='lostboard:posts_comments-detail',
        parent_lookup_kwargs={'post_pk': 'post__pk'})

    class Meta:
        model = Comment
        fields = '__all__'
        extra_kwargs = {
            'password': {
                'write_only': True
            },
        }
Exemplo n.º 28
0
class TeamSerializer(serializers.ModelSerializer):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/teams-detail',
        parent_lookup_kwargs={
            'user_pk': 'group__owner__user__username',
        },
    )

    class Meta:
        model = Team
        fields = [
            'id', 'url', 'group', 'favorite', 'name', 'description', 'leader',
            'roster'
        ]
Exemplo n.º 29
0
class TeamGroupSerializer(serializers.ModelSerializer, AddOwnerOnCreate):
    url = NestedHyperlinkedIdentityField(
        view_name='profile/team-groups-detail',
        parent_lookup_kwargs={'user_pk': 'owner__user__username'},
    )

    teams = serializers.PrimaryKeyRelatedField(
        read_only=True,
        many=True,
        source='team_set',
    )

    class Meta:
        model = TeamGroup
        fields = ['id', 'url', 'name', 'teams']
Exemplo n.º 30
0
class TODOItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = TODOItem
        fields = ('url', 'id', 'todo_list', 'content', 'image', 'contact',
                  'completed')

    url = NestedHyperlinkedIdentityField(
        view_name='items-detail',
        parent_lookup_kwargs={'list_pk': 'todo_list__pk'},
    )

    todo_list = HyperlinkedRelatedField(
        read_only=True,
        view_name='todolist-detail',
    )