def _create_task(self, context, with_docs=False, return_docs=False):

        # task
        task = createContentInContainer(
            context,
            'opengever.task.task',
            title="Task1", task_type='correction',
            checkConstraints=False)
        task.responsible = TEST_USER_ID

        if not with_docs:
            return task

        documents = []
        # containing documents
        documents.append(set_defaults(createContentInContainer(
                task, 'opengever.document.document', title=u'Doc 1')))
        documents.append(set_defaults(createContentInContainer(
                task, 'opengever.document.document', title=u'Doc 2')))

        # related documents
        documents.append(set_defaults(createContentInContainer(
            context, 'opengever.document.document', title=u'Doc 3')))

        documents.append(set_defaults(createContentInContainer(
            context, 'opengever.document.document', title=u'Doc 4')))

        intids = getUtility(IIntIds)
        ITask(task).relatedItems = [
            RelationValue(intids.getId(documents[2]))]

        if return_docs:
            return task, documents
        return task
示例#2
0
    def handleAdd(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        self.checkISBN(data)

        # newEPublication = data.get('epublication_uid') and api.content.get(UID=data['epublication_uid']) \
        #     or self.addEPublication(data)
        newEPublication = self.addEPublication(data)
        newOriginalFile = self.addOriginalFile(newEPublication, data)
        
        # poslat zadost na vygenerovani ohlasovaciho listku - je na to
        # amqp sluzba
        
        if not data.get('epublication_uid'):
            authors = [data[key] for key in ['author1','author2','author3'] if data[key]]
            for author in authors:
                createContentInContainer(newEPublication, 'edeposit.content.author', fullname=author, title=author)

        messages = IStatusMessage(self.request)
        messages.addStatusMessage(u"ePublikace byla ohlášena.", type="info")

        fti = getUtility(IDexterityFTI, name=newOriginalFile.portal_type)
        #returnURL = "/".join([container.absolute_url(), newEPublication.id, newOriginalFile.id, fti.immediate_view])
        self.request.response.redirect(newOriginalFile.absolute_url())
 def test_validateIndexValueUniqueness(self):
     imail1 = createContentInContainer(self.portal, 'dmsincomingmail', **{'internal_reference_no': '12345',
                                                                          'title': 'Test 1'})
     #test with container as context, value doesn't exist
     self.assertEquals(dmsmail.validateIndexValueUniqueness(self.portal, 'dmsincomingmail',
                                                            'internal_reference_number', '54321'), None)
     #test with container as context, value exists
     self.assertRaisesRegexp(Invalid, u"This value is already used", dmsmail.validateIndexValueUniqueness,
                             *[self.portal, 'dmsincomingmail', 'internal_reference_number', '12345'])
     #test with object as context, value doesn't exist
     self.assertEquals(dmsmail.validateIndexValueUniqueness(imail1, 'dmsincomingmail',
                                                            'internal_reference_number', '54321'), None)
     #test with object as context, value exists on the same object
     self.assertEquals(dmsmail.validateIndexValueUniqueness(imail1, 'dmsincomingmail',
                                                            'internal_reference_number', '12345'), None)
     #test with object as context and a sub element in the folder, value exists on the same object
     createContentInContainer(imail1, 'dmsmainfile', **{'title': 'File 1'})
     self.assertEquals(dmsmail.validateIndexValueUniqueness(imail1, 'dmsincomingmail',
                                                            'internal_reference_number', '12345'), None)
     #test with object as context, value exists on a different object too
     imail2 = createContentInContainer(self.portal, 'dmsincomingmail',
                                       **{'internal_reference_no': '12345', 'title': 'Test 2'})
     self.assertRaisesRegexp(Invalid, u"This value is already used", dmsmail.validateIndexValueUniqueness,
                             *[imail2, 'dmsincomingmail', 'internal_reference_number', '12345'])
     #test with empty value
     imail3 = createContentInContainer(self.portal, 'dmsincomingmail',
                                       **{'internal_reference_no': '', 'title': 'Test 2'})
     self.assertEquals(dmsmail.validateIndexValueUniqueness(self.portal, 'dmsincomingmail',
                                                            'internal_reference_number', ''), None)
     self.assertEquals(dmsmail.validateIndexValueUniqueness(imail3, 'dmsincomingmail',
                                                            'internal_reference_number', ''), None)
示例#4
0
    def test_objects_marked_as_BaseDocuments_use_same_counter(self):
        seqNumb = getUtility(ISequenceNumber)
        d1 = createContentInContainer(self.portal, "opengever.document.document")
        b1 = createContentInContainer(self.portal, "SimpleDocument")
        d2 = createContentInContainer(self.portal, "opengever.document.document")

        self.assertEquals([1, 2, 3], [seqNumb.get_number(d1), seqNumb.get_number(b1), seqNumb.get_number(d2)])
示例#5
0
    def addHidewhen(self):
        """ Add a hide-when to the form.
        """
        hidewhenid = self.request.get("hidewhenid", None)
        hidewhenformula = self.request.get("hidewhenformula", '')
        hidewhentype = self.request.get("hidewhentype", 'static')
        isdynamic = hidewhentype=='dynamic',

        # self.context is the current form
        if hidewhenid:
            if not hasattr(self.context, hidewhenid):
                createContentInContainer(
                    self.context,
                    'PlominoHidewhen',
                    title=hidewhenid,
                    id=hidewhenid,
                    formula=hidewhenformula,
                    isDynamicHidewhen=isdynamic,
                )

                self.request.RESPONSE.redirect(self.context.absolute_url() + "/@@tinymceplominoform/valid_page?type=hidewhen&value=" + hidewhenid)

            else:
                self.request.RESPONSE.redirect(self.context.absolute_url() + "/@@tinymceplominoform/error_page?error=object_exists")

        else:
            self.request.RESPONSE.redirect(self.context.absolute_url() + "/@@tinymceplominoform/error_page?error=no_hidewhen")
示例#6
0
def _createCompaniesGroups(home, company, username,
                           mtool, auth_user, request):
    private_group = createContentInContainer(
        home,
        'collective.rcse.group',
        title=translate(_(u"${company}'s private group",
                          mapping={'company': company.title}),
                        context=request
                        )
    )
    private_group.manage_delLocalRoles([auth_user])
    private_group.changeOwnership(mtool.getMemberById(username))
    private_group.manage_setLocalRoles(username, ['Owner'])
    private_group.setCreators([username])
    private_group.reindexObjectSecurity()
    company.private_group = private_group.id
    public_group = createContentInContainer(
        home,
        'collective.rcse.group',
        title=translate(_(u"${company}'s public group",
                          mapping={'company': company.title}),
                        context=request
                        )
    )
    public_group.manage_delLocalRoles([auth_user])
    public_group.changeOwnership(mtool.getMemberById(username))
    public_group.manage_setLocalRoles(username, ['Owner'])
    public_group.setCreators([username])
    public_group.reindexObjectSecurity()
    wtool = getToolByName(company, 'portal_workflow')
    wtool.doActionFor(public_group, 'show_internally')
    company.public_group = public_group.id
def setUp(self):
    layer = self.globs['layer']
    browser = Browser(layer['app'])
    portal = layer['portal']
    self.globs.update({
        'TEST_USER_NAME': TEST_USER_NAME,
        'TEST_USER_PASSWORD': TEST_USER_PASSWORD,
        'browser': browser,
        'portal': portal,
    })
    browser.setBaseUrl(portal.absolute_url())
    browser.handleErrors = True
    portal.error_log._ignored_exceptions = ()

    setRoles(portal, TEST_USER_ID, ['Manager'])

    alsoProvides(portal, IShoppingSiteRoot)
    portal.reindexObject()

    container = createContentInContainer(
        portal, 'collective.cart.core.OrderContainer', checkConstraints=False, id='order-container', title='Örder Cöntäiner')
    modified(container)

    order1 = createContentInContainer(container, 'collective.cart.core.Order', checkConstraints=False, id='1')
    modified(order1)

    transaction.commit()
示例#8
0
    def test_portlet_event_renderer__recurring(self):
        tz = pytz.timezone(TZNAME)
        start = tz.localize(datetime.now()) + timedelta(days=1)

        e1 = createContentInContainer(
            self.portal, PTYPE, id='e1', title='Event 1', start=start,
            recurrence='RRULE:FREQ=WEEKLY;COUNT=10')
        createContentInContainer(
            self.portal, PTYPE, id='e1', title='Event 1', start=start,
            recurrence='RRULE:FREQ=DAILY;COUNT=3')

        self.portal.portal_workflow.doActionFor(e1, 'publish')

        r = self.renderer(
            assignment=portlet_events.Assignment(count=5,
                                                 state=('published',)))
        events = r.events
        self.assertEqual(5, len(events))
        self.assertTrue('Event 2' not in [x.title for x in events])

        rd = r.render()
        occ1dt = start + timedelta(days=7)
        # The first occurrence of the event itself should show up. It should
        # link to the event and not an occurrence.
        self.assertTrue('http://nohost/plone/e1"' in rd)
        # Occurrences should link to the Occurrence.
        self.assertTrue(
            'http://nohost/plone/e1/%s-%02d-%02d' %
            (occ1dt.year, occ1dt.month, occ1dt.day) in rd
        )
 def __call__(self):
     req_file = self.request.get('file')
     c_type = req_file.headers.get('content-type', '')
     file_data = req_file.read()
     file_name = safe_unicode(req_file.filename)
     media_container = self.get_media_container()
     behavior = IRelatedMedia(self.context)
     if c_type.startswith("image/"):
         blob = NamedBlobImage(data=file_data, filename=file_name)
         img = createContentInContainer(
             media_container, "Image", image=blob)
         # safe image as leadImage if none exists
         if ILeadImage.providedBy(self.context) and \
            ILeadImage(self.context).image is None:
             ILeadImage(self.context).image = blob
         else:
             to_id = self.intids.getId(img)
             imgs = behavior.related_images and \
                 list(behavior.related_images) or []
             imgs.append(RelationValue(to_id))
             behavior.related_images = imgs
     else:
         blob = NamedBlobFile(data=file_data, filename=file_name)
         att = createContentInContainer(media_container, "File", file=blob)
         to_id = self.intids.getId(att)
         atts = behavior.related_attachments and \
             list(behavior.related_attachments) or []
         atts.append(RelationValue(to_id))
         behavior.related_attachments = atts
     return json.dumps(dict(
         status=u"done",
     ))
示例#10
0
def createDocument(context, folder, portal_type, title, file_object, owner=None, metadata=None):
    if owner is None:
        owner = api.user.get_current().id

    if not metadata:
        metadata = {}

    if 'title' not in metadata and title:
        metadata['title'] = title

    if portal_type == 'dmsincomingmail':
        if 'internal_reference_no' not in metadata:
            metadata['internal_reference_no'] = internalReferenceIncomingMailDefaultValue(context)
        if 'reception_date' not in metadata:
            metadata['reception_date'] = receptionDateDefaultValue(context)
    elif portal_type == 'dmsoutgoingmail':
        if 'internal_reference_no' not in metadata:
            metadata['internal_reference_no'] = internalReferenceOutgoingMailDefaultValue(context)

    file_title = _('Scanned Mail')
    if 'file_title' in metadata:
        file_title = metadata['file_title']
        del metadata['file_title']

    with api.env.adopt_user(username=owner):
        document = createContentInContainer(folder, portal_type, **metadata)
        log.info('document has been created (id: %s)' % document.id)

        if IDeadline and IDeadline.providedBy(document):
            document.deadline = deadlineDefaultValue(None)

        version = createContentInContainer(document, 'dmsmainfile', title=file_title,
                                           file=file_object)
        log.info('file document has been created (id: %s)' % version.id)
        return (document, version)
示例#11
0
    def test_extended_path_index_depth_limiting(self):
        lvl1 = createContentInContainer(self.portal, u'Folder', id=u'lvl1')
        lvl2 = createContentInContainer(lvl1, u'Folder', id=u'lvl2')
        createContentInContainer(lvl2, u'Folder', id=u'lvl3')
        transaction.commit()

        path = '/plone/lvl1'

        # Depth 0 - only object identified by path
        query = {'path.query': path, 'path.depth': 0}
        response = self.api_session.get('/search', params=query)

        self.assertEqual(
            [u'/plone/lvl1'],
            result_paths(response.json()))

        # Depth 1 - immediate children
        query = {'path.query': path, 'path.depth': 1}
        response = self.api_session.get('/search', params=query)

        self.assertEqual(
            [u'/plone/lvl1/lvl2'],
            result_paths(response.json()))

        # No depth - object itself and all children
        query = {'path': path}
        response = self.api_session.get('/search', params=query)

        self.assertSetEqual(
            {u'/plone/lvl1', u'/plone/lvl1/lvl2', u'/plone/lvl1/lvl2/lvl3'},
            set(result_paths(response.json())))
    def create_order(self, order_id=None):
        """Create order into order container from cart in session

        :param order_id: Order ID
        :type order_id: str

        :rtype: collective.cart.core.Order
        """
        container = self.order_container()
        articles = self.cart_articles()
        if container and articles:
            if order_id is None:
                order_id = str(container.next_order_id)
            order = createContentInContainer(
                container, "collective.cart.core.Order", id=order_id, checkConstraints=False
            )
            modified(order)
            self.update_next_order_id()
            for uuid in articles:
                article = createContentInContainer(
                    order, "collective.cart.core.OrderArticle", checkConstraints=False, **articles[uuid]
                )
                modified(article)

            return order
示例#13
0
文件: styles.py 项目: upiq/uu.chart
 def update_mimic(self, *args, **kwargs):
     req = self.request
     mimic = req.get('existing-charts', None)
     mimic = self.context.get(mimic, None)
     if not mimic:
         self.status.addStatusMessage(
             'Unable to locate existing chart',
             type='warning'
             )
         return
     linecount = len(mimic.objectIds())
     title = self._stylebook_title()
     stylebook = createContentInContainer(
         self.context,
         STYLEBOOK_TYPE,
         title=title,
         )
     for i in range(linecount):
         createContentInContainer(
             stylebook,
             LINESTYLE_TYPE,
             title=u'Line style %s' % i + 1,
             )
     clone_chart_styles(source=mimic, target=stylebook)
     self._contained = self._stylebooks = None  # un-cache now outdated
     self.status.addStatusMessage(
         'Created a new stylebook "%s" based on styles of existing chart '
         '"%s".' % (title, mimic.Title()),
         type='info',
         )
示例#14
0
def loadSecretome(portal):
    if portal._p_jar is not None and isinstance(portal._p_jar.db()._storage, DemoStorage):
        # Don't bother if we're just testing
        return
    try:
        resources = portal['resources']
    except KeyError:
        resources = portal[portal.invokeFactory('Folder', 'resrouces')]
        resources.title = u'Resources'
    try:
        secretome = resources['secretome']
    except KeyError:
        secretome = createContentInContainer(resources, 'eke.secretome.secretomefolder', title=u'Secretome')
    ids = secretome.keys()
    if len(ids) > 0:
        secretome.manage_delObjects(list(ids))
    with pkg_resources.resource_stream(__name__, 'data/uniqueIDs.csv') as infile:
        rows = csv.DictReader(infile)
        for row in rows:
            probesetID, hgnc, timesMapped = row['hgu133plus2ID'], row['HGNC.symbol'], int(row['times.mapped.to'])
            databases = row['databases.foundin'].split(u'|')
            _logger.info('Creating probeset %s', probesetID)
            createContentInContainer(
                secretome,
                'eke.secretome.probeset',
                title=probesetID,
                hgncSymbol=hgnc,
                databaseNames=databases,
                timesMapped=timesMapped
            )
    transaction.commit()
    with pkg_resources.resource_stream(__name__, 'data/mappedIDs.csv') as infile:
        rows = csv.DictReader(infile)
        mappings = {}
        class Mapping(object):
            def __init__(self):
                self.databases, self.probesets = set(), set()
        for row in rows:
            database, gene, probesets = row['database'], row['beforemapping'], row['hgu133plus2.ID']
            if probesets == 'none':
                probesets = set()
            else:
                probesets = set(probesets.split(u'|'))
            mapping = mappings.get(gene, Mapping())
            mapping.databases.add(database)
            mapping.probesets = mapping.probesets | probesets
            mappings[gene] = mapping
        for gene, mapping in mappings.iteritems():
            _logger.info('Creating gene/protein %s', gene)
            createContentInContainer(
                secretome,
                'eke.secretome.geneprotein',
                title=gene,
                databaseNames=list(mapping.databases),
                probesetMappings=list(mapping.probesets)
            )
    transaction.commit()
    _logger.info('Publishing everything')
    publish(resources)
    transaction.commit()
    def test_integration_mail_events(self):
        """ Trigger every event of a mail at least one times
        and check the journalentries.
        """
        portal = self.layer['portal']

        dossier = createContentInContainer(
            portal, 'opengever.dossier.businesscasedossier', 'd1')

        fti = getUtility(IDexterityFTI, name='ftw.mail.mail')
        schema = fti.lookupSchema()
        field_type = getFields(schema)['message']._type
        msgtxt = 'Subject: mail-test\n'

        mail = createContentInContainer(
            dossier, 'ftw.mail.mail',
            message=field_type(data=msgtxt,
                contentType=u'message/rfc822', filename=u'attachment.txt'))

        # The journal of a mail is always on the parents dossier and not
        # on the mail
        self.check_annotation(
            dossier,
            action_type='Mail added',
            action_title='Mail added: %s' % mail.title_or_id(),
            check_entry=-2, )
示例#16
0
    def update(self):
        try:
            from plone.protect.interfaces import IDisableCSRFProtection
            alsoProvides(self.request, IDisableCSRFProtection)
        except:
            pass
        if self.request.environ['REQUEST_METHOD'] == 'POST':
            portal = api.portal.get()
            folder_name = self.request.get("folder")
            local_file = self.request.get("local_file")

            f = open(local_file, 'r')
            content = f.read()
            f.close()

            for folder_name_part in folder_name.split('/'):
                if portal.get(folder_name_part) is None:
                    makeFolder(portal, folder_name_part)
                portal = portal.get(folder_name_part)

            file = NamedBlobFile(
                data=content,
                filename=u'{}'.format(local_file),
                contentType='application/xls'
            )
            createContentInContainer(
                portal,
                'AppFile',
                id='{}'.format(local_file.split('/')[-1]),
                title='{}'.format(local_file.split('/')[-1]),
                file=file,
                checkConstraints=False
            )
示例#17
0
    def _find_container(self, industry_cluster, industry_cluster_title,
                        job_grouping, job_grouping_title):
        site = getSite()
        if not 'cluster' in site.keys():
            site.invokeFactory(type_name='Folder', id='cluster')
            obj = site['cluster']
            obj.setTitle('Clusters')
            obj.reindexObject()
        repo = site['cluster']
        if not repo.has_key(industry_cluster):
            obj = createContentInContainer(repo, 
                    'dkiscm.jobmatrix.industrycluster',
                    title=industry_cluster
            )
            obj.setTitle(industry_cluster_title)
            obj.reindexObject()
        cluster = repo[industry_cluster]

        if not cluster.has_key(job_grouping):
            obj = createContentInContainer(cluster,
                    'dkiscm.jobmatrix.jobgroup',
                    title=job_grouping
            )
            obj.setTitle(job_grouping_title)
            obj.reindexObject()
        container = cluster[job_grouping]
        return container
    def test_registering_translation(self):
        a_ca = createContentInContainer(self.portal["ca"], "Document", title=u"Test document")

        b_ca = createContentInContainer(self.portal["ca"], "Document", title=u"Test document")

        transaction.commit()

        # Register translation
        self.browser.open(a_ca.absolute_url() + "/add_translations")
        self.assertEqual(self.browser.getControl(name="form.widgets.language:list").options, ["en", "es"])

        # Fill in form
        form = self.browser.getForm(index=1)
        form.mech_form.new_control(
            type="radio",
            name="form.widgets.content:list",
            attrs=dict(checked="checked", value="%s" % "/".join(b_ca.getPhysicalPath()), id="form-widgets-content-0"),
        )
        self.browser.getControl(name="form.widgets.language:list").value = ["en"]
        self.browser.getControl(name="form.buttons.add_translations").click()

        # Language is removed from nontranslated languages
        self.assertEqual(self.browser.getControl(name="form.widgets.language:list").options, ["es"])

        # And translation can be unregistered
        self.browser.open(a_ca.absolute_url() + "/remove_translations")
        self.assertEqual(self.browser.getControl(name="form.widgets.languages:list").value, ["en"])
示例#19
0
def addedEPeriodicalPartsFolder(context, event):
    periodicity = context.aq_parent.cetnost_vydani
    nums = getNumOfPartsAYear(periodicity)
    for num in range(1,nums+1):
        title = getPeriodicityLabel(num)
        createContentInContainer(context, 'edeposit.content.eperiodicalpart', title=title)
    pass
    def test_update_all_categorized_elements(self):
        document1 = createContentInContainer(
            container=self.portal,
            portal_type='Document',
            title='doc1',
            content_category='config_-_group-1_-_category-1-1',
            to_print=False,
            confidential=False,
        )
        document1UID = document1.UID()
        document2 = createContentInContainer(
            container=self.portal,
            portal_type='Document',
            title='doc2',
            content_category='config_-_group-1_-_category-1-1',
            to_print=False,
            confidential=False,
        )
        document2UID = document2.UID()
        self.assertEqual(len(self.portal.categorized_elements), 2)
        self.assertTrue(document1UID in self.portal.categorized_elements)
        self.assertTrue(document2UID in self.portal.categorized_elements)
        self.portal.categorized_elements = OrderedDict()
        self.assertEqual(len(self.portal.categorized_elements), 0)
        utils.update_all_categorized_elements(self.portal)
        self.assertEqual(len(self.portal.categorized_elements), 2)
        self.assertTrue(document1UID in self.portal.categorized_elements)
        self.assertTrue(document2UID in self.portal.categorized_elements)

        # if a content_category is wrong, element is no more stored in categorized_elements
        document1.content_category = 'some_wrong_category_id'
        utils.update_all_categorized_elements(self.portal)
        self.assertEqual(len(self.portal.categorized_elements), 1)
        self.assertTrue(document2UID in self.portal.categorized_elements)
    def testCloneNamedFileBlobsInSchema(self):
        file_fti = DexterityFTI(
            'BlobFile',
            model_source="""
            <model xmlns="http://namespaces.plone.org/supermodel/schema">
                <schema>
                    <field name="file" type="plone.namedfile.field.NamedBlobFile">
                        <title>File</title>
                        <required>True</required>
                    </field>
                </schema>
            </model>
        """)
        self.portal.portal_types._setObject('BlobFile', file_fti)

        file1 = createContentInContainer(self.portal, 'BlobFile')
        file1.file = NamedBlobFile('dummy test data', filename=u'test.txt')
        modifier = CloneNamedFileBlobs('modifier', 'Modifier')
        attrs_dict = modifier.getReferencedAttributes(file1)
        self.assertTrue(
            'plone.dexterity.schema.generated.plone_0_BlobFile.file'
            in attrs_dict)
        blob = attrs_dict.values()[0]
        self.assertTrue(IBlob.providedBy(blob))

        file2 = createContentInContainer(self.portal, 'BlobFile')
        file2.file = NamedBlobFile('dummy test data', filename=u'test.txt')
        modifier.reattachReferencedAttributes(file2, attrs_dict)
        self.assertTrue(file2.file._blob is blob)
 def __call__(self):
     """
     Return the view template; handle form posts
     """
     add_another_question = False
     if self.request.method == 'POST':
         questions = []
         items = self.request.form.items()  # XXX Why not use .get()?
         for item, text in items:  # Add another question?
             if item != 'new-question':  # No
                 questions.append((item, text))
             else:  # Yes
                 add_another_question = True
         security_manager = getSecurityManager()
         userid = security_manager.getUser().getId()
         annotation = createContentInContainer(
             self.context, 'annotation', title='%s-annotation' % userid)
         for uid, text in questions:  # Process questions
             if text is not '':
                 question = uuidToObject(uid)
                 question = question.Title()
                 title = "Response to %s"
                 response = createContentInContainer(
                     annotation, 'response', title=title % question)
                 storage = IStorage(response)
                 storage[uid] = question
                 response.description = text
         if add_another_question:
             portal = self.context.portal_url()
             self.request.response.redirect("%s/++add++question" % portal)
     return self.artifact_view()
    def test_modify_translations_delete(self):
        createContentInContainer(
            self.portal['ca'], 'Folder', title=u"Test folder")

        a_ca = createContentInContainer(
            self.portal['ca']['test-folder'],
            'Document', title=u"Test document")

        a_en = api.translate(a_ca, 'en')

        view = a_en.restrictedTraverse('modify_translations')()
        self.assertIn(
            'href="http://nohost/plone/ca/test-folder/test-document/delete_confirmation" '  # noqa§
            'title="Delete translated item"',
            view,
            'modify_translations was missing delete link for translation'
        )

        # Test https://github.com/plone/plone.app.multilingual/pull/283
        self.assertNotIn(
            'href="http://nohost/plone/en/test-document/delete_confirmation" '  # noqa§
            'title="Delete translated item"',
            view,
            'modify_translations contained delete link for the context'
        )
示例#24
0
 def test_create_richtextval(self):
     imail = createContentInContainer(self.portal['incoming-mail'], 'dmsincomingmail',
                                      task_description=create_richtextval('Text content'))
     self.assertEqual(imail.task_description.output, 'Text content')
     imail = createContentInContainer(self.portal['incoming-mail'], 'dmsincomingmail',
                                      task_description=create_richtextval(u'Text content'))
     self.assertEqual(imail.task_description.output, 'Text content')
示例#25
0
 def test_AssignedGroupColumn(self):
     registry = getUtility(IRegistry)
     group0 = registry[ORGANIZATIONS_REGISTRY][0]
     imail = createContentInContainer(self.portal['incoming-mail'], 'dmsincomingmail')
     task = createContentInContainer(imail, 'task', id='testid1', assigned_group=group0)
     col = AssignedGroupColumn(self.portal, self.portal.REQUEST, None)
     self.assertEqual(col.renderCell(task).encode('utf8'), "Direction générale")
    def test_integration_task_events(self):
        """ Trigger every event of a task at least one times
        and check the journalentries.
        """
        portal = self.layer['portal']

        dossier = createContentInContainer(
            portal, 'opengever.dossier.businesscasedossier', 'd1')

        # Add-Event
        task = createContentInContainer(
            dossier, 'opengever.task.task', 'd1')

        self.check_annotation(
            dossier,
            action_type='Task added',
            action_title='Task added: %s' % task.title_or_id(),
            check_entry=-2, )

        # Modified-Event
        notify(ObjectModifiedEvent(task))
        self.check_annotation(
            dossier,
            action_type='Task modified',
            action_title='Task modified: %s' % task.title_or_id(), )
    def test_relations_with_RelationValue_objects(self):
        foo = createContentInContainer(self.portal, 'ExampleDxType', title=u'Foo')
        source = createContentInContainer(self.portal, 'ExampleDxType', title=u'Item')
        IRelatedItems(source).relatedItems = [utils.create_relation_for(foo)]

        data = self._get_field_data(source, json=True)
        target = createContentInContainer(self.portal, 'ExampleDxType')
        self._set_field_data(target, data, json=True)
        self.assertEquals(1, len(target.relatedItems),
                          'Relation missing')

        self._set_field_data(target, data, json=True)
        self.assertEquals(1, len(target.relatedItems),
                          'Publishing twice should not add more relations.')

        relation, = target.relatedItems
        self.assertEquals(foo, relation.to_object)

        # Test that the relation is in the catalog.
        catalog = getUtility(ICatalog)
        intids = getUtility(IIntIds)

        target_id = intids.getId(aq_inner(target))
        foo_id = intids.getId(aq_inner(foo))

        relations = tuple(catalog.findRelations({'from_id': target_id, 'to_id': foo_id}))
        self.assertEqual(1, len(relations))
        self.assertEqual(
            target,
            intids.queryObject(relations[0].from_id)
        )
        self.assertEqual(
            foo,
            intids.queryObject(relations[0].to_id)
        )
 def setUp(self):
     self.portal = self.layer['portal']
     self.folder = createContentInContainer(
         self.portal['ca'], 'Folder', title=u"Folder")
     self.document = createContentInContainer(
         self.portal['ca'], 'Document', title=u"Document")
     self.request = self.layer['request']
    def handleOk(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        data['title'] = '%s %s - One-time Offline Donation' % (
            data['first_name'],
            data['last_name'])
        data['secret_key'] = build_secret_key()
        data['stage'] = 'Pledged'
        data['products'] = []
        data['campaign_sf_id'] = self.context.sf_object_id
        data['payment_date'] = datetime.date.today()
        data['transaction_id'] = 'offline:' + data['secret_key']
        data['offline'] = True

        # Add a donation in the current context,
        # using the data from the form
        parent_campaign = self.context
        createContentInContainer(
            parent_campaign,
            'collective.salesforce.fundraising.donation',
            checkConstraints=False, **data)

        # Add the donation to the campaign totals
        # self.context.add_donation(data['amount'])

        IStatusMessage(self.request).add(u'Your offline gift was entered and '
                                         'will be counted in your total '
                                         'raised. The gift and donor contact '
                                         'information will appear in '
                                         '"My Donors" shortly.')
        self.request.response.redirect(parent_campaign.absolute_url())
示例#30
0
    def __call__(self):
        #from Products.ATContentTypes.content.base import ATCTFolder

        #self.stub("sbo.inkstain.content.guestbook.Guestbook", "Guestbook", ATCTFolder)

        old_path = self.request.form.get('old', "")
        portal_url = getToolByName(self.context, "portal_url")
        portal = portal_url.getPortalObject()
        old_guestbook = portal.restrictedTraverse(old_path)
        entries = old_guestbook.objectValues()
        entries.sort(key=lambda entry: entry.date)

        for entry in entries:
            date = entry.date.asdatetime()
            date = date.replace(tzinfo=None)
            createContentInContainer(self.context, 'sbo.inkstain.guestbookentry',
                entry_date=date,
                author=entry.name,
                email_address=entry.email_address,
                homepage_address=entry.homepage_address,
                message=entry.message,
                moderation_state='published',
                ip='unknown'
            )
        self.request.response.redirect(self.context.absolute_url())
        return ''
示例#31
0
 def setUp(self):
     self.portal = self.layer["portal"]
     self.portal_url = self.portal.absolute_url()
     self.request = self.layer["request"]
     alsoProvides(self.layer["request"], IPloneAppMultilingualInstalled)
     login(self.portal, SITE_OWNER_NAME)
     self.es_content = createContentInContainer(self.portal["es"],
                                                "Document",
                                                title=u"Test document")
     transaction.commit()
示例#32
0
    def __call__(self):
        req_file = self.request.get("file")
        c_type = req_file.headers.get("content-type", "")
        file_data = req_file.read()
        file_name = safe_unicode(req_file.filename)
        media_container = get_media_root(self.context)
        behavior = self.behavior

        if not behavior:
            return json.dumps(
                dict(
                    status=u"error",
                    message=u"IRelatedMedia behavior not activated for this context",
                )
            )

        intids = getUtility(IIntIds)

        if c_type.startswith("image/"):
            blob = NamedBlobImage(data=file_data, filename=file_name)
            img = createContentInContainer(media_container, "Image", image=blob)
            to_id = intids.getId(img)
            imgs = behavior.related_images and list(behavior.related_images) or []
            imgs.append(RelationValue(to_id))
            behavior.related_images = imgs
            update_leadimage(self.context, None)
        else:
            blob = NamedBlobFile(data=file_data, filename=file_name)
            att = createContentInContainer(media_container, "File", file=blob)
            to_id = intids.getId(att)
            atts = (
                behavior.related_attachments
                and list(behavior.related_attachments)
                or []
            )
            atts.append(RelationValue(to_id))
            behavior.related_attachments = atts

        return json.dumps(
            dict(
                status=u"done",
            )
        )
示例#33
0
 def _upload_file(self, document, obj_file):
     extra_data = self._upload_file_extra_data()
     new_file = createContentInContainer(
         document,
         self.creation_file_portal_type,
         title=self.metadata.get('file_title'),
         file=obj_file,
         **extra_data
     )
     return new_file
示例#34
0
 def setUp(self):
     from plone.dexterity.utils import createContentInContainer
     portal = self.layer['portal']
     data = {
         'id':
         'example-roster',
         'groups': [
             u'Title only',
             u'Alfa|Alfa coders',
             u'Beta|Beta testers',
             u'gamma-tester|Gamma Tester',
             u'delta tester|Delta Tester',
         ]
     }
     createContentInContainer(portal,
                              'collective.roster.roster',
                              checkConstraints=False,
                              **data)
     self.roster = portal['example-roster']
    def test_accessors(self):
        """Test title and descprition accessors."""
        self.grant('Contributor')

        portal = self.layer['portal']
        d1 = createContentInContainer(
            portal, 'opengever.dossier.businesscasedossier',
            title=u'Test title', description=u'Lorem ipsum')
        self.assertEquals(d1.Title(), 'Test title')
        self.assertEquals(d1.Description(), 'Lorem ipsum')
示例#36
0
    def setUp(self):
        self.portal = self.layer['portal']
        self.request = self.layer['request']
        self.catalog = getToolByName(self.portal, 'portal_catalog')

        self.doc1 = createContentInContainer(self.portal,
                                             u'DXTestDocument',
                                             id=u'doc1',
                                             title=u'Lorem Ipsum',
                                             description=u'Description')
示例#37
0
    def test_indexer_picks_correct_doc_indexer_adapter_by_default(self):
        sample_file = NamedBlobFile('foo', filename=u'test.txt')
        doc1 = createContentInContainer(self.portal,
                                        'opengever.document.document',
                                        title=u"Doc One",
                                        document_author=u'Hugo Boss',
                                        file=sample_file)

        fulltext_indexer = getAdapter(doc1, IDocumentIndexer)
        self.assertEquals(fulltext_indexer.__class__, DefaultDocumentIndexer)
示例#38
0
 def test_move_children(self):
     from plone.dexterity.utils import createContentInContainer
     self.loginAsPortalOwner()
     survey = self.create_survey()
     question = createContentInContainer(survey, 'euphorie.profilequestion')
     question.invokeFactory('euphorie.risk', '3')
     question.invokeFactory('euphorie.risk', '2')
     question.invokeFactory('euphorie.risk', '4')
     module = self._convert_to_module(question)
     self.assertEqual(module.keys(), ['3', '2', '4'])
示例#39
0
    def setUp(self):
        super(TestBatchingCollections, self).setUp()

        folder = createContentInContainer(self.portal, u'Folder', id=u'folder')

        for i in range(5):
            self._create_doc(folder, i)

        collection = createContentInContainer(self.portal,
                                              u'Collection',
                                              id='collection')
        collection.query = [
            {
                "i": "path",
                "o": "plone.app.querystring.operation.string.path",
                "v": "/plone/folder/"
            },
        ]
        transaction.commit()
示例#40
0
    def setUp(self):
        super(TestBatchingSearch, self).setUp()

        folder = createContentInContainer(
            self.portal, u'Folder',
            id=u'folder')

        for i in range(5):
            self._create_doc(folder, i)
        transaction.commit()
    def setUp(self):
        self.app = self.layer['app']
        self.portal = self.layer['portal']
        self.portal_url = self.portal.absolute_url()
        setRoles(self.portal, TEST_USER_ID, ['Manager'])

        self.api_session = RelativeSession(self.portal_url)
        self.api_session.headers.update({'Accept': 'application/json'})
        self.api_session.auth = (SITE_OWNER_NAME, SITE_OWNER_PASSWORD)

        self.folder = createContentInContainer(self.portal,
                                               u'Folder',
                                               id=u'folder',
                                               title=u'Some Folder')
        createContentInContainer(self.folder,
                                 u'Document',
                                 id=u'doc1',
                                 title=u'A document')
        transaction.commit()
示例#42
0
    def test_copied_to_assets_folder(self):
        """When an object is copied from within one Language Root Folder into
        the Language Independent Folder (named 'Assets') it becomes language
        independent, and it should be visible from the assets folder accessed
        from within other Language Root Folders
        """
        a_ca = createContentInContainer(self.portal['ca'],
                                        'Document',
                                        title=u"Test document")

        # Test a paste into a subfolder to be ultra cautious
        ca_assets_subfolder = createContentInContainer(
            self.portal['ca']['assets'], 'Folder', title=u"A Folder")

        subfolder_name = ca_assets_subfolder.id
        id_ = self.portal['ca'].manage_copyObjects(a_ca.id)
        ca_assets_subfolder.manage_pasteObjects(id_)

        # Get both assets folders afresh
        ca_assets_subfolder = self.portal['ca']['assets'][subfolder_name]
        en_assets_subfolder = self.portal['en']['assets'][subfolder_name]

        # Check it is in both folder listings
        self.assertTrue(a_ca.id in ca_assets_subfolder)
        self.assertTrue(a_ca.id in en_assets_subfolder)

        # Check it is language independent
        copy_in_en = en_assets_subfolder[a_ca.id]
        self.assertEqual(ILanguage(copy_in_en).get_language(), '')
        copy_in_ca = ca_assets_subfolder[a_ca.id]
        self.assertEqual(ILanguage(copy_in_ca).get_language(), '')

        # Check it is returned in catalog search
        catalog = getToolByName(self.portal, 'portal_catalog')

        ca_subfolder_path = '/'.join(ca_assets_subfolder.getPhysicalPath())
        ca_folder_contents = [r.id for r in catalog(path=ca_subfolder_path)]
        self.assertTrue(a_ca.id in ca_folder_contents)

        en_subfolder_path = '/'.join(en_assets_subfolder.getPhysicalPath())
        en_folder_contents = [r.id for r in catalog(path=en_subfolder_path)]
        self.assertTrue(a_ca.id in en_folder_contents)
示例#43
0
    def test_navigation_expanded_with_depth(self):
        createContentInContainer(
            self.portal, u"Folder", id=u"folder2", title=u"Some Folder 2"
        )
        subfolder1 = createContentInContainer(
            self.folder, u"Folder", id=u"subfolder1", title=u"SubFolder 1"
        )
        createContentInContainer(
            self.folder, u"Folder", id=u"subfolder2", title=u"SubFolder 2"
        )
        thirdlevelfolder = createContentInContainer(
            subfolder1, u"Folder", id=u"thirdlevelfolder", title=u"Third Level Folder"
        )
        createContentInContainer(
            thirdlevelfolder,
            u"Folder",
            id=u"fourthlevelfolder",
            title=u"Fourth Level Folder",
        )
        createContentInContainer(
            self.folder, u"Document", id=u"doc1", title=u"A document"
        )
        transaction.commit()

        response = self.api_session.get(
            "/folder", params={"expand": "navigation", "expand.navigation.depth": 3}
        )

        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()["@components"]["navigation"]["items"]), 3)
        self.assertEqual(
            len(response.json()["@components"]["navigation"]["items"][1]["items"]),
            3,  # noqa
        )
        self.assertEqual(
            len(
                response.json()["@components"]["navigation"]["items"][1]["items"][0][
                    "items"
                ]
            ),
            1,  # noqa
        )
