diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e44016..f8224c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,20 @@ # Changelog + + ## Unreleased ### General - [OP-3590]: OP is now master of "aantal houders" of mandates - [OP-3699]: Update aantal houders for some mandates Hasselt and Antwerp + - [OP-3680]: Indicate whether a worship service is a customer of ReligioPoint or Loket voor Lokale Besturen + ### Deploy instructions ``` drc restart migrations drc restart delta-producer-publication-graph-maintainer resource +drc pull vendor-management-consumer; drc up -d vendor-management-consumer +drc restart db resource ``` + ## 1.37.3 (2025-11-14) ### Backend - Added cleanup job to clean duplicated data of municipalities and provinces [OP-3676] diff --git a/README.md b/README.md index c98fd33..8239e8c 100644 --- a/README.md +++ b/README.md @@ -177,6 +177,31 @@ drc up -d sh scripts/reset-elastic.sh ``` +#### Setup vendors sync +Note: this is assuming you have never ran this before. +``` +drc down; +``` +Update `docker-compose.override.yml` to: +``` + vendor-management-consumer: + environment: + DCR_SYNC_BASE_URL: "https://dev.loket.lblod.info/" # or another endpoint + DCR_DISABLE_INITIAL_SYNC: "true" + BATCH_SIZE: "500" + DCR_SECRET_KEY: ">" # fill in key for selected endpoint + DCR_SYNC_LOGIN_ENDPOINT: "https://dev.loket.lblod.info/sync/vendor-management/login" # login for selected endpoint +``` +Then: +``` +drc up -d migrations +drc up -d db vendor-management-consumer +``` +Finally, put the stack back up. +``` +drc up -d +``` + ### Setting up the delta-producers related services To make sure the app can share data, producers need to be set up. There is an intial sync, that is potentially very expensive, and must be started manually diff --git a/config/authorization/config.ex b/config/authorization/config.ex index 2ef99a3..9d91fd6 100644 --- a/config/authorization/config.ex +++ b/config/authorization/config.ex @@ -89,6 +89,11 @@ defmodule Acl.UserGroups.Config do "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject" ] + @vendor_type [ + "http://mu.semte.ch/vocabularies/ext/Vendor" + ] + + defp access_by_role(group_string) do %AccessByQuery{ # vars: ["session_group","session_role"], todo we might have to create multiple graph depending on role @@ -130,6 +135,12 @@ defmodule Acl.UserGroups.Config do constraint: %ResourceConstraint{ resource_types: @org_type } + }, + %GraphSpec{ + graph: "http://mu.semte.ch/graphs/vendor-management-data", + constraint: %ResourceConstraint{ + resource_types: @vendor_type + } } ] }, @@ -143,6 +154,12 @@ defmodule Acl.UserGroups.Config do constraint: %ResourceConstraint{ resource_types: @org_type ++ @error_type } + }, + %GraphSpec{ + graph: "http://mu.semte.ch/graphs/vendor-management-data", + constraint: %ResourceConstraint{ + resource_types: @vendor_type + } } ] }, @@ -156,6 +173,12 @@ defmodule Acl.UserGroups.Config do constraint: %ResourceConstraint{ resource_types: @org_type ++ @error_type } + }, + %GraphSpec{ + graph: "http://mu.semte.ch/graphs/vendor-management-data", + constraint: %ResourceConstraint{ + resource_types: @vendor_type + } } ] }, @@ -169,6 +192,12 @@ defmodule Acl.UserGroups.Config do constraint: %ResourceConstraint{ resource_types: @org_type ++ @worship_type } + }, + %GraphSpec{ + graph: "http://mu.semte.ch/graphs/vendor-management-data", + constraint: %ResourceConstraint{ + resource_types: @vendor_type + } } ] }, @@ -182,6 +211,12 @@ defmodule Acl.UserGroups.Config do constraint: %ResourceConstraint{ resource_types: @org_type ++ @error_type ++ @worship_type } + }, + %GraphSpec{ + graph: "http://mu.semte.ch/graphs/vendor-management-data", + constraint: %ResourceConstraint{ + resource_types: @vendor_type + } } ] }, @@ -195,6 +230,12 @@ defmodule Acl.UserGroups.Config do constraint: %ResourceConstraint{ resource_types: @org_type ++ @error_type ++ @worship_type } + }, + %GraphSpec{ + graph: "http://mu.semte.ch/graphs/vendor-management-data", + constraint: %ResourceConstraint{ + resource_types: @vendor_type + } } ] }, diff --git a/config/resources/domain.json b/config/resources/domain.json index 3976e11..7e488d9 100644 --- a/config/resources/domain.json +++ b/config/resources/domain.json @@ -30,7 +30,8 @@ "ext": "http://mu.semte.ch/vocabularies/ext/", "geo": "http://www.opengis.net/ont/geosparql#", "nacebel": "http://data.gift/vocabularies/nace-bel/", - "time": "http://www.w3.org/2006/time#" + "time": "http://www.w3.org/2006/time#", + "muAccount": "http://mu.semte.ch/vocabularies/account/" }, "resources": { "agents": { @@ -473,7 +474,13 @@ "target": "kbo-organizations", "cardinality": "one", "inverse": true - } + }, + "vendors": { + "predicate": "muAccount:canActOnBehalfOf", + "target": "vendors", + "cardinality": "many", + "inverse": true + } }, "features": ["include-uri"], "new-resource-base": "http://data.lblod.info/id/organisaties/" @@ -559,6 +566,23 @@ }, "new-resource-base": "http://data.lblod.info/id/eredienstBestuurseenheden/" }, + "vendors": { + "class": "ext:Vendor", + "attributes": { + "name": { + "type": "string", + "predicate": "foaf:name" + } + }, + "relationships": { + "organizations": { + "predicate": "muAccount:canActOnBehalfOf", + "target": "organizations", + "cardinality": "many" + } + }, + "new-resource-base": "http://data.lblod.info/vendors/" + }, "worship-services": { "class": "ere:BestuurVanDeEredienst", "super": ["worship-administrative-units"], diff --git a/docker-compose.yml b/docker-compose.yml index a758bf8..a15960a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -540,6 +540,27 @@ services: - triplestore:virtuoso logging: *default-logging + vendor-management-consumer: + image: lblod/delta-consumer:0.1.1 + environment: + DCR_SYNC_BASE_URL: "https://loket.lblod.info/" + DCR_SYNC_LOGIN_ENDPOINT: 'https://loket.lblod.info/sync/vendor-management/login' # Add DCR_SECRET_KEY in docker-compose.override.yml + DCR_SERVICE_NAME: "vendor-management-consumer" + DCR_SYNC_FILES_PATH: "/sync/vendor-management/files" + DCR_SYNC_DATASET_SUBJECT: "http://data.lblod.info/datasets/delta-producer/dumps/VendorManagementCacheGraphDump" + DCR_INITIAL_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/initialSync/vendor-management" + DCR_JOB_CREATOR_URI: "http://data.lblod.info/services/id/vendor-management-consumer" + DCR_DISABLE_INITIAL_SYNC: "true" + DCR_KEEP_DELTA_FILES: "true" + DCR_DELTA_FILE_FOLDER: "/consumer-files" + DCR_DELTA_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/VendorManagementFileSyncing" + INGEST_GRAPH: "http://mu.semte.ch/graphs/vendor-management-data" + labels: + - "logging=true" + links: + - db:database + restart: always + logging: *default-logging ################################################################################ # DELTA CONSUMERS: END ################################################################################