def __call__(self, xls_file):
        retval = []
        try:
            xls_data = XlsReader(xls_file).read().data
        except TypeError:
            raise TypeError(_(u'Excel Datei konnte nicht gelesen werden'))
        except xlrd.XLRDError:
            raise Exception(
                _(u"help_import_error_unsupported_xls",
                  (u"Please ensure that the xls file you selected is a valid "
                   u"Excel file")))
        header = xls_data[0]
        errors = []
        for i in range(max(len(header), len(self.REFERENCE_HEADER))):
            if len(header) < i - 1:
                errors.append("Das Excel Dokument enthält zu wenige Spalten. Folgende Spalten sind das Minimum: %s" %
                    (" ".join(self.REFERENCE_HEADER)))
                break
            if len(self.REFERENCE_HEADER) < i - 1:
                errors.append("Das Excel Dokument enthält zu viele Spalten. Es dürfen nur folgende Spalten vorkommen: %s" %
                    (" ".join(self.REFERENCE_HEADER)))
                break
            if header[0].lower().strip() != self.REFERENCE_HEADER[0]:
                errors.append("Spalte %i ist falsch. Ist: %s, Soll: %s (Gross und Kleinschreibung wird ignoriert" %
                    (i + 1, header[0].strip(), self.REFERENCE_HEADER[i]))
        if errors:
            raise TypeError("Do not understand Excel File", errors=errors)

        retval = []
        for count, row in enumerate(xls_data[1:]):
            retval.append(row)
        return retval
 def __call__(self, zipfile):
     zipfile = ZipFile(zipfile)
     filenames = zipfile.namelist()
     xls_files = [x for x in filenames if x.endswith('xls')]
     doc_files = [x for x in filenames if x.endswith('doc')]
     if len(xls_files) > 1:
         raise Exception(_("Zip file contains too many excel files"))
     if not xls_files:
         raise Exception(_("Zip file contains no excel files"))
     return StringIO(zipfile.open(xls_files[0]).read()), [StringIO(zipfile.open(x).read()) for x in doc_files]
 def convert(self, xls_file, reference_header):
     retval = []
     try:
         xls_data = XlsReader(xls_file).read().data
     except TypeError:
         raise TypeError(_(u'Excel Datei konnte nicht gelesen werden, '
                           'evtl. mit PDF vertauscht?'))
     except xlrd.XLRDError, e:
         raise Exception(
             _(u"help_import_error_unsupported_xls",
               (u"Please ensure that the xls file you selected is a valid "
                u"Excel file")))
 def convertLanguages(self, data):
     data = data.replace(';', ' ').replace('.', ' ')\
         .replace(':', ' ').replace(',', ' ')
     data = [x.strip().lower() for x in data.split() if x.strip()]
     retval = []
     for lang in data:
         if lang in self.supported_languages:
             retval.append(lang)
         else:
             warning = _('The language "${lang}" is unknown',
                         default='Die Sprache "${lang}" is unbekannt',
                         mapping={"lang": lang})
             self.warnings.append(warning)
     return tuple(retval)
Esempio n. 5
0
    def __call__(self, context):
        # get user-defined languages
        registry = queryUtility(IRegistry)
        settings = registry.forInterface(IRecensioSettings)
        allowed_langs = getattr(
            settings, 'available_content_languages', '').split('\n')
        # get names for language codes
        gsm = getGlobalSiteManager()
        util = gsm.queryUtility(ILanguageAvailability)
        available_languages = util.getLanguages()
        terms = list()
        for lang in allowed_langs:
            lang = lang.strip()
            if available_languages.get(lang):
                terms.append(SimpleTerm(lang, lang,
                    _(available_languages[lang]['name'])))

        return SimpleVocabulary(terms)
Esempio n. 6
0
from Products.Archetypes.Widget import KeywordWidget
from recensio.policy import recensioMessageFactory as _