示例#44
0
    def test_move_content_existing_translation_inside(self):
        f_ca = createContentInContainer(self.portal['ca'],
                                        'Folder',
                                        title=u"Test folder")

        a_ca = createContentInContainer(self.portal['ca']['test-folder'],
                                        'Document',
                                        title=u"Test document")

        a_en = api.translate(a_ca, 'en')
        translations = ITranslationManager(self.portal['en'][a_en.id])
        self.assertEqual(
            translations.get_translations(), {
                'ca': self.portal['ca'][f_ca.id][a_ca.id],
                'en': self.portal['en'][a_ca.id]
            })

        self.assertIn(a_en.id, self.portal['en'].objectIds())
        self.assertEqual(a_en, self.portal['en'][a_en.id])

        # Change the content language of the created folder to 'en'
        multilingualMoveObject(f_ca, 'en')

        self.assertIn(f_ca.id, self.portal['en'].objectIds())
        self.assertEqual(f_ca, self.portal['en'][f_ca.id])

        self.assertIn(a_ca.id, self.portal['en'][f_ca.id].objectIds())
        self.assertEqual(a_ca, self.portal['en'][f_ca.id][a_ca.id])

        adapter = ILanguage(self.portal['en'][f_ca.id])
        self.assertEqual(adapter.get_language(), 'en')

        adapter = ILanguage(self.portal['en'][f_ca.id][a_ca.id])
        self.assertEqual(adapter.get_language(), 'en')

        translations = ITranslationManager(self.portal['en'][f_ca.id][a_ca.id])
        self.assertEqual(translations.get_translations(),
                         {'en': self.portal['en'][f_ca.id][a_ca.id]})

        translations = ITranslationManager(self.portal['en'][a_en.id])
        self.assertEqual(translations.get_translations(),
                         {'en': self.portal['en'][a_en.id]})
