예제 #1
0
    def sendMail(self, subject, mailbody, send_to, send_to_bcc=[], sender=None, debug_mode=False):
        notify_encode = "utf-8"
        object = aq_inner(self.context)
        portal = getToolByName(object, "portal_url").getPortalObject()
        portal_transforms = getToolByName(object, "portal_transforms")
        if sender == None:
            send_from = portal.getProperty("email_from_address")
        else:
            send_from = sender
        if send_from and type(send_from) == tuple:
            send_from = send_from[0]

        translation_service = getToolByName(object, "translation_service")

        html_body = mailbody
        here_url = object.absolute_url()
        url_text = u"%s-%s年度-年检报告" % (object.title, object.year)
        text = html_template.message % (
            {"from": send_from, "message": html_body, "url": here_url, "url_text": url_text}
        )

        if notify_encode:
            text = text.encode(notify_encode)
        try:
            data_to_plaintext = portal_transforms.convert("html_to_web_intelligent_plain_text", text)
        except:
            # Probably Plone 2.5.x
            data_to_plaintext = portal_transforms.convert("html_to_text", text)
        plain_text = data_to_plaintext.getData()

        msg = MIMEMultipart("alternative")
        # Record the MIME types of both parts - text/plain and text/html.
        part1 = MIMEText(plain_text, "plain", _charset=notify_encode)
        part2 = MIMEText(text, "html", _charset=notify_encode)

        # Attach parts into message container.
        # According to RFC 2046, the last part of a multipart message, in this case
        # the HTML message, is best and preferred.
        msg.attach(part1)
        msg.attach(part2)
        mail_host = getToolByName(object, "MailHost")
        try:
            if debug_mode:
                print "Message subject: %s" % subject
                print "Message text:\n%s" % text
                print "Message sent to %s (and to %s in bcc)" % (
                    ", ".join(send_to) or "no-one",
                    ", ".join(send_to_bcc) or "no-one",
                )
            else:
                try:
                    mail_host.secureSend(
                        msg, mto=send_to, mfrom=send_from, subject=subject, charset=notify_encode, mbcc=send_to_bcc
                    )
                except TypeError:
                    # BBB: Plone 2.5 has problem sending MIMEMultipart... fallback to normal plain text email
                    mail_host.secureSend(
                        plain_text,
                        mto=send_to,
                        mfrom=send_from,
                        subject=subject,
                        charset=notify_encode,
                        mbcc=send_to_bcc,
                    )
        except Exception, inst:
            putils = getToolByName(object, "plone_utils")
            putils.addPortalMessage(_(u"Not able to send notifications"))
            object.plone_log("Error sending notification: %s" % str(inst))
예제 #2
0
#-*- coding: UTF-8 -*-
from five import grok
from zope.schema.vocabulary import SimpleVocabulary
from zope.schema.vocabulary import SimpleTerm
from zope.schema.interfaces import IVocabularyFactory
#import unicodedata
#from incf.countryutils import data as countrydata
from emc.project import _

#任务类型属性:分析/设计/实验/仿真/培训
task_type = [
    ('analysis', 'analysis', _(u'analysis')),
    ('design', 'design', _(u'design')),
    ('train', 'train', _(u'train')),
    ('simulation', 'simulation', _(u'simulation')),
    ('experiment', 'experiment', _(u'experiment')),
]
task_type_terms = [
    SimpleTerm(value, token, title) for value, token, title in task_type
]


class taskType(object):
    def __call__(self, context):
        return SimpleVocabulary(task_type_terms)


grok.global_utility(taskType,
                    IVocabularyFactory,
                    name="emc.project.vocabulary.tasktype")
