Example #1
0
 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
Example #2
0
 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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
    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
Example #7
0
    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
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
 def removeFields(self, fieldList=[]):
     for f_name in fieldList:
         remove(self, f_name)
Example #11
0
    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)
Example #12
0
 def removeFields(self, fieldList=[]):
     for f_name in fieldList:
         remove(self, f_name)
Example #13
0
    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)