Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
openbis
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
sispub
openbis
Commits
7b1fe4d9
Commit
7b1fe4d9
authored
12 years ago
by
cramakri
Browse files
Options
Downloads
Patches
Plain Diff
CCS-30 SP-488 : Add connected entities as children of protocols
SVN: 28306
parent
d7b6f1e4
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
openbis-ipad/ipad-example-data/ipad-ui-ylab/1/dss/reporting-plugins/ipad-read-service-v1/ipad_read.py
+63
-12
63 additions, 12 deletions
...1/dss/reporting-plugins/ipad-read-service-v1/ipad_read.py
with
63 additions
and
12 deletions
openbis-ipad/ipad-example-data/ipad-ui-ylab/1/dss/reporting-plugins/ipad-read-service-v1/ipad_read.py
+
63
−
12
View file @
7b1fe4d9
...
...
@@ -3,6 +3,7 @@ from ch.systemsx.cisd.openbis.generic.shared.basic.dto import MaterialIdentifier
from
com.fasterxml.jackson.databind
import
ObjectMapper
from
ch.systemsx.cisd.openbis.generic.shared.api.v1.dto
import
SearchCriteria
from
ch.systemsx.cisd.openbis.generic.shared.api.v1.dto
import
SearchSubCriteria
from
ch.systemsx.cisd.openbis.generic.shared.managed_property
import
ManagedPropertyFunctions
import
codecs
...
...
@@ -262,14 +263,16 @@ def retrieve_sample_type_properties_definitions(sample_type):
definitions
.
sort
(
lambda
x
,
y
:
cmp
(
x
.
getPositionInForms
(),
y
.
getPositionInForms
()))
return
definitions
def
properties_for_entity
(
entity
,
property_definitions
,
prop_names_set
):
"""
Extract the properties, in the correct order, for the entity. Restricting them to those in the prop_names_set, if it is non-empty
"""
def
properties_for_entity_ignoring
(
entity
,
property_definitions
,
ignored_properties
):
"""
Extract the properties, in the correct order, for the entity.
If ignored_properties is non-empty, do not include those
"""
properties
=
[]
check_
prop_names_set
=
len
(
prop_names_set
)
>
0
check_
ignored_properties
=
len
(
ignored_properties
)
>
0
for
propdef
in
property_definitions
:
propcode
=
propdef
.
getPropertyTypeCode
()
#
Only include
the properties
we explicitly specify
if
check_
prop_names_set
and
propcode
not
in
prop_names_set
:
#
Skip
the properties
that are designated to be ignored
if
check_
ignored_properties
and
propcode
in
ignored_properties
:
continue
value
=
entity
.
getPropertyValue
(
propcode
)
if
value
==
u
'
\ufffd
(undefined)
'
:
...
...
@@ -278,6 +281,35 @@ def properties_for_entity(entity, property_definitions, prop_names_set):
properties
.
append
(
prop
)
return
properties
def
ordered_properties_for_sample_ignoring
(
sample
,
props_to_ignore
):
property_definitions
=
retrieve_sample_type_properties_definitions
(
sample
.
getSampleType
())
properties
=
properties_for_entity_ignoring
(
sample
,
property_definitions
,
props_to_ignore
)
return
properties
def
json_encoded_children_from_link_props
(
entity
,
link_props
):
children
=
[]
converter
=
ManagedPropertyFunctions
.
xmlPropertyConverter
()
for
prop
in
link_props
:
elements
=
converter
.
convertStringToElements
(
entity
.
getPropertyValue
(
prop
))
children
.
extend
([
element
.
getAttribute
(
"
permId
"
)
for
element
in
elements
])
return
json_encoded_value
(
children
)
def
replace_link_props_with_desc
(
entity
,
props_list
,
link_props
):
converter
=
ManagedPropertyFunctions
.
xmlPropertyConverter
()
for
prop_key
in
link_props
:
lines
=
[]
elements
=
converter
.
convertStringToElements
(
entity
.
getPropertyValue
(
prop_key
))
for
element
in
elements
:
line
=
u
""
+
element
.
getAttribute
(
"
name
"
)
line
=
line
+
"
[
"
+
element
.
getAttribute
(
"
code
"
)
+
"
]
"
line
=
line
+
"
:
"
+
element
.
getAttribute
(
"
quantity
"
)
lines
.
append
(
line
)
desc
=
u
'
\n
'
.
join
(
lines
)
for
prop
in
props_list
:
if
prop
[
'
key
'
]
==
prop_key
:
prop
[
'
value
'
]
=
desc
break
def
marquee_image_spec_for_url
(
image_url
):
return
{
'
MARQUEE
'
:
{
'
URL
'
:
image_url
}
}
...
...
@@ -349,8 +381,13 @@ def navigation_layer(oligos, antibodies, chemicals, protocols, medias, pcrs, buf
westernBlotting_dict
=
western_blotting_navigation_layer
(
westernBlottings
)
return
[
oligo_dict
,
antibody_dict
,
chemical_dict
,
protocol_dict
,
media_dict
,
pcr_dict
,
buffer_dict
,
plasmid_dict
,
yeast_dict
,
bacteria_dict
,
enzyme_dict
,
westernBlotting_dict
]
def
sample_to_dict_with_props
(
sample
,
want_props
):
"""
Convert a sample to a dictionary. Uses the NAME property to construct the summary. Returns empty children. Callers may need to modify the summary and children as well
"""
def
sample_to_dict_with_props_ignoring
(
sample
,
want_props
,
props_to_ignore
):
"""
Convert a sample to a dictionary, ignoring the specified properties.
Uses the NAME property to construct the summary.
Returns empty children.
Callers may need to modify the summary and children as well
"""
sample_dict
=
{}
sample_dict
[
'
SUMMARY_HEADER
'
]
=
sample
.
getCode
()
name
=
sample
.
getPropertyValue
(
"
NAME
"
)
...
...
@@ -371,13 +408,20 @@ def sample_to_dict_with_props(sample, want_props):
sample_dict
[
'
CHILDREN
'
]
=
json_encoded_value
(
children
)
if
want_props
:
property_definitions
=
retrieve_sample_type_properties_definitions
(
sample
.
getSampleType
())
properties_sample
=
properties_for_entity
(
sample
,
property_definitions
,
[])
properties_sample
=
ordered_properties_for_sample_ignoring
(
sample
,
props_to_ignore
)
sample_dict
[
'
PROPERTIES
'
]
=
json_encoded_value
(
properties_sample
)
sample_dict
[
'
ROOT_LEVEL
'
]
=
None
return
sample_dict
sample_dict
[
'
ROOT_LEVEL
'
]
=
None
return
sample_dict
def
sample_to_dict_with_props
(
sample
,
want_props
):
"""
Convert a sample to a dictionary.
Uses the NAME property to construct the summary.
Returns empty children.
Callers may need to modify the summary and children as well
"""
return
sample_to_dict_with_props_ignoring
(
sample
,
want_props
,
[])
def
oligo_to_dict
(
oligo
,
want_props
):
...
...
@@ -400,7 +444,14 @@ def chemical_to_dict(chemical, want_props):
return
sample_to_dict_with_props
(
chemical
,
want_props
)
def
protocol_to_dict
(
protocol
,
want_props
):
return
sample_to_dict_with_props
(
protocol
,
want_props
)
protocol_dict
=
sample_to_dict_with_props
(
protocol
,
False
)
link_props
=
[
"
CHEMICALS
"
,
"
SOLUTIONS_BUFFERS
"
,
"
MEDIA
"
,
"
GENERAL_PROTOCOL
"
,
"
ENZYMES
"
]
protocol_dict
[
'
CHILDREN
'
]
=
json_encoded_children_from_link_props
(
protocol
,
link_props
)
if
want_props
:
props
=
ordered_properties_for_sample_ignoring
(
protocol
,
[])
replace_link_props_with_desc
(
protocol
,
props
,
link_props
)
protocol_dict
[
'
PROPERTIES
'
]
=
json_encoded_value
(
props
)
return
protocol_dict
def
media_to_dict
(
media
,
want_props
):
return
sample_to_dict_with_props
(
media
,
want_props
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment