Skip to content

Commit e040f0a

Browse files
hide24rand-honda
authored andcommitted
OA加速化ワークフロー_デモ版
1 parent 30ac81e commit e040f0a

File tree

83 files changed

+8103
-4388
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+8103
-4388
lines changed

Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ COPY ./admin/rdm_announcement/requirements.txt ./admin/rdm_announcement/
7070
COPY ./admin/rdm_statistics/requirements.txt ./admin/rdm_statistics/
7171
COPY ./addons/metadata/requirements.txt ./addons/metadata/
7272
COPY ./addons/onlyoffice/requirements.txt ./addons/onlyoffice/
73+
COPY ./addons/workflow/requirements.txt ./addons/workflow/
7374

7475
RUN pip3 install pip==21.0
7576

@@ -179,6 +180,7 @@ COPY ./addons/iqbrims/static/ ./addons/iqbrims/static/
179180
COPY ./addons/binderhub/static/ ./addons/binderhub/static/
180181
COPY ./addons/metadata/static/ ./addons/metadata/static/
181182
COPY ./addons/onlyoffice/static/ ./addons/onlyoffice/static/
183+
COPY ./addons/workflow/static/ ./addons/workflow/static/
182184
RUN \
183185
# OSF
184186
yarn install --frozen-lockfile \

addons.json

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
"onedrivebusiness",
3434
"metadata",
3535
"datasteward",
36-
"onlyoffice"
36+
"onlyoffice",
37+
"workflow"
3738
],
3839
"addons_default": [
3940
"osfstorage",
@@ -68,7 +69,8 @@
6869
"nextcloudinstitutions": "partial",
6970
"iqbrims": "partial",
7071
"dropboxbusiness": "partial",
71-
"onedrivebusiness": "partial"
72+
"onedrivebusiness": "partial",
73+
"workflow": "partial"
7274
},
7375
"addons_commentable": [
7476
"osfstorage",
@@ -95,7 +97,8 @@
9597
"nextcloudinstitutions",
9698
"iqbrims",
9799
"dropboxbusiness",
98-
"onedrivebusiness"
100+
"onedrivebusiness",
101+
"workflow"
99102
],
100103
"addons_based_on_ids": [
101104
"osfstorage",
@@ -138,7 +141,8 @@
138141
"binderhub": "GakuNin Federated Computing Services (Jupyter) is a web-based interactive computational environment. Files on a GakuNin RDM project can be imported to/exported from GakuNin Federated Computing Services (Jupyter)",
139142
"onedrivebusiness": "OneDrive for Office365 is a file storage add-on. Connect your Microsoft OneDrive account to a GakuNin RDM project to interact with files hosted on Microsoft OneDrive via the GakuNin RDM.",
140143
"metadata": "The Metadata addon provides the functionality to register metadata to files and generate reports.",
141-
"onlyoffice": "ONLYOFFICE document server."
144+
"onlyoffice": "ONLYOFFICE document server.",
145+
"workflow": "Work Flow Addon is ..."
142146
},
143147
"addons_url": {
144148
"box": "http://www.box.com",
@@ -166,7 +170,8 @@
166170
"binderhub": "https://binder.cs.rcos.nii.ac.jp",
167171
"onedrivebusiness": "https://onedrive.live.com",
168172
"metadata": "https://rcos.nii.ac.jp/service/rdm/",
169-
"onlyoffice": "https://onlyoffice.com/"
173+
"onlyoffice": "https://onlyoffice.com/",
174+
"workflow": "https://dummy.nii.ac.jp/workflow"
170175
},
171176
"institutional_storage_add_on_method": [
172177
"nextcloudinstitutions",

addons/base/views.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,7 @@ def addon_view_file(auth, node, file_node, version):
10431043
'file_id': file_node._id,
10441044
'allow_comments': file_node.provider in settings.ADDONS_COMMENTABLE,
10451045
'checkout_user': file_node.checkout._id if file_node.checkout else None,
1046+
'locked_user': file_node.locked._id if file_node.locked else None,
10461047
'version_names': list(version_names),
10471048
'wopi_onlyoffice': onlyoffice_settings.WOPI_CLIENT_ONLYOFFICE,
10481049
})

addons/metadata/apps.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ class AddonAppConfig(BaseAddonAppConfig):
3737

3838
node_settings_template = os.path.join(TEMPLATE_PATH, 'metadata_node_settings.mako')
3939

40-
excel_maximun_file_size = 10485760
41-
text_maximun_file_size = 10485760
42-
image_maximun_file_size = 10485760
43-
other_maximun_file_size = 10485760
40+
excel_file_maximum_size = 10485760
41+
text_file_maximum_size = 10485760
42+
image_file_maximum_size = 10485760
43+
any_file_maximum_size = 10485760
4444

