Exemple #1
0
 def _prefix_with_reference_number(self, title):
     reference_adapter = IReferenceNumber(self)
     return u'{number}{sep} {title}'.format(
         number=reference_adapter.get_repository_number(),
         sep=reference_adapter.get_active_formatter(
         ).repository_title_seperator,
         title=title)
Exemple #2
0
    def __call__(self, *args, **kwargs):
        result = super(SerializeDocumentToJson, self).__call__(*args, **kwargs)

        ref_num = IReferenceNumber(self.context)
        result[u'reference_number'] = ref_num.get_number()

        bumblebee_service = bumblebee.get_service_v3()
        result[u'thumbnail_url'] = bumblebee_service.get_representation_url(
            self.context, 'thumbnail')
        result[u'preview_url'] = bumblebee_service.get_representation_url(
            self.context, 'preview')
        result[u'pdf_url'] = bumblebee_service.get_representation_url(
            self.context, 'pdf')
        result[u'file_extension'] = self.context.get_file_extension()

        additional_metadata = {
            'checked_out':
            self.context.checked_out_by(),
            'is_locked':
            self.context.is_locked(),
            'containing_dossier':
            self.context.containing_dossier_title(),
            'containing_subdossier':
            self.context.containing_subdossier_title(),
            'trashed':
            self.context.is_trashed,
            'is_shadow_document':
            self.context.is_shadow_document(),
            'current_version_id':
            self.context.get_current_version_id(missing_as_zero=True),
        }

        result.update(additional_metadata)
        return result
Exemple #3
0
    def __call__(self, *args, **kwargs):
        result = super(SerializeDocumentToJson, self).__call__(*args, **kwargs)

        ref_num = IReferenceNumber(self.context)
        result[u'reference_number'] = ref_num.get_number()

        return result
Exemple #4
0
    def __call__(self, *args, **kwargs):
        result = super(SerializeDocumentToJson, self).__call__(*args, **kwargs)

        ref_num = IReferenceNumber(self.context)
        result[u'reference_number'] = ref_num.get_number()

        return result
    def __call__(self, *args, **kwargs):
        result = super(SerializeRepositoryFolderToJson, self).__call__(*args, **kwargs)

        result[u'is_leafnode'] = self.context.is_leaf_node()

        ref_num = IReferenceNumber(self.context)
        result[u'reference_number'] = ref_num.get_number()

        return result
    def Title(self):

        reference_adapter = IReferenceNumber(self)

        title = u'{number}{sep} {title}'.format(
            number=reference_adapter.get_repository_number(),
            sep=reference_adapter.get_active_formatter().repository_title_seperator,
            title=self.effective_title)

        return title.encode('utf-8')
Exemple #7
0
    def __call__(self, *args, **kwargs):
        result = super(SerializeRepositoryFolderToJson,
                       self).__call__(*args, **kwargs)

        result[u'is_leafnode'] = self.context.is_leaf_node()

        ref_num = IReferenceNumber(self.context)
        result[u'reference_number'] = ref_num.get_number()

        return result
Exemple #8
0
    def test_uses_the_same_reference_number_schema_as_regular_dossiers(self):
        dossier1 = create(
            Builder('private_dossier').within(
                self.folder).having(responsible=TEST_USER_ID))
        dossier2 = create(
            Builder('private_dossier').within(
                self.folder).having(responsible=TEST_USER_ID))

        self.assertEquals('Client1 test_user_1_ / 1',
                          IReferenceNumber(dossier1).get_number())
        self.assertEquals('Client1 test_user_1_ / 2',
                          IReferenceNumber(dossier2).get_number())
Exemple #9
0
def metadata(obj):
    metadata = []

    reference_number = IReferenceNumber(obj)
    metadata.append(reference_number.get_number())

    doc_metadata = IDocumentMetadata(obj)
    if doc_metadata.description:
        metadata.append(doc_metadata.description.encode('utf8'))
    if doc_metadata.keywords:
        metadata.extend([k.encode('utf8') for k in doc_metadata.keywords])
    if doc_metadata.foreign_reference:
        metadata.append(doc_metadata.foreign_reference.encode('utf8'))

    return ' '.join(metadata)
