Beispiel #1
0
class CompanySerializerV1(dse_serializers.CassandraModelSerializer,
                          BaseCachedSerializerMixin):
    """
    Represents a Business Object API View with support for JSON, list, and map
    fields.
    """

    user = serializers.HiddenField(default=dse_fields.CurrentUserNameDefault())

    created_at = serializers.DateTimeField(
        default=serializers.CreateOnlyDefault(datetime.utcnow))

    address = AddressSerializerV1()

    founders = fields.ListField(required=False, child=fields.UUIDField())
    specialties = fields.ListField(required=False, child=fields.CharField())
    latest_twitter_followers = fields.ListField(required=False,
                                                child=fields.IntegerField())

    websites = fields.DictField(required=False, child=fields.CharField())

    crawler_config = dse_fields.CassandraJSONFieldAsText(required=False)
    extra_data = dse_fields.CassandraJSONFieldAsText(required=False)

    class Meta:
        error_status_codes = {HTTP_400_BAD_REQUEST: "Bad Request"}

        model = Company
        fields = (
            "_id",
            "user",
            "created_at",
            "updated_at",
            "name",
            "short_description",
            "foundation_date",
            "country_code",
            "stock_symbol",
            "domain",
            "last_round",
            "round_notes",
            "address",
            "latitude",
            "longitude",
            "contact_email",
            "founders",
            "specialties",
            "latest_twitter_followers",
            "websites",
            "crawler_config",
            "extra_data",
            "point",
            "linestring",
        )
        read_only_fields = ("_id", "user", "created_at", "updated_at")
Beispiel #2
0
class YupanaHostSerializer(NotEmptyMixin, Serializer):
    """Serializer to format hosts to yupana/hbi."""

    display_name = fields.CharField(source="name", **default_kwargs)
    bios_uuid = fields.CharField(**default_kwargs)
    fqdn = fields.CharField(
        source="name", **default_kwargs
    )  # TODO: not sure on this one, just followed old implementation https://github.com/quipucords/quipucords/blob/da644172fb35ad7128ba20372cf64fbf7ff4f367/quipucords/fingerprinter/task.py#L373  # noqa: E501
    insights_id = fields.CharField(source="insights_client_id", **default_kwargs)
    ip_addresses = fields.ListField(child=fields.CharField(), **default_kwargs)
    mac_addresses = fields.ListField(child=fields.CharField(), **default_kwargs)
    provider_id = fields.CharField(
        source="name", **default_kwargs
    )  # TODO: not sure on this one
    provider_type = fields.CharField(**default_kwargs)
    satellite_id = fields.CharField(
        **default_kwargs
    )  # TODO: not sure on this one https://github.com/RedHatInsights/insights-host-inventory/blob/813a290f3a1c702312d8e02d1e59ba328c6f8143/swagger/api.spec.yaml#L901-L907  # noqa: E501
    subscription_manager_id = fields.CharField(**default_kwargs)
    facts = FactsetSerializer(source="*", many=True)
    system_profile = SystemProfileSerializer(source="*", **default_kwargs)

    def to_representation(self, instance):
        """Format HostEntity as dict and validate."""
        data = super().to_representation(instance)
        self.validate(data)
        return data

    def validate(self, attrs: dict):
        """Validate serializer data."""
        attrs = self._validate_canonical_facts(attrs)
        attrs = self._validate_provider(attrs)
        return attrs

    def _validate_provider(self, attrs: dict):
        # hbi requires either provider_id and provider_type or none
        # https://github.com/RedHatInsights/insights-host-inventory/blob/813a290f3a1c702312d8e02d1e59ba328c6f8143/swagger/api.spec.yaml#L943-L957  # noqa: E501
        provider_attrs = {"provider_id", "provider_type"}
        present_provider_attr_set = provider_attrs & set(attrs)
        if len(present_provider_attr_set) != 1:
            return attrs

        present_provider_attr = present_provider_attr_set.pop()
        attrs.pop(present_provider_attr)
        return attrs

    def _validate_canonical_facts(self, attrs):
        if not set(attrs).intersection(CANONICAL_FACTS):
            raise ValidationError(
                "At least one 'canonical fact' must be present on the report. "
                f"(Canonical facts are: {CANONICAL_FACTS})"
            )
        return attrs