PhilromSchema = atapi.Schema(
    (
        atapi.LinesField(
            'textForm',
            multiValued=1,
            schemata="reviewed_text",
            storage=atapi.AnnotationStorage(),
            required=False,
            vocabulary=NamedVocabulary("text_form"),
            widget=atapi.MultiSelectionWidget(
                label=_(
                    u"label_text_form",
                    default=(u"Text form")
                )
            ),
            searchable=True,
        ),
        atapi.LinesField(
            'manuscriptsShelfmark',
            multiValued=1,
            accessor='getManuscriptsShelfmark',
            schemata="reviewed_text",
            storage=atapi.AnnotationStorage(),
            widget=KeywordWidget(
                label=_(u"Manuscripts (Shelfmark)"),
            ),
        ),
        atapi.LinesField(
 def title(self):
     return _(u"Complete PDFs")
# Dont import this file, its just for our i18n toolchain

from recensio.policy import recensioMessageFactory as _

_("About us")
_("Cut PDF")
_("Epoch")
_("Folder")
_("Import")
_("Issue")
_("Listen to audio for this captcha")
_("Pending review")
_("Pending")
_("Presentation Article Review")
_("Presentation Article edited Volume")
_("Presentation Article in Journal")
_("Presentation Collection")
_("Presentation Monograph")
_("Presentation Online Resource")
_("Private")
_("Publication")
_("Published")
_("Region")
_("Results per page")
_("Review Journal")
_("Review Monograph")
_("Review")
_("The number of results that is displayed on one page.")
_("Themes")
_("Topic")
_("articles")
Esempio n. 9
0
    def handleTransition(self, info):
        membership_tool = getToolByName(self.context, "portal_membership")
        user = membership_tool.getAuthenticatedMember()
        mailhost = getToolByName(self.context, "MailHost")
        root = getToolByName(self.context, "portal_url").getPortalObject()
        mail_info = IMailSchema(root)
        mail_from = "%s <%s>" % (mail_info.email_from_name, mail_info.email_from_address)
        user_email = user.getProperty("email")

        registry = queryUtility(IRegistry)
        try:
            settings = registry.forInterface(IRecensioSettings)
        except KeyError:
            settings = dict()

        msg = ""

        if info.transition.id == "publish":
            info.object.setEffectiveDate(DateTime())
            info.object.reindexObject()

        if info.transition.id == "submit":
            title = _(u"label_item_submitted", default=u"Content was submitted")
            mail_to = getattr(settings, "review_submitted_email", None) or mail_from
            msg = submit_notification_template % dict(
                user=user.getUserName(),
                portal_type=info.object.portal_type,
                link=info.object.absolute_url(),
                email=user_email,
            )

        elif info.transition.id == "publish" and info.old_state.id == "pending":
            ts = getToolByName(self.context, "translation_service")
            owner = info.object.getOwner()
            mail_to = owner.getProperty("email")
            pref_lang = owner.getProperty("preferred_language", "de")
            title = ts.translate(
                _(u"label_item_published", default=u"Your item has been published"), target_language=pref_lang
            )
            rtool = getToolByName(self.context, "portal_repository")

            info.object.restrictedTraverse("@@mail_new_presentation")()

            publish_notification_template = _(
                "publish_notification_template",
                default=u"""Ihr Artikel "${title}" wurde freigeschaltet und ist nun unter ${url} verfügbar.""",
                mapping=dict(title=info.object.Title().decode("utf-8"), url=info.object.absolute_url()),
            )
            template = ts.translate(publish_notification_template, target_language=pref_lang)
            msg = template % dict(title=info.object.Title().decode("utf-8"), url=info.object.absolute_url())

        if msg:
            subject = translate(title)
            try:
                log.info(u"I am sending the following msg:\n%s" % msg)
                mailhost.send(
                    messageText=msg, mto=mail_to, mfrom=mail_from, subject=subject, charset="utf-8", immediate=True
                )
            except Exception, err:
                log.warn(
                    "Not possible to send email notification for "
                    "workflow change on %(url)s. Message:\n%(error)s"
                    % dict(url=info.object.absolute_url(), error=str(err))
                )
Esempio n. 10
0
    def addZIPContent(self, zipfile):
        try:
            xls, docs = self.zip_extractor(zipfile)
            results = [x for x in self.excel_converter.convert_zip(xls)]
        except Exception, e:
            if isinstance(e, ConflictError):
                raise
            log.exception(str(e))
            self.errors.append(str(e))
            transaction.doom()
            raise FrontendException()
        finally:
            self.warnings = self.excel_converter.warnings
        if len(docs) != len(results):
            self.errors.append(
                _("The number of documents in the zip file do not match "
                  "the number of entries in the excel file"))
            transaction.doom()
            raise FrontendException()
        for result, doc in zip(results, docs):
            result['doc'] = doc
            module, class_ = result.pop('portal_type')
            portal_type = self.type_getter(module, class_)
            result_item = addOneItem(self.context, portal_type, result)
            self.results.append({'name' : result_item.title, \
                                 'url' : result_item.absolute_url()})
        if self.errors:
            raise FrontendException()

    def type_getter(self, module_path, class_):
        module = __import__(module_path)
        for modname in module_path.split('.')[1:]:
# -*- coding: utf-8 -*-

# Dont import this file, it's just for our i18n toolchain

from recensio.policy import recensioMessageFactory as _

_(u"label_journals", default=u"Journals")
_(u"label_edited_volumes", default=u"Edited Volumes")