forked from enviPath/enviPy
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff37a17edb | ||
|
|
c60eac879e | ||
|
|
b269b7dfd8 |
@@ -36,8 +36,8 @@
|
|||||||
img.onerror = () => {
|
img.onerror = () => {
|
||||||
this.pesVizHtml = `
|
this.pesVizHtml = `
|
||||||
<div class='alert alert-error' role='alert'>
|
<div class='alert alert-error' role='alert'>
|
||||||
<h4 class='alert-heading'>Could not render PES!</h4>
|
<h4 class='alert-heading'>Failed to fetch this PES!</h4>
|
||||||
<p>Could not render PES - Do you have access?</p>
|
<p>Either the PES-ID is incorrect, or you're missing sufficient permissions to access this (potentially secret) item. In case you're missing permissions you can request the entitlement cs.u.enviPath_secret_data_user_group on go/idnow to gain access.</p>
|
||||||
</div>`;
|
</div>`;
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
+1
-1
@@ -102,7 +102,7 @@ def entra_callback(request):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
auth_log.info(f"Registering {user_name} with OID {user_oid}")
|
auth_log.info(f"Registering {user_name} with OID {user_oid}")
|
||||||
u = UserManager.create_user(user_name, user_email, None, uuid=user_oid, is_active=True)
|
u = UserManager.create_user(user_name, user_email, None, uuid=user_oid, is_active=True, add_to_group=False)
|
||||||
registered = True
|
registered = True
|
||||||
|
|
||||||
auth_log.info(f"User {user_name} {'(admin) ' if u.is_superuser else ''}with OID {user_oid} successfully logged in as {u.username} from {get_remote_address(request)}")
|
auth_log.info(f"User {user_name} {'(admin) ' if u.is_superuser else ''}with OID {user_oid} successfully logged in as {u.username} from {get_remote_address(request)}")
|
||||||
|
|||||||
@@ -581,6 +581,9 @@ class PackageManager(object):
|
|||||||
if caller_perm != Permission.ALL[0] and not caller.is_superuser:
|
if caller_perm != Permission.ALL[0] and not caller.is_superuser:
|
||||||
raise ValueError("Only owner are allowed to modify permissions")
|
raise ValueError("Only owner are allowed to modify permissions")
|
||||||
|
|
||||||
|
if isinstance(grantee, Group) and package.classification_level == package.Classification.SECRET:
|
||||||
|
raise ValueError("Cannot grant permissions to a Group on a secret package")
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
"package": package,
|
"package": package,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2456,6 +2456,20 @@ class Node(EnviPathModel, AliasMixin, ScenarioMixin, AdditionalInformationMixin)
|
|||||||
else:
|
else:
|
||||||
return self.default_node_label.name
|
return self.default_node_label.name
|
||||||
|
|
||||||
|
def get_description(self, include_suffix=True):
|
||||||
|
default_desc = False
|
||||||
|
|
||||||
|
if self.description == "no description":
|
||||||
|
default_desc = True
|
||||||
|
|
||||||
|
if not default_desc:
|
||||||
|
return self.description
|
||||||
|
else:
|
||||||
|
if include_suffix:
|
||||||
|
return f"{self.default_node_label.description} (taken from underlying structure)"
|
||||||
|
else:
|
||||||
|
return self.default_node_label.description
|
||||||
|
|
||||||
def d3_json(self):
|
def d3_json(self):
|
||||||
app_domain_data = self.get_app_domain_assessment_data()
|
app_domain_data = self.get_app_domain_assessment_data()
|
||||||
|
|
||||||
@@ -2773,6 +2787,20 @@ class Edge(EnviPathModel, AliasMixin, ScenarioMixin, AdditionalInformationMixin)
|
|||||||
else:
|
else:
|
||||||
return self.edge_label.name
|
return self.edge_label.name
|
||||||
|
|
||||||
|
def get_description(self, include_suffix=True):
|
||||||
|
default_desc = False
|
||||||
|
|
||||||
|
if self.description == "no description":
|
||||||
|
default_desc = True
|
||||||
|
|
||||||
|
if not default_desc:
|
||||||
|
return self.description
|
||||||
|
else:
|
||||||
|
if include_suffix:
|
||||||
|
return f"{self.edge_label.description} (taken from underlying reaction)"
|
||||||
|
else:
|
||||||
|
return self.edge_label.description
|
||||||
|
|
||||||
|
|
||||||
class EPModel(PolymorphicModel, EnviPathModel, AdditionalInformationMixin):
|
class EPModel(PolymorphicModel, EnviPathModel, AdditionalInformationMixin):
|
||||||
package = models.ForeignKey(
|
package = models.ForeignKey(
|
||||||
|
|||||||
+12
-1
@@ -1292,7 +1292,7 @@ def package(request, package_uuid):
|
|||||||
"user_id", flat=True
|
"user_id", flat=True
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
users = users.filter(is_active=True)
|
users = users.filter(is_active=True).exclude(username="anonymous")
|
||||||
|
|
||||||
group_perms = GroupPackagePermission.objects.filter(package=current_package)
|
group_perms = GroupPackagePermission.objects.filter(package=current_package)
|
||||||
groups = Group.objects.exclude(
|
groups = Group.objects.exclude(
|
||||||
@@ -1324,6 +1324,12 @@ def package(request, package_uuid):
|
|||||||
|
|
||||||
return redirect(s.SERVER_URL + "/package")
|
return redirect(s.SERVER_URL + "/package")
|
||||||
elif hidden == "publish-package":
|
elif hidden == "publish-package":
|
||||||
|
if current_package.classification_level == current_package.Classification.SECRET:
|
||||||
|
return error(
|
||||||
|
request,
|
||||||
|
"Cannot publish a secret package",
|
||||||
|
"You cannot publish a secret package.",
|
||||||
|
)
|
||||||
for g in Group.objects.filter(public=True):
|
for g in Group.objects.filter(public=True):
|
||||||
PackageManager.grant_read(current_user, current_package, g)
|
PackageManager.grant_read(current_user, current_package, g)
|
||||||
return redirect(current_package.url)
|
return redirect(current_package.url)
|
||||||
@@ -3314,6 +3320,11 @@ def jobs(request):
|
|||||||
"This Package was generated automatically for the batch prediction task.",
|
"This Package was generated automatically for the batch prediction task.",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if current_user.default_package.classification_level == current_user.default_package.Classification.SECRET:
|
||||||
|
target_package.classification_level = current_user.default_package.Classification.SECRET
|
||||||
|
target_package.data_pool = current_user.default_package.data_pool
|
||||||
|
target_package.save()
|
||||||
|
|
||||||
from .tasks import batch_predict, dispatch
|
from .tasks import batch_predict, dispatch
|
||||||
|
|
||||||
res = dispatch(
|
res = dispatch(
|
||||||
|
|||||||
@@ -185,19 +185,18 @@
|
|||||||
<div
|
<div
|
||||||
class="mt-4 rounded-lg border border-base-300 bg-base-50 px-4 py-2.5 text-sm text-base-content/70"
|
class="mt-4 rounded-lg border border-base-300 bg-base-50 px-4 py-2.5 text-sm text-base-content/70"
|
||||||
>
|
>
|
||||||
Prediction will be stored in
|
Prediction will be stored in Package
|
||||||
<strong class="text-base-content"
|
<strong class="text-base-content"
|
||||||
>{{ meta.current_package.name|safe }}</strong
|
><a class="link" href="{{ meta.current_package.url }}">{{ meta.current_package.name|safe }}</a></strong
|
||||||
>
|
>
|
||||||
{% if meta.user.default_setting %}
|
{% if meta.user.default_setting %}
|
||||||
using setting
|
using setting
|
||||||
<strong class="text-base-content"
|
<strong class="text-base-content"
|
||||||
>{{ meta.user.default_setting.name|safe }}</strong
|
><a class="link" href="{{ meta.user.default_setting.url}}">{{ meta.user.default_setting.name|safe }}</a></strong
|
||||||
>
|
>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<br />
|
|
||||||
To use a different setting click
|
To use a different setting click
|
||||||
<a class="label link" href="/predict">here</a>
|
<a class="link" href="/predict">here</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
@@ -222,23 +221,22 @@
|
|||||||
>
|
>
|
||||||
Predict!
|
Predict!
|
||||||
</button>
|
</button>
|
||||||
{% if meta.current_package %}
|
{% if meta.current_package %}
|
||||||
<div
|
<div
|
||||||
class="mt-4 rounded-lg border border-base-300 bg-base-50 px-4 py-2.5 text-sm text-base-content/70"
|
class="mt-4 rounded-lg border border-base-300 bg-base-50 px-4 py-2.5 text-sm text-base-content/70"
|
||||||
>
|
>
|
||||||
Prediction will be stored in
|
Prediction will be stored in Package
|
||||||
<strong class="text-base-content"
|
<strong class="text-base-content"
|
||||||
>{{ meta.current_package.name|safe }}</strong
|
><a class="link" href="{{ meta.current_package.url }}">{{ meta.current_package.name|safe }}</a></strong
|
||||||
>
|
>
|
||||||
{% if meta.user.default_setting %}
|
{% if meta.user.default_setting %}
|
||||||
using setting
|
using setting
|
||||||
<strong class="text-base-content"
|
<strong class="text-base-content"
|
||||||
>{{ meta.user.default_setting.name|safe }}</strong
|
><a class="link" href="{{ meta.user.default_setting.url}}">{{ meta.user.default_setting.name|safe }}</a></strong
|
||||||
>
|
>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<br />
|
|
||||||
To use a different setting click
|
To use a different setting click
|
||||||
<a class="label link" href="/predict">here</a>
|
<a class="link" href="/predict">here</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
<div class="form-control mb-3">
|
<div class="form-control mb-3">
|
||||||
|
{% if 1 == 0 %}
|
||||||
<label class="label" for="default-package">
|
<label class="label" for="default-package">
|
||||||
<span class="label-text">Default Package</span>
|
<span class="label-text">Default Package</span>
|
||||||
</label>
|
</label>
|
||||||
@@ -50,7 +51,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div class="form-control mb-3">
|
<div class="form-control mb-3">
|
||||||
<label class="label" for="default-group">
|
<label class="label" for="default-group">
|
||||||
<span class="label-text">Default Group</span>
|
<span class="label-text">Default Group</span>
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
<div class="collapse-arrow bg-base-200 collapse">
|
<div class="collapse-arrow bg-base-200 collapse">
|
||||||
<input type="checkbox" checked />
|
<input type="checkbox" checked />
|
||||||
<div class="collapse-title text-xl font-medium">Description</div>
|
<div class="collapse-title text-xl font-medium">Description</div>
|
||||||
<div class="collapse-content">{{ edge.description }}</div>
|
<div class="collapse-content">{{ edge.get_description }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if edge.aliases %}
|
{% if edge.aliases %}
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
<div class="collapse-arrow bg-base-200 collapse">
|
<div class="collapse-arrow bg-base-200 collapse">
|
||||||
<input type="checkbox" checked />
|
<input type="checkbox" checked />
|
||||||
<div class="collapse-title text-xl font-medium">Description</div>
|
<div class="collapse-title text-xl font-medium">Description</div>
|
||||||
<div class="collapse-content">{{ node.description }}</div>
|
<div class="collapse-content">{{ node.get_description }}</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% epdb_slot_templates "epdb.objects.node.viz" as viz_templates %}
|
{% epdb_slot_templates "epdb.objects.node.viz" as viz_templates %}
|
||||||
|
|||||||
@@ -2,11 +2,23 @@
|
|||||||
{% load static %}
|
{% load static %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="mx-auto w-full p-8">
|
<div class="mx-auto w-full p-8">
|
||||||
<h1 class="h1 mb-4 text-3xl font-bold">
|
<h1 class="h1 mb-4 flex items-center gap-2 text-3xl font-bold">
|
||||||
Predict a Pathway
|
Predict a Pathway
|
||||||
|
|
||||||
<span class="text-base-content/50 text-xs"
|
<span class="inline-flex items-center gap-1 text-base-content/50 text-xs"
|
||||||
>in <strong>{{ meta.current_package.name|safe }}</strong>
|
>in <strong>{{ meta.current_package.name|safe }}</strong>{% if meta.url_contains_package %}
|
||||||
|
{% if meta.current_package.get_classification_level_display == "Restricted" %}
|
||||||
|
<img src="{% static 'images/restricted_mid.png' %}" width="100">
|
||||||
|
{% elif meta.current_package.get_classification_level_display == "Secret" %}
|
||||||
|
<img src="{% static 'images/secret_mid.png' %}" width="60">
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{% if meta.user.default_package.get_classification_level_display == "Restricted" %}
|
||||||
|
<img src="{% static 'images/restricted_mid.png' %}" width="100">
|
||||||
|
{% elif meta.user.default_package.get_classification_level_display == "Secret" %}
|
||||||
|
<img src="{% static 'images/secret_mid.png' %}" width="60">
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
</span>
|
</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user