Beispiel #3
0
class BaseResultSerializer(Serializer):
    id = fields.CharField()
    type = fields.CharField()
    source = fields.CharField()
    title = fields.CharField()
    #abstract = fields.CharField()
    #summary = fields.CharField()
    language = fields.CharField(required=False)
    country = fields.CharField(required=False)
    date = fields.DateField()
    subjects = fields.ListField()
    keywords = fields.ListField()
Beispiel #4
0
class PresentacionSerializer(serializers.EmbeddedDocumentSerializer):
    nombre = fields.CharField(required=True)
    precio_compra = fields.FloatField(required=True)
    precio_venta = fields.FloatField(required=True)
    lotes = fields.ListField(LotesSerializer(required=True))
    medidas = MedidasSerializar(required=False)
    detalle_unitario = fields.ListField(
        DetalleUnitarioSerializer(required=False))

    class Meta:
        model = Presentacion
        fields = "__all__"
Beispiel #5
0
class ExperimentSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Experiment
    # fixme: how to embed the through relation?
    # users = UserExperimentSerializer(many=True, read_only=True)

    files = fields.ListField(child=URLPathField(), source="file_urls")
Beispiel #6
0
class FactsSerializer(Serializer):
    """Serializer for HBI facts."""

    source_types = fields.ListField()
    last_discovered = fields.DateTimeField()
    qpc_server_version = fields.CharField(default=server_version)
    qpc_server_id = fields.CharField(default=get_server_id)
Beispiel #7
0
class ReclaimSpaceSerializer(serializers.Serializer, ValidateFieldsMixin):
    """
    Serializer for reclaim disk space operation.
    """

    repo_hrefs = fields.ListField(
        required=True,
        help_text=_("Will reclaim space for the specified list of repos."),
    )
    repo_versions_keeplist = RepositoryVersionRelatedField(
        help_text=_("Will exclude repo versions from space reclaim."),
        many=True,
        required=False,
    )

    def validate_repo_hrefs(self, value):
        """
        Check that the repo_hrefs is not an empty list and contains all valid hrefs.
        Args:
            value (list): The list supplied by the user
        Returns:
            The list of pks (not hrefs) after validation
        Raises:
            ValidationError: If the list is empty or contains invalid hrefs.
        """
        if len(value) == 0:
            raise serializers.ValidationError("Must not be [].")
        from pulpcore.app.viewsets import NamedModelViewSet

        hrefs_to_return = []
        for href in value:
            hrefs_to_return.append(
                NamedModelViewSet.get_resource(href, Repository))

        return hrefs_to_return
Beispiel #8
0
class OrphansCleanupSerializer(serializers.Serializer, ValidateFieldsMixin):

    content_hrefs = fields.ListField(
        required=False,
        help_text=_("Will delete specified content and associated Artifacts if they are orphans."),
    )

    def validate_content_hrefs(self, value):
        """
        Check that the content_hrefs is not an empty list and contains all valid hrefs.
        Args:
            value (list): The list supplied by the user
        Returns:
            The list of pks (not hrefs) after validation
        Raises:
            ValidationError: If the list is empty or contains invalid hrefs.
        """
        if len(value) == 0:
            raise serializers.ValidationError("Must not be [].")
        from pulpcore.app.viewsets import NamedModelViewSet

        pks_to_return = []
        for href in value:
            pks_to_return.append(NamedModelViewSet.get_resource(href, Content).pk)

        return pks_to_return