示例#45
0
 def populate_multimeasure_chart(self, measures, datasets):
     """
     Given UID lists of measures, datasets, create one multi-measure
     chart.
     """
     _value = lambda key: self.request.get(key)
     title = _value('onechart-title')
     if title is None:
         msg = u'You must provide a title for a multi-measure chart.'
         self.status.addStatusMessage(msg, type='error')
         return
     if not measures:
         msg = u'You must select at least one measure'
         self.status.addStatusMessage(msg, type='error')
         return
     kw = self._multi_measure_chart_info()
     chart = createContentInContainer(self.context, **kw)
     self._set_date_settings(chart)
     for measure_uid, ds_uid in itertools.product(measures, datasets):
         m_title = _value('title-%s' % measure_uid)
         ds_title = _value('title-%s' % ds_uid)
         if not m_title and ds_title:
             msg = u'You must provide legend label information for measure'\
                   u'and dataset.'
             self.status.addStatusMessage(msg, type='error')
             return
         legend_label = '%s -- %s' % (ds_title, m_title)
         series_info = {
             'title': legend_label,
             'portal_type': MEASURESERIES_DATA,
         }
         mseries = createContentInContainer(chart, **series_info)
         mseries.measure = measure_uid
         mseries.dataset = ds_uid
         mseries.display_precision = kw.get('display_precision', 1)
         mseries.reindexObject()
     self.status.addStatusMessage(
         'Created a multi-measure chart with %s series and %s '
         'data-sets' % (len(measures), len(datasets)),
         type='info',
     )
     return chart
