forked from enviPath/enviPy
Implement functionality to assigne Licenses to Packages and show existing Licenses (#17)
Co-authored-by: Tim Lorsbach <tim@lorsba.ch> Reviewed-on: enviPath/enviPy#17
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
import json
|
||||
import logging
|
||||
from typing import List, Dict, Any
|
||||
|
||||
from django.conf import settings as s
|
||||
from django.contrib.auth import get_user_model
|
||||
@ -11,7 +12,7 @@ from utilities.chem import FormatConverter, IndigoUtils
|
||||
from .logic import GroupManager, PackageManager, UserManager, SettingManager
|
||||
from .models import Package, GroupPackagePermission, Group, CompoundStructure, Compound, Reaction, Rule, Pathway, Node, \
|
||||
EPModel, EnviFormer, MLRelativeReasoning, RuleBaseRelativeReasoning, Scenario, SimpleAmbitRule, APIToken, \
|
||||
UserPackagePermission, Permission
|
||||
UserPackagePermission, Permission, License, User
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -20,7 +21,7 @@ def log_post_params(request):
|
||||
logger.debug(f"{k}\t{v}")
|
||||
|
||||
|
||||
def get_base_context(request):
|
||||
def get_base_context(request) -> Dict[str, Any]:
|
||||
current_user = _anonymous_or_real(request)
|
||||
|
||||
ctx = {
|
||||
@ -47,7 +48,7 @@ def _anonymous_or_real(request):
|
||||
return get_user_model().objects.get(username='anonymous')
|
||||
|
||||
|
||||
def breadcrumbs(first_level_object=None, second_level_namespace=None, second_level_object=None):
|
||||
def breadcrumbs(first_level_object=None, second_level_namespace=None, second_level_object=None) -> List[Dict[str, str]]:
|
||||
bread = [
|
||||
{'Home': s.SERVER_URL},
|
||||
{'Package': s.SERVER_URL + '/package'},
|
||||
@ -130,6 +131,8 @@ def compounds(request):
|
||||
for p in PackageManager.get_reviewed_packages():
|
||||
reviewed_compound_qs |= Compound.objects.filter(package=p)
|
||||
|
||||
reviewed_compound_qs = reviewed_compound_qs.order_by('name')
|
||||
|
||||
if request.GET.get('all'):
|
||||
return JsonResponse({
|
||||
"objects": [
|
||||
@ -138,7 +141,7 @@ def compounds(request):
|
||||
]
|
||||
})
|
||||
|
||||
context['reviewed_objects'] = reviewed_compound_qs.order_by('name')
|
||||
context['reviewed_objects'] = reviewed_compound_qs
|
||||
return render(request, 'collections/objects_list.html', context)
|
||||
|
||||
elif request.method == 'POST':
|
||||
@ -162,7 +165,9 @@ def rules(request):
|
||||
reviewed_rule_qs = Rule.objects.none()
|
||||
|
||||
for p in PackageManager.get_reviewed_packages():
|
||||
reviewed_rule_qs |= Rule.objects.filter(package=p).order_by('name')
|
||||
reviewed_rule_qs |= Rule.objects.filter(package=p)
|
||||
|
||||
reviewed_rule_qs = reviewed_rule_qs.order_by('name')
|
||||
|
||||
if request.GET.get('all'):
|
||||
return JsonResponse({
|
||||
@ -198,6 +203,8 @@ def reactions(request):
|
||||
for p in PackageManager.get_reviewed_packages():
|
||||
reviewed_reaction_qs |= Reaction.objects.filter(package=p).order_by('name')
|
||||
|
||||
reviewed_reaction_qs = reviewed_reaction_qs.order_by('name')
|
||||
|
||||
if request.GET.get('all'):
|
||||
return JsonResponse({
|
||||
"objects": [
|
||||
@ -233,6 +240,8 @@ def pathways(request):
|
||||
for p in PackageManager.get_reviewed_packages():
|
||||
reviewed_pathway_qs |= Pathway.objects.filter(package=p).order_by('name')
|
||||
|
||||
reviewed_pathway_qs = reviewed_pathway_qs.order_by('name')
|
||||
|
||||
if request.GET.get('all'):
|
||||
return JsonResponse({
|
||||
"objects": [
|
||||
@ -268,6 +277,8 @@ def scenarios(request):
|
||||
for p in PackageManager.get_reviewed_packages():
|
||||
reviewed_scenario_qs |= Scenario.objects.filter(package=p).order_by('name')
|
||||
|
||||
reviewed_scenario_qs = reviewed_scenario_qs.order_by('name')
|
||||
|
||||
if request.GET.get('all'):
|
||||
return JsonResponse({
|
||||
"objects": [
|
||||
@ -311,6 +322,8 @@ def models(request):
|
||||
for p in PackageManager.get_reviewed_packages():
|
||||
reviewed_model_qs |= EPModel.objects.filter(package=p).order_by('name')
|
||||
|
||||
reviewed_model_qs = reviewed_model_qs.order_by('name')
|
||||
|
||||
if request.GET.get('all'):
|
||||
return JsonResponse({
|
||||
"objects": [
|
||||
@ -535,11 +548,11 @@ def package(request, package_uuid):
|
||||
|
||||
if s.DEBUG:
|
||||
for k, v in request.POST.items():
|
||||
print(k, v)
|
||||
logger.debug(f"{k}\t{v}")
|
||||
|
||||
if hidden := request.POST.get('hidden', None):
|
||||
if hidden == 'delete-package':
|
||||
print(current_package.delete())
|
||||
logger.debug(current_package.delete())
|
||||
return redirect(s.SERVER_URL + '/package')
|
||||
else:
|
||||
return HttpResponseBadRequest()
|
||||
@ -552,6 +565,9 @@ 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')
|
||||
|
||||
if new_package_name:
|
||||
current_package.name = new_package_name
|
||||
@ -579,9 +595,32 @@ 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()
|
||||
|
||||
current_package.license = None
|
||||
current_package.save()
|
||||
return redirect(current_package.url)
|
||||
else:
|
||||
if current_package.license is not None:
|
||||
current_package.license.delete()
|
||||
|
||||
l = License()
|
||||
l.link = license_link
|
||||
l.image_link = license_image_link
|
||||
l.save()
|
||||
|
||||
current_package.license = l
|
||||
current_package.save()
|
||||
|
||||
return redirect(current_package.url)
|
||||
else:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
else:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
# https://envipath.org/package/<id>/compound
|
||||
def package_compounds(request, package_uuid):
|
||||
@ -960,9 +999,9 @@ def package_pathways(request, package_uuid):
|
||||
|
||||
# https://envipath.org/package/<id>/pathway/<id>
|
||||
def package_pathway(request, package_uuid, pathway_uuid):
|
||||
current_user = _anonymous_or_real(request)
|
||||
current_package = PackageManager.get_package_by_id(current_user, package_uuid)
|
||||
current_pathway = Pathway.objects.get(package=current_package, uuid=pathway_uuid)
|
||||
current_user: User = _anonymous_or_real(request)
|
||||
current_package: Package = PackageManager.get_package_by_id(current_user, package_uuid)
|
||||
current_pathway: Pathway = Pathway.objects.get(package=current_package, uuid=pathway_uuid)
|
||||
|
||||
if request.method == 'GET':
|
||||
|
||||
|
||||
Reference in New Issue
Block a user