The goal is to be able to configure, at the project level, the visibility entities receive upon their creation. This configuration happens via SQL directly. A corresponding UI is discussed here: #340.
Context
As of today:
An entity can be visible in the following ways:
a) The entity is visible to other projects in the Toolbox: Yes / No
Yes: The entity can be found and added to another project in the Toolbox (via the "+ Add" menu in the Entities/Sources/Digitals sections).
No: The entity is invisible to other projects and cannot be added to them.
If an entity is visible to other projects in the Toolbox, i.e., (a)=true, it can only be set to "(a)=false" if the entity has not been added to a second project. If it exists only in one project, it can be hidden again.
b) The entity has a URI and webpage on geovistory.org: Yes / No
No: The entity is not visible in the public Community Data SPARQL endpoint and has no URI or webpage.
Publication of an entity is irreversible: Once it has the value "(b)=true," it cannot be set to "(b)=false" again (In case of privacy violations, platform operators need to be requested to reset it to "(b)=false").
c) The entity is visible on a project webpage and in the project SPARQL endpoint: Yes / No
No: The entity is not visible in the public Project SPARQL endpoint and has no webpage under this project.
The two visibility settings (a) and (b) relate to entity visibility independent of a project, while (c) is project-specific. This means multiple projects can have different visibility settings for (c) for the same entity, but not for (a) and (b).
During entity creation, visibilities for (a), (b), and (c) are automatically set based on configurations. Currently, this configuration is possible at the class (and superclass) level. However, this setting applies system-wide and not just to a specific project.
Functional Requirement:
The default visibilities for (a), (b), and (c) should be configurable at the project level through this issue. Initially, only system administrators can make this setting, not project members themselves.
Technical Specification:
Create a new table in Postgres:
visibility_settings
- fk_project: int, references the project
- settings: jsonb, defines the visibility settings
Goal
The goal is to be able to configure, at the project level, the visibility entities receive upon their creation. This configuration happens via SQL directly. A corresponding UI is discussed here: #340.
Context
As of today:
An entity can be visible in the following ways:
a) The entity is visible to other projects in the Toolbox: Yes / No
If an entity is visible to other projects in the Toolbox, i.e., (a)=true, it can only be set to "(a)=false" if the entity has not been added to a second project. If it exists only in one project, it can be hidden again.
b) The entity has a URI and webpage on geovistory.org: Yes / No
Publication of an entity is irreversible: Once it has the value "(b)=true," it cannot be set to "(b)=false" again (In case of privacy violations, platform operators need to be requested to reset it to "(b)=false").
c) The entity is visible on a project webpage and in the project SPARQL endpoint: Yes / No
The two visibility settings (a) and (b) relate to entity visibility independent of a project, while (c) is project-specific. This means multiple projects can have different visibility settings for (c) for the same entity, but not for (a) and (b).
During entity creation, visibilities for (a), (b), and (c) are automatically set based on configurations. Currently, this configuration is possible at the class (and superclass) level. However, this setting applies system-wide and not just to a specific project.
Functional Requirement:
The default visibilities for (a), (b), and (c) should be configurable at the project level through this issue. Initially, only system administrators can make this setting, not project members themselves.
Technical Specification:
Create a new table in Postgres:
The values in settings are structured as follows:
In
visibility.controller.ts
,initializeConfiguration()
:projectVisibilitySettings
by loading the value fromvisibility_settings.settings
for the corresponding project into memory.In
getCommunityVisibilityDefault()
:projectVisibilitySettings
, similar tosysConfig
.In
getProjectVisibilityDefault()
:projectVisibilitySettings
, similar tosysConfig
.Acceptance Criteria:
Given the following
projectVisibilitySettings
for Project 5:And the following system-wide
communityVisibilitySettings
:projectVisibilitySettings.classesDefault
should overridecommunityVisibilitySettings
.community_visibility
{toolbox: true, dataApi: true, website: true}.projectVisibilitySettings.classesByBasicType
should overridecommunityVisibilitySettings
.community_visibility
{toolbox: true, dataApi: true, website: false}.projectVisibilitySettings.classes
should overridecommunityVisibilitySettings
.community_visibility
{toolbox: true, dataApi: true, website: false}.projectVisibilitySettings
should not affect other projects.community_visibility
{toolbox: false, dataApi: false, website: false}.