refactor of license django model #119

This commit is contained in:
Liam Brydon
2025-11-10 14:51:44 +13:00
parent e26d5a21e3
commit 42b1e77fb9
7 changed files with 45 additions and 25 deletions

View File

@ -20,7 +20,7 @@ from .models import (
Setting,
ExternalDatabase,
ExternalIdentifier,
JobLog,
JobLog, License,
)
@ -62,6 +62,10 @@ class EnviFormerAdmin(EPAdmin):
pass
class LicenseAdmin(admin.ModelAdmin):
list_display = ["cc_string", "link", "image_link"]
class CompoundAdmin(EPAdmin):
pass
@ -118,6 +122,7 @@ admin.site.register(JobLog, JobLogAdmin)
admin.site.register(Package, PackageAdmin)
admin.site.register(MLRelativeReasoning, MLRelativeReasoningAdmin)
admin.site.register(EnviFormer, EnviFormerAdmin)
admin.site.register(License, LicenseAdmin)
admin.site.register(Compound, CompoundAdmin)
admin.site.register(CompoundStructure, CompoundStructureAdmin)
admin.site.register(SimpleAmbitRule, SimpleAmbitRuleAdmin)

View File

@ -11,11 +11,14 @@ from epdb.models import (
EnviFormer,
Permission,
User,
ExternalDatabase,
ExternalDatabase, License,
)
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument("-ol", "--only-licenses", action="store_true", help="Only create licenses.")
def create_users(self):
# Anonymous User
if not User.objects.filter(email="anon@envipath.com").exists():
@ -83,6 +86,16 @@ class Command(BaseCommand):
return anon, admin, g, user0
def create_licenses(self):
"""Create the six default licenses supported by enviPath"""
cc_strings = ["by", "by-nc", "by-nc-nd", "by-nc-sa", "by-nd", "by-sa"]
for cc_string in cc_strings:
new_license = License()
new_license.cc_string = cc_string
new_license.link = f"https://creativecommons.org/licenses/{cc_string}/4.0/"
new_license.image_link = f"https://licensebuttons.net/l/{cc_string}/4.0/88x31.png"
new_license.save()
def import_package(self, data, owner):
return PackageManager.import_legacy_package(
data, owner, keep_ids=True, add_import_timestamp=False, trust_reviewed=True
@ -158,6 +171,9 @@ class Command(BaseCommand):
@transaction.atomic
def handle(self, *args, **options):
# Create users
self.create_licenses()
if options.get("only_licenses", False):
return
anon, admin, g, user0 = self.create_users()
self.populate_common_external_databases()

View File

@ -648,6 +648,7 @@ class ScenarioMixin(models.Model):
class License(models.Model):
cc_string = models.TextField(blank=False, null=False, verbose_name="CC string")
link = models.URLField(blank=False, null=False, verbose_name="link")
image_link = models.URLField(blank=False, null=False, verbose_name="Image link")

View File

@ -1047,9 +1047,7 @@ def package(request, package_uuid):
write = request.POST.get("write") == "on"
owner = request.POST.get("owner") == "on"
license = request.POST.get("license")
license_link = request.POST.get("license-link")
license_image_link = request.POST.get("license-image-link")
cc_string = request.POST.get("license")
if new_package_name:
current_package.name = new_package_name
@ -1077,24 +1075,13 @@ def package(request, package_uuid):
PackageManager.update_permissions(current_user, current_package, grantee, max_perm)
return redirect(current_package.url)
elif license is not None:
if license == "no-license":
if current_package.license is not None:
current_package.license.delete()
elif cc_string is not None:
if cc_string == "no-license":
current_package.license = None
current_package.save()
return redirect(current_package.url)
else:
if current_package.license is not None:
current_package.license.delete()
license = License()
license.link = license_link
license.image_link = license_image_link
license.save()
current_package.license = license
current_package.license = License.objects.get(cc_string=cc_string)
current_package.save()
return redirect(current_package.url)