Exemple #10
0
    def __call__(self, *args, **kwargs):
        result = super(SerializeDocumentToJson, self).__call__(*args, **kwargs)

        ref_num = IReferenceNumber(self.context)
        result[u'reference_number'] = ref_num.get_number()

        bumblebee_service = bumblebee.get_service_v3()
        result[u'thumbnail_url'] = bumblebee_service.get_representation_url(
            self.context, 'thumbnail')
        result[u'preview_url'] = bumblebee_service.get_representation_url(
            self.context, 'preview')
        result[u'pdf_url'] = bumblebee_service.get_representation_url(
            self.context, 'pdf')

        return result
Exemple #11
0
def metadata(obj):
    metadata = []

    reference_number = IReferenceNumber(obj)
    metadata.append(reference_number.get_number())

    doc_metadata = IDocumentMetadata(obj)
    if doc_metadata.description:
        metadata.append(doc_metadata.description.encode('utf8'))
    if doc_metadata.keywords:
        metadata.extend([k.encode('utf8') for k in doc_metadata.keywords])
    if doc_metadata.foreign_reference:
        metadata.append(doc_metadata.foreign_reference.encode('utf8'))

    return ' '.join(metadata)
    def test_plone_site_returns_client_id(self):
        registry = getUtility(IRegistry)
        proxy = registry.forInterface(IBaseClientID)
        proxy.client_id = u'FAKE CLIENT'

        self.assertEquals(
            u'FAKE CLIENT', IReferenceNumber(self.portal).get_local_number())
Exemple #13
0
 def test_returns_reference_number(self):
     self.login(self.regular_user)
     adapter = getMultiAdapter((self.document, self.request),
                               IBumblebeeOverlay)
     self.assertEqual(
         IReferenceNumber(self.document).get_number(),
         adapter.get_reference_number())
    def test_use_no_client_id_grouped_by_three_formatter(self):
        registry = getUtility(IRegistry)
        proxy = registry.forInterface(IReferenceNumberSettings)
        proxy.formatter = 'no_client_id_grouped_by_three'

        self.assertEquals('247-8.2',
                          IReferenceNumber(self.subdossier).get_number())
    def test_dossier_returns_reference_prefix_of_the_context(self):
        dossier = create(Builder('dossier'))

        IReferenceNumberPrefix(self.portal).set_number(dossier, number=u'7')

        self.assertEquals(
            u'7', IReferenceNumber(dossier).get_local_number())
 def test_returns_full_number_for_the_context(self):
     self.assertEquals(
         {'site': [u'Client1', ],
          'repositoryroot': [''],
          'repository': [u'2', u'4', u'7'],
          'dossier': [u'8', u'2']},
         IReferenceNumber(self.subdossier).get_parent_numbers())
def deliverable_documents_vocabulary(context):
    """All documents and mails in the current dossier are deliverable.
    """

    finder = getAdapter(context, name='parent-dossier-finder')
    dossier = finder.find_dossier()
    if not dossier:
        raise RuntimeError('Could not find parent dossier.')

    catalog = getToolByName(dossier, 'portal_catalog')
    brains = catalog(
        portal_type=['opengever.document.document', 'ftw.mail.mail'],
        path='/'.join(dossier.getPhysicalPath()))

    # Create the vocabulary.
    terms = []
    intids = getUtility(IIntIds)
    for brain in brains:
        doc = brain.getObject()
        key = str(intids.getId(doc))
        label = '%s (%s, %s)' % (doc.Title(),
                                 IReferenceNumber(doc).get_number(),
                                 aq_parent(aq_inner(doc)).Title())

        terms.append(SimpleVocabulary.createTerm(key, key, label))

    return SimpleVocabulary(terms)
    def test_use_no_client_id_dotted_formatter(self):
        registry = getUtility(IRegistry)
        proxy = registry.forInterface(IReferenceNumberSettings)
        proxy.formatter = 'no_client_id_dotted'

        self.assertEquals('2.4.7 / 8.2',
                          IReferenceNumber(self.subdossier).get_number())
    def test_plone_site_returns_admin_units_abbreviation(self):
        create(
            Builder('admin_unit').having(
                unit_id=u'fake', title=u'Fake Unit',
                abbreviation="FakeU").as_current_admin_unit())

        self.assertEquals(u'FakeU',
                          IReferenceNumber(self.portal).get_local_number())
    def test_use_no_client_id_grouped_by_three_formatter(self):
        self.login(self.regular_user)

        api.portal.set_registry_record(name='formatter',
                                       value='no_client_id_grouped_by_three',
                                       interface=IReferenceNumberSettings)

        self.assertEquals('11-1.1',
                          IReferenceNumber(self.subdossier).get_number())
