19
19
20
20
from elasticsearch import ConnectionError
21
21
from elasticsearch .exceptions import NotFoundError
22
- from flask import Blueprint , jsonify , abort
23
- from invenio_access .permissions import Permission
22
+ from flask import Blueprint , abort , jsonify
24
23
from invenio_files_rest .models import Location
25
24
from invenio_jsonschemas .errors import JSONSchemaNotFound
26
25
from invenio_search import current_search
27
- from sqlalchemy .exc import OperationalError
28
26
from jsonref import JsonRefError
27
+ from sqlalchemy .exc import OperationalError
29
28
30
29
from cap .modules .access .utils import login_required
31
30
from cap .modules .deposit .fetchers import cap_deposit_fetcher
34
33
from cap .modules .records .fetchers import cap_record_fetcher
35
34
from cap .modules .records .search import CAPRecordSearch
36
35
from cap .modules .records .serializers import record_json_v1
37
- from cap .modules .workflows .utils import get_user_workflows
38
36
from cap .modules .schemas .models import Schema
39
- from cap .modules .schemas .serializers import collection_serializer
40
37
from cap .modules .schemas .permissions import ReadCollectionSchemaPermission
38
+ from cap .modules .schemas .serializers import collection_serializer
39
+ from cap .modules .workflows .utils import get_user_workflows
41
40
42
41
blueprint = Blueprint (
43
42
'cap' ,
@@ -72,17 +71,24 @@ def ping(service=None):
72
71
@login_required
73
72
def dashboard ():
74
73
"""Dashboard view."""
74
+
75
75
def _serialize_records (records ):
76
76
return json .loads (
77
77
record_json_v1 .serialize_search (
78
- cap_record_fetcher ,
79
- records .to_dict ()))['hits' ]['hits' ] # noqa
78
+ cap_record_fetcher , records .to_dict ()
79
+ )
80
+ )['hits' ][
81
+ 'hits'
82
+ ] # noqa
80
83
81
84
def _serialize_deposits (deposits ):
82
85
return json .loads (
83
86
deposit_json_v1 .serialize_search (
84
- cap_deposit_fetcher ,
85
- deposits .to_dict ()))['hits' ]['hits' ] # noqa
87
+ cap_deposit_fetcher , deposits .to_dict ()
88
+ )
89
+ )['hits' ][
90
+ 'hits'
91
+ ] # noqa
86
92
87
93
rs = CAPRecordSearch ().extra (version = True ).sort_by_latest ()
88
94
ds = CAPDepositSearch ().extra (version = True ).sort_by_latest ()
@@ -95,44 +101,49 @@ def _serialize_deposits(deposits):
95
101
user_drafts_count = ds .get_user_deposits ().count ()
96
102
user_workflows = get_user_workflows ()
97
103
98
- return jsonify ({
99
- 'published' : {
100
- 'data' : published , 'more' : '/search?q='
101
- },
102
- 'drafts' : {
103
- 'data' : drafts , 'more' : '/drafts?q='
104
- },
105
- 'user_published' : {
106
- 'data' : user_published , 'more' : '/search?q=&by_me=True'
107
- },
108
- 'user_drafts' : {
109
- 'data' : user_drafts , 'more' : '/drafts?q=&by_me=True'
110
- },
111
- 'user_workflows' : {
112
- 'data' : user_workflows , 'more' : '#'
113
- },
114
- 'user_drafts_count' : user_drafts_count ,
115
- 'user_published_count' : user_published_count ,
116
- 'user_count' : user_drafts_count + user_published_count
117
- })
104
+ return jsonify (
105
+ {
106
+ 'published' : {'data' : published , 'more' : '/search?q=' },
107
+ 'drafts' : {'data' : drafts , 'more' : '/drafts?q=' },
108
+ 'user_published' : {
109
+ 'data' : user_published ,
110
+ 'more' : '/search?q=&by_me=True' ,
111
+ },
112
+ 'user_drafts' : {
113
+ 'data' : user_drafts ,
114
+ 'more' : '/drafts?q=&by_me=True' ,
115
+ },
116
+ 'user_workflows' : {'data' : user_workflows , 'more' : '#' },
117
+ 'user_drafts_count' : user_drafts_count ,
118
+ 'user_published_count' : user_published_count ,
119
+ 'user_count' : user_drafts_count + user_published_count ,
120
+ }
121
+ )
118
122
119
123
120
124
@blueprint .route ('/collection/<string:collection_name>' )
121
125
@blueprint .route ('/collection/<string:collection_name>/<string:version>' )
122
126
@login_required
123
127
def collection (collection_name , version = None ):
124
128
"""Collection view."""
129
+
125
130
def _serialize_records (records ):
126
131
return json .loads (
127
132
record_json_v1 .serialize_search (
128
- cap_record_fetcher ,
129
- records .to_dict ()))['hits' ]['hits' ] # noqa
133
+ cap_record_fetcher , records .to_dict ()
134
+ )
135
+ )['hits' ][
136
+ 'hits'
137
+ ] # noqa
130
138
131
139
def _serialize_deposits (deposits ):
132
140
return json .loads (
133
141
deposit_json_v1 .serialize_search (
134
- cap_deposit_fetcher ,
135
- deposits .to_dict ()))['hits' ]['hits' ] # noqa
142
+ cap_deposit_fetcher , deposits .to_dict ()
143
+ )
144
+ )['hits' ][
145
+ 'hits'
146
+ ] # noqa
136
147
137
148
if not collection_name :
138
149
return abort (404 )
@@ -151,8 +162,7 @@ def _serialize_deposits(deposits):
151
162
abort (403 )
152
163
153
164
try :
154
- schema_data = collection_serializer .dump (
155
- collection_schema ).data
165
+ schema_data = collection_serializer .dump (collection_schema ).data
156
166
except JsonRefError :
157
167
abort (404 )
158
168
@@ -161,22 +171,26 @@ def _serialize_deposits(deposits):
161
171
162
172
try :
163
173
published = _serialize_records (
164
- rs .get_collection_records (collection_schema . name ,
165
- collection_version = version
166
- )[:5 ].execute ()
174
+ rs .get_collection_records (
175
+ collection_schema . name , collection_version = version
176
+ )[:5 ].execute ()
167
177
)
168
178
drafts = _serialize_deposits (
169
- ds .get_collection_deposits (collection_schema .name ,
170
- collection_version = version
171
- )[:5 ].execute ()
179
+ ds .get_collection_deposits (
180
+ collection_schema .name , collection_version = version
181
+ )[:5 ].execute ()
182
+ )
183
+ user_drafts = _serialize_deposits (
184
+ ds .get_collection_deposits (
185
+ collection_schema .name , by_me = True , collection_version = version
186
+ )[:5 ].execute ()
172
187
)
173
- user_drafts = _serialize_deposits (ds .get_collection_deposits (
174
- collection_schema .name , by_me = True , collection_version = version
175
- )[:5 ].execute ())
176
188
177
- user_published = _serialize_records (rs .get_collection_records (
178
- collection_schema .name , by_me = True , collection_version = version
179
- )[:5 ].execute ())
189
+ user_published = _serialize_records (
190
+ rs .get_collection_records (
191
+ collection_schema .name , by_me = True , collection_version = version
192
+ )[:5 ].execute ()
193
+ )
180
194
181
195
except NotFoundError :
182
196
published = []
@@ -188,20 +202,21 @@ def _serialize_deposits(deposits):
188
202
if version :
189
203
collection_args += f'&collection_version={ version } '
190
204
191
- return jsonify ({
192
- 'published' : {
193
- 'data' : published , 'more' : f'/search?{ collection_args } &q='
194
- },
195
- 'drafts' : {
196
- 'data' : drafts , 'more' : f'/drafts?{ collection_args } &q='
197
- },
198
- 'user_published' : {
199
- 'data' : user_published ,
200
- 'more' : f'/search?{ collection_args } &q=&by_me=True'
201
- },
202
- 'user_drafts' : {
203
- 'data' : user_drafts ,
204
- 'more' : f'/drafts?{ collection_args } &q=&by_me=True'
205
- },
206
- 'schema_data' : schema_data
207
- })
205
+ return jsonify (
206
+ {
207
+ 'published' : {
208
+ 'data' : published ,
209
+ 'more' : f'/search?{ collection_args } &q=' ,
210
+ },
211
+ 'drafts' : {'data' : drafts , 'more' : f'/drafts?{ collection_args } &q=' },
212
+ 'user_published' : {
213
+ 'data' : user_published ,
214
+ 'more' : f'/search?{ collection_args } &q=&by_me=True' ,
215
+ },
216
+ 'user_drafts' : {
217
+ 'data' : user_drafts ,
218
+ 'more' : f'/drafts?{ collection_args } &q=&by_me=True' ,
219
+ },
220
+ 'schema_data' : schema_data ,
221
+ }
222
+ )
0 commit comments