示例#46
0
    def setUp(self):
        super(TestAttachmentExtraction, self).setUp()

        self.grant('Owner', 'Editor', 'Contributor', 'Manager')

        self.dossier = createContentInContainer(
            self.portal,
            'opengever.dossier.businesscasedossier',
            title=u'Dossier 1')

        transaction.commit()
示例#47
0
    def test_full_text_indexing_with_plain_text(self):
        sample_file = NamedBlobFile('foobar barfoo', filename=u'test.txt')
        doc1 = createContentInContainer(self.portal,
                                        'opengever.document.document',
                                        title=u"Doc One",
                                        document_author=u'Hugo Boss',
                                        file=sample_file)

        searchable_text = index_data_for(doc1).get('SearchableText')
        self.assertIn('foobar', searchable_text)
        self.assertIn('barfoo', searchable_text)
    def setUpPartiallyTranslatedContent(self):
        wftool = getToolByName(self.portal, 'portal_workflow')

        f_en = createContentInContainer(
            self.portal['en'], 'Folder', title=u"Test folder"
        )
        wftool.doActionFor(f_en, 'publish')

        a_en = createContentInContainer(
            self.portal['en']['test-folder'],
            'Document',
            title=u"Test document",
        )
        wftool.doActionFor(a_en, 'publish')

        f_ca = api.translate(f_en, 'ca')
        f_ca.setTitle(u"Test folder CA")
        wftool.doActionFor(f_ca, 'publish')

        transaction.commit()
