|
1 |
| -from gettext import gettext as _ |
2 |
| - |
3 | 1 | import logging
|
| 2 | +from gettext import gettext as _ |
4 | 3 |
|
5 | 4 | from django.conf import settings
|
6 | 5 | from jsonschema import Draft7Validator
|
7 |
| -from rest_framework import serializers |
8 |
| - |
9 |
| -from pulpcore.plugin.util import get_domain |
10 |
| -from pulpcore.plugin.models import ( |
11 |
| - AsciiArmoredDetachedSigningService, |
12 |
| - Remote, |
13 |
| - Publication, |
14 |
| -) |
| 6 | +from pulpcore.plugin.models import AsciiArmoredDetachedSigningService, Publication, Remote |
15 | 7 | from pulpcore.plugin.serializers import (
|
16 |
| - RelatedField, |
17 | 8 | DetailRelatedField,
|
18 | 9 | DistributionSerializer,
|
19 | 10 | PublicationSerializer,
|
| 11 | + RelatedField, |
20 | 12 | RemoteSerializer,
|
21 | 13 | RepositorySerializer,
|
22 | 14 | RepositorySyncURLSerializer,
|
23 | 15 | ValidateFieldsMixin,
|
24 | 16 | )
|
| 17 | +from pulpcore.plugin.util import get_domain |
| 18 | +from rest_framework import serializers |
25 | 19 |
|
26 | 20 | from pulp_rpm.app.constants import (
|
27 | 21 | ALLOWED_CHECKSUM_ERROR_MSG,
|
28 |
| - ALLOWED_PUBLISH_CHECKSUMS, |
29 | 22 | ALLOWED_PUBLISH_CHECKSUM_ERROR_MSG,
|
| 23 | + ALLOWED_PUBLISH_CHECKSUMS, |
30 | 24 | CHECKSUM_CHOICES,
|
| 25 | + COMPRESSION_CHOICES, |
31 | 26 | SKIP_TYPES,
|
32 | 27 | SYNC_POLICY_CHOICES,
|
33 |
| - COMPRESSION_CHOICES, |
34 |
| -) |
35 |
| -from pulp_rpm.app.models import ( |
36 |
| - RpmDistribution, |
37 |
| - RpmRemote, |
38 |
| - RpmRepository, |
39 |
| - RpmPublication, |
40 |
| - UlnRemote, |
41 | 28 | )
|
| 29 | +from pulp_rpm.app.models import RpmDistribution, RpmPublication, RpmRemote, RpmRepository, UlnRemote |
42 | 30 | from pulp_rpm.app.schema import COPY_CONFIG_SCHEMA
|
| 31 | +from urllib.parse import urlparse |
43 | 32 |
|
44 | 33 |
|
45 | 34 | class RpmRepositorySerializer(RepositorySerializer):
|
@@ -270,6 +259,15 @@ class RpmRemoteSerializer(RpmBaseRemoteSerializer):
|
270 | 259 | allow_null=True,
|
271 | 260 | )
|
272 | 261 |
|
| 262 | + def validate_url(self, value): |
| 263 | + ALLOWED = ("http", "https", "file") |
| 264 | + protocol = urlparse(value).scheme |
| 265 | + if protocol not in ALLOWED: |
| 266 | + raise serializers.ValidationError( |
| 267 | + f"The url {repr(value)} is not valid. It must start with: {ALLOWED}." |
| 268 | + ) |
| 269 | + return value |
| 270 | + |
273 | 271 | class Meta:
|
274 | 272 | fields = RemoteSerializer.Meta.fields + ("sles_auth_token",)
|
275 | 273 | model = RpmRemote
|
@@ -309,6 +307,15 @@ class UlnRemoteSerializer(RpmBaseRemoteSerializer):
|
309 | 307 | allow_null=True,
|
310 | 308 | )
|
311 | 309 |
|
| 310 | + def validate_url(self, value): |
| 311 | + ALLOWED = ("uln",) |
| 312 | + protocol = urlparse(value).scheme |
| 313 | + if protocol not in ALLOWED: |
| 314 | + raise serializers.ValidationError( |
| 315 | + f"The url {repr(value)} is not valid. It must start with: {ALLOWED}." |
| 316 | + ) |
| 317 | + return value |
| 318 | + |
312 | 319 | class Meta:
|
313 | 320 | fields = RemoteSerializer.Meta.fields + ("uln_server_base_url",)
|
314 | 321 | model = UlnRemote
|
|
0 commit comments