Example #1
0
    def getDecoratedTitle(real_self, lastname_first=False):
        """
        >>> from mock import Mock
        >>> at_mock = Mock()
        >>> at_mock.title = "Plone Mag"
        >>> at_mock.reviewAuthors = [{'firstname' : 'Cillian', 'lastname'  : 'de Roiste'}]
        >>> at_mock.yearOfPublication = '2009'
        >>> at_mock.officialYearOfPublication = '2010'
        >>> at_mock.volumeNumber = '1'
        >>> at_mock.issueNumber = '3'
        >>> review = ReviewJournalNoMagic(at_mock)
        >>> review.directTranslate = lambda a: a
        >>> review.getDecoratedTitle()
        u'Plone Mag, 1 (2010/2009), 3 (reviewed_by)'
        """
        self = real_self.magic

        item = getFormatter(', ', ' ', ', ')
        mag_year = getFormatter('/')(self.officialYearOfPublication,
                                     self.yearOfPublication)
        mag_year = mag_year and '(' + mag_year + ')' or None
        item_string = item(
            self.title, self.volumeNumber, mag_year, self.issueNumber)

        if lastname_first:
            reviewer_string = get_formatted_names(
                u' / ', ', ', self.reviewAuthors,
                lastname_first = lastname_first)
        else:
            reviewer_string = get_formatted_names(
                u' / ', ' ', self.reviewAuthors,
                lastname_first = lastname_first)

        if reviewer_string:
            reviewer_string = "(%s)" % real_self.directTranslate(
                Message(u"reviewed_by", "recensio",
                        mapping={u"review_authors": reviewer_string}))


        return ' '.join((

                item_string,
                reviewer_string))