示例#49
0
    def test_all_translation_links_are_shown(self):
        a_ca = createContentInContainer(self.portal['ca'],
                                        'Document',
                                        title=u"Test document")

        transaction.commit()

        self.browser.open(a_ca.absolute_url())
        self.assertIn('plone-contentmenu-multilingual', self.browser.contents)
        self.assertIn('translate_into_es', self.browser.contents)
        self.assertIn('translate_into_en', self.browser.contents)
示例#50
0
    def test_shared_content(self):
        # Create shared document
        createContentInContainer(self.portal.en.assets,
                                 'Document',
                                 title=u"Test document")

        # Check shared document is there
        self.assertEqual(self.portal.en.assets['test-document'],
                         self.portal.ca.recursos['test-document'])
        self.assertEqual(self.portal.en.assets['test-document'],
                         self.portal.es.recursos['test-document'])

        # Delete shared document
        notify(ObjectWillBeRemovedEvent(
            self.portal.en.assets['test-document']))
        self.portal.en.assets.manage_delObjects('test-document')

        # Check that it is not available in LRFs
        self.assertNotIn('test-document', self.portal.ca.recursos.objectIds())
        self.assertNotIn('test-document', self.portal.es.recursos.objectIds())
示例#51
0
    def test_content_in_folders_can_be_translated(self):
        af_ca = createContentInContainer(
            self.portal['ca'], 'Folder', title=u"Test folder")

        b_ca = createContentInContainer(
            self.portal['ca']['test-folder'],
            'Document', title=u"Test document")

        transaction.commit()

        self.browser.open(af_ca.absolute_url() + '/' + b_ca.id +
                          '/@@create_translation?language=en')

        self.browser.getControl(
            name="form.widgets.IDublinCore.title").value = u"Test folder"
        self.browser.getControl(name="form.buttons.save").click()

        self.portal._p_jar.sync()

        self.assertIn('test-folder', self.portal['en'].objectIds())
