Skip to content

Commit 90efe5f

Browse files
committed
Update models to use TextField in lieu of ArrayField
fixes #3217 https://pulp.plan.io/issues/3217
1 parent d488938 commit 90efe5f

File tree

2 files changed

+24
-29
lines changed

2 files changed

+24
-29
lines changed

pulp_python/app/models.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ class PythonPackageContent(Content):
7070
project_url = models.TextField(null=True)
7171
platform = models.TextField(null=True)
7272
supported_platform = models.TextField(null=True)
73-
requires_dist = ArrayField(models.TextField(), default=[])
74-
provides_dist = ArrayField(models.TextField(), default=[])
75-
obsoletes_dist = ArrayField(models.TextField(), default=[])
76-
requires_external = ArrayField(models.TextField(), default=[])
73+
requires_dist = models.TextField(default="[]", blank=False)
74+
provides_dist = models.TextField(default="[]", blank=False)
75+
obsoletes_dist = models.TextField(default="[]", blank=False)
76+
requires_external = models.TextField(default="[]", blank=False)
7777

7878

7979
class PythonPublisher(Publisher):
@@ -104,7 +104,7 @@ class PythonImporter(Importer):
104104
"""
105105

106106
TYPE = 'python'
107-
projects = ArrayField(models.TextField())
107+
projects = models.TextField(null=True)
108108

109109
def _fetch_inventory(self):
110110
"""
@@ -131,7 +131,7 @@ def _fetch_remote(self):
131131
remote = []
132132

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

136136
for metadata_url in metadata_urls:
137137
parsed_url = urlparse(metadata_url)
@@ -199,10 +199,10 @@ def _parse_metadata(cls, project, version, distribution):
199199
package['project_url'] = project.get('project_url')
200200
package['platform'] = project.get('platform')
201201
package['supported_platform'] = project.get('supported_platform')
202-
package['requires_dist'] = project.get('requires_dist', [])
203-
package['provides_dist'] = project.get('provides_dist', [])
204-
package['obsoletes_dist'] = project.get('obsoletes_dist', [])
205-
package['requires_external'] = project.get('requires_external', [])
202+
package['requires_dist'] = json.dumps(project.get('requires_dist', []))
203+
package['provides_dist'] = json.dumps(project.get('provides_dist', []))
204+
package['obsoletes_dist'] = json.dumps(project.get('obsoletes_dist', []))
205+
package['requires_external'] = json.dumps(project.get('requires_external', []))
206206
package['url'] = distribution['url']
207207
package['md5_digest'] = distribution['md5_digest']
208208

pulp_python/app/serializers.py

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -105,29 +105,25 @@ class PythonPackageContentSerializer(platform.ContentSerializer):
105105
required=False, allow_blank=True,
106106
help_text=_('Field to specify the OS and CPU for which the binary package was compiled. ')
107107
)
108-
requires_dist = serializers.ListField(
109-
child=serializers.CharField(),
110-
required=False, default=[],
111-
help_text=_('List containing names of some other distutils project '
108+
requires_dist = serializers.CharField(
109+
required=False, default="[]",
110+
help_text=_('A JSON list containing names of some other distutils project '
112111
'required by this distribution.')
113112
)
114-
provides_dist = serializers.ListField(
115-
child=serializers.CharField(),
116-
required=False, default=[],
117-
help_text=_('List containing names of a Distutils project which is contained'
113+
provides_dist = serializers.CharField(
114+
required=False, default="[]",
115+
help_text=_('A JSON list containing names of a Distutils project which is contained'
118116
' within this distribution.')
119117
)
120-
obsoletes_dist = serializers.ListField(
121-
child=serializers.CharField(),
122-
required=False, default=[],
123-
help_text=_('List containing names of a distutils project\'s distribution which this '
118+
obsoletes_dist = serializers.CharField(
119+
required=False, default="[]",
120+
help_text=_('A JSON list containing names of a distutils project\'s distribution which this '
124121
'distribution renders obsolete, meaning that the two projects should not '
125122
'be installed at the same time.')
126123
)
127-
requires_external = serializers.ListField(
128-
child=serializers.CharField(),
129-
required=False, default=[],
130-
help_text=_('List containing some dependency in the system that the distribution '
124+
requires_external = serializers.CharField(
125+
required=False, default="[]",
126+
help_text=_('A JSON list containing some dependency in the system that the distribution '
131127
'is to be used.')
132128
)
133129
classifiers = ClassifierSerializer(
@@ -166,10 +162,9 @@ class PythonImporterSerializer(platform.ImporterSerializer):
166162
A Serializer for PythonImporter.
167163
"""
168164

169-
projects = serializers.ListField(
170-
child=serializers.CharField(),
165+
projects = serializers.CharField(
171166
required=True,
172-
help_text=_('A list of project names to sync.')
167+
help_text=_('A JSON list of project names to sync.')
173168
)
174169

175170
class Meta:

0 commit comments

Comments
 (0)