Skip to content

Commit

Permalink
Making license file not required
Browse files Browse the repository at this point in the history
  • Loading branch information
Xpirix committed Nov 27, 2023
1 parent 08f01b4 commit 3a99811
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 28 deletions.
2 changes: 1 addition & 1 deletion qgis-app/plugins/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ def clean_package(self):
"""
package = self.cleaned_data.get("package")
try:
self.cleaned_data.update(validator(package, plugin_is_new=True))
self.cleaned_data.update(validator(package))
except ValidationError as e:
msg = _(
"There were errors reading plugin package (please check also your plugin's metadata)."
Expand Down
41 changes: 21 additions & 20 deletions qgis-app/plugins/tests/test_validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,31 +200,32 @@ class TestLicenseValidator(TestCase):

def setUp(self) -> None:
plugin_without_license = os.path.join(TESTFILE_DIR, "plugin_without_license.zip_")
self.invalid_plugin = open(plugin_without_license, "rb")
self.plugin_package = open(plugin_without_license, "rb")

def tearDown(self):
self.invalid_plugin.close()

def test_new_plugin_without_license(self):
self.assertRaises(
ValidationError,
validator,
InMemoryUploadedFile(
self.invalid_plugin,
field_name="tempfile",
name="testfile.zip",
content_type="application/zip",
size=39889,
charset="utf8",
),
plugin_is_new=True
)

def test_update_plugin_without_license(self):
self.plugin_package.close()

# License file is just recommended for now
# def test_new_plugin_without_license(self):
# self.assertRaises(
# ValidationError,
# validator,
# InMemoryUploadedFile(
# self.plugin_package,
# field_name="tempfile",
# name="testfile.zip",
# content_type="application/zip",
# size=39889,
# charset="utf8",
# ),
# plugin_is_new=True
# )

def test_plugin_without_license(self):
self.assertTrue(
validator(
InMemoryUploadedFile(
self.invalid_plugin,
self.plugin_package,
field_name="tempfile",
name="testfile.zip",
content_type="application/zip",
Expand Down
7 changes: 2 additions & 5 deletions qgis-app/plugins/validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ def _check_url_link(url: str, forbidden_url: str, metadata_attr: str) -> None:
raise error_check_if_exist


def validator(package, plugin_is_new=False):
def validator(package):
"""
Analyzes a zipped file, returns metadata if success, False otherwise.
If the new icon metadata is found, an inmemory file object is also returned
Expand Down Expand Up @@ -331,10 +331,7 @@ def validator(package, plugin_is_new=False):
# according to https://github.com/qgis/QGIS-Django/issues/38#issuecomment-1824010198
licensename = package_name + "/LICENSE"
if licensename not in namelist:
if plugin_is_new:
raise ValidationError(_("Cannot find LICENSE in the plugin package. This file is required for a new plugin, please consider adding it to the plugin package."))
else:
metadata.append(("license_recommended", "Yes"))
metadata.append(("license_recommended", "Yes"))

zip.close()
del zip
Expand Down
14 changes: 12 additions & 2 deletions qgis-app/plugins/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -468,6 +468,16 @@ def plugin_upload(request):
fail_silently=True,
)

if form.cleaned_data.get("license_recommended"):
messages.warning(
request,
_(
"Cannot find LICENSE in the plugin package. This file is not required but recommended, please consider adding it to the plugin package."
),
fail_silently=True,
)
del form.cleaned_data["license_recommended"]

except (IntegrityError, ValidationError, DjangoUnicodeDecodeError) as e:
connection.close()
messages.error(request, e, fail_silently=True)
Expand Down Expand Up @@ -961,7 +971,7 @@ def version_create(request, package_name):
messages.warning(
request,
_(
"Cannot find LICENSE in the plugin package. This file is not required for updating the plugin but is recommended, please consider adding it to the plugin package."
"Cannot find LICENSE in the plugin package. This file is not required but recommended, please consider adding it to the plugin package."
),
fail_silently=True,
)
Expand Down Expand Up @@ -1017,7 +1027,7 @@ def version_update(request, package_name, version):
messages.warning(
request,
_(
"Cannot find LICENSE in the plugin package. This file is not required for updating the plugin but is recommended, please consider adding it to the plugin package."
"Cannot find LICENSE in the plugin package. This file is not required but recommended, please consider adding it to the plugin package."
),
fail_silently=True,
)
Expand Down

0 comments on commit 3a99811

Please sign in to comment.