예제 #3
0
class Ilocalroles(form.Schema):
    """
    Description of the localroles
    source 字段不能有缺省值的
    """
    form.widget(emc_designer=AutocompleteMultiFieldWidget)
    emc_designer = schema.Tuple(
        title=_(u"EMC Designer"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(designer=AutocompleteMultiFieldWidget)
    designer = schema.Tuple(
        title=_(u"Product Designer"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader1=AutocompleteMultiFieldWidget)
    reader1 = schema.Tuple(
        title=_(u"Commander"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader2=AutocompleteMultiFieldWidget)
    reader2 = schema.Tuple(
        title=_(u"Deputy Commander"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader3=AutocompleteMultiFieldWidget)
    reader3 = schema.Tuple(
        title=_(u"Chief Designer"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader4=AutocompleteMultiFieldWidget)
    reader4 = schema.Tuple(
        title=_(u"Deputy Chief Designer"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader5=AutocompleteMultiFieldWidget)
    reader5 = schema.Tuple(
        title=_(u"Chief quality engineer"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader6=AutocompleteMultiFieldWidget)
    reader6 = schema.Tuple(
        title=_(u"Deputy Chief quality engineer"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader7=AutocompleteMultiFieldWidget)
    reader7 = schema.Tuple(
        title=_(u"Deputy Chief Process"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader8=AutocompleteMultiFieldWidget)
    reader8 = schema.Tuple(
        title=_(u"process staff"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader9=AutocompleteMultiFieldWidget)
    reader9 = schema.Tuple(
        title=_(u"quality manage staff"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.widget(reader10=AutocompleteMultiFieldWidget)
    reader10 = schema.Tuple(
        title=_(u"dispatch staff"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )

    form.widget(reader11=AutocompleteMultiFieldWidget)
    reader11 = schema.Tuple(
        title=_(u"EMC expert"),
        value_type=schema.Choice(title=_(u"User id"),
                                 source=u"plone.principalsource.Users"),
        required=False,
        missing_value=(),  # important!
    )
    form.fieldset(
        'first',
        label=_(u'The first members'),
        fields=[
            'reader1', 'reader2', 'reader3', 'reader4', 'reader5', 'reader6',
            'reader7'
        ],
    )
    form.fieldset(
        'second',
        label=_(u'The second members'),
        fields=['emc_designer', 'designer'],
    )
    # the third members will be assigned EMCExpert role
    form.fieldset(
        'third',
        label=_(u'The third members'),
        fields=['reader8', 'reader9', 'reader10', 'reader11'],
    )
예제 #4
0
class Ilocalroles(form.Schema):
    """
    Description of the localroles
    source 字段不能有缺省值的
    """

    directives.write_permission(emc_designer='emc.project.manage_project')
    emc_designer = schema.Tuple(
        title=_(u"EMC Designer"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    directives.write_permission(designer='emc.project.manage_designer')
    designer = schema.Tuple(
        title=_(u"Product Designer"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader1 = schema.Tuple(
        title=_(u"Commander"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader2 = schema.Tuple(
        title=_(u"Deputy Commander"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader3 = schema.Tuple(
        title=_(u"Chief Designer"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader4 = schema.Tuple(
        title=_(u"Deputy Chief Designer"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader5 = schema.Tuple(
        title=_(u"Chief quality engineer"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader6 = schema.Tuple(
        title=_(u"Deputy Chief quality engineer"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader7 = schema.Tuple(
        title=_(u"Deputy Chief Process"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader8 = schema.Tuple(
        title=_(u"process staff"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader9 = schema.Tuple(
        title=_(u"quality manage staff"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader10 = schema.Tuple(
        title=_(u"dispatch staff"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )

    reader11 = schema.Tuple(
        title=_(u"EMC expert"),
        value_type=schema.TextLine(),
        required=False,
        missing_value=(),  # important!
    )
    directives.widget('emc_designer',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('designer',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader1',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader2',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader3',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader4',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader5',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader6',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader7',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader8',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader9',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader10',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    directives.widget('reader11',
                      AjaxSelectFieldWidget,
                      vocabulary='plone.principalsource.Users')
    form.fieldset(
        'first',
        label=_(u'The first members'),
        fields=[
            'reader1', 'reader2', 'reader3', 'reader4', 'reader5', 'reader6',
            'reader7'
        ],
    )
    form.fieldset(
        'second',
        label=_(u'The second members'),
        fields=['emc_designer', 'designer'],
    )
    # the third members will be assigned EMCExpert role
    form.fieldset(
        'third',
        label=_(u'The third members'),
        fields=['reader8', 'reader9', 'reader10', 'reader11'],
    )
예제 #5
0
#-*- coding: UTF-8 -*-
from five import grok
from zope.schema.vocabulary import SimpleVocabulary
from zope.schema.vocabulary import SimpleTerm
from zope.schema.interfaces import IVocabularyFactory
#import unicodedata
#from incf.countryutils import data as countrydata
from emc.project import _

#任务类型属性:分析/设计/实验/仿真/培训
task_type=[    ('analysis','analysis',_(u'analysis')),
                  ('design','design',_(u'design')),           
                  ('train','train',_(u'train')),           
                  ('simulation','simulation',_(u'simulation')),
                  ('experiment','experiment',_(u'experiment')),
                        ]
task_type_terms = [SimpleTerm(value, token, title) for value, token, title in task_type ]

class taskType(object):

    def __call__(self, context):
        return SimpleVocabulary(task_type_terms)

grok.global_utility(taskType, IVocabularyFactory,
        name="emc.project.vocabulary.tasktype")

#密级属性:公开/内部/机密
security_level=[   ('public','public',_(u'public')),
                  ('inner','inner',_(u'inner')),
                  ('secret','secret',_(u'secret')),
                        ]
예제 #6
0
#-*- coding: UTF-8 -*-
from five import grok
from zope.schema.vocabulary import SimpleVocabulary
from zope.schema.vocabulary import SimpleTerm
from zope.schema.interfaces import IVocabularyFactory
#import unicodedata
#from incf.countryutils import data as countrydata
from emc.project import _

#任务类型属性:分析/设计/实验/仿真/培训
task_type = [
    ('analysis', 'analysis', _(u'analysis')),
    ('design', 'design', _(u'design')),
    ('train', 'train', _(u'train')),
    ('simulation', 'simulation', _(u'simulation')),
    ('experiment', 'experiment', _(u'experiment')),
]
task_type_terms = [
    SimpleTerm(value, token, title) for value, token, title in task_type
]


class taskType(object):
    def __call__(self, context):
        return SimpleVocabulary(task_type_terms)


grok.global_utility(taskType,
                    IVocabularyFactory,
                    name="emc.project.vocabulary.tasktype")
예제 #7
0
class ISecurityLevel(model.Schema):

    security_level = schema.Choice(
        title=_(u"security level"),
        vocabulary="emc.project.vocabulary.securitylevel",
        default="public")
예제 #8
0
    def sendMail(self,
                 subject,
                 mailbody,
                 send_to,
                 send_to_bcc=[],
                 sender=None,
                 debug_mode=False):
        notify_encode = 'utf-8'
        object = aq_inner(self.context)
        portal = getToolByName(object, "portal_url").getPortalObject()
        portal_transforms = getToolByName(object, "portal_transforms")
        if sender == None:
            send_from = portal.getProperty('email_from_address')
        else:
            send_from = sender
        if send_from and type(send_from) == tuple:
            send_from = send_from[0]

        translation_service = getToolByName(object, 'translation_service')

        html_body = mailbody
        here_url = object.absolute_url()
        url_text = u"%s-%s年度-年检报告" % (object.title, object.year)
        text = html_template.message % ({
            'from': send_from,
            'message': html_body,
            'url': here_url,
            'url_text': url_text,
        })

        if notify_encode:
            text = text.encode(notify_encode)
        try:
            data_to_plaintext = portal_transforms.convert(
                "html_to_web_intelligent_plain_text", text)
        except:
            # Probably Plone 2.5.x
            data_to_plaintext = portal_transforms.convert("html_to_text", text)
        plain_text = data_to_plaintext.getData()

        msg = MIMEMultipart('alternative')
        # Record the MIME types of both parts - text/plain and text/html.
        part1 = MIMEText(plain_text, 'plain', _charset=notify_encode)
        part2 = MIMEText(text, 'html', _charset=notify_encode)

        # Attach parts into message container.
        # According to RFC 2046, the last part of a multipart message, in this case
        # the HTML message, is best and preferred.
        msg.attach(part1)
        msg.attach(part2)
        mail_host = getToolByName(object, 'MailHost')
        try:
            if debug_mode:
                print "Message subject: %s" % subject
                print "Message text:\n%s" % text
                print "Message sent to %s (and to %s in bcc)" % (
                    ", ".join(send_to) or 'no-one', ", ".join(send_to_bcc)
                    or 'no-one')
            else:
                try:
                    mail_host.secureSend(msg,
                                         mto=send_to,
                                         mfrom=send_from,
                                         subject=subject,
                                         charset=notify_encode,
                                         mbcc=send_to_bcc)
                except TypeError:
                    # BBB: Plone 2.5 has problem sending MIMEMultipart... fallback to normal plain text email
                    mail_host.secureSend(plain_text,
                                         mto=send_to,
                                         mfrom=send_from,
                                         subject=subject,
                                         charset=notify_encode,
                                         mbcc=send_to_bcc)
        except Exception, inst:
            putils = getToolByName(object, 'plone_utils')
            putils.addPortalMessage(_(u'Not able to send notifications'))
            object.plone_log("Error sending notification: %s" % str(inst))