Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 10 additions & 11 deletions pulp_python/app/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
from logging import getLogger
from urllib.parse import urljoin, urlparse

from django.contrib.postgres.fields import ArrayField
from django.db import models

from pulpcore.plugin.models import (Artifact, Content, Importer, Publisher)
Expand Down Expand Up @@ -70,10 +69,10 @@ class PythonPackageContent(Content):
project_url = models.TextField(null=True)
platform = models.TextField(null=True)
supported_platform = models.TextField(null=True)
requires_dist = ArrayField(models.TextField(), default=[])
provides_dist = ArrayField(models.TextField(), default=[])
obsoletes_dist = ArrayField(models.TextField(), default=[])
requires_external = ArrayField(models.TextField(), default=[])
requires_dist = models.TextField(default="[]", blank=False)
provides_dist = models.TextField(default="[]", blank=False)
obsoletes_dist = models.TextField(default="[]", blank=False)
requires_external = models.TextField(default="[]", blank=False)


class PythonPublisher(Publisher):
Expand Down Expand Up @@ -104,7 +103,7 @@ class PythonImporter(Importer):
"""

TYPE = 'python'
projects = ArrayField(models.TextField())
projects = models.TextField(null=True)

def _fetch_inventory(self):
"""
Expand All @@ -131,7 +130,7 @@ def _fetch_remote(self):
remote = []

metadata_urls = [urljoin(self.feed_url, 'pypi/%s/json' % project)
for project in self.projects]
for project in json.loads(self.projects)]

for metadata_url in metadata_urls:
parsed_url = urlparse(metadata_url)
Expand Down Expand Up @@ -199,10 +198,10 @@ def _parse_metadata(cls, project, version, distribution):
package['project_url'] = project.get('project_url')
package['platform'] = project.get('platform')
package['supported_platform'] = project.get('supported_platform')
package['requires_dist'] = project.get('requires_dist', [])
package['provides_dist'] = project.get('provides_dist', [])
package['obsoletes_dist'] = project.get('obsoletes_dist', [])
package['requires_external'] = project.get('requires_external', [])
package['requires_dist'] = json.dumps(project.get('requires_dist', []))
package['provides_dist'] = json.dumps(project.get('provides_dist', []))
package['obsoletes_dist'] = json.dumps(project.get('obsoletes_dist', []))
package['requires_external'] = json.dumps(project.get('requires_external', []))
package['url'] = distribution['url']
package['md5_digest'] = distribution['md5_digest']

Expand Down
35 changes: 15 additions & 20 deletions pulp_python/app/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,29 +105,25 @@ class PythonPackageContentSerializer(platform.ContentSerializer):
required=False, allow_blank=True,
help_text=_('Field to specify the OS and CPU for which the binary package was compiled. ')
)
requires_dist = serializers.ListField(
child=serializers.CharField(),
required=False, default=[],
help_text=_('List containing names of some other distutils project '
requires_dist = serializers.CharField(
required=False, default="[]",
help_text=_('A JSON list containing names of some other distutils project '
'required by this distribution.')
)
provides_dist = serializers.ListField(
child=serializers.CharField(),
required=False, default=[],
help_text=_('List containing names of a Distutils project which is contained'
provides_dist = serializers.CharField(
required=False, default="[]",
help_text=_('A JSON list containing names of a Distutils project which is contained'
' within this distribution.')
)
obsoletes_dist = serializers.ListField(
child=serializers.CharField(),
required=False, default=[],
help_text=_('List containing names of a distutils project\'s distribution which this '
'distribution renders obsolete, meaning that the two projects should not '
obsoletes_dist = serializers.CharField(
required=False, default="[]",
help_text=_('A JSON list containing names of a distutils project\'s distribution which '
'this distribution renders obsolete, meaning that the two projects should not '
'be installed at the same time.')
)
requires_external = serializers.ListField(
child=serializers.CharField(),
required=False, default=[],
help_text=_('List containing some dependency in the system that the distribution '
requires_external = serializers.CharField(
required=False, default="[]",
help_text=_('A JSON list containing some dependency in the system that the distribution '
'is to be used.')
)
classifiers = ClassifierSerializer(
Expand Down Expand Up @@ -166,10 +162,9 @@ class PythonImporterSerializer(platform.ImporterSerializer):
A Serializer for PythonImporter.
"""

projects = serializers.ListField(
child=serializers.CharField(),
projects = serializers.CharField(
required=True,
help_text=_('A list of project names to sync.')
help_text=_('A JSON list of project names to sync.')
)

class Meta:
Expand Down