Example #2
0
    def __call__(self, skip_addrs=[]):
        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)
        referenceAuthors = getattr(self.context, 'referenceAuthors', [])

        def get_preferred_language(email, default='en'):
            found = self.pas.searchUsers(email=args['mail_to'])
            if found:
                owner = \
                    self.membership_tool.getMemberById(found[0]['userid'
                        ]).getUser()
                return owner.getProperty('preferred_language', default)
            else:
                return default

        for author in referenceAuthors:
            if author.has_key('email') and author['email'] \
                in skip_addrs:
                continue
            args = {}
            fuckup = [author['firstname'], author['lastname']]
            fuckup = [safe_unicode(x) for x in fuckup]
            args['reviewed_author'] = u' '.join(fuckup)
            args['mail_from'] = safe_unicode(mail_from)
            pref_lang = 'en'
            args['title'] = safe_unicode(self.context.title) \
                + (safe_unicode(self.context.subtitle) and u': '
                   + safe_unicode(self.context.subtitle) or u'')
            args['review_author'] = get_formatted_names(u' / ', ' ',
                    self.context.reviewAuthors)
            args['concept_url'] = root.absolute_url() \
                + '/ueberuns/konzept'
            args['context_url'] = self.context.absolute_url()
            pref_lang = author['preferred_language']
            if author.has_key('email') and author['email']:
                args['mail_to'] = author['email']
                msg_template = \
                    self.ts.translate(_('mail_new_publication_body',
                        mapping=args), target_language=pref_lang)
            else:
                args['mail_to'] = args['mail_from']
                msg_template = \
                    self.ts.translate(_('mail_new_publication_intro',
                        mapping=args), target_language=pref_lang) \
                    + self.ts.translate(_('mail_new_publication_body',
                        mapping=args), target_language=pref_lang)
            subject = self.ts.translate(_('mail_new_publication_subject'
                    ,
                    default=u'Es wurde eine Rezension von ${title} ver\xf6ffentlicht'
                    , mapping=args), target_language=pref_lang)
            self.sendMail(msg_template, args['mail_to'], mail_from,
                          subject)
    def getDecoratedTitle(self, obj, lastname_first=False):
        authors_string = obj.formatted_authors_editorial()

        rezensent_string = get_formatted_names(
            u' / ', ' ', obj.reviewAuthors, lastname_first=lastname_first)
        if rezensent_string:
            rezensent_string = "%s" % translate_message(
                Message(
                    u"reviewed_by", "recensio",
                    mapping={u"review_authors": rezensent_string},
                )
            )

        titles = "<span class='title'>%s</span>" % obj.punctuated_title_and_subtitle
        pub_year = "(%s)" % obj.yearOfPublication
        full_citation = getFormatter(', ', ' ', ', ')
        return full_citation(authors_string, titles, pub_year, rezensent_string)
    def getDecoratedTitle(real_self, lastname_first=False):
        """
        >>> from mock import Mock
        >>> at_mock = Mock()
        >>> at_mock.customCitation = ''
        >>> at_mock.formatted_authors_editorial = "Patrick Gerken / Alexander Pilz"
        >>> at_mock.punctuated_title_and_subtitle = "Plone 4.0. Das Benutzerhandbuch"
        >>> at_mock.reviewAuthors = [{'firstname' : 'Cillian', 'lastname'  : 'de Roiste'}]
        >>> review = ReviewMonographNoMagic(at_mock)
        >>> review.directTranslate = lambda a: a
        >>> review.getDecoratedTitle()
        u'Patrick Gerken / Alexander Pilz: Plone 4.0. Das Benutzerhandbuch (reviewed_by)'

        Original Spec:
        [Werkautor Vorname] [Werkautor Nachname]: [Werktitel]. [Werk-Untertitel] (reviewed by [Rezensent Vorname] [Rezensent Nachname])

        Analog, Werkautoren kann es mehrere geben (Siehe Citation)

        Hans Meier: Geschichte des Abendlandes. Ein Abriss (reviewed by Klaus Müller)

        """
        self = real_self.magic

        name_part_separator = " "
        if lastname_first:
            name_part_separator = ", "
        authors_string = self.formatted_authors_editorial

        rezensent_string = get_formatted_names(u" / ", " ", self.reviewAuthors, lastname_first=lastname_first)
        if rezensent_string:
            rezensent_string = "(%s)" % real_self.directTranslate(
                Message(u"reviewed_by", "recensio", mapping={u"review_authors": rezensent_string})
            )

        full_citation = getFormatter(": ", " ")
        return full_citation(authors_string, self.punctuated_title_and_subtitle, rezensent_string)
