From 09e3eafc9c0bcf91a3410c0e247c376941b7cf40 Mon Sep 17 00:00:00 2001 From: Rob van den Bogaard Date: Tue, 7 Jul 2020 16:26:04 +0200 Subject: [PATCH 1/2] Issue #670 - Remove side effects in manage_schema functions --- .../mod_ginger_banner/mod_ginger_banner.erl | 5 ++-- modules/mod_ginger_base/mod_ginger_base.erl | 6 ++--- modules/mod_ginger_embed/mod_ginger_embed.erl | 5 ++-- .../mod_ginger_message/mod_ginger_message.erl | 6 ++--- modules/mod_ginger_rdf/mod_ginger_rdf.erl | 26 +++++++++---------- .../mod_ginger_remark/mod_ginger_remark.erl | 5 ++-- .../mod_ginger_tagger/mod_ginger_tagger.erl | 14 +++++----- 7 files changed, 31 insertions(+), 36 deletions(-) diff --git a/modules/mod_ginger_banner/mod_ginger_banner.erl b/modules/mod_ginger_banner/mod_ginger_banner.erl index 2b209c637..d0b6c72a0 100644 --- a/modules/mod_ginger_banner/mod_ginger_banner.erl +++ b/modules/mod_ginger_banner/mod_ginger_banner.erl @@ -14,12 +14,11 @@ ]). manage_schema(_Version, Context) -> - Datamodel = #datamodel{ + #datamodel{ resources = [ {message_banner, text, [ {title, "Banner"}, {is_published, false} ]} ] - }, - z_datamodel:manage(?MODULE, Datamodel, Context). + }. diff --git a/modules/mod_ginger_base/mod_ginger_base.erl b/modules/mod_ginger_base/mod_ginger_base.erl index afef5f453..20e096b2e 100644 --- a/modules/mod_ginger_base/mod_ginger_base.erl +++ b/modules/mod_ginger_base/mod_ginger_base.erl @@ -34,7 +34,7 @@ init(Context) -> %% @doc When ACL is enabled, create a default user in the editors group manage_schema(_Version, Context) -> - Datamodel = #datamodel{ + #datamodel{ categories=[ {agenda, query, [ {title, {trans, [ @@ -168,9 +168,7 @@ manage_schema(_Version, Context) -> ]} ]} ] - }, - z_datamodel:manage(?MODULE, Datamodel, Context), - schema:create_identity_if_not_exists(editor_dev, "redacteur", "redacteur", Context). + }. %% @doc Users without access to the admin should not be able to view unpublished %% resources diff --git a/modules/mod_ginger_embed/mod_ginger_embed.erl b/modules/mod_ginger_embed/mod_ginger_embed.erl index 490dd76c7..89db88f88 100644 --- a/modules/mod_ginger_embed/mod_ginger_embed.erl +++ b/modules/mod_ginger_embed/mod_ginger_embed.erl @@ -21,7 +21,7 @@ -include("zotonic.hrl"). manage_schema(_Version, Context) -> - Datamodel = #datamodel{ + #datamodel{ categories=[ {ginger_embed, media, [ {title, {trans, [ @@ -30,8 +30,7 @@ manage_schema(_Version, Context) -> {language, [en, nl]} ]} ] - }, - z_datamodel:manage(?MODULE, Datamodel, Context). + }. %% @doc Render embed template in case of element -spec observe_media_viewer(#media_viewer{}, #context{}) -> {ok, binary()} | undefined. diff --git a/modules/mod_ginger_message/mod_ginger_message.erl b/modules/mod_ginger_message/mod_ginger_message.erl index cc69182af..a673e788f 100644 --- a/modules/mod_ginger_message/mod_ginger_message.erl +++ b/modules/mod_ginger_message/mod_ginger_message.erl @@ -16,7 +16,7 @@ ]). manage_schema(install, Context) -> - Datamodel = #datamodel{ + #datamodel{ categories=[ {message, undefined, [ {is_unfindable, 1}, @@ -52,6 +52,4 @@ manage_schema(install, Context) -> {message, category} ]} ] - }, - z_datamodel:manage(?MODULE, Datamodel, Context), - ok. \ No newline at end of file + }. diff --git a/modules/mod_ginger_rdf/mod_ginger_rdf.erl b/modules/mod_ginger_rdf/mod_ginger_rdf.erl index 6e160bd7b..e7ee3e685 100644 --- a/modules/mod_ginger_rdf/mod_ginger_rdf.erl +++ b/modules/mod_ginger_rdf/mod_ginger_rdf.erl @@ -34,18 +34,8 @@ -record(state, {context}). manage_schema(_, Context) -> - Datamodel = #datamodel{ - categories=[ - {rdf, meta, [{title, <<"RDF resource">>}]} - ], - resources=[ - {rdf_content_group, content_group, [ - {title, <<"RDF resources">>} - ]} - ] - }, - z_datamodel:manage(?MODULE, Datamodel, Context), - + %% TODO: Legacy code ahead! This function must not have side effects; + %% it should only return the data model. %% Update some predicates so they can refer to category RDF, too case m_rsc:uri_lookup("http://xmlns.com/foaf/0.1/depiction", Context) of undefined -> noop; @@ -58,7 +48,17 @@ manage_schema(_, Context) -> Context ) end, - ok. + #datamodel{ + categories=[ + {rdf, meta, [ + {title, <<"RDF resource">>} + ]} + ], + resources=[ + {rdf_content_group, content_group, [ + {title, <<"RDF resources">>} + ]} + ]}. %% @doc Ask observers to provide subject links from the resource and object %% links to the resource diff --git a/modules/mod_ginger_remark/mod_ginger_remark.erl b/modules/mod_ginger_remark/mod_ginger_remark.erl index 85ee046b0..5b003a400 100644 --- a/modules/mod_ginger_remark/mod_ginger_remark.erl +++ b/modules/mod_ginger_remark/mod_ginger_remark.erl @@ -23,7 +23,7 @@ ]). manage_schema(_Version, Context) -> - Datamodel = #datamodel{ + #datamodel{ categories=[ {remark, text, [ {title, {trans, [{nl, <<"Reactie">>}, @@ -54,8 +54,7 @@ manage_schema(_Version, Context) -> {is_owner, true} ]} ]} - ]}, - z_datamodel:manage(?MODULE, Datamodel, Context). + ]}. is_owner(Id, #context{user_id=undefined, session_id=SessionId} = Context) -> case m_rsc:p_no_acl(Id, session_owner, Context) of diff --git a/modules/mod_ginger_tagger/mod_ginger_tagger.erl b/modules/mod_ginger_tagger/mod_ginger_tagger.erl index 3bb4938a1..e40c4d898 100644 --- a/modules/mod_ginger_tagger/mod_ginger_tagger.erl +++ b/modules/mod_ginger_tagger/mod_ginger_tagger.erl @@ -19,18 +19,20 @@ ]). manage_schema(install, Context) -> - Datamodel = #datamodel{ + #datamodel{ categories = [ - {rfid_device, undefined, [{title, <<"RFID-scanner">>}]} + {rfid_device, undefined, [ + {title, <<"RFID-scanner">>} + ]} ], predicates = [ - {located_at, [{title, <<"Location">>}], [ + {located_at, [ + {title, <<"Location">>} + ], [ {rfid_device, location} ]} ] - }, - z_datamodel:manage(?MODULE, Datamodel, Context), - ok. + }. %% @doc Link users to media in which they are depicted. -spec observe_tagger_action(#tagger_action{}, #context{}) -> ok. From c98e566dd04a93115b21bf33c54ceabc0c853d20 Mon Sep 17 00:00:00 2001 From: Rob van den Bogaard Date: Tue, 7 Jul 2020 16:42:49 +0200 Subject: [PATCH 2/2] Issue #670 - Cleanup unused variables --- modules/mod_ginger_banner/mod_ginger_banner.erl | 2 +- modules/mod_ginger_base/mod_ginger_base.erl | 2 +- modules/mod_ginger_embed/mod_ginger_embed.erl | 2 +- modules/mod_ginger_message/mod_ginger_message.erl | 2 +- modules/mod_ginger_tagger/mod_ginger_tagger.erl | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/mod_ginger_banner/mod_ginger_banner.erl b/modules/mod_ginger_banner/mod_ginger_banner.erl index d0b6c72a0..f1a912b0d 100644 --- a/modules/mod_ginger_banner/mod_ginger_banner.erl +++ b/modules/mod_ginger_banner/mod_ginger_banner.erl @@ -13,7 +13,7 @@ manage_schema/2 ]). -manage_schema(_Version, Context) -> +manage_schema(_Version, _Context) -> #datamodel{ resources = [ {message_banner, text, [ diff --git a/modules/mod_ginger_base/mod_ginger_base.erl b/modules/mod_ginger_base/mod_ginger_base.erl index 20e096b2e..e64e00f42 100644 --- a/modules/mod_ginger_base/mod_ginger_base.erl +++ b/modules/mod_ginger_base/mod_ginger_base.erl @@ -33,7 +33,7 @@ init(Context) -> z_pivot_rsc:define_custom_pivot(ginger_search, [{is_unfindable, "boolean not null default false"}], Context). %% @doc When ACL is enabled, create a default user in the editors group -manage_schema(_Version, Context) -> +manage_schema(_Version, _Context) -> #datamodel{ categories=[ {agenda, query, [ diff --git a/modules/mod_ginger_embed/mod_ginger_embed.erl b/modules/mod_ginger_embed/mod_ginger_embed.erl index 89db88f88..c686e7f91 100644 --- a/modules/mod_ginger_embed/mod_ginger_embed.erl +++ b/modules/mod_ginger_embed/mod_ginger_embed.erl @@ -20,7 +20,7 @@ -include("zotonic.hrl"). -manage_schema(_Version, Context) -> +manage_schema(_Version, _Context) -> #datamodel{ categories=[ {ginger_embed, media, [ diff --git a/modules/mod_ginger_message/mod_ginger_message.erl b/modules/mod_ginger_message/mod_ginger_message.erl index a673e788f..a89f3a085 100644 --- a/modules/mod_ginger_message/mod_ginger_message.erl +++ b/modules/mod_ginger_message/mod_ginger_message.erl @@ -15,7 +15,7 @@ manage_schema/2 ]). -manage_schema(install, Context) -> +manage_schema(install, _Context) -> #datamodel{ categories=[ {message, undefined, [ diff --git a/modules/mod_ginger_tagger/mod_ginger_tagger.erl b/modules/mod_ginger_tagger/mod_ginger_tagger.erl index e40c4d898..ecd5f29a1 100644 --- a/modules/mod_ginger_tagger/mod_ginger_tagger.erl +++ b/modules/mod_ginger_tagger/mod_ginger_tagger.erl @@ -18,7 +18,7 @@ event/2 ]). -manage_schema(install, Context) -> +manage_schema(install, _Context) -> #datamodel{ categories = [ {rfid_device, undefined, [