Exemple #21
0
 def update(self):
     super(ReferenceNumberWidget, self).update()
     self.mode = 'display'
     #check if is a add- or a editForm
     if IAddForm.providedBy(self.form.parentForm):
         self.value = _(u'label_no_reference_number',
                        default="Reference Number will be generated \
             after content creation")
     else:
         self.value = IReferenceNumber(self.context).get_number()
Exemple #22
0
def related_documents_vocabulary(task):
    intids = getUtility(IIntIds)

    terms = []
    for doc in get_documents_of_task(task, include_mails=True):
        key = str(intids.getId(doc))
        label = '%s (%s)' % (doc.Title(), IReferenceNumber(doc).get_number())

        terms.append(SimpleVocabulary.createTerm(key, key, label))

    return SimpleVocabulary(terms)
    def sync_model(self, proposal_model=None):
        proposal_model = proposal_model or self.load_model()

        reference_number = IReferenceNumber(
            self.get_containing_dossier().get_main_dossier()).get_number()
        repository_folder_title = safe_unicode(
            self.get_repository_folder_title(proposal_model.language))

        proposal_model.physical_path = self.get_physical_path()
        proposal_model.dossier_reference_number = reference_number
        proposal_model.repository_folder_title = repository_folder_title
Exemple #24
0
    def generate_metadata_tag(self):
        function = etree.Element("Function")
        function.set("name", "MetaData")
        function.set("id", "c364b495-7176-4ce2-9f7c-e71f302b8096")

        node = etree.SubElement(function, "Value")
        node.set("key", "ogg.document.title")
        node.set("type", "string")
        node.text = self.context.Title().decode("utf-8")

        reference_number = IReferenceNumber(self.context)
        node = etree.SubElement(function, "Value")
        node.set("key", "ogg.document.reference_number")
        node.set("type", "string")
        node.text = reference_number.get_number()

        node = etree.SubElement(function, "Value")
        node.set("key", "ogg.document.sequence_number")
        node.set("type", "string")
        node.text = reference_number.get_local_number()
        return function
Exemple #25
0
    def get_repository_title(self, reference_number):
        formatter = IReferenceNumber(api.portal.get()).get_active_formatter()

        catalog = api.portal.get_tool('portal_catalog')
        repository_reference = reference_number.split(
            formatter.repository_dossier_seperator)
        repository = catalog(reference=repository_reference)[-1]

        # fallback for removed repositories
        if not repository:
            return u''

        return repository.Title.decode('utf-8')
Exemple #26
0
    def generate_custom_interface_connector_tag(self):
        function = etree.Element("Function")
        function.set("name", "CustomInterfaceConnector")
        function.set("id", "70E94788-CE84-4460-9698-5663878A295B")

        arguments = etree.SubElement(function, "Arguments")

        interface = etree.SubElement(arguments, "Interface")
        interface.set("Name", "OneGovGEVER")

        node = etree.SubElement(interface, "Node")
        node.set("Id", "ogg.document.title")
        node.text = self.context.Title().decode("utf-8")

        reference_number = IReferenceNumber(self.context)
        node = etree.SubElement(interface, "Node")
        node.set("Id", "ogg.document.reference_number")
        node.text = reference_number.get_number()

        node = etree.SubElement(interface, "Node")
        node.set("Id", "ogg.document.sequence_number")
        node.text = reference_number.get_local_number()
        return function