Example #5
0
    def __call__(self):
        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)

        comment = self.context
        conversation = aq_parent(comment)
        review = aq_parent(conversation)
        pg = IParentGetter(review)

        args = {}
        args['url'] = review.absolute_url()
        args['date'] = review.created().strftime('%d.%m.%Y')
        args['title'] = review.title + (hasattr(review, 'subtitle')
                and review.subtitle and ': ' + review.subtitle or '')
        args['year'] = getattr(review, 'yearOfPublication', '')
        args['isbn'] = getattr(review, 'isbn', '')
        args['reviewers'] = '/'.join(review.listReviewAuthors())
        args['journal'] = pg.get_title_from_parent_of_type('Publication'
                )
        args['volume'] = pg.get_title_from_parent_of_type('Volume')
        args['issue'] = pg.get_title_from_parent_of_type('Issue')
        args['commenter'] = comment.author_name
        args['commentdate'] = comment.creation_date.strftime('%d.%m.%Y')
        args['mail_from'] = mail_from

        for key in args:
            args[key] = safe_unicode(args[key])

        # for review types, notify authors of the works (via editorial
        # office)

        if review.portal_type in REVIEW_TYPES:
            authors = getattr(review, 'authors', [])
            args['recipient'] = get_formatted_names(u' / ', ' ',
                    authors)
            args['author'] = args['recipient']
            mail_to = mail_from
            pref_lang = 'de'
            for author in authors:

                # for pref_lang in
                # self.pl.getAvailableLanguages().keys(): # send one
                # mail for for every language

                subject = \
                    self.ts.translate(_('mail_new_comment_subject_review_author'
                        , mapping=args), target_language=pref_lang)
                msg_template = \
                    self.ts.translate(_('mail_new_comment_body_review_author'
                        , mapping=args), target_language=pref_lang)
                self.sendMail(msg_template, mail_from, mail_to, subject)
        else:

        # for presentation types, notify presentation author

            args['recipient'] = get_formatted_names(u' / ', ' ',
                    self.context.getReviewAuthors())
            args['author'] = 'someone'
            if hasattr(self.context, 'getAuthors'):
                args['author'] = get_formatted_names(u' / ', ' ',
                        self.context.getAuthors())
            elif hasattr(self.context, 'getInstitution'):
                institutions = self.context.getInstitution()
                if institutions:
                    args['author'] = institutions[0]['name']
            (mail_to, pref_lang) = self.findRecipient()
            if not mail_to:
                mail_to = getattr(review, 'reviewAuthorEmail', '')
            subject = \
                self.ts.translate(_('mail_new_comment_subject_presentation_author'
                                  , mapping=args),
                                  target_language=pref_lang)
            msg_template = \
                self.ts.translate(_('mail_new_comment_body_presentation_author'
                                  , mapping=args),
                                  target_language=pref_lang)
            self.sendMail(msg_template, mail_from, mail_to, subject)

        # Find other comment authors and notify them

        recipients = []
        for item in conversation.items():
            cmt = item[1]
            if not cmt.author_email in map(lambda x: x[0], recipients) \
                and (not mail_to or not cmt.author_email in mail_to) \
                and not cmt.author_email == comment.author_email:
                rcpt = self.findRecipient(id=cmt.author_username)
                recipients.append(rcpt + (cmt.author_name, ))

        for rcpt in recipients:
            (mail_to, pref_lang, name) = rcpt
            if ' ' in name:
                name = name.split(' ')
                name = {'firstname': name[0], 'lastname': name[1]}
            else:
                name = {'firstname': '', 'lastname': name}
            args['recipient'] = get_formatted_names(u' ', u' ', [name])
            if review.portal_type in REVIEW_TYPES:
                subject = \
                    self.ts.translate(_('mail_new_comment_subject_review_commenter'
                        , mapping=args), target_language=pref_lang)
                msg_template = \
                    self.ts.translate(_('mail_new_comment_body_review_commenter'
                        , mapping=args), target_language=pref_lang)
            else:
                subject = \
                    self.ts.translate(_('mail_new_comment_subject_presentation_commenter'
                        , mapping=args), target_language=pref_lang)
                msg_template = \
                    self.ts.translate(_('mail_new_comment_body_presentation_commenter'
                        , mapping=args), target_language=pref_lang)
            self.sendMail(msg_template, mail_from, mail_to, subject)