Beispiel #9
0
class ConfigurationSerializer(serializers.Serializer):
    priority = fields.ChoiceField(PRIORITY)
    scheduler = fields.ChoiceField(SCHEDULER_TYPE)
    max_tasks = fields.IntegerField(min_value=1)
    weight = fields.ChoiceField(DECISION_WEIGHT)

    parallelism = fields.ListField(child=fields.RegexField(r'^\d+(\.\d+)?$'),
                                   min_length=4,
                                   max_length=4)

    memory = fields.FloatField()
    cpu_num = fields.IntegerField(allow_null=True, min_value=1)
    disk_size = fields.FloatField()
    cpu_model = fields.CharField(default='', allow_null=True, allow_blank=True)
    cpu_time_exec_cmds = fields.FloatField()
    memory_exec_cmds = fields.FloatField()

    console_level = fields.ChoiceField(LOGGING_LEVELS)
    file_level = fields.ChoiceField(LOGGING_LEVELS)
    console_formatter = fields.CharField()
    file_formatter = fields.CharField()

    keep_intermediate_files = fields.BooleanField()
    upload_verifier_files = fields.BooleanField()
    upload_other_files = fields.BooleanField()
    ignore_subjobs = fields.BooleanField()
    total_coverage = fields.BooleanField()
    coverage_details = fields.ChoiceField(COVERAGE_DETAILS)

    def create(self, validated_data):
        raise NotImplementedError

    def update(self, instance, validated_data):
        raise NotImplementedError
Beispiel #10
0
class MeasurementsSerializer(serializers.Serializer):
    timestamp = serializers.DateTimeField(required=True)
    #timestamp = fields.DateTimeField(input_formats=[%Y-%m-%dT%H:%M:%S.%fZ], required=True)
    metrics = fields.ListField(
        child=fields.DictField(child=fields.FloatField()),
        help_text=
        'Any matric field like temperature, dew point, precipitation or can be added new one in the future',
    )
class ContactFormSeralizer(serializers.Serializer):
  name = fields.CharField()
  message = fields.CharField()
  email = fields.CharField()
  phone = fields.CharField(required=False)
  recipients = fields.ListField()

  class Meta:
    fields = ['name', 'message', 'email', 'phone']
Beispiel #12
0
class PresetsArgsSerializer(Serializer):
    class Meta:
        list_serializer_class = PresetArgsListSerializer

    slug = fields.SlugField()
    label = fields.CharField()
    help_text = fields.CharField(required=False)
    placehorlder = fields.CharField(required=False)
    types = fields.ListField()
class TicketSerializer(serializers.ModelSerializer):
    log = fields.ListField(child=fields.JSONField())
    info = fields.SerializerMethodField(read_only=True)

    class Meta:
        model = Ticket
        fields = ('store', 'created_at', 'updated_at', 'created_by',
                  'updated_by', 'is_invoiced', 'log', 'info')

    def get_info(self, obj):
        return {}
class CompanySearchSerializerV1(CustomHaystackSerializer,
                                BaseCachedSerializerMixin):
    """
    A Fast Searcher (Solr) version of the original Business Object API View
    """
    address = AddressSerializerV1()

    founders = fields.ListField(required=False, child=fields.UUIDField())
    specialties = fields.ListField(required=False, child=fields.CharField())
    latest_twitter_followers = fields.ListField(
        required=False, child=fields.IntegerField())

    websites = fields.DictField(required=False, child=fields.CharField())

    crawler_config = dse_fields.CassandraJSONFieldAsText(required=False)
    extra_data = dse_fields.CassandraJSONFieldAsText(required=False)

    score = fields.FloatField(required=False)

    class Meta(CustomHaystackSerializer.Meta):
        model = Company
        # The `index_classes` attribute is a list of which search indexes
        # we want to include in the search.
        index_classes = [CompanyIndex]

        # The `fields` contains all the fields we want to include.
        # NOTE: Make sure you don't confuse these with model attributes. These
        # fields belong to the search index!
        fields = [
            "_id", "created_at", "updated_at",
            "name", "short_description", "foundation_date",
            "last_round", "round_notes",
            "country_code", "stock_symbol", "domain",
            "address", "latitude", "longitude",
            "contact_email", "founders", "specialties",
            "latest_twitter_followers", "websites", "crawler_config",
            "extra_data",
            "text", "score"
        ]