Exemple #27
0
    def binding(self):
        dossier = arelda.dossierGeverSIP(id=u'_{}'.format(self.obj.UID()))
        dossier.titel = self.obj.Title().decode('utf8')

        dossier.entstehungszeitraum = arelda.historischerZeitraum()
        catalog = getToolByName(self.obj, 'portal_catalog')
        oldest_docs = catalog(portal_type=self.document_types,
                              path='/'.join(self.obj.getPhysicalPath()),
                              sort_on='created',
                              sort_order='ascending',
                              sort_limit=1)
        if oldest_docs:
            dossier.entstehungszeitraum.von = arelda.historischerZeitpunkt(
                oldest_docs[0].created.asdatetime().date())
        else:
            dossier.entstehungszeitraum.von = NOT_SPECIFIED
        latest_docs = catalog(portal_type=self.document_types,
                              path='/'.join(self.obj.getPhysicalPath()),
                              sort_on='modified',
                              sort_order='descending',
                              sort_limit=1)
        if oldest_docs:
            dossier.entstehungszeitraum.bis = arelda.historischerZeitpunkt(
                latest_docs[0].modified.asdatetime().date())
        else:
            dossier.entstehungszeitraum.bis = NOT_SPECIFIED

        set_classification_attributes(dossier, self.obj)

        dossier.aktenzeichen = IReferenceNumber(self.obj).get_number()

        dossier_obj = IDossier(self.obj)
        if dossier_obj.start:
            dossier.eroeffnungsdatum = arelda.historischerZeitpunkt(
                dossier_obj.start)
        if dossier_obj.end:
            dossier.abschlussdatum = arelda.historischerZeitpunkt(
                dossier_obj.end)

        dossier.schutzfrist = unicode(ILifeCycle(self.obj).custody_period)

        for d in self.dossiers.values():
            dossier.dossier.append(d.binding())

        for doc in self.documents.values():
            dossier.dokument.append(doc.binding())

        return dossier
 def assert_dossier_peter_schneider_created(self, parent):
     dossier_peter = parent.get('dossier-13')
     self.assertEqual(u'Vreni Meier ist ein Tausendsassa',
                      IDossier(dossier_peter).comments)
     self.assertEqual(tuple(), IDossier(dossier_peter).keywords)
     self.assertEqual('Client1 0.3 / 1',
                      IReferenceNumber(dossier_peter).get_number())
     self.assertEqual([], IDossier(dossier_peter).relatedDossier)
     self.assertEqual(u'lukas.graf', IDossier(dossier_peter).responsible)
     self.assertEqual('dossier-state-active',
                      api.content.get_state(dossier_peter))
     self.assertEqual(date(2010, 11, 11), IDossier(dossier_peter).start)
     self.assertEqual(u'Dossier Peter Schneider', dossier_peter.title)
     self.assertEqual(
         IAnnotations(dossier_peter)[BUNDLE_GUID_KEY],
         index_data_for(dossier_peter)[GUID_INDEX_NAME])
Exemple #29
0
    def binding(self):
        d = ech0147t0.dossierType()
        d.uuid = self.obj.UID()

        wftool = getToolByName(self.obj, "portal_workflow")
        status = wftool.getInfoFor(self.obj, 'review_state')
        d.status = DOSSIER_STATUS_MAPPING[status]

        d.titles = ech0039.titlesType()
        d.titles.append(
            ech0039.titleType(self.obj.Title().decode('utf8'), lang=u'DE'))

        c_obj = IClassification(self.obj)
        d.classification = ech0039.classificationType(
            CLASSIFICATION_MAPPING[c_obj.classification])
        d.hasPrivacyProtection = PRIVACY_LAYER_MAPPING[c_obj.privacy_layer]

        d.caseReferenceLocalId = IReferenceNumber(self.obj).get_number()

        dossier_obj = IDossier(self.obj)
        d.openingDate = dossier_obj.start

        if dossier_obj.keywords:
            d.keywords = ech0039.keywordsType()
            for keyword in dossier_obj.keywords:
                d.keywords.append(ech0039.keywordType(keyword, lang=u'DE'))

        if self.dossiers:
            d.dossiers = ech0147t0.dossiersType()
            for dossier in self.dossiers:
                d.dossiers.append(dossier.binding())

        if self.documents:
            d.documents = ech0147t0.documentsType()
            for document in self.documents:
                d.documents.append(document.binding())

        # Optional, currently not supported properties
        d.openToThePublic = None
        d.comments = None
        d.links = None
        d.folders = None
        d.addresses = None
        d.applicationCustom = None

        return d
Exemple #30
0
    def binding(self):
        op = arelda.ordnungssystempositionGeverSIP(
            id=u'_{}'.format(self.obj.UID()))
        op.nummer = IReferenceNumber(self.obj).get_repository_number()
        op.titel = self.obj.Title(
            prefix_with_reference_number=False).decode('utf8')

        set_classification_attributes(op, self.obj)

        op.schutzfrist = unicode(ILifeCycle(self.obj).custody_period)

        for pos in self.positions.values():
            op.ordnungssystemposition.append(pos.binding())

        for dossier in self.dossiers.values():
            op.dossier.append(dossier.binding())
        return op