Example #6
0
    def get_citation_string(real_self):
        """
        >>> from mock import Mock
        >>> at_mock = Mock()
        >>> at_mock.get = lambda x: None
        >>> at_mock.customCitation = ''
        >>> at_mock.title = "Plone Mag♥"
        >>> at_mock.reviewAuthors = [{'firstname' : 'Cillian♥', 'lastname'  : 'de Roiste♥'}]
        >>> at_mock.yearOfPublication = '2009♥'
        >>> at_mock.officialYearOfPublication = '2010♥'
        >>> at_mock.publisher = 'SYSLAB.COM GmbH♥'
        >>> at_mock.placeOfPublication = 'München♥'
        >>> at_mock.volumeNumber = '1♥'
        >>> at_mock.issueNumber = '3♥'
        >>> at_mock.get_issue_title = lambda :'Open Source Mag 1♥'
        >>> at_mock.get_volume_title = lambda :'Open Source Mag Vol 1♥'
        >>> at_mock.get_publication_title = lambda :'Open Source♥'
        >>> at_mock.portal_url = lambda :'http://www.syslab.com'
        >>> at_mock.UID = lambda :'12345'
        >>> at_mock.canonical_uri = ''
        >>> at_mock.page_start_end_in_print = '11-21'
        >>> review = ReviewJournalNoMagic(at_mock)
        >>> review.directTranslate = lambda m: m.default
        >>> review.get_citation_string()
        u'de Roiste\u2665, Cillian\u2665: review of: Plone Mag\u2665, 1\u2665, 3\u2665 (2010\u2665/2009\u2665), in: Open Source\u2665, Open Source Mag Vol 1\u2665, Open Source Mag 1\u2665, p. 11-21, <a href="http://syslab.com/r/12345">http://syslab.com/r/12345</a>'


        Return the citation according to this schema:
        [Rezensent Nachname], [Rezensent Vorname]: review of: [Zs-Titel der rez. Zs.], [Nummer], [Heftnummer (gezähltes Jahr/Erscheinungsjahr)], in: [Zs-Titel], [Nummer], [Heftnummer (gezähltes Jahr/Erscheinungsjahr)], p.[pageStart]-[pageEnd] URL recensio.

        The years of the magazine article reviewing the other magazine does
        not exist.
        """
        self = real_self.magic
        if self.customCitation:
            return scrubHTML(self.customCitation).decode('utf8')

        rev_details_formatter = getFormatter(u', ', u', ', u' ')
        mag_year = getFormatter('/')(self.officialYearOfPublication,
                                     self.yearOfPublication)
        mag_year = mag_year and '(' + mag_year + ')' or None
        item_string = rev_details_formatter(self.title, self.volumeNumber,
                                            self.issueNumber, mag_year)

        reference_mag = getFormatter(', ',  ', ')
        reference_mag_string = reference_mag(self.get_publication_title(),
                                             self.get_volume_title(),
                                             self.get_issue_title())

        location = real_self.getUUIDUrl()
        if getattr(self, "canonical_uri", False): #3102
            location = real_self.directTranslate(
                Message(u"label_downloaded_via_recensio", "recensio"))

        rezensent_string = get_formatted_names(
            u' / ', ', ', self.reviewAuthors, lastname_first = True)
        args = {
            'review_of' : real_self.directTranslate(Message(
                    u"text_review_of", "recensio", default="review of:")),
            'in'        : real_self.directTranslate(Message(
                    u"text_in", "recensio", default="in:")),
            'page'      : real_self.directTranslate(Message(
                    u"text_pages", "recensio", default="p.")),
            ':'         : real_self.directTranslate(Message(
                    u"text_colon", "recensio", default=":")),
            }
        citation_formatter = getFormatter(
            u'%(:)s %(review_of)s ' % args, ', %(in)s ' % args, ', %(page)s '
            % args, u', ')
        citation_string = citation_formatter(
            escape(rezensent_string), escape(item_string),
            escape(reference_mag_string), self.page_start_end_in_print,
            location)
        return citation_string