示例#52
0
    def test_full_objects_retrieval_collections(self):
        self.collection = createContentInContainer(self.folder,
                                                   u"Collection",
                                                   id="collection")
        transaction.commit()

        query = {"portal_type": "Collection", "fullobjects": True}
        response = self.api_session.get("/@search", params=query)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(len(response.json()["items"]), 1)
示例#53
0
    def setUp(self):
        self.app = self.layer['app']
        self.portal = self.layer['portal']
        self.portal_url = self.portal.absolute_url()
        setRoles(self.portal, TEST_USER_ID, ['Manager'])

        self.api_session = RelativeSession(self.portal_url)
        self.api_session.headers.update({'Accept': 'application/json'})
        self.api_session.auth = (SITE_OWNER_NAME, SITE_OWNER_PASSWORD)

        alsoProvides(self.layer['request'], IPloneAppMultilingualInstalled)
        login(self.portal, SITE_OWNER_NAME)
        self.en_content = createContentInContainer(
            self.portal['en'], 'Document', title=u'Test document')
        self.es_content = createContentInContainer(
            self.portal['es'], 'Document', title=u'Test document')
        ITranslationManager(self.en_content).register_translation(
            'es', self.es_content)

        transaction.commit()
示例#54
0
def save_indicator(indicator, site, data):

    print("=============================================")
    print(indicator["theme"])

    portal_catalog = site.portal_catalog
    brains = portal_catalog.unrestrictedSearchResults(
        **{
            "portal_type": "eea.climateadapt.c3sindicator",
            "c3s_identifier": indicator["identifier"],
        })
    indicatorFound = False

    for brain in brains:
        obj = brain.getObject()
        try:
            if indicator["identifier"] == obj.c3s_identifier:
                indicatorFound = True
                update_object(obj, indicator)
                print("  UPDATE OBJECT")
        except Exception:
            pass
            # print("C3S Identifier NOT SET")

    folder_path = "knowledge/european-climate-data-explorer/"
    folder = site.restrictedTraverse(folder_path)

    #for theme_name in indicator["theme"]:
    #    folder_indicator_id = theme_name.lower().replace(" ", "-")
    #    if folder_indicator_id not in folder.contentIds():
    #        print("Create indicator folder", theme_name)
    #        folder_indicator = createContentInContainer(
    #            folder, "Folder", title=theme_name
    #        )

    #        folder_indicator.manage_addProperty(
    #            id="layout", value="c3s_indicators_listing", type="string"
    #        )
    #        api.content.transition(folder_indicator, "publish")
    #        folder_indicator._p_changed

    if not indicatorFound:
        folder_path = "metadata/indicators/"
        folder = site.restrictedTraverse(folder_path)

        obj = createContentInContainer(
            #folder_indicator,
            folder,
            "eea.climateadapt.c3sindicator",
            title=indicator["page_title"],
        )

        obj.c3s_identifier = indicator["identifier"]
        update_object(obj, indicator)
