Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

complete ISO contact roles per ressource base with multiplicity #10290

Closed
gannebamm opened this issue Nov 13, 2022 · 11 comments
Closed

complete ISO contact roles per ressource base with multiplicity #10290

gannebamm opened this issue Nov 13, 2022 · 11 comments
Labels
feature A new feature to be added to the codebase

Comments

@gannebamm
Copy link
Contributor

gannebamm commented Nov 13, 2022

Is your feature request related to a problem? Please describe.
I want to use multiple CI CONTACT roles in the metadata of my datasets via the user GUI.

a) I can not add multiple CI CONTACT roles to a dataset in the metadata wizard / advanced metadata editor.
b) I can not use all of the CI CONTACT roles ISO 19139 provides.

additionally, the changes shall be used by pycsw:
c) pycsw does not respond with all CI CONTACT roles given. It will only respond with POC ('pointOfContact'), the owner ('originator') and metadata author ('author').

I can put 1:N metadata roles in the Django admin area. This does work since Contact Roles are already implemented in the model:

class ContactRole(models.Model):
"""
ContactRole is an intermediate model to bind Profiles as Contacts to Resources and apply roles.
"""
resource = models.ForeignKey('ResourceBase', blank=False, null=False, on_delete=models.CASCADE)
contact = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
role = models.CharField(
choices=ROLE_VALUES,
max_length=255,
help_text=_(
'function performed by the responsible '
'party'))

which uses this enum with all ISO CI CONTACT roles:

ROLE_VALUES = (
('author', _('party who authored the resource')),
('processor', _('party who has processed the data in a manner such that the resource has been modified')),
('publisher', _('party who published the resource')),
('custodian', _('party that accepts accountability and responsibility for the data and ensures \
appropriate care and maintenance of the resource')),
('pointOfContact', _('party who can be contacted for acquiring knowledge about or acquisition of the resource')),
('distributor', _('party who distributes the resource')),
('user', _('party who uses the resource')),
('resourceProvider', _('party that supplies the resource')),
('originator', _('party who created the resource')),
('owner', _('party that owns the resource')),
('principalInvestigator', _('key party responsible for gathering information and conducting research')),
)

but currently, you can only set POC and metadata author and owner by the metadata wizard. Some example of this is:

grafik

def _set_poc(self, poc):

Describe the solution you'd like
Being able to use all ISO CONTACT roles:

author: party who authored the resource
processor: party who has processed the data in a manner such that the resource has been modified
publisher: party who published the resource
custodian: party that accepts accountability and responsibility for the data and ensures appropriate maintenance of the resource
point of contact: party who can be contacted for acquiring knowledge about or acquisition of the resource
distributor: party who distributes the resource
user: party who uses the resource
resource provider: party that supplies the resource
originator: party who created the resource
owner: party that owns the resource
principal investigator: key party responsible for gathering information and conducting research

While POC and owner are CI CONTACTs with a multiplicity of 1. Meaning there is only one POC and owner. The other provided roles can have multiple persons involved. Therefore we need an N:M list in the metadata wizard like this:

grafik

Furthermore, the pycsw output shall be changed to respond with all possible contact roles. This likely needs changes here:

https://github.com/GeoNode/geonode/blob/6e093976049b6bff7d7af70f76df14e0f2f40e0a/geonode/catalogue/templates/catalogue/full_metadata.xml

Describe alternatives you've considered

Adding new contacts via the Django admin interface. Nonetheless, c) will not work.

Additional context

Example of a CSW response:
https://master.demo.geonode.org/catalogue/csw?request=GetRecordById&service=CSW&version=2.0.2&id=76f604f1-99f9-4485-95cb-119815b64d93&outputschema=http%3A%2F%2Fwww.isotc211.org%2F2005%2Fgmd&elementsetname=full

For a dataset with different users for POC, the metadata author and owner.

@gannebamm gannebamm added feature A new feature to be added to the codebase draft The issue / PR is not ready to merge and in draft state and removed draft The issue / PR is not ready to merge and in draft state labels Nov 13, 2022
@gannebamm gannebamm changed the title DRAFT: Multiple contact roles per ressource base Multiple contact roles per ressource base Nov 13, 2022
@gannebamm gannebamm changed the title Multiple contact roles per ressource base complete ISO contact roles per ressource base with multiplicity Nov 13, 2022
@mwallschlaeger
Copy link
Member

Hey gannebamm, I'm also very interested in this feature. We're currently adopting the metadata schema for our geonode installation. I guess this changes we pretty much are similar to the ones we are planing. Would the other members of the SC accept this changes to the geonode core?

@t-book
Copy link
Contributor

t-book commented Nov 14, 2022

@mwallschlaeger My +1 ;)

@afabiani
Copy link
Member

Just few headsup:

  • If you plan to touch the owner, this will imply a non-trivial work to be performed on security too (I would suggest to leave it as is)
  • The REST APIs must be updated too accordingly

@mwallschlaeger
Copy link
Member

Thanks for your reply @afabiani and @t-book

I also think keeping the owner as it is is a wise choice. I will come up with an PR as soon as I'm rdy.

@gannebamm
Copy link
Contributor Author

@afabiani, since we will need to define third-party contact, do you think something like this #10342 is feasible?

@MalteIwanicki
Copy link
Contributor

Hey @mwallschlaeger, did you start already with development on this? If so could you include me in the development process? I picked this issue up today and want to finish it in the upcoming two weeks.
Thanks

@mwallschlaeger
Copy link
Member

@MalteIwanicki yes i'm on it. but it requires more investigation of code as i thought. we can discuss on working together on this. pls contact me via mail or glitter

@gannebamm
Copy link
Contributor Author

The corresponding draft PR #10367 (which is not listed here for some reason)

mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 12, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 12, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 12, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 13, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 13, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 13, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 13, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 16, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 16, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 16, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 17, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 19, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 25, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Jan 25, 2023
@gannebamm
Copy link
Contributor Author

@giohappy @afabiani
Since the GeoNode 4.1 release was postponed but is likely imminent, shall we try to get this new feature into the upcoming 4.1 release?

@mwallschlaeger
Copy link
Member

I will continue my work on the current change requests later this week, so you could have another look into this.

@giohappy
Copy link
Contributor

giohappy commented May 4, 2023

@gannebamm there are plans to release a new version a few weeks after 4.1.0, that should include the refactored faceting/filtering system.
I think it will be safer to wait for that release, and take the time to test the multiple ISO roles better, unless you have urgencies.

mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Aug 9, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Aug 9, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Oct 6, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Oct 6, 2023
mwallschlaeger added a commit to mwallschlaeger/geonode that referenced this issue Oct 18, 2023
…e base with multiplicity"

This reverts commit 44b294b.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature A new feature to be added to the codebase
Projects
None yet
Development

No branches or pull requests

6 participants