Exemple #31
0
    def update_model_create_arguments(self, data, context):
        aq_wrapped_self = self.__of__(context)

        workflow_state = self.workflow.default_state.name
        reference_number = IReferenceNumber(
            context.get_main_dossier()).get_number()

        language = data.get('language')
        repository_folder_title = safe_unicode(
            aq_wrapped_self.get_repository_folder_title(language))

        data.update(
            dict(workflow_state=workflow_state,
                 physical_path=aq_wrapped_self.get_physical_path(),
                 dossier_reference_number=reference_number,
                 repository_folder_title=repository_folder_title,
                 creator=aq_wrapped_self.Creator()))
        return data
    def assert_dossier_hanspeter_created(self, parent):
        dossier_peter = parent.get('dossier-14')
        self.assertEqual(u'archival worthy',
                         ILifeCycle(dossier_peter).archival_value)
        self.assertEqual(u'Beinhaltet Informationen zum Verfahren',
                         ILifeCycle(dossier_peter).archival_value_annotation)
        self.assertEqual(u'classified',
                         IClassification(dossier_peter).classification)
        self.assertEqual(150, ILifeCycle(dossier_peter).custody_period)
        self.assertEqual(
            u'Wir haben Hanspeter M\xfcller in einem Verfahren entlassen.',
            dossier_peter.description)
        self.assertEqual(date(2007, 1, 1), IDossier(dossier_peter).start)
        self.assertEqual(date(2011, 1, 6), IDossier(dossier_peter).end)
        self.assertEqual(tuple(), IDossier(dossier_peter).keywords)
        self.assertEqual(u'privacy_layer_yes',
                         IClassification(dossier_peter).privacy_layer)
        self.assertEqual('Client1 0.3 / 7',
                         IReferenceNumber(dossier_peter).get_number())
        self.assertEqual([], IDossier(dossier_peter).relatedDossier)
        self.assertEqual(u'lukas.graf', IDossier(dossier_peter).responsible)
        self.assertEqual(5, ILifeCycle(dossier_peter).retention_period)
        self.assertIsNone(
            ILifeCycle(dossier_peter).retention_period_annotation)

        self.assertEqual('dossier-state-resolved',
                         api.content.get_state(dossier_peter))

        self.assertEqual(u'Hanspeter M\xfcller', dossier_peter.title)

        self.assertDictContainsSubset(
            {
                'admin_users':
                ['Publisher', 'Reader', 'Editor', 'Contributor', 'Reviewer']
            }, dossier_peter.__ac_local_roles__)
        self.assertTrue(dossier_peter.__ac_local_roles_block__)

        self.assertEqual(
            IAnnotations(dossier_peter)[BUNDLE_GUID_KEY],
            index_data_for(dossier_peter)[GUID_INDEX_NAME])

        return dossier_peter
 def _get_repository_reference_number(self):
     reference = IReferenceNumber(self.context)
     formatter = getAdapter(self.context, IReferenceNumberFormatter,
                            name=self.reference_formatter)
     return formatter.repository_number(reference.get_parent_numbers())
Exemple #34
0
 def get_reference_number(self, obj):
     reference_adapter = IReferenceNumber(obj)
     refnum = reference_adapter.get_number()
     # Strip AdminUnit abbreviation
     refnum = refnum.replace(self.au_abbreviation, '').strip()
     return refnum
 def test_uses_userid_as_reference_number_part(self):
     self.assertEquals('Client1 test_user_1_',
                       IReferenceNumber(self.folder).get_number())
 def _prefix_with_reference_number(self, title):
     reference_adapter = IReferenceNumber(self)
     return u'{number}{sep} {title}'.format(
         number=reference_adapter.get_repository_number(),
         sep=reference_adapter.get_active_formatter().repository_title_seperator,
         title=title)
Exemple #37
0
 def get_reference_number(self, obj):
     reference_adapter = IReferenceNumber(obj)
     refnum = reference_adapter.get_number()
     # Strip AdminUnit abbreviation
     refnum = refnum.replace(self.au_abbreviation, '').strip()
     return refnum
Exemple #38
0
def reference_number(obj):
    refnum = IReferenceNumber(obj.getObject(), None)
    if refnum:
        return refnum.get_number()