def dropFieldSet(self, label): for group in self.groups: if label == group.label: for key in group.fields.keys(): remove(self, key) self.groups.remove(group) break
def whitelist_form_fields(form, whitlisted_fields): """Removes all fields instead the whitelisted fields from the form. """ for schema in getAdditionalSchemata(form): behavior_interface_name = schema.__name__ for fieldname in schema: full_name = '{}.{}'.format(behavior_interface_name, fieldname) if full_name in whitlisted_fields: continue remove(form, fieldname, behavior_interface_name)
def manage_fields(the_form, portal_type, mode): """ Remove, reorder and restrict fields """ fields_schemas = getattr(getProjectSpace(the_form.context), '{}_fields'.format(portal_type), []) if not fields_schemas: return to_input = [] to_display = [] for fields_schema in reversed(fields_schemas): field_name = fields_schema['field_name'] read_condition = fields_schema.get('read_tal_condition') or "" write_condition = fields_schema.get('write_tal_condition') or "" if _evaluateExpression(the_form.context, expression=read_condition): to_display.append(field_name) if _evaluateExpression(the_form.context, expression=write_condition): to_input.append(field_name) field = remove(the_form, field_name) if field is not None and field_name in to_display: add(the_form, field, index=0) if mode != 'view' and field_name not in to_input: field.mode = "display" for group in [the_form] + the_form.groups: for field_name in group.fields: if field_name == 'reference_number' and mode != 'view': continue if field_name not in to_display: group.fields = group.fields.omit(field_name)
def updateWidgets(self): super(ArticleAddForm, self).updateWidgets() currentLanguage = getLanguage(self) if currentLanguage == 'en-us': for group in self.groups: for key in group.fields.keys(): if key in ['engTitle', 'engKeywords', 'engAbstract',]: remove(self, key) self.dropFieldSet(label='Review State') self.dropFieldSet(label='Score table') self.changeFieldDescription( label='Manuscript file', fieldName='IAttachedFile.attachFile', description=None) return
def updateWidgets(self): super(ArticleAddForm, self).updateWidgets() currentLanguage = getLanguage(self) if currentLanguage == 'en-us': for group in self.groups: for key in group.fields.keys(): if key in [ 'engTitle', 'engKeywords', 'engAbstract', ]: remove(self, key) self.dropFieldSet(label='Review State') self.dropFieldSet(label='Score table') self.changeFieldDescription(label='Manuscript file', fieldName='IAttachedFile.attachFile', description=None) return
def remove(self, field_name, prefix=None): """Get rid of a field. The omitted field will be returned. """ return utils.remove(self.form, field_name, prefix=prefix)
def updateWidgets(self): super(ArticleEditForm, self).updateWidgets() view = api.content.get_view(name='view', context=self.context, request=self.request) selfBrain = view.getSelfBrain() if len(selfBrain) == 0: return #改label # try: # file = getattr(self.context.getLastChild(), 'file', None) # import pdb; pdb.set_trace() # if file: # filename = getattr(file, 'filename', None) # if filename: #嚴重錯誤,立即修復, 暫時以try處理,再觀查 # import pdb; pdb.set_trace() # url = "%s/@@download/file/%s" % (self.context.getLastChild().absolute_url(), filename) # descriptionString = _(u"Current version:<a href=%s>%s</a>" % (url, filename)) # self.changeFieldDescription( # label='Manuscript file', # fieldName='IAttachedFile.attachFile', # description=descriptionString) # except: # self.changeFieldDescription( # label='Manuscript file', # fieldName='IAttachedFile.attachFile', # description=None) #改label end if 'Site Administrator' in view.getRoles(): # articleItem = selfBrain.getObject() # if 'modifyThenReview' == api.content.get_state(obj=articleItem): label = "Manuscript file" keys = ['IAttachedFile.commentReply'] self.hiddenFields(label=label, mode=None, keys=keys) return currentUserId = api.user.get_current().getId() articleItem = selfBrain.getObject() reviewer_1_id = self.getReviewerId(articleItem.assignExternalReviewer1) reviewer_2_id = self.getReviewerId(articleItem.assignExternalReviewer2) reviewer_3_id = self.getReviewerId(articleItem.assignExternalReviewer3) if articleItem.assignExternalReviewer1 is not None and articleItem.acceptInvit1 != False: label = "Review State" keys = ['assignExternalReviewer1'] self.hiddenFields(label=label, mode="display", keys=keys) if articleItem.assignExternalReviewer2 is not None and articleItem.acceptInvit2 != False: label = "Review State" keys = ['assignExternalReviewer2'] self.hiddenFields(label=label, mode="display", keys=keys) if articleItem.assignExternalReviewer3 is not None and articleItem.acceptInvit3 != False: label = "Review State" keys = ['assignExternalReviewer3'] self.hiddenFields(label=label, mode="display", keys=keys) if currentUserId != reviewer_1_id: # label = "Review State" keys = ['acceptOrReject1', 'externalReviewerComment1', 'reviewCommentAttached1', 'IScoreTable.scoreR1Q1', 'IScoreTable.scoreR1Q2', 'IScoreTable.scoreR1Q3', 'IScoreTable.scoreR1Q4',] self.removeFields(fieldList=keys) if currentUserId != reviewer_2_id: keys = ['acceptOrReject2', 'externalReviewerComment2', 'reviewCommentAttached2', 'IScoreTable.scoreR2Q1', 'IScoreTable.scoreR2Q2', 'IScoreTable.scoreR2Q3', 'IScoreTable.scoreR2Q4',] self.removeFields(fieldList=keys) if currentUserId != reviewer_3_id: label = "Review State" keys = ['acceptOrReject3', 'externalReviewerComment3', 'reviewCommentAttached3', 'IScoreTable.scoreR3Q1', 'IScoreTable.scoreR3Q2', 'IScoreTable.scoreR3Q3', 'IScoreTable.scoreR3Q4',] self.removeFields(fieldList=keys) if articleItem.reviewConfirm1 is None or articleItem.reviewConfirm2 is None: label = "Review State" keys = ['assignExternalReviewer3', 'reviewFeedback', 'reviewFeedbackText'] self.hiddenFields(label=label, mode="hidden", keys=keys) if 'modifyThenReview' == api.content.get_state(obj=articleItem): label = "Manuscript file" keys = ['IAttachedFile.commentReply'] self.hiddenFields(label=label, mode=None, keys=keys) if api.content.get_state(self.context) in ['draft', 'modifyThenReview']: self.dropFieldSet(label='Review State') self.dropFieldSet(label='Score table') elif api.content.get_state(self.context) in ['inReview', 'internalAssigned', 'accepted', 'rejected', 'retrial']: self.dropFieldSet(label='Manuscript Metadata') self.dropFieldSet(label='Authors') self.dropFieldSet(label='Manuscript file') #if current_user not this article's internalreviewer, remove externalreviewer field. #修正具責編身份者,同時被指定為另一篇論文評審委員的顯示問題 if articleItem.assignInternalReviewer and api.user.get_current().getId() != articleItem.assignInternalReviewer.to_object.owner_info()['id']: remove(self, 'assignExternalReviewer1') remove(self, 'assignExternalReviewer2') remove(self, 'assignExternalReviewer3') self.hiddenModifySubmission(articleItem)
def removeFields(self, fieldList=[]): for f_name in fieldList: remove(self, f_name)
def updateWidgets(self): super(ArticleEditForm, self).updateWidgets() view = api.content.get_view(name='view', context=self.context, request=self.request) selfBrain = view.getSelfBrain() if len(selfBrain) == 0: return #改label # try: # file = getattr(self.context.getLastChild(), 'file', None) # import pdb; pdb.set_trace() # if file: # filename = getattr(file, 'filename', None) # if filename: #嚴重錯誤,立即修復, 暫時以try處理,再觀查 # import pdb; pdb.set_trace() # url = "%s/@@download/file/%s" % (self.context.getLastChild().absolute_url(), filename) # descriptionString = _(u"Current version:<a href=%s>%s</a>" % (url, filename)) # self.changeFieldDescription( # label='Manuscript file', # fieldName='IAttachedFile.attachFile', # description=descriptionString) # except: # self.changeFieldDescription( # label='Manuscript file', # fieldName='IAttachedFile.attachFile', # description=None) #改label end if 'Site Administrator' in view.getRoles(): # articleItem = selfBrain.getObject() # if 'modifyThenReview' == api.content.get_state(obj=articleItem): label = "Manuscript file" keys = ['IAttachedFile.commentReply'] self.hiddenFields(label=label, mode=None, keys=keys) return currentUserId = api.user.get_current().getId() articleItem = selfBrain.getObject() reviewer_1_id = self.getReviewerId(articleItem.assignExternalReviewer1) reviewer_2_id = self.getReviewerId(articleItem.assignExternalReviewer2) reviewer_3_id = self.getReviewerId(articleItem.assignExternalReviewer3) if articleItem.assignExternalReviewer1 is not None and articleItem.acceptInvit1 != False: label = "Review State" keys = ['assignExternalReviewer1'] self.hiddenFields(label=label, mode="display", keys=keys) if articleItem.assignExternalReviewer2 is not None and articleItem.acceptInvit2 != False: label = "Review State" keys = ['assignExternalReviewer2'] self.hiddenFields(label=label, mode="display", keys=keys) if articleItem.assignExternalReviewer3 is not None and articleItem.acceptInvit3 != False: label = "Review State" keys = ['assignExternalReviewer3'] self.hiddenFields(label=label, mode="display", keys=keys) if currentUserId != reviewer_1_id: # label = "Review State" keys = [ 'acceptOrReject1', 'externalReviewerComment1', 'reviewCommentAttached1', 'IScoreTable.scoreR1Q1', 'IScoreTable.scoreR1Q2', 'IScoreTable.scoreR1Q3', 'IScoreTable.scoreR1Q4', ] self.removeFields(fieldList=keys) if currentUserId != reviewer_2_id: keys = [ 'acceptOrReject2', 'externalReviewerComment2', 'reviewCommentAttached2', 'IScoreTable.scoreR2Q1', 'IScoreTable.scoreR2Q2', 'IScoreTable.scoreR2Q3', 'IScoreTable.scoreR2Q4', ] self.removeFields(fieldList=keys) if currentUserId != reviewer_3_id: label = "Review State" keys = [ 'acceptOrReject3', 'externalReviewerComment3', 'reviewCommentAttached3', 'IScoreTable.scoreR3Q1', 'IScoreTable.scoreR3Q2', 'IScoreTable.scoreR3Q3', 'IScoreTable.scoreR3Q4', ] self.removeFields(fieldList=keys) if articleItem.reviewConfirm1 is None or articleItem.reviewConfirm2 is None: label = "Review State" keys = [ 'assignExternalReviewer3', 'reviewFeedback', 'reviewFeedbackText' ] self.hiddenFields(label=label, mode="hidden", keys=keys) if 'modifyThenReview' == api.content.get_state(obj=articleItem): label = "Manuscript file" keys = ['IAttachedFile.commentReply'] self.hiddenFields(label=label, mode=None, keys=keys) if api.content.get_state( self.context) in ['draft', 'modifyThenReview']: self.dropFieldSet(label='Review State') self.dropFieldSet(label='Score table') elif api.content.get_state(self.context) in [ 'inReview', 'internalAssigned', 'accepted', 'rejected', 'retrial' ]: self.dropFieldSet(label='Manuscript Metadata') self.dropFieldSet(label='Authors') self.dropFieldSet(label='Manuscript file') #if current_user not this article's internalreviewer, remove externalreviewer field. #修正具責編身份者,同時被指定為另一篇論文評審委員的顯示問題 if articleItem.assignInternalReviewer and api.user.get_current().getId( ) != articleItem.assignInternalReviewer.to_object.owner_info()['id']: remove(self, 'assignExternalReviewer1') remove(self, 'assignExternalReviewer2') remove(self, 'assignExternalReviewer3') self.hiddenModifySubmission(articleItem)