コード例 #1
0
 def getSchedulingContexts(self, request):
     """Set up scheduling contexts.
     
     Currently we include:
     
     - committees
     - plenary
     
     """
     app = common.get_application()
     committees = []
     contexts = []
     # !+GENERALIZE_GROUP
     #!+HARDWIRING(mb, Aug-2012) unhardwire committees lookup
     if interfaces.IWorkspaceSchedulingSectionLayer.providedBy(request):
         committees[:] = app["workspace"]["scheduling"][
             "committees"].values()
     for committee in committees:
         if committee.active:
             if capi.get_type_info(committee).workflow.has_feature(
                     "sitting"):
                 contexts.append(schedule.GroupSchedulingContext(committee))
     for context in contexts:
         context.__name__ = u"schedule"
     if interfaces.IWorkspaceSchedulingSectionLayer.providedBy(request):
         contexts.append(
             schedule.ISchedulingContext(app["workspace"]["scheduling"]))
     if len(contexts):
         contexts[-1].__name__ = u""
     return contexts
コード例 #2
0
ファイル: menu.py プロジェクト: BenoitTalbot/bungeni-portal
 def getSchedulingContexts(self, request):
     """Set up scheduling contexts.
     
     Currently we include:
     
     - committees
     - plenary
     
     """
     app = common.get_application()
     committees = []
     contexts = []
     # !+GENERALIZE_GROUP
     #!+HARDWIRING(mb, Aug-2012) unhardwire committees lookup
     if interfaces.IWorkspaceSchedulingSectionLayer.providedBy(request):
         committees[:] = app["workspace"]["scheduling"]["committees"].values()
     for committee in committees:
         if committee.active:
             if capi.get_type_info(committee).workflow.has_feature("sitting"):
                 contexts.append(schedule.GroupSchedulingContext(committee))
     for context in contexts:
         context.__name__ = u"schedule"
     if interfaces.IWorkspaceSchedulingSectionLayer.providedBy(request):
         contexts.append(schedule.ISchedulingContext(app["workspace"]["scheduling"]))
     if len(contexts):
         contexts[-1].__name__ = u""
     return contexts
コード例 #3
0
ファイル: utils.py プロジェクト: BenoitTalbot/bungeni-portal
def get_group_context(context):
    if interfaces.IOffice.providedBy(context):
        return get_chamber_for_group(context)
    elif interfaces.IGovernment.providedBy(context):
        # !+LEGISLATURE, GLOBAL? 
        return common.get_application()
    else:
        return context
コード例 #4
0
def get_group_context(context):
    if interfaces.IOffice.providedBy(context):
        return get_chamber_for_group(context)
    elif interfaces.IGovernment.providedBy(context):
        # !+LEGISLATURE, GLOBAL?
        return common.get_application()
    else:
        return context
コード例 #5
0
def date_input_search_widget(table_id, field_id):
    form = DateFilterWidget(common.get_application(), common.get_request(),
                            table_id, field_id)
    html = '<div id="date_input_search_widget_%(table_id)s_%(field_id)s" style="display: none;">%(html)s</div>' \
           % {"table_id": table_id,
              "field_id": field_id,
              "html": form.render()}
    script = open("%s/templates/date-input-search-widget.js" % (_path)).read()
    return html, script % {"table_id": table_id, "field_id": field_id}
コード例 #6
0
def date_input_search_widget(table_id, field_id):
    form = DateFilterWidget(common.get_application(), common.get_request(),
        table_id, field_id)
    html = '<div id="date_input_search_widget_%(table_id)s_%(field_id)s" style="display: none;">%(html)s</div>' \
           % {"table_id": table_id,
              "field_id": field_id,
              "html": form.render()}
    script = open("%s/templates/date-input-search-widget.js" % (_path)).read()
    return html, script % {"table_id": table_id, "field_id": field_id}
コード例 #7
0
ファイル: utils.py プロジェクト: BenoitTalbot/bungeni-portal
def get_group_privilege_extent_context(group):
    privilege_extent = removeSecurityProxy(group.__class__).privilege_extent
    if privilege_extent == "group":
        return group
    elif privilege_extent == "chamber":
        return get_chamber_for_group(group)
    elif privilege_extent == "legislature":
        return common.get_application()
    raise ValueError(group)