示例#55
0
    def test_AdviceCategoryCorrectlyIndexed(self):
        """When an advice_category is defined, it is correctly indexed
           it's parent after add/modify/delete."""
        catalog = self.portal.portal_catalog
        cfg = self.meetingConfig
        self.changeUser('siteadmin')
        self._configureFinancesAdvice(cfg)
        # put users in finances group
        self._setupFinancesGroup()
        self.changeUser('pmCreator1')
        item = self.create('MeetingItem', title='The first item')
        # ask finances advice
        item.setOptionalAdvisers(
            ('{0}__rowid__unique_id_002'.format(finance_group_uid()), ))
        self.proposeItem(item)
        self.changeUser('pmReviewer1')
        self.do(item, 'wait_advices_from_prevalidated')

        # now act as the finances users
        # advice may be added/edit when item is considered 'complete'
        self.changeUser('pmFinController')
        changeCompleteness = item.restrictedTraverse(
            '@@change-item-completeness')
        self.request.set('new_completeness_value', 'completeness_complete')
        self.request.form['form.submitted'] = True
        changeCompleteness()
        # add advice
        advice = createContentInContainer(
            item, 'meetingadvicefinances', **{
                'advice_group': finance_group_uid(),
                'advice_type': u'positive_finance',
                'advice_comment': RichTextValue(u'My comment finances'),
                'advice_category': u'acquisitions'
            })
        # reindexed when advice added
        itemUID = item.UID()
        self.assertEqual(
            catalog(meta_type='MeetingItem',
                    financesAdviceCategory=advice.advice_category)[0].UID,
            itemUID)
        # reindexed when advice edited
        advice.advice_category = u'attributions'
        # notify modified
        notify(ObjectModifiedEvent(advice))
        self.assertEqual(
            catalog(meta_type='MeetingItem',
                    financesAdviceCategory=advice.advice_category)[0].UID,
            itemUID)
        # reindexed when advice deleted
        self.portal.restrictedTraverse('@@delete_givenuid')(advice.UID())
        self.assertEqual(
            len(
                catalog(meta_type='MeetingItem',
                        financesAdviceCategory=advice.advice_category)), 0)
    def test_content_is_not_translated_to_any_language(self):
        a_ac = createContentInContainer(self.portal,
                                        'Document',
                                        title=u"Test document")

        languages = untranslated_languages(a_ac).by_token.keys()

        self.assertEqual(len(languages), 3)
        self.assertIn('ca', languages)
        self.assertIn('es', languages)
        self.assertIn('en', languages)