Beispiel #15
0
class SafeMarkVersionSerializer(WithTagsMixin, serializers.ModelSerializer):
    tags = fields.ListField(child=fields.CharField(),
                            allow_empty=True,
                            write_only=True)
    attrs = fields.ListField(child=SafeMarkAttrSerializer(),
                             allow_empty=True,
                             write_only=True)

    def validate_tags(self, tags):
        return self.get_tags_ids(tags)

    def get_value(self, dictionary):
        return dictionary

    def create(self, validated_data):
        if 'mark' not in validated_data:
            raise exceptions.ValidationError(detail={'mark': 'Required'})
        return create_mark_version(validated_data.pop('mark'),
                                   **validated_data)

    def update(self, instance, validated_data):
        raise RuntimeError('Update of mark version object is not allowed')

    def to_representation(self, instance):
        value = super().to_representation(instance)
        if isinstance(instance, MarkSafeHistory):
            value['attrs'] = SafeMarkAttrSerializer(
                instance=instance.attrs.order_by('id'), many=True).data
            value['tags'] = list(
                instance.tags.values_list('tag__name', flat=True))
        return value

    class Meta:
        model = MarkSafeHistory
        fields = ('change_date', 'comment', 'description', 'verdict', 'tags',
                  'attrs')
Beispiel #16
0
class UnknownMarkVersionSerializer(serializers.ModelSerializer):
    attrs = fields.ListField(child=UnsafeMarkAttrSerializer(),
                             allow_empty=True,
                             write_only=True)

    def validate(self, attrs):
        res = super().validate(attrs)
        if res.get('is_regexp'):
            try:
                re.search(res['function'], '')
            except Exception as e:
                logger.exception(e)
                raise exceptions.ValidationError(
                    detail={
                        'function':
                        _("The pattern is wrong, please refer to documentation on the standard "
                          "Python library for processing reqular expressions")
                    })
        return res

    def get_value(self, dictionary):
        return dictionary

    def create(self, validated_data):
        if 'mark' not in validated_data:
            raise exceptions.ValidationError(detail={'mark': 'Required'})
        return create_mark_version(validated_data.pop('mark'),
                                   **validated_data)

    def update(self, instance, validated_data):
        raise RuntimeError('Update of mark version object is not allowed')

    def to_representation(self, instance):
        res = super().to_representation(instance)
        if isinstance(instance, MarkUnknownHistory):
            res['attrs'] = UnknownMarkAttrSerializer(
                instance=instance.attrs.order_by('id'), many=True).data
        return res

    class Meta:
        model = MarkUnknownHistory
        fields = ('change_date', 'comment', 'description', 'attrs', 'function',
                  'is_regexp', 'problem_pattern', 'link')
Beispiel #17
0
class OrphansCleanupSerializer(serializers.Serializer, ValidateFieldsMixin):

    content_hrefs = fields.ListField(
        required=False,
        help_text=
        _("Will delete specified content and associated Artifacts if they are orphans."
          ),
    )
    orphan_protection_time = serializers.IntegerField(
        help_text=
        ("The time in minutes for how long Pulp will hold orphan Content and Artifacts before "
         "they become candidates for deletion by this orphan cleanup task. This should ideally "
         "be longer than your longest running task otherwise any content created during that "
         "task could be cleaned up before the task finishes. If not specified, default is used "
         "from settings which is 1440 minutes (24 hours)"),
        allow_null=True,
        required=False,
        default=settings.ORPHAN_PROTECTION_TIME,
    )

    def validate_content_hrefs(self, value):
        """
        Check that the content_hrefs is not an empty list and contains all valid hrefs.
        Args:
            value (list): The list supplied by the user
        Returns:
            The list of pks (not hrefs) after validation
        Raises:
            ValidationError: If the list is empty or contains invalid hrefs.
        """
        if len(value) == 0:
            raise serializers.ValidationError("Must not be [].")
        from pulpcore.app.viewsets import NamedModelViewSet

        pks_to_return = []
        for href in value:
            pks_to_return.append(
                NamedModelViewSet.get_resource(href, Content).pk)

        return pks_to_return