コード例 #8
0
def get_group_privilege_extent_context(group):
    privilege_extent = removeSecurityProxy(group.__class__).privilege_extent
    if privilege_extent == "group":
        return group
    elif privilege_extent == "chamber":
        return get_chamber_for_group(group)
    elif privilege_extent == "legislature":
        return common.get_application()
    raise ValueError(group)
コード例 #9
0
ファイル: login.py プロジェクト: BenoitTalbot/bungeni-portal
 def handle_login(self, action, data):
     if IUnauthenticatedPrincipal.providedBy(self.request.principal):
         self.status = _(u"Invalid account credentials")
     else:
         if data.get("camefrom", None) and data.get("camefrom").strip():
             camefrom = data["camefrom"].strip()
         else:
             camefrom = absoluteURL(get_application(), self.request)
         self.status = _("You are now logged in")
         self.request.response.redirect(camefrom)
コード例 #10
0
 def handle_login(self, action, data):
     if IUnauthenticatedPrincipal.providedBy(self.request.principal):
         self.status = _(u"Invalid account credentials")
     else:
         if data.get("camefrom", None) and data.get("camefrom").strip():
             camefrom = data["camefrom"].strip()
         else:
             camefrom = absoluteURL(get_application(), self.request)
         self.status = _("You are now logged in")
         self.request.response.redirect(camefrom)
コード例 #11
0
def get_group_prms(document):
    prms = []
    prms.append(IPrincipalRoleMap(common.get_application()))
    parent_group = getattr(document, "group", None)
    if parent_group:
        prms.append(IPrincipalRoleMap(parent_group))
    assigned_groups = getattr(document, "group_assignment", list())
    if assigned_groups:
        for group in assigned_groups:
            prms.append(IPrincipalRoleMap(group))
    return prms
コード例 #12
0
def get_group_prms(document):
    prms = []
    prms.append(IPrincipalRoleMap(common.get_application()))
    parent_group = getattr(document, "group", None)
    if parent_group:
        prms.append(IPrincipalRoleMap(parent_group))
    assigned_groups = getattr(document, "group_assignment", list())
    if assigned_groups:
        for group in assigned_groups:
            prms.append(IPrincipalRoleMap(group))
    return prms
コード例 #13
0
def notify_serialization_failure(template, **kw):
    email_settings = settings.EmailSettings(common.get_application())
    recipients = [ email_settings.default_sender ]    
    if template:
        body_text = template % kw
    else:
        body_text = kw.get("body")
    msg_event = NotificationEvent({
        "recipients": recipients,
        "body": body_text, 
        "subject": kw.get("subject", "Serialization Failure")
    })
    zope.event.notify(msg_event)
コード例 #14
0
ファイル: serialize.py プロジェクト: mohalfaki/bungeni-portal
def notify_serialization_failure(template, **kw):
    email_settings = settings.EmailSettings(common.get_application())
    recipients = [email_settings.default_sender]
    if template:
        body_text = template % kw
    else:
        body_text = kw.get("body")
    msg_event = NotificationEvent({
        "recipients":
        recipients,
        "body":
        body_text,
        "subject":
        kw.get("subject", "Serialization Failure")
    })
    zope.event.notify(msg_event)
コード例 #15
0
ファイル: serialize.py プロジェクト: bungeni-org/bungeni.main
def notify_serialization_failure(template, **kw):
    log.debug("notify_serialization_failure / %s / %s", template, kw)
    # !+DISABLING to see if the observed delays when running with only the db 
    # are actually caused by this
    return
    email_settings = settings.EmailSettings(common.get_application())
    recipients = [ email_settings.default_sender ]    
    if template:
        body_text = template % kw
    else:
        body_text = kw.get("body")
    msg_event = NotificationEvent({
        "recipients": recipients,
        "body": body_text, 
        "subject": kw.get("subject", "Serialization Failure")
    })
    zope.event.notify(msg_event)