示例#57
0
 def test_convert_optional_question(self):
     import mock
     from plone.dexterity.utils import createContentInContainer
     self.loginAsPortalOwner()
     survey = self.create_survey()
     question = createContentInContainer(survey, 'euphorie.profilequestion')
     question.type = 'optional'
     with mock.patch('euphorie.deployment.upgrade.v6._convert_to_module') \
             as mock_convert:
         self._convert_optional_profiles(survey, False)
         mock_convert.assert_called_once_with(question)
示例#58
0
    def test_create_content_in_container(self):
        with freeze(FROZEN_NOW):
            mail = createContentInContainer(
                self.portal,
                'ftw.mail.mail',
                message=self.sample_msg)

        persisted_values = get_persisted_values_for_obj(mail)
        expected = self.get_type_defaults()

        self.assertDictEqual(expected, persisted_values)
示例#59
0
 def test_AssignedGroupColumn(self):
     group0 = get_registry_organizations()[0]
     imail = sub_create(self.portal['incoming-mail'], 'dmsincomingmail',
                        datetime.now(), 'my-id')
     task = createContentInContainer(imail,
                                     'task',
                                     id='testid1',
                                     assigned_group=group0)
     col = AssignedGroupColumn(self.portal, self.portal.REQUEST, None)
     self.assertEqual(
         col.renderCell(task).encode('utf8'), "Direction générale")
示例#60
0
    def setUp(self):
        self.app = self.layer['app']
        self.portal = self.layer['portal']
        self.request = self.portal.REQUEST
        self.catalog = getToolByName(self.portal, 'portal_catalog')

        # /plone/my-folder
        self.folder = createContentInContainer(self.portal,
                                               u'Folder',
                                               title=u'My Folder')

        # /plone/my-folder/my-document
        self.doc = createContentInContainer(self.folder,
                                            u'Document',
                                            creation_date=DateTime(
                                                2015, 12, 31, 23, 45),
                                            title=u'My Document')

        IMutableUUID(self.doc).set('77779ffa110e45afb1ba502f75f77777')
        self.doc.reindexObject()