예제 #1
0
def listen_featurelet_installed(proj, event):
    """need to create a default discussion mailing list
       and subscribe all project members to the list"""
    proj_id = proj.getId()
    proj_title = proj.Title().decode('utf-8')
    ml_id = '%s-discussion' % proj_id
    address = '%s%s' % (ml_id, getSuffix())

    # need to verify that a mailing list with this name isn't already created
    portal = getToolByName(proj, 'portal_url').getPortalObject()
    ll = getUtility(IListLookup, context=portal)
    if ll.getListForAddress(address) is not None:
        # XXX we'll just silently fail for now, not sure what else we can do
        # psm maybe?
        return

    # XXX we need a request utility
    request = proj.REQUEST
    # invokeFactory depends on the title being set in the request
    ml_title = u'%s discussion' % (proj_title)
    request.set('title', ml_title)
    lists_folder = proj.lists.aq_inner
    lists_folder.invokeFactory(OpenMailingList.portal_type, ml_id)
    ml = lists_folder[ml_id]
    ml.mailto = ml_id
    ms_tool = getToolByName(proj, 'portal_membership')
    cur_mem_id = unicode(ms_tool.getAuthenticatedMember().getId())
    ml.managers = (cur_mem_id,)
    ml.setDescription(translate(_(u'discussion_list_desc',
                                  u'Discussion list for this ${project_noun}, consisting of all ${project_noun} members.',
                                  mapping={'project_noun':project_noun()}),
                                            context=request))


    # http://www.openplans.org/projects/opencore/lists/opencore-dev/archive/2009/04/1239543233615/forum_view
    from zope.interface import alsoProvides
    alsoProvides(ml, ISyncWithProjectMembership)

    notify(ObjectCreatedEvent(ml))

    memlist = IWriteMembershipList(ml)

    cat = getToolByName(portal, 'portal_catalog')
    teams = getToolByName(portal, 'portal_teams')
    try:
        team = teams[proj_id]
    except KeyError:
        # if the team doesn't exist
        # then nobody is on the project yet
        # so we only need to subscribe the current user
        memlist.subscribe(cur_mem_id)
        return
    active_states = teams.getDefaultActiveStates()
    team_path = '/'.join(team.getPhysicalPath())
    mships = cat(portal_type='OpenMembership', review_state=active_states, path=team_path)
    for mship in mships:
        memlist.subscribe(mship.getId)
예제 #2
0
 def __set__(self, inst, value):
     # something weird happening w/ name mangling here, self.__field
     # doesn't work
     field = self._FieldProperty__field.bind(inst)
     field.validate(value)
     name = self._FieldProperty__name
     if field.readonly and inst.__dict__.has_key(name):
         raise ValueError(name, 'field is readonly')
     suffix = getSuffix()
     inst.__dict__[name] = value.strip() + suffix
예제 #3
0
 def __call__(self):
     suffix = getSuffix()
     value = self._getFormValue()
     if value.endswith(suffix):
         value = value[:-len(suffix)]
     return renderElement(self.tag,
                          suffix,
                          type=self.type,
                          name=self.name,
                          id=self.name,
                          value=value,
                          cssClass=self.cssClass,
                          extra=self.extra)
예제 #4
0
파일: app.py 프로젝트: LACMTA/eventsignage
    def post(self):
        raw_data = self.request.body
        json_data = json.loads(raw_data)
        self.finish()

        try:
            js = json.loads(json_data)
            sorted_meetings = sorted(js['current'], key=lambda k: k['ts'])
        except ValueError:
            raise tornado.httpserver._BadRequestException(
                "Invalid JSON structure."
            )

        # display today
        now = datetime.now()
        dayint = datetime.now().day
        suffix = getSuffix(dayint)
        today = "%s %s%s, %s" % (now.strftime(
            "%A %B"), dayint, suffix, datetime.now().year)

        mlist = []
        postme = True
        for i, item in enumerate(sorted_meetings[0:15]):
            try:
                if item['res_general_desc'] == None:
                    item['res_general_desc'] = "Untitled Meeting"

                # logging
                logger.debug("------------" + item['res_general_desc'])
                logger.debug(item['room_name'])
                logger.debug(item['displaytime'])

                d = {}
                title = "title_%s" % i
                room = "room_%s" % i
                t = "time_%s" % i
                try:
                    floorsfx = getSuffix( int(item['room_floor']) )
                    room_floor = "%s, %s%s floor" %(item['room_name'], item['room_floor'], floorsfx)
                except Exception as e:
                    room_floor = "%s" %(item['room_name'])
                    # logging
                    warningmsg = "we don't know the floor for that room | %s | %s" %(e.message, e.args)
                    logger.warn(warningmsg)

                d = {title: item['res_general_desc'],
                     room: room_floor,
                     t: item['displaytime'],
                     }
                mlist.append(d)
            except Exception as e:
                warningmsg = "%s | %s" %(e.message, e.args)
                # logging
                logger.warn(warningmsg)
                postme = False

        if (postme):
            for d in mlist:
                for k, v in d.items():
                    msg = {"id": k, "value": v}
                    for c in theclients:
                        c.write_message(msg)
            # now, the metadata
            for c in theclients:
                c.write_message(
                    {"id": "lastupdate", "value": "last update: " + js["lastupdate"]})
                c.write_message({"id": "display_today", "value": today})