コード例 #16
0
    def handle_restore(self, action, data):
        site_url = absoluteURL(get_application(), self.request)
        login = data.get("login", "")
        email = data.get("email", "")
        user = None
        session = Session()
        if email:
            user = session.query(User).filter(User.email == email).first()
        elif login:
            user = session.query(User).filter(User.login == login).first()
        if user:
            email = user.email
            link = session.query(PasswordRestoreLink).filter(
                PasswordRestoreLink.user_id == user.user_id).first()
            if link:
                if not link.expired():
                    self.status = _(u"This user's link is still active!")
                    return
            else:
                link = PasswordRestoreLink()

            link.hash = hashlib.sha224(
                user.login + SECRET_KEY +
                str(datetime.datetime.now())).hexdigest()
            link.expiration_date = datetime.datetime.now(
            ) + datetime.timedelta(1)
            link.user_id = user.user_id
            session.add(link)

            mailer = getUtility(IBungeniMailer)

            self.message = _(u"Restore password link: ")\
                        + "%s/reset_password?key=%s" % (site_url, link.hash)
            self.message += u"\n\n"
            self.message += _(u"This link will expire in 24 hours.")

            text = ViewPageTemplateFile("templates/mail.pt")(self)
            message = MIMEText(text)
            message.set_charset("utf-8")
            message["Subject"] = _(u"Bungeni password restoration")
            message["To"] = email
            mailer.send(str(message))
            self.status = _(u"Email was sent!")
        else:
            self.status = _(u"User not found!")
コード例 #17
0
ファイル: login.py プロジェクト: BenoitTalbot/bungeni-portal
 def handle_restore(self, action, data):
     site_url = absoluteURL(get_application(), self.request)
     login = data.get("login", "")
     email = data.get("email", "")
     user = None
     session = Session()
     if email:
         user = session.query(User).filter(User.email==email).first()
     elif login:
         user = session.query(User).filter(User.login==login).first()
     if user:
         email = user.email
         link = session.query(PasswordRestoreLink).filter(
             PasswordRestoreLink.user_id==user.user_id).first()
         if link:
             if not link.expired():
                 self.status = _(u"This user's link is still active!")
                 return
         else:
             link = PasswordRestoreLink()
         
         link.hash = hashlib.sha224(
             user.login + SECRET_KEY + str(datetime.datetime.now())).hexdigest()
         link.expiration_date = datetime.datetime.now() + datetime.timedelta(1)
         link.user_id = user.user_id
         session.add(link)
         
         mailer = getUtility(IBungeniMailer)
         
         self.message = _(u"Restore password link: ")\
                     + "%s/reset_password?key=%s" % (site_url, link.hash)
         self.message += u"\n\n"
         self.message += _(u"This link will expire in 24 hours.")
             
         text = ViewPageTemplateFile("templates/mail.pt")(self)
         message = MIMEText(text)
         message.set_charset("utf-8")
         message["Subject"] = _(u"Bungeni password restoration")
         message["To"] = email
         mailer.send(str(message))
         self.status = _(u"Email was sent!")
     else:
         self.status = _(u"User not found!")
コード例 #18
0
 def __call__(self):
     if IUnauthenticatedPrincipal.providedBy(self.request.principal):
         self.request.response.redirect(
             "%s/login" % (absoluteURL(get_application(), self.request)))
     return super(ChangePasswordForm, self).__call__()
コード例 #19
0
ファイル: login.py プロジェクト: BenoitTalbot/bungeni-portal
 def __call__( self ):
     self.request.response.expireCookie("wc.cookiecredentials")
     self.request.response.expireCookie(I18N_COOKIE_NAME)
     site_url = absoluteURL(get_application(), self.request)
     self.request.response.redirect(site_url)
コード例 #20
0
 def settings(self):
     return EmailSettings(common.get_application())
コード例 #21
0
ファイル: login.py プロジェクト: BenoitTalbot/bungeni-portal
 def __call__(self):
     if IUnauthenticatedPrincipal.providedBy(self.request.principal):
         self.request.response.redirect("%s/login" % (
                 absoluteURL(get_application(), self.request)))
     return super(ChangePasswordForm, self).__call__()
コード例 #22
0
 def settings(self):
     return EmailSettings(common.get_application())
コード例 #23
0
 def __call__(self):
     if not IUnauthenticatedPrincipal.providedBy(self.request.principal):
         workspace = get_application()["workspace"]
         self.request.response.redirect(absoluteURL(workspace,
                                                    self.request))
     return super(Login, self).__call__()
コード例 #24
0
 def __call__(self):
     self.request.response.expireCookie("wc.cookiecredentials")
     self.request.response.expireCookie(I18N_COOKIE_NAME)
     site_url = absoluteURL(get_application(), self.request)
     self.request.response.redirect(site_url)
コード例 #25
0
ファイル: login.py プロジェクト: BenoitTalbot/bungeni-portal
 def __call__(self):
     if not IUnauthenticatedPrincipal.providedBy(self.request.principal):
         workspace = get_application()["workspace"]
         self.request.response.redirect(absoluteURL(workspace, self.request))
     return super(Login, self).__call__()