Example #7
0
 def get_metadata_review_author(self):
     return get_formatted_names(u' <br/> ', ', ', self.context.reviewAuthors,
                                lastname_first=True)
    def get_citation_string(real_self):
        """
        Either return the custom citation or the generated one
        >>> from mock import Mock
        >>> at_mock = Mock()
        >>> at_mock.customCitation = ''
        >>> at_mock.get = lambda x: None
        >>> at_mock.formatted_authors_editorial = u"Gerken\u2665, Patrick\u2665 / Pilz, Alexander"
        >>> at_mock.title = "Plone 4.0♥?"
        >>> at_mock.subtitle = "Das Benutzerhandbuch♥"
        >>> at_mock.reviewAuthors = [{'firstname' : 'Cillian♥', 'lastname' : 'de Roiste♥'}]
        >>> at_mock.yearOfPublication = '2009♥'
        >>> at_mock.publisher = 'SYSLAB.COM GmbH♥'
        >>> at_mock.placeOfPublication = 'München♥'
        >>> at_mock.get_issue_title = lambda :'Open Source Mag 1♥'
        >>> at_mock.get_volume_title = lambda :'Open Source Mag Vol 1♥'
        >>> at_mock.get_publication_title = lambda :'Open Source♥'
        >>> at_mock.portal_url = lambda :'http://www.syslab.com'
        >>> at_mock.UID = lambda :'12345'
        >>> at_mock.canonical_uri = ''
        >>> at_mock.page_start_end_in_print = '11-21'
        >>> review = ReviewMonographNoMagic(at_mock)
        >>> review.directTranslate = lambda m: m.default
        >>> review.get_citation_string()
        u'de Roiste\u2665, Cillian\u2665: review of: Gerken\u2665, Patrick\u2665 / Pilz, Alexander, Plone 4.0\u2665? Das Benutzerhandbuch\u2665, M\\xfcnchen\u2665: SYSLAB.COM GmbH\u2665, 2009\u2665, in: Open Source\u2665, Open Source Mag Vol 1\u2665, Open Source Mag 1\u2665, p. 11-21, <a href="http://syslab.com/r/12345">http://syslab.com/r/12345</a>'


        Original Spec:

        [Rezensent Nachname], [Rezensent Vorname]: review of: [Werkautor Nachname], [Werkautor Vorname], [Werktitel]. [Werk-Untertitel], [Erscheinungsort]: [Verlag], [Jahr], in: [Zs-Titel], [Nummer], [Heftnummer (Erscheinungsjahr)], p.[pageStart]-[pageEnd] URL recensio.

        Werkautoren kann es mehrere geben, die werden dann durch ' / ' getrennt alle aufgelistet.
        Note: gezähltes Jahr entfernt.
        Da es die Felder Zs-Titel, Nummer und Heftnummer werden die Titel der Objekte magazine, volume, issue genommen, in dem der Review liegt

        Müller, Klaus: review of: Meier, Hans, Geschichte des Abendlandes. Ein Abriss, München: Oldenbourg, 2010, in: Zeitschrift für Geschichte, 39, 3 (2008/2009), www.recensio.net/##

        """
        self = real_self.magic
        if self.customCitation:
            return scrubHTML(self.customCitation).decode("utf8")

        args = {
            "review_of": real_self.directTranslate(Message(u"text_review_of", "recensio", default="review of:")),
            "in": real_self.directTranslate(Message(u"text_in", "recensio", default="in:")),
            "page": real_self.directTranslate(Message(u"text_pages", "recensio", default="p.")),
            ":": real_self.directTranslate(Message(u"text_colon", "recensio", default=":")),
        }
        if self.title[-1] in "!?:;.,":
            title_subtitle = getFormatter(u" ")
        else:
            title_subtitle = getFormatter(u". ")
        rev_details_formatter = getFormatter(u", ", u", ", u"%(:)s " % args, u", ")
        rezensent_string = get_formatted_names(u" / ", ", ", self.reviewAuthors, lastname_first=True)
        authors_string = self.formatted_authors_editorial
        title_subtitle_string = title_subtitle(self.title, self.subtitle)
        item_string = rev_details_formatter(
            authors_string, title_subtitle_string, self.placeOfPublication, self.publisher, self.yearOfPublication
        )
        mag_year_string = self.yearOfPublication.decode("utf-8")
        mag_year_string = mag_year_string and u"(" + mag_year_string + u")" or None

        mag_number_formatter = getFormatter(u", ", u", ")
        mag_number_string = mag_number_formatter(
            self.get_publication_title(), self.get_volume_title(), self.get_issue_title()
        )

        location = real_self.getUUIDUrl()
        if getattr(self, "canonical_uri", False):  # 3102
            location = real_self.directTranslate(Message(u"label_downloaded_via_recensio", "recensio"))

        citation_formatter = getFormatter(
            u"%(:)s %(review_of)s " % args, ", %(in)s " % args, ", %(page)s " % args, u", "
        )

        citation_string = citation_formatter(
            escape(rezensent_string),
            escape(item_string),
            escape(mag_number_string),
            self.page_start_end_in_print,
            location,
        )

        return citation_string