Beispiel #18
0
 class Meta:
     _view_class = ModelViewSet
     _list_fields = [
         'name',
     ]
     _detail_fields = _list_fields + [
         'variables_list',
         'variables_ser',
     ]
     _override_detail_fields = {
         'variables_list':
         drf_fields.ListField(read_only=True,
                              child=drf_fields.DictField(read_only=True)),
         'variables_ser':
         SubVariablesSerializer(many=True, read_only=True)
     }
     _nested = {
         'vars': {
             'manager_name': 'variables',
             'allow_append': False,
             'model': 'test_proj.models.contented.Variable',
         }
     }
Beispiel #19
0
 class TestSerializer(serializers.Serializer):
     my_num = fields.IntegerField(required=True)
     my_str = fields.CharField(required=True)
     strs = fields.ListField(child=fields.CharField())
Beispiel #20
0
class UnsafeMarkVersionSerializer(WithTagsMixin, serializers.ModelSerializer):
    tags = fields.ListField(child=fields.CharField(),
                            allow_empty=True,
                            write_only=True)
    attrs = fields.ListField(child=UnsafeMarkAttrSerializer(),
                             allow_empty=True,
                             write_only=True)
    error_trace = fields.CharField(write_only=True, required=False)
    threshold = fields.IntegerField(min_value=0,
                                    max_value=100,
                                    write_only=True,
                                    default=0)

    def validate_tags(self, tags):
        return self.get_tags_ids(tags)

    def validate_threshold(self, value):
        return value / 100

    def __validate_error_trace(self, err_trace_str, compare_func):
        convert_func = COMPARE_FUNCTIONS[compare_func]['convert']
        assert convert_func in CONVERT_FUNCTIONS
        forests = json.loads(err_trace_str)
        return save_converted_trace(forests, convert_func)

    def validate(self, attrs):
        res = super().validate(attrs)
        if 'error_trace' in res:
            try:
                res['error_trace'] = self.__validate_error_trace(
                    res.pop('error_trace'), res['function'])
            except Exception as e:
                logger.exception(e)
                raise exceptions.ValidationError(
                    detail={'error_trace': _('Wrong error trace is provided')})
        if res['verdict'] != UNSAFE_VERDICTS[1][0]:
            res['status'] = None
        elif not res.get('status'):
            raise exceptions.ValidationError(
                detail={'status': _('Wrong status value')})
        return res

    def get_value(self, dictionary):
        return dictionary

    def create(self, validated_data):
        if 'mark' not in validated_data:
            raise exceptions.ValidationError(detail={'mark': 'Required'})
        if 'error_trace' not in validated_data:
            raise exceptions.ValidationError(
                detail={'error_trace': 'Required'})
        return create_mark_version(validated_data.pop('mark'),
                                   **validated_data)

    def update(self, instance, validated_data):
        raise RuntimeError('Update of mark version object is not allowed')

    def to_representation(self, instance):
        res = super().to_representation(instance)
        if isinstance(instance, MarkUnsafeHistory):
            conv = ConvertedTrace.objects.get(id=instance.error_trace_id)
            with conv.file.file as fp:
                res['error_trace'] = json.loads(fp.read().decode('utf-8'))
            res['attrs'] = UnsafeMarkAttrSerializer(
                instance=instance.attrs.order_by('id'), many=True).data
            res['tags'] = list(
                instance.tags.values_list('tag__name', flat=True))
            res['threshold'] = instance.threshold_percentage
        return res

    class Meta:
        model = MarkUnsafeHistory
        fields = ('change_date', 'comment', 'description', 'verdict', 'status',
                  'tags', 'attrs', 'function', 'error_trace', 'threshold')