4545
text_file_extension = ['txt', 'csv', 'tsv']
4646
excel_file_extension = ['xlsx', 'xls']

addons/metadata/models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -284,14 +284,15 @@ def get_project_metadata(self):
284284
def get_report_formats_for(self, schemas):
285285
formats = []
286286
for schema in schemas:
287-
for format in RegistrationReportFormat.objects \
287+
for format in RegistrationReportFormat.objects\
288288
.filter(registration_schema_id=schema._id) \
289289
.order_by('order'):
290290
formats.append({
291291
'id': f'format-{format.id}',
292292
'schema_id': schema._id,
293293
'name': format.name,
294294
})
295+
295296
destinations = []
296297
for addon in self.owner.get_addons():
297298
if not hasattr(addon, 'has_metadata') or not addon.has_metadata:
@@ -648,8 +649,7 @@ def node(self):
648649

649650
class ImportedAddonSettings(BaseModel):
650651
node_settings = models.ForeignKey(NodeSettings, related_name='imported_addon_settings',
651-
db_index=True, null=True, blank=True,
652-
on_delete=models.CASCADE)
652+
db_index=True, null=True, blank=True, on_delete=models.CASCADE)
653653

654654
name = models.TextField(blank=True, null=True)
655655

addons/metadata/static/files.js

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -474,30 +474,6 @@ function MetadataButtons() {
474474
* Start editing metadata.
475475
*/
476476
self.editMetadata = function(context, filepath, item) {
477-
window.context = context;
478-
window.item = item;
479-
480-
var file_total_size = 0;
481-
var file_total_number_of_files = 0;
482-
var file_total_number_of_folders = 0;
483-
var file_maximum_number_of_layers = 0;
484-
var root = '';
485-
getFile(filepath);
486-
487-
function getFile(filepath) {
488-
context.wbcache.searchFile(filepath, function (file) {
489-
if (file.hasOwnProperty('links')) {
490-
window.filepath = file.links.download;
491-
root = file.attributes.materialized;
492-
window.filesize = file.attributes.size;
493-
}
494-
else {
495-
window.filepath = '';
496-
root = '/'+ file.data.provider;
497-
}
498-
});
499-
}
500-
501477
var dialog = null;
502478
const extraMetadata = self.getExtraMetadata(item);
503479
if ((context.projectMetadata || {}).editable && !extraMetadata) {

addons/metadata/static/metadata-fields.js

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ const sizeofFormat = require("./util").sizeofFormat;
2626
const getLocalizedText = util.getLocalizedText;
2727
const normalizeText = util.normalizeText;
2828

29-
const logPrefix = '[metadata] ';
3029
var filteredPages = [];
3130

31+
const logPrefix = '[metadata] ';
32+
3233
const QuestionPage = oop.defclass({
3334
constructor: function(schema, fileItem, options) {
3435
const self = this;
@@ -54,7 +55,7 @@ const QuestionPage = oop.defclass({
5455
filteredPages = [];
5556
filteredPages = (self.schema.pages || []).filter(function(page) {
5657
return (page.questions || []).some(function(question){
57-
return question.hide === true;
58+
return question.concealment_page === "buttonHide";
5859
})
5960
}).map(function(page){
6061
return page;
@@ -190,6 +191,7 @@ const QuestionField = oop.extend(Emitter, {
190191

191192
create: function() {
192193
const self = this;
194+
self.element = $('<div></div>').addClass('form-group');
193195
if(filteredPages.length > 0 && filteredPages.length != 1){
194196
const currentPage = filteredPages.filter(function(page) {
195197
return (page.questions || []).some(function (question) {
@@ -199,26 +201,26 @@ const QuestionField = oop.extend(Emitter, {
199201

200202
const filteredPageIds = currentPage.flatMap(function(page) {
201203
return (page.questions || []).filter(function (question) {
202-
return question.hide === true;
204+
return question.concealment_page === "buttonHide";
203205
})
204206
.map(function (question) {
205207
return question.qid.split(':')[1];
206208
});
207209
});
208210

209-
const isHide = currentPage.some(function(page) {
211+
const isConcealmentPage = currentPage.some(function(page) {
210212
return (page.questions || []).some(function (question) {
211213
return question.qid === self.question.qid && self.question.qid.split(':')[1] != filteredPageIds && self.question.required != true;
212214
})
213215
});
214216

215-
if (isHide && filteredPageIds.length == 1) {
216-
self.element = $('<div></div>').addClass('form-group-'+filteredPageIds).css('height','0').css('overflow', 'hidden').css('margin','0px');
217+
if (isConcealmentPage && filteredPageIds.length == 1) {
218+
self.element = $('<div></div>').addClass('concealment-page-'+filteredPageIds).css('height','0').css('overflow', 'scroll');
217219
}else{
218-
self.element = $('<div></div>').addClass('form-group').css('margin','0px');
220+
self.element = $('<div></div>').addClass('form-group');
219221
}
220222
}else{
221-
self.element = $('<div></div>').addClass('form-group').css('margin','0px');
223+
self.element = $('<div></div>').addClass('form-group');
222224
}
223225

224226
// construct header
@@ -228,10 +230,6 @@ const QuestionField = oop.extend(Emitter, {
228230
// construct label
229231
const label = $('<label></label>')
230232
.text(self.question.title ? getLocalizedText(self.question.title) : self.question.label);
231-
232-
if(self.question.auto_value){
233-
label.append($(' <span>&nbsp; &#10227</span> '));
234-
}
235233
if (self.question.required) {
236234
label.append($('<span></span>')
237235
.css('color', 'red')
@@ -240,19 +238,19 @@ const QuestionField = oop.extend(Emitter, {
240238
}
241239
header.append(label);
242240

243-
if(self.question.hasOwnProperty('hide') && self.question.hide){
241+
if(self.question.hasOwnProperty('concealment_page') && self.question.concealment_page == "buttonHide"){
244242
const p = $('<p></p>');
245-
const a = $('<a></a>').text(' '+_('Show Items'));
243+
const a = $('<a></a>').text('¥ '+_('Show Items'));
246244
p.on('click', function(){
247-
$('.form-group-'+self.question.qid.split(':')[1]).each(function() {
245+
$('.concealment-page-'+self.question.qid.split(':')[1]).each(function() {
248246
if($(this).height() === 0){
249247
$(this).animate({height: $(this).get(0).scrollHeight}, 'fast', function() {
250-
$(this).css('height', '');
248+
$(this).css('height', '').addClass('form-group');
251249
});
252-
a.text(' '+_('Hide Items'));
250+
a.text('£ '+_('Hide Items'));
253251
}else {
254-
$(this).animate({height: 0}, 'fast');
255-
a.text(' '+_('Show Items'));
252+
$(this).animate({height: 0}, 'fast').removeClass('form-group');
253+
a.text('¥ '+_('Show Items'));
256254
}
257255
});
258256
});
@@ -384,7 +382,7 @@ function createFormField(question, options, value) {
384382
formField = new TextFormField(question, options);
385383
}
386384
formField.create();
387-
if (value != null && value !== '') {
385+
if (value != null && value !== '' || (question.hasOwnProperty('initial_row_addition') && question.initial_row_addition)) {
388386
try {
389387
formField.setValue(value);
390388
} catch (error) {
@@ -729,11 +727,7 @@ const ArrayFormField = oop.extend(FormFieldInterface, {
729727
const headRow = $('<tr>');
730728
const thead = $('<thead>').append(headRow);
731729
self.question.properties.forEach(function(prop) {
732-
if(prop.auto_value){
733-
headRow.append($('<th>' + getLocalizedText(prop.title) + '<span>&nbsp; &#10227</span></th>'));
734-
}else{
735-
headRow.append($('<th>' + getLocalizedText(prop.title) + '</th>'));
736-
}
730+
headRow.append($('<th>' + getLocalizedText(prop.title) + '</th>'));
737731
});
738732
headRow.append($('<th>')); // remove button header
739733

@@ -846,6 +840,11 @@ const ArrayFormField = oop.extend(FormFieldInterface, {
846840
} else {
847841
rows = value || [];
848842
}
843+
844+
if(self.question.hasOwnProperty('initial_row_addition') && self.question.initial_row_addition ){
845+
self.addRow();
846+
}
847+
849848
rows.forEach(function(row) {
850849
self.addRow(row);
851850
});
@@ -1145,8 +1144,8 @@ function createSuggestionButton(container, question, buttonSuggestions, options,
11451144
.then(function (value) {
11461145
if(value == 'error'){
11471146
return;
1148-
}else if( value == 'auto-value-filesize-over-error'){
1149-
var name = question.qid.split(':')[1];
1147+
}else if( value == 'get-filesize-over-error'){
1148+
var name = question.qid.split(':')[1].replace('/', '-');
11501149
$('.'+name).remove();
11511150
container.after(
11521151
'<div class="'+name+'" style="color: red;">'+ _("File size exceeds the maximum allowed size.")+'</div>'

0 commit comments

Comments
 (0)