Skip to content

Commit aed3cd0

Browse files
Sebastian Witowskiswitowski
authored andcommitted
BibDocFile: Copyright and license for files
* Adds possibility to add copyright and license for each file (separate from copyright and license for whole record (closes inveniosoftware#1684) * Modifies the filter_field_instances function in bibrecord: * Adds new mode to filter_mode that allows to filter all fields without specific subfield * Adds functions (inside bibupload) to synchronize MARC for 542 and 540 field with copyright and licenses from BibDocs, whenever bibupload with "FIX-MARC" field is run * Adds subfield $8 to 8564 MARC field, that stores the id of a BibDoc * FFT now modifies the copyright and license: * Added functions to bibupload, so when FFT is uploaded, it also allows to modify the copyright and license * Fixed the regression tests (bibupload, websearch) after adding the subfield $8 to the 856 field Signed-off-by: Sebastian Witowski <sebastian.witowski@cern.ch>
1 parent be1fa34 commit aed3cd0

9 files changed

Lines changed: 1348 additions & 150 deletions

File tree

config/invenio.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,8 @@ CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_RESTRICTIONS = [
940940
CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_MISC = {
941941
'can_revise_doctypes': ['*'],
942942
'can_comment_doctypes': ['*'],
943+
'can_change_copyright_doctypes': ['*'],
944+
'can_change_advanced_copyright_doctypes': ['*'],
943945
'can_describe_doctypes': ['*'],
944946
'can_delete_doctypes': ['*'],
945947
'can_keep_doctypes': ['*'],

modules/bibdocfile/lib/bibdocfile.py

Lines changed: 177 additions & 11 deletions
Large diffs are not rendered by default.

modules/bibdocfile/lib/bibdocfile_config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
except ImportError:
2323
CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_MISC = {
2424
'can_revise_doctypes': ['*'],
25+
'can_change_copyright_doctypes': ['*'],
26+
'can_change_advanced_copyright_doctypes': ['*'],
2527
'can_comment_doctypes': ['*'],
2628
'can_describe_doctypes': ['*'],
2729
'can_delete_doctypes': ['*'],

modules/bibdocfile/lib/bibdocfile_managedocfiles.py

Lines changed: 705 additions & 80 deletions
Large diffs are not rendered by default.

modules/bibrecord/lib/bibrecord.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,8 @@ def filter_field_instances(field_instances, filter_subcode, filter_value, filter
212212
'e' - looking for exact match in subfield value
213213
's' - looking for substring in subfield value
214214
'r' - looking for regular expression in subfield value
215+
'n' - looking for fields where subfield doesn't exist (this mode
216+
ignores the filter_value)
215217
216218
Example:
217219
record_filter_field(record_get_field_instances(rec, '999', '%', '%'), 'y', '2001')
@@ -222,7 +224,7 @@ def filter_field_instances(field_instances, filter_subcode, filter_value, filter
222224
@type filter_subcode: string
223225
@param filter_value: value of the subfield
224226
@type filter_value: string
225-
@param filter_mode: 'e','s' or 'r'
227+
@param filter_mode: 'e','s', 'r' or 'n'
226228
"""
227229
matched = []
228230
if filter_mode == 'e':
@@ -245,6 +247,11 @@ def filter_field_instances(field_instances, filter_subcode, filter_value, filter
245247
reg_exp.match(subfield[1]) is not None:
246248
matched.append(instance)
247249
break
250+
elif filter_mode == 'n':
251+
for instance in field_instances:
252+
if filter_subcode not in [subfield[0] for subfield in instance[0]]:
253+
matched.append(instance)
254+
248255
return matched
249256

250257
def record_drop_duplicate_fields(record):

modules/bibupload/lib/bibupload.py

Lines changed: 202 additions & 46 deletions
Large diffs are not rendered by default.

modules/bibupload/lib/bibupload_regression_tests.py

Lines changed: 231 additions & 1 deletion
Large diffs are not rendered by default.

modules/bibupload/lib/bibupload_revisionverifier_regression_tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1114,7 +1114,7 @@ def test_corrected_record_affected_tags(self):
11141114
"""Checks if corrected record has affected fields in hstRECORD table"""
11151115
query = "SELECT affected_fields from hstRECORD where id_bibrec=12 ORDER BY job_date DESC"
11161116
res = run_sql(query)
1117-
self.assertEqual(res[0][0], "005__%,8564_%,909C0%,909C1%,909C5%,909CO%,909CS%")
1117+
self.assertEqual(res[0][0], "005__%,540__%,542__%,8564_%,909C0%,909C1%,909C5%,909CO%,909CS%")
11181118

11191119

11201120
def test_append_to_record_affected_tags(self):

modules/websearch/lib/websearch_regression_tests.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,8 +1297,8 @@ def test_search_engine_python_api_textmarc_full(self):
12971297
000000085 695__ $$9LANL EDS$$aHigh Energy Physics - Theory
12981298
000000085 700__ $$aPorrati, Massimo
12991299
000000085 700__ $$aZaffaroni, A
1300-
000000085 8564_ $$s112828$$u%(siteurl)s/record/85/files/0212181.ps.gz
1301-
000000085 8564_ $$s151257$$u%(siteurl)s/record/85/files/0212181.pdf
1300+
000000085 8564_ $$874$$s112828$$u%(siteurl)s/record/85/files/0212181.ps.gz
1301+
000000085 8564_ $$874$$s151257$$u%(siteurl)s/record/85/files/0212181.pdf
13021302
000000085 859__ $$falberto.zaffaroni@mib.infn.it
13031303
000000085 909C4 $$c289-293$$pPhys. Lett. B$$v561$$y2003
13041304
000000085 916__ $$sn$$w200251
@@ -1345,8 +1345,8 @@ def test_search_engine_python_api_textmarc_full(self):
13451345
000000001 65017 $$2SzGeCERN$$aExperiments and Tracks
13461346
000000001 6531_ $$aLEP
13471347
000000001 8560_ $$fneil.calder@cern.ch
1348-
000000001 8564_ $$s1585244$$u%(siteurl)s/record/1/files/0106015_01.jpg
1349-
000000001 8564_ $$s20954$$u%(siteurl)s/record/1/files/0106015_01.gif?subformat=icon$$xicon
1348+
000000001 8564_ $$81$$s1585244$$u%(siteurl)s/record/1/files/0106015_01.jpg
1349+
000000001 8564_ $$81$$s20954$$u%(siteurl)s/record/1/files/0106015_01.gif?subformat=icon$$xicon
13501350
000000001 909C0 $$o0003717PHOPHO
13511351
000000001 909C0 $$y2000
13521352
000000001 909C0 $$b81
@@ -1520,10 +1520,12 @@ def test_search_engine_python_api_xmlmarc_full(self):
15201520
<subfield code="a">Zaffaroni, A</subfield>
15211521
</datafield>
15221522
<datafield tag="856" ind1="4" ind2=" ">
1523+
<subfield code="8">74</subfield>
15231524
<subfield code="s">112828</subfield>
15241525
<subfield code="u">%(siteurl)s/record/85/files/0212181.ps.gz</subfield>
15251526
</datafield>
15261527
<datafield tag="856" ind1="4" ind2=" ">
1528+
<subfield code="8">74</subfield>
15271529
<subfield code="s">151257</subfield>
15281530
<subfield code="u">%(siteurl)s/record/85/files/0212181.pdf</subfield>
15291531
</datafield>
@@ -1739,10 +1741,12 @@ def test_search_engine_python_api_xmlmarc_full(self):
17391741
<subfield code="f">neil.calder@cern.ch</subfield>
17401742
</datafield>
17411743
<datafield tag="856" ind1="4" ind2=" ">
1744+
<subfield code="8">1</subfield>
17421745
<subfield code="s">1585244</subfield>
17431746
<subfield code="u">%(siteurl)s/record/1/files/0106015_01.jpg</subfield>
17441747
</datafield>
17451748
<datafield tag="856" ind1="4" ind2=" ">
1749+
<subfield code="8">1</subfield>
17461750
<subfield code="s">20954</subfield>
17471751
<subfield code="u">%(siteurl)s/record/1/files/0106015_01.gif?subformat=icon</subfield>
17481752
<subfield code="x">icon</subfield>
@@ -2108,8 +2112,8 @@ def test_search_engine_web_api_textmarc_full(self):
21082112
000000085 695__ $$9LANL EDS$$aHigh Energy Physics - Theory
21092113
000000085 700__ $$aPorrati, Massimo
21102114
000000085 700__ $$aZaffaroni, A
2111-
000000085 8564_ $$s112828$$u%(siteurl)s/record/85/files/0212181.ps.gz
2112-
000000085 8564_ $$s151257$$u%(siteurl)s/record/85/files/0212181.pdf
2115+
000000085 8564_ $$874$$s112828$$u%(siteurl)s/record/85/files/0212181.ps.gz
2116+
000000085 8564_ $$874$$s151257$$u%(siteurl)s/record/85/files/0212181.pdf
21132117
000000085 859__ $$falberto.zaffaroni@mib.infn.it
21142118
000000085 909C4 $$c289-293$$pPhys. Lett. B$$v561$$y2003
21152119
000000085 916__ $$sn$$w200251
@@ -2156,8 +2160,8 @@ def test_search_engine_web_api_textmarc_full(self):
21562160
000000001 65017 $$2SzGeCERN$$aExperiments and Tracks
21572161
000000001 6531_ $$aLEP
21582162
000000001 8560_ $$fneil.calder@cern.ch
2159-
000000001 8564_ $$s1585244$$u%(siteurl)s/record/1/files/0106015_01.jpg
2160-
000000001 8564_ $$s20954$$u%(siteurl)s/record/1/files/0106015_01.gif?subformat=icon$$xicon
2163+
000000001 8564_ $$81$$s1585244$$u%(siteurl)s/record/1/files/0106015_01.jpg
2164+
000000001 8564_ $$81$$s20954$$u%(siteurl)s/record/1/files/0106015_01.gif?subformat=icon$$xicon
21612165
000000001 909C0 $$o0003717PHOPHO
21622166
000000001 909C0 $$y2000
21632167
000000001 909C0 $$b81
@@ -2318,10 +2322,12 @@ def test_search_engine_web_api_xmlmarc_full(self):
23182322
<subfield code="a">Zaffaroni, A</subfield>
23192323
</datafield>
23202324
<datafield tag="856" ind1="4" ind2=" ">
2325+
<subfield code="8">74</subfield>
23212326
<subfield code="s">112828</subfield>
23222327
<subfield code="u">%(siteurl)s/record/85/files/0212181.ps.gz</subfield>
23232328
</datafield>
23242329
<datafield tag="856" ind1="4" ind2=" ">
2330+
<subfield code="8">74</subfield>
23252331
<subfield code="s">151257</subfield>
23262332
<subfield code="u">%(siteurl)s/record/85/files/0212181.pdf</subfield>
23272333
</datafield>
@@ -2537,10 +2543,12 @@ def test_search_engine_web_api_xmlmarc_full(self):
25372543
<subfield code="f">neil.calder@cern.ch</subfield>
25382544
</datafield>
25392545
<datafield tag="856" ind1="4" ind2=" ">
2546+
<subfield code="8">1</subfield>
25402547
<subfield code="s">1585244</subfield>
25412548
<subfield code="u">%(siteurl)s/record/1/files/0106015_01.jpg</subfield>
25422549
</datafield>
25432550
<datafield tag="856" ind1="4" ind2=" ">
2551+
<subfield code="8">1</subfield>
25442552
<subfield code="s">20954</subfield>
25452553
<subfield code="u">%(siteurl)s/record/1/files/0106015_01.gif?subformat=icon</subfield>
25462554
<subfield code="x">icon</subfield>
@@ -2861,8 +2869,8 @@ def test_record_web_api_textmarc_full(self):
28612869
000000085 695__ $$9LANL EDS$$aHigh Energy Physics - Theory
28622870
000000085 700__ $$aPorrati, Massimo
28632871
000000085 700__ $$aZaffaroni, A
2864-
000000085 8564_ $$s112828$$u%(siteurl)s/record/85/files/0212181.ps.gz
2865-
000000085 8564_ $$s151257$$u%(siteurl)s/record/85/files/0212181.pdf
2872+
000000085 8564_ $$874$$s112828$$u%(siteurl)s/record/85/files/0212181.ps.gz
2873+
000000085 8564_ $$874$$s151257$$u%(siteurl)s/record/85/files/0212181.pdf
28662874
000000085 859__ $$falberto.zaffaroni@mib.infn.it
28672875
000000085 909C4 $$c289-293$$pPhys. Lett. B$$v561$$y2003
28682876
000000085 916__ $$sn$$w200251
@@ -2962,10 +2970,12 @@ def test_record_web_api_xmlmarc_full(self):
29622970
<subfield code="a">Zaffaroni, A</subfield>
29632971
</datafield>
29642972
<datafield tag="856" ind1="4" ind2=" ">
2973+
<subfield code="8">74</subfield>
29652974
<subfield code="s">112828</subfield>
29662975
<subfield code="u">%(siteurl)s/record/85/files/0212181.ps.gz</subfield>
29672976
</datafield>
29682977
<datafield tag="856" ind1="4" ind2=" ">
2978+
<subfield code="8">74</subfield>
29692979
<subfield code="s">151257</subfield>
29702980
<subfield code="u">%(siteurl)s/record/85/files/0212181.pdf</subfield>
29712981
</datafield>

0 commit comments

Comments
 (0)