Beispiel #21
0
class RunSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Run

    files = fields.ListField(child=URLPathField(), source="file_urls")
Beispiel #22
0
class MonthMetricsSerializer(serializers.Serializer):
    dates = fields.ListField(
        child=fields.CharField(min_length=3, max_length=5))
    video_minutes_list = fields.ListField(child=fields.IntegerField(
        min_value=0))
    audio_minutes_list = fields.ListField(child=fields.IntegerField(
        min_value=0))
    total_minutes_list = fields.ListField(child=fields.IntegerField(
        min_value=0))
    video_plays_list = fields.ListField(child=fields.IntegerField(min_value=0))
    audio_plays_list = fields.ListField(child=fields.IntegerField(min_value=0))
    total_plays_list = fields.ListField(child=fields.IntegerField(min_value=0))
    archive_video_minutes_list = fields.ListField(
        child=fields.IntegerField(min_value=0), required=False)
    archive_audio_minutes_list = fields.ListField(
        child=fields.IntegerField(min_value=0), required=False)
    archive_total_minutes_list = fields.ListField(
        child=fields.IntegerField(min_value=0), required=False)
    archive_video_plays_list = fields.ListField(
        child=fields.IntegerField(min_value=0), required=False)
    archive_audio_plays_list = fields.ListField(
        child=fields.IntegerField(min_value=0), required=False)
    archive_total_plays_list = fields.ListField(
        child=fields.IntegerField(min_value=0), required=False)
Beispiel #23
0
class ExplicitSerializer(DocumentSerializer):
    class Meta:
        model = EmbeddingThing
        fields = '__all__'
    embedded = drf_fields.ListField(child=EmbeddedThingSerializer())
Beispiel #24
0
class ValuesSerializer(BaseSerializer):
    count = fields.IntegerField(min_value=0)
    results = fields.ListField(allow_empty=True)
Beispiel #25
0
class AttributesListSerializer(serializers.Serializer):
    attributes = fields.ListField()
Beispiel #26
0
class WordCloudSerializer(serializers.Serializer):
    cloud = fields.ListField()
Beispiel #27
0
class CompanyGEOSearchSerializerV1(CustomHaystackSerializer,
                                   BaseCachedSerializerMixin):
    """
    A Fast Searcher (Solr) version of the original Business Object API View
    to do GEO Spatial searches
    """

    address = AddressSerializerV1()

    founders = fields.ListField(required=False, child=fields.UUIDField())
    specialties = fields.ListField(required=False, child=fields.CharField())
    latest_twitter_followers = fields.ListField(required=False,
                                                child=fields.IntegerField())

    websites = fields.DictField(required=False, child=fields.CharField())

    crawler_config = dse_fields.CassandraJSONFieldAsText(required=False)
    extra_data = dse_fields.CassandraJSONFieldAsText(required=False)

    score = fields.FloatField(required=False)

    distance = dse_fields.DistanceField(required=False, units="m")

    class Meta(CustomHaystackSerializer.Meta):
        model = Company
        # The `index_classes` attribute is a list of which search indexes
        # we want to include in the search.
        index_classes = [CompanyIndex]

        fields = [
            "_id",
            "created_at",
            "updated_at",
            "name",
            "short_description",
            "foundation_date",
            "last_round",
            "round_notes",
            "country_code",
            "stock_symbol",
            "domain",
            "address_street_type",
            "address_street_name",
            "address_street_number",
            "address_state",
            "address_region",
            "address_city",
            "address_country_code",
            "address_zipcode",
            "latitude",
            "longitude",
            "contact_email",
            "founders",
            "specialties",
            "latest_twitter_followers",
            "websites",
            "crawler_config",
            "extra_data",
            "text",
            "score",
            "distance",
            "point",
            "linestring",
        ]
class TaskSerializerV1(dse_serializers.CassandraModelSerializer,
                       BaseCachedSerializerMixin):
    """
    Represents a Business Object API View with support for JSON and map
    fields.
    """

    user = serializers.CharField(required=False)

    params = dse_fields.CassandraJSONFieldAsText(
        required=True,
        help_text="the set of params used to execute the crawler"
        " command, this will be saved as Text.")

    options = dse_fields.CassandraJSONFieldAsText(
        required=False,
        help_text="the exactly same content as `options` but saved"
        " on a way that we can search using solr "
        "(KeyEncodedMap).",
    )

    more_info = fields.ListField(required=False,
                                 allow_null=True,
                                 child=TaskMoreInfoSerializer())

    differences_from_last_version = fields.JSONField(required=False,
                                                     allow_null=True)

    inserted_fields = fields.ListField(required=False,
                                       allow_null=True,
                                       child=serializers.CharField())

    updated_fields = fields.ListField(required=False,
                                      allow_null=True,
                                      child=serializers.CharField())

    deleted_fields = fields.ListField(required=False,
                                      allow_null=True,
                                      child=serializers.CharField())

    changed_fields = fields.ListField(required=False,
                                      allow_null=True,
                                      child=serializers.CharField())

    def create(self, validated_data):
        request = self.context.get("request", None)
        if request:
            self.validated_data["user"] = str(request.user.id)
        return super(TaskSerializerV1, self).create(validated_data)

    class Meta:
        model = Task
        fields = (
            "task_id",
            "user",
            "created_at",
            "updated_at",
            "is_deleted",
            "status",
            "kind",
            "params",
            "times_performed",
            "type",
            "options",
            "more_info",
            "differences_from_last_version",
            "inserted_fields",
            "updated_fields",
            "deleted_fields",
            "changed_fields",
            "logging_task",
        )
        read_only_fields = (
            "created_at",
            "updated_at",
            "is_deleted",
            "status",
            "times_performed",
            "type",
            "params_map",
            "options_map",
            "differences_from_last_version",
            "inserted_fields",
            "updated_fields",
            "deleted_fields",
            "changed_fields",
            "logging_task",
        )
        extra_kwargs = {
            "task_id": {
                "help_text": "the task id that is the unique partition key."
            },
            "user": {
                "help_text":
                "The user that asked for the task, if it is an "
                "ondemand task."
            },
            "created_at": {
                "help_text": "the date of the creation of the task."
            },
            "updated_at": {
                "help_text": "the date that we last updated the task."
            },
            "is_deleted": {
                "help_text": "controls if the data is deleted."
            },
            "status": {
                "help_text": """
                 represents the actual status of the task, could be:
                    - 0 (Created)
                    - 1 (Queued)
                    - 2 (In Progress)
                    - 3 (Finished)
                    - 4 (Faulty)
                    - 5 (Unknown)
                """,
                "default": STATUS_CREATED,
            },
            "kind": {
                "help_text":
                "the name of the crawler that will execute the "
                "task."
            },
            "times_performed": {
                "help_text": "keep track on how many times the task was run."
            },
            "type": {
                "help_text": "the type of the task, could be OnDemand(1) or "
                "Batch(2)",
                "default": ON_DEMAND_TASK,
            },
            "more_info": {
                "help_text":
                "more info about the task, for example, something"
                "about the maintenance state"
            },
        }
Beispiel #29
0
class MonthMetricsSerializer(serializers.Serializer):

    dates = fields.ListField(child=fields.DateField())
    total_minutes_list = fields.ListField(child=fields.IntegerField(
        min_value=0))
    total_plays_list = fields.ListField(child=fields.IntegerField(min_value=0))
Beispiel #30
0
class DivergingSerializer(serializers.Serializer):
    _id = fields.CharField()
    children = fields.ListField()