Exemple #1
0
    def sittings_and_sessions(self):
        event_list = []
        try:
            date = self.request.get("from")
            dateobj = datetime.datetime(*time.strptime(date, "%Y-%m-%d")[0:5])
            start_date = utils.datetimedict.fromdate(dateobj)
        except:
            start_date = None

        try:
            date = self.request.get("to")
            dateobj = datetime.datetime(*time.strptime(date, "%Y-%m-%d")[0:5])
            end_date = utils.datetimedict.fromdate(dateobj)
        except:
            end_date = None

        if start_date is None:
            start_date = utils.datetimedict.fromdate(datetime.date.today())
            days = tuple(start_date + timedelta(days=d) for d in range(7))
            end_date = days[-1]
        elif end_date is None:
            start_date = utils.datetimedict.fromdate(datetime.date.today())
            days = tuple(start_date + timedelta(days=d) for d in range(7))
            end_date = days[-1]
        sittings = self.context.get_sittings(start_date, end_date)
        for sitting in sittings.values():
            if checkPermission("bungeni.sitting.View", sitting):
                trusted = removeSecurityProxy(sitting)
                trusted.text = dict(sitting_status=_(
                    misc.get_wf_state(trusted, trusted.status)))
                event_list.append(trusted)
        if model_interfaces.IParliament.providedBy(self.context.get_group()):
            return event_list + self.get_sessions()
        else:
            return event_list
 def get_items_by_type(self, item_type):
     day = u""
     day_list = []
     s_dict = {}
     formatter = self.request.locale.dates.getFormatter("date", "full")
     for schedule in self.itemschedules:
         if type(schedule.item) == item_type:
             sday = formatter.format(schedule.sitting.start_date)
             if sday != day:
                 s_list = []
                 day = sday
                 if s_dict:
                     day_list.append(s_dict)
                 s_dict = {}
             s_list.append(
                 {
                     "name": schedule.item.short_name,
                     "status": misc.get_wf_state(schedule.item),
                     "url": url.set_url_context(
                         "/business/%ss/obj-%s" % (schedule.item.type, schedule.item.parliamentary_item_id)
                     ),
                     "group_type": schedule.sitting.group.type,
                     "group_name": schedule.sitting.group.short_name,
                 }
             )
             s_dict["day"] = day
             s_dict["items"] = s_list
     if s_dict:
         day_list.append(s_dict)
     return day_list
def create_sittings_map(sittings, request):
    """Returns a dictionary that maps:

      (day, hour) -> {
         'record'   : sitting database record
         'actions'  : actions that apply to this sitting
         'class'    : sitting
         'span'     : span
         }
         
      (day, hour) -> ``None``
      
    If the mapped value is a sitting, then a sitting begins on that
    day and hour, if it's ``None``, then a sitting is reaching into
    this day and hour.
    
    The utility of the returned structure is to aid rendering a
    template with columns spanning several rows.
    """

    mapping = {}
    for sitting in sittings.values():
        day = sitting.start_date.weekday()
        hour = sitting.start_date.hour

        start_date = utils.timedict(sitting.start_date.hour, sitting.start_date.minute)

        end_date = utils.timedict(sitting.end_date.hour, sitting.end_date.minute)

        status = misc.get_wf_state(sitting)

        proxied = ProxyFactory(sitting)

        if checkPermission(u"bungeni.agendaitem.wf.schedule", proxied):
            link = "%s/schedule" % url.absoluteURL(sitting, request)
        else:
            link = url.absoluteURL(sitting, request)

        if checkPermission("zope.View", proxied):
            mapping[day, hour] = {
                "url": link,
                "record": sitting,
                "class": u"sitting",
                "actions": get_sitting_actions(sitting, request),
                "span": sitting.end_date.hour - sitting.start_date.hour,
                "formatted_start_time": start_date,
                "formatted_end_time": end_date,
                "status": status,
            }
            for hour in range(sitting.start_date.hour + 1, sitting.end_date.hour):
                mapping[day, hour] = None

        # make sure start- and end-date is the same DAY
        assert (
            (sitting.start_date.day == sitting.end_date.day)
            and (sitting.start_date.month == sitting.end_date.month)
            and (sitting.start_date.year == sitting.end_date.year)
        )

    return mapping
Exemple #4
0
 def get_items_by_type(self, item_type):
     day = u''
     day_list = []
     s_dict = {}
     formatter = self.request.locale.dates.getFormatter('date', 'full')
     for schedule in self.itemschedules:
         if type(schedule.item) == item_type:
             sday = formatter.format(schedule.sitting.start_date)
             if sday != day:
                 s_list = []
                 day = sday
                 if s_dict:
                     day_list.append(s_dict)
                 s_dict = {}
             s_list.append({
                 'name':
                 schedule.item.short_name,
                 'status':
                 misc.get_wf_state(schedule.item),
                 'url':
                 url.set_url_context("/business/%ss/obj-%s" %
                                     (schedule.item.type,
                                      schedule.item.parliamentary_item_id)),
                 'group_type':
                 schedule.sitting.group.type,
                 'group_name':
                 schedule.sitting.group.short_name
             })
             s_dict['day'] = day
             s_dict['items'] = s_list
     if s_dict:
         day_list.append(s_dict)
     return day_list
    def __call__(self):
        try:
            date = self.request.get("from")
            dateobj = datetime.datetime(*time.strptime(date, "%Y-%m-%d")[0:5])
            start_date = utils.datetimedict.fromdate(dateobj)
        except:
            start_date = None

        try:
            date = self.request.get("to")
            dateobj = datetime.datetime(*time.strptime(date, "%Y-%m-%d")[0:5])
            end_date = utils.datetimedict.fromdate(dateobj)
        except:
            end_date = None

        if start_date is None:
            start_date = utils.datetimedict.fromdate(datetime.date.today())
            days = tuple(start_date + timedelta(days=d) for d in range(7))
            end_date = days[-1]
        elif end_date is None:
            start_date = utils.datetimedict.fromdate(datetime.date.today())
            days = tuple(start_date + timedelta(days=d) for d in range(7))
            end_date = days[-1]
        sittings = self.context.get_sittings(start_date, end_date)
        self.sittings = []
        for sitting in sittings.values():
            if checkPermission("zope.View", sitting):
                trusted = removeSecurityProxy(sitting)
                trusted.text = dict(sitting_status=_(misc.get_wf_state(trusted, trusted.status)))
                self.sittings.append(trusted)
        self.request.response.setHeader("Content-type", self.content_mimetype)
        return self.render()
 def _get_items(self):
     data_list = []
     results = self.query.all()
     formatter = self.get_date_formatter("date", "long")
     for result in results:
         data = {}
         data["qid"] = ("i-" + str(result.parliamentary_item_id))
         if type(result) == domain.AgendaItem:
             g = u" " + result.group.type + u" " + result.group.short_name
         else:
             g = u"" # !+ g?
         data["subject"] = result.short_name
         data["title"] = result.short_name
         data["result_item_class"] = "workflow-state-" + result.status
         data["url"] = url.set_url_context("%ss/obj-%i" % (
                     result.type, result.parliamentary_item_id))
         data["status"] = misc.get_wf_state(result)
         data["status_date"] = formatter.format(result.status_date)
         data["owner"] = "%s %s" % (result.owner.first_name, result.owner.last_name)
         data["type"] = _(result.type)
         if type(result) == domain.Question:
             data["to"] = result.ministry.short_name
         else:
             data["to"] = u""
         # remember original domain object
         data["id"] = result.parliamentary_item_id
         data["_obj"] = result
         # append processed result item
         data_list.append(data)
     return data_list
 def _setData(self):
     """
     return the data of the query
     """
     data_list = []
     results = self.query.all()
     formatter = date.getLocaleFormatter(self.request, "date", "long")
     for result in results:
         data ={}
         data["qid"]= ("m_" + str(result.motion_id))
         data["subject"] = u"M " + str(result.motion_number) + u" " +  result.short_name
         data["title"] = result.short_name
         if result.approval_date:
             data["result_item_class"] = ("workflow-state-" + 
                 result.status  + "sc-after-" + 
                 datetime.date.strftime(result.approval_date, "%Y-%m-%d"))
         else:
             data["result_item_class"] = "workflow-state-" + result.status
         data["url"] = url.set_url_context("motions/obj-" + str(result.motion_id))
         data["status"] = misc.get_wf_state(result)
         data["status_date"] = formatter.format(result.status_date)
         data["owner"] = "%s %s" %(result.owner.first_name, result.owner.last_name)
         data["type"] =  _(result.type)
         data["to"] = ""
         data_list.append(data)
     self._data = data_list
 def _setData(self):
     """Return the data of the query.
     """
     data_list = []
     results = self.query.all()
     formatter = date.getLocaleFormatter(self.request, "date", "long")
     for result in results:
         data = {}
         data["qid"] = ("i-" + str(result.parliamentary_item_id))
         if type(result)==domain.AgendaItem:
             g = u" " + result.group.type + u" " + result.group.short_name
         else:
             g = u"" # !+ g?
         data["subject"] = result.short_name
         data["title"] = result.short_name
         data["result_item_class"] = "workflow-state-" + result.status
         data["url"] = url.set_url_context("%ss/obj-%i" % (
                     result.type, result.parliamentary_item_id))
         data["status"] = misc.get_wf_state(result)
         data["status_date"] = formatter.format(result.status_date)
         data["owner"] = "%s %s" %(result.owner.first_name, result.owner.last_name)
         data["type"] = _(result.type)
         if type(result)==domain.Question:
             data["to"] = result.ministry.short_name
         else:
             data["to"]= u""
         # remember original domain object
         data["id"] = result.parliamentary_item_id
         data["_obj"] = result
         # append processed result item
         data_list.append(data)
     self._data = data_list
 def getData(self):
     """
     return the data of the query
     """
     data_list = []
     results = self.query.all()
     formatter = self.request.locale.dates.getFormatter('date', 'short')
     for result in results:
         data ={}
         data['qid']= ( 'm_' + str(result.motion_id) )
         data['subject'] = u'M ' + str(result.motion_number) + u' ' +  result.short_name
         data['title'] = result.short_name
         if result.approval_date:
             data['result_item_class'] = ('workflow-state-' + 
                 result.status  + 'sc-after-' + 
                 datetime.date.strftime(result.approval_date, '%Y-%m-%d'))
         else:
             data['result_item_class'] = 'workflow-state-' + result.status
         data['url'] = 'motions/obj-' + str(result.motion_id)
         data['status'] = misc.get_wf_state(result)
         data['status_date'] = formatter.format(result.status_date)
         data['owner'] = "%s %s" %(result.owner.first_name, result.owner.last_name)
         data['type'] =  _(result.type)
         data['to'] = ""
         data_list.append(data)
     return data_list
Exemple #10
0
 def get_items_by_type(self, item_type):
     day = u""
     day_list = []
     s_dict = {}
     formatter = self.request.locale.dates.getFormatter("date", "full")
     for schedule in self.itemschedules:
         if type(schedule.item) == item_type:
             sday = formatter.format(schedule.sitting.start_date)
             if sday != day:
                 s_list = []
                 day = sday
                 if s_dict:
                     day_list.append(s_dict)
                 s_dict = {}
             s_list.append({
                 "name":
                 IDCDescriptiveProperties(schedule.item).title,
                 "status":
                 str(misc.get_wf_state(schedule.item)),
                 "url":
                 url.set_url_context(
                     "/business/%ss/obj-%s" %
                     (schedule.item.type, schedule.item.doc_id)),
                 "group_type":
                 schedule.sitting.group.type,
                 "group_name":
                 schedule.sitting.group.short_name
             })
             s_dict["day"] = day
             s_dict["items"] = s_list
     if s_dict:
         day_list.append(s_dict)
     return day_list
Exemple #11
0
 def getData(self):
     """return the data of the query
     """
     data_list = []
     results = self.query.all()
     formatter = self.request.locale.dates.getFormatter('date', 'short')
     for result in results:
         data = {}
         data['qid']= ( 'i-' + str(result.parliamentary_item_id) )
         if type(result) == domain.AgendaItem:
             g = u' ' + result.group.type + u' ' + result.group.short_name
         else:
             g = u'' # !+ g?
         data['subject'] = result.short_name
         data['title'] = result.short_name
         data['result_item_class'] = 'workflow-state-' + result.status
         data['url'] = '%ss/obj-%i' % (
                     result.type, result.parliamentary_item_id)
         data['status'] = misc.get_wf_state(result)
         data['status_date'] = formatter.format(result.status_date)
         data['owner'] = "%s %s" %(result.owner.first_name, result.owner.last_name)
         data['type'] =  _(result.type)
         if type(result) == domain.Question:
             data['to'] = result.ministry.short_name
         else:
             data['to']= u""
         data_list.append(data)
     return data_list
Exemple #12
0
 def getData(self):
     """
     return the data of the query
     """
     data_list = []
     results = self.query.all()
     formatter = self.request.locale.dates.getFormatter('date', 'short')
     for result in results:
         data ={}
         data['subject'] = result.short_name
         if ICommittee.providedBy(result.group):
             #http://localhost:8081/business/committees/obj-194/calendar/group/sittings/obj-5012/schedule
             data['url'] = 'committees/obj-%i/calendar/group/sittings/obj-%i/schedule' % (
                 result.group.group_id, result.sitting_id)
         else:
             #http://localhost:8081/calendar/group/sittings/obj-5011/schedule
             data['url'] = 'calendar/obj-%i/schedule' % result.sitting_id
         data['items'] = ''
         data['status'] = misc.get_wf_state(result)
         data['status_date'] = formatter.format(result.status_date)
         data['owner'] = ""
         data['type'] =  result.group.type
         data['group'] = u"%s %s" %(result.group.type.capitalize(), 
             result.group.short_name)
         data['date'] = u"%s %s" % (
             result.start_date.strftime('%Y-%m-%d %H:%M'), 
             #formatter.format(
             result.sitting_type.sitting_type)
         if type(result) == domain.Question:
             data['to'] = result.ministry.short_name
         else:
             data['to']= u""
         data_list.append(data)
     return data_list
Exemple #13
0
 def _setData(self):
     """
     return the data of the query
     """
     data_list = []
     results = self.query.all()
     formatter = date.getLocaleFormatter(self.request, "date", "long")
     for result in results:
         data = {}
         data["qid"] = ("m_" + str(result.motion_id))
         data["subject"] = u"M " + str(
             result.motion_number) + u" " + result.short_name
         data["title"] = result.short_name
         if result.approval_date:
             data["result_item_class"] = (
                 "workflow-state-" + result.status + "sc-after-" +
                 datetime.date.strftime(result.approval_date, "%Y-%m-%d"))
         else:
             data["result_item_class"] = "workflow-state-" + result.status
         data["url"] = url.set_url_context("motions/obj-" +
                                           str(result.motion_id))
         data["status"] = misc.get_wf_state(result)
         data["status_date"] = formatter.format(result.status_date)
         data["owner"] = "%s %s" % (result.owner.first_name,
                                    result.owner.last_name)
         data["type"] = _(result.type)
         data["to"] = ""
         data_list.append(data)
     self._data = data_list
 def get_items_by_type(self, item_type):
     day = u''
     day_list = []
     s_dict = {}
     formatter = self.request.locale.dates.getFormatter('date', 'full') 
     for schedule in self.itemschedules:
         if type(schedule.item) == item_type:
             sday = formatter.format(schedule.sitting.start_date)
             if sday != day:
                 s_list = []
                 day = sday
                 if s_dict:
                     day_list.append(s_dict)
                 s_dict = {}
             s_list.append({
                 'name': schedule.item.short_name,
                 'status' : misc.get_wf_state(schedule.item),
                 'url' : url.set_url_context("/business/%ss/obj-%s" % (
                                     schedule.item.type,
                                     schedule.item.parliamentary_item_id)),
                 'group_type': schedule.sitting.group.type,
                 'group_name' : schedule.sitting.group.short_name
                  })
             s_dict['day'] = day
             s_dict['items'] = s_list
     if s_dict:
         day_list.append(s_dict)
     return day_list
Exemple #15
0
 def items(self):
     for item in self.query.all():
         _url = "/business/%ss/obj-%i" % (item.type,
             item.doc_id)
         yield {"type": item.type,
             "title": item.title,
             "status": misc.get_wf_state(item),
             "submission_date" : item.submission_date,
             "url": _url }
Exemple #16
0
 def results(self):
     for result in self.query.all():
         url = '/business/%ss/obj-%i' % (result.type,
             result.parliamentary_item_id)
         yield {'type': result.type, 
             'short_name': result.short_name,
             'status': misc.get_wf_state(result),
             'submission_date' : result.submission_date.strftime('%Y-%m-%d'), 
             'url': url }
Exemple #17
0
 def items(self):
     for item in self.query.all():
         _url = "/business/%ss/obj-%i" % (item.type,
             item.parliamentary_item_id)
         yield {"type": item.type,
             "short_name": item.short_name,
             "status": misc.get_wf_state(item),
             "submission_date" : item.submission_date,
             "url": _url }
 def items(self):
     for item in self.query.all():
         _url = "/business/%ss/obj-%i" % (item.type,
             item.doc_id)
         yield {"type": item.type,
             "title": item.title,
             "status": misc.get_wf_state(item),
             "submission_date" : item.submission_date,
             "url": _url }
Exemple #19
0
 def get_sitting_items(self, sitting):
     s_list = []
     for schedule in sitting.item_schedule:
         s_list.append({
                 'name': schedule.item.short_name,
                 'status' : misc.get_wf_state(schedule.item),
                 'url' : ('/business/' + schedule.item.type + 's/obj-' + 
                     str(schedule.item.parliamentary_item_id)),
                 'item_type' : schedule.item.type,
                  })
     return s_list
Exemple #20
0
 def extra(self):
     wf = IWorkflow(self.context, None)
     if wf is None:
         return {"id": self.id}
     status = self.context.status
     state_title = translate(misc.get_wf_state(self.context),
         domain="bungeni", context=self.request)
     return {
         "id": self.id,
         "class": "state-%s" % status,
         "state": status,
         "stateTitle": state_title
     }
 def get_sitting_items(self, sitting):
     s_list = []
     for schedule in sitting.item_schedule:
         s_list.append(
             {
                 "name": schedule.item.short_name,
                 "status": misc.get_wf_state(schedule.item),
                 "url": url.set_url_context(
                     ("/business/" + schedule.item.type + "s/obj-" + str(schedule.item.parliamentary_item_id))
                 ),
                 "item_type": schedule.item.type,
             }
         )
     return s_list
Exemple #22
0
 def extra(self):
     wf = IWorkflow(self.context, None)
     if wf is None:
         return {"id": self.id}
     status = self.context.status
     state_title = translate(misc.get_wf_state(self.context),
                             domain="bungeni",
                             context=self.request)
     return {
         "id": self.id,
         "class": "state-%s" % status,
         "state": status,
         "stateTitle": state_title
     }
Exemple #23
0
 def getter(item, formatter):
     state_title = get_wf_state(item)
     request = common.get_request()
     state_title = translate(state_title, domain="bungeni", context=request)
     # !+MY_LISTING_ROWS(mr, aug-2012) the following is a (exploratory) 
     # mechanism to add a distinction between what rows are owned by the 
     # current user and others. Here it is added only to "status" columns
     # but a generic "row-level" means to mark such rows as different 
     # from the others may be a useful feature.
     if IWorkspaceSectionLayer.providedBy(request) and IOwned.providedBy(item):
         # !+delegation?
         if item.owner == get_login_user():
             state_title = "<b>%s</b> *" % (state_title)
     return state_title
Exemple #24
0
 def getter(item, formatter):
     state_title = get_wf_state(item)
     request = common.get_request()
     state_title = translate(state_title, domain="bungeni", context=request)
     # !+MY_LISTING_ROWS(mr, aug-2012) the following is a (exploratory) 
     # mechanism to add a distinction between what rows are owned by the 
     # current user and others. Here it is added only to "status" columns
     # but a generic "row-level" means to mark such rows as different 
     # from the others may be a useful feature.
     if IWorkspaceSectionLayer.providedBy(request) and IOwned.providedBy(item):
         # !+delegation?
         if item.owner == get_db_user():
             state_title = "<b>%s</b> *" % (state_title)
     return state_title
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in get_states('groupsitting',tagged=['agendaprivate']):
         return s_list
     else:
         for schedule in sitting.item_schedule:
             s_list.append({
                 'name': schedule.item.short_name,
                 'status' : misc.get_wf_state(schedule.item),
                 'url' : url.set_url_context(('/business/' +
                         schedule.item.type + 's/obj-' + 
                     str(schedule.item.parliamentary_item_id))),
                 'item_type' : schedule.item.type,
                  })
         return s_list
Exemple #26
0
 def _q_data_item(q):
     item = {}
     item['qid']= 'q_%s' % q.question_id
     if q.question_number:
         item['subject'] = u'Q %s %s' % (q.question_number, q.short_name)
     else:
         item['subject'] = q.short_name
     item['title'] = q.short_name
     item['result_item_class'] = 'workflow-state-%s' % q.status
     item['url'] = 'questions/obj-%s' % q.question_id
     item['status'] = misc.get_wf_state(q)
     item['status_date'] = date_formatter.format(q.status_date)
     item['owner'] = "%s %s" %(q.owner.first_name, q.owner.last_name)
     item['type'] = _(q.type)
     item['to'] = q.ministry.short_name
     return item
 def _q_data_item(q):
     item = {}
     item["qid"]= "q_%s" % q.question_id
     if q.question_number:
         item["subject"] = u"Q %s %s" % (q.question_number, q.short_name)
     else:
         item["subject"] = q.short_name
     item["title"] = q.short_name
     item["result_item_class"] = "workflow-state-%s" % q.status
     item["url"] = url.set_url_context("questions/obj-%s" % q.question_id)
     item["status"] = misc.get_wf_state(q)
     item["status_date"] = date_formatter.format(q.status_date)
     item["owner"] = "%s %s" %(q.owner.first_name, q.owner.last_name)
     item["type"] = _(q.type)
     item["to"] = q.ministry.short_name
     return item
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in self._agenda_private_state_ids:
         return s_list
     else:
         for schedule in sitting.item_schedule:
             descriptor = queryModelDescriptor(schedule.item.__class__)
             s_list.append({
                 "name": IDCDescriptiveProperties(schedule.item).title,
                 "status": str(misc.get_wf_state(schedule.item)),
                 "url": IDCDescriptiveProperties(schedule.item).uri,
                 "item_type": schedule.item.type,
                 "heading": True if schedule.item.type == "heading" else False,
                 "item_type_title": (descriptor.display_name 
                     if descriptor else schedule.item.type),
             })
         return s_list
Exemple #29
0
    def _setData(self):
        """Return the data of the query
        """
        formatter = date.getLocaleFormatter(self.request, "date", "long")
        data_list = []
        results = self.query.all()

        # if no current parliament, no data
        try:
            parliament_id = model_utils.get_current_parliament().parliament_id
        except:
            return data_list
        #
        government_id = self.__parent__.government_id
        for result in results:
            data = {}
            data["qid"] = "g_%s" % (result.group_id)
            data["subject"] = result.short_name
            data["title"] = "%s (%s)" % (result.short_name, result.type)
            data["result_item_class"] = "workflow-state-%s" % (result.status)
            _url = "/archive/browse/parliaments/obj-%s" % (parliament_id)
            if type(result) == domain.Parliament:
                data["url"] = url.set_url_context(_url)
                continue
            elif type(result) == domain.Committee:
                #data["url"] = url + "/committees/obj-" + str(result.group_id)
                data["url"] = url.set_url_context(
                    "/groups/%s/%s" % (result.parent_group.group_principal_id,
                                       result.group_principal_id))
            elif type(result) == domain.PoliticalGroup:
                data["url"] = url.set_url_context("%s/politicalgroups/obj-%s" %
                                                  (_url, result.group_id))
            elif type(result) == domain.Ministry:
                data["url"] = url.set_url_context(
                    "%s/governments/obj-%s/ministries/obj-%s" %
                    (_url, government_id, result.group_id))
            else:
                data["url"] = "#"
            data["status"] = misc.get_wf_state(result)
            data["status_date"] = formatter.format(result.status_date)
            data["owner"] = ""
            data["type"] = _(result.type)
            data["to"] = ""
            data_list.append(data)
        self._data = data_list
 def _setData(self):
     """Get the data of the query
     """
     data_list = []
     results = self.query.all()
     formatter = date.getLocaleFormatter(self.request, "date", "long")
     time_formatter = date.getLocaleFormatter(self.request, "time", "short")
     for result in results:
         data = {}
         data["subject"] = result.short_name
         # this tab appears in the workspace pi/ view...
         data["url"] = url.set_url_context("../calendar/sittings/obj-%i/schedule" %
                         result.sitting_id)
         # Note: same UI is also displayed at: 
         # /business/sittings/obj-%i/schedule % result.sitting_id
         data["items"] = ""
         data["status"] = misc.get_wf_state(result)
         data["status_date"] = formatter.format(result.status_date)
         data["owner"] = ""
         data["type"] =  result.group.type
         data["group"] = u"%s %s" % (
                 result.group.type.capitalize(), result.group.short_name)
         data["time_from_to"] = (
                 time_formatter.format(result.start_date),
                 time_formatter.format(result.end_date))
         data["date"] = formatter.format(result.start_date) 
         if result.venue:
             data["venue"] = _(result.venue.short_name)
         #else:
         #    date["venue"] = ""
         if type(result)==domain.Question:
             data["to"] = result.ministry.short_name
         else:
             data["to"]= ""
         # past, present, future
         today = datetime.datetime.today().date()
         startday = result.start_date.date()
         if today==startday:
             data["css_class"] = "present"
         elif today>startday:
             data["css_class"] = "past"
         else:
             data["css_class"] = "future"
         data_list.append(data)
     self._data = data_list
 def _setData(self):
     """Return the data of the query
     """
     formatter = date.getLocaleFormatter(self.request, "date", "long")
     data_list = []
     results = self.query.all()
     
     # if no current parliament, no data
     try:
         parliament_id = model_utils.get_current_parliament().parliament_id
     except: 
         return data_list
     #
     government_id = self.__parent__.government_id
     for result in results:
         data = {}
         data["qid"] = "g_%s" % (result.group_id)
         data["subject"] = result.short_name
         data["title"] = "%s (%s)" % (result.short_name, result.type)
         data["result_item_class"] = "workflow-state-%s" % (result.status)
         _url = "/archive/browse/parliaments/obj-%s" % (parliament_id)
         if type(result) == domain.Parliament:
             data["url"] = url.set_url_context(_url)
             continue
         elif type(result) == domain.Committee:
             #data["url"] = url + "/committees/obj-" + str(result.group_id) 
             data["url"] = url.set_url_context("/groups/%s/%s" % (
                 result.parent_group.group_principal_id,
                 result.group_principal_id))
         elif type(result) == domain.PoliticalGroup:
             data["url"] = url.set_url_context(
                 "%s/politicalgroups/obj-%s" % (_url, result.group_id))
         elif type(result) == domain.Ministry:
             data["url"] = url.set_url_context(
                 "%s/governments/obj-%s/ministries/obj-%s" % (
                     _url, government_id, result.group_id))
         else:
             data["url"] = "#"
         data["status"] = misc.get_wf_state(result)
         data["status_date"] = formatter.format(result.status_date)
         data["owner"] = ""
         data["type"] =  _(result.type)
         data["to"] = ""
         data_list.append(data)
     self._data = data_list
Exemple #32
0
 def _q_data_item(q):
     item = {}
     item["qid"] = "q_%s" % q.question_id
     if q.question_number:
         item["subject"] = u"Q %s %s" % (q.question_number,
                                         q.short_name)
     else:
         item["subject"] = q.short_name
     item["title"] = q.short_name
     item["result_item_class"] = "workflow-state-%s" % q.status
     item["url"] = url.set_url_context("questions/obj-%s" %
                                       q.question_id)
     item["status"] = misc.get_wf_state(q)
     item["status_date"] = date_formatter.format(q.status_date)
     item["owner"] = "%s %s" % (q.owner.first_name, q.owner.last_name)
     item["type"] = _(q.type)
     item["to"] = q.ministry.short_name
     return item
Exemple #33
0
 def _setData(self):
     """Get the data of the query
     """
     data_list = []
     results = self.query.all()
     formatter = date.getLocaleFormatter(self.request, "date", "long")
     time_formatter = date.getLocaleFormatter(self.request, "time", "short")
     for result in results:
         data = {}
         data["subject"] = result.short_name
         # this tab appears in the workspace pi/ view...
         data["url"] = url.set_url_context(
             "../calendar/sittings/obj-%i/schedule" % result.sitting_id)
         # Note: same UI is also displayed at:
         # /business/sittings/obj-%i/schedule % result.sitting_id
         data["items"] = ""
         data["status"] = misc.get_wf_state(result)
         data["status_date"] = formatter.format(result.status_date)
         data["owner"] = ""
         data["type"] = result.group.type
         data["group"] = u"%s %s" % (result.group.type.capitalize(),
                                     result.group.short_name)
         data["time_from_to"] = (time_formatter.format(result.start_date),
                                 time_formatter.format(result.end_date))
         data["date"] = formatter.format(result.start_date)
         if result.venue:
             data["venue"] = _(result.venue.short_name)
         #else:
         #    date["venue"] = ""
         if type(result) == domain.Question:
             data["to"] = result.ministry.short_name
         else:
             data["to"] = ""
         # past, present, future
         today = datetime.datetime.today().date()
         startday = result.start_date.date()
         if today == startday:
             data["css_class"] = "present"
         elif today > startday:
             data["css_class"] = "past"
         else:
             data["css_class"] = "future"
         data_list.append(data)
     self._data = data_list
Exemple #34
0
 def getData(self):
     """Return the data of the query
     """
     formatter = self.request.locale.dates.getFormatter('date', 'short')
     data_list = []
     results = self.query.all()
     
     # if no current parliament, no data
     try:
         parliament_id = model_utils.get_current_parliament().parliament_id
     except: 
         return data_list
     #
     government_id = self.__parent__.government_id
     for result in results:
         data = {}
         data['qid']= ( 'g_' + str(result.group_id) )
         data['subject'] = result.short_name
         data['title'] = result.short_name  + ' (' + result.type + ')'
         data['result_item_class'] = 'workflow-state-' + result.status
         url = "/archive/browse/parliaments/obj-" + str(parliament_id) 
         if type(result) == domain.Parliament:
             data['url'] = url
             continue
         elif type(result) == domain.Committee:
             #data['url'] = url + '/committees/obj-' + str(result.group_id) 
             data['url'] = ('/groups/' + 
                 result.parent_group.group_principal_id + 
                 '/' + result.group_principal_id)
         elif type(result) == domain.PoliticalGroup:
             data['url'] = url + '/politicalgroups/obj-' + str(result.group_id)
         elif type(result) == domain.Ministry:
             data['url'] = url + ('/governments/obj-%s/ministries/obj-%s' % (
                     str(government_id), str(result.group_id) ))
         else:
             data['url'] = '#'
         data['status'] = misc.get_wf_state(result)
         data['status_date'] = formatter.format(result.status_date)
         data['owner'] = ""
         data['type'] =  _(result.type)
         data['to'] = u""
         data_list.append(data)
     return data_list
Exemple #35
0
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in get_states('groupsitting',
                                     tagged=['agendaprivate']):
         return s_list
     else:
         for schedule in sitting.item_schedule:
             s_list.append({
                 'name':
                 schedule.item.short_name,
                 'status':
                 misc.get_wf_state(schedule.item),
                 'url':
                 url.set_url_context(
                     ('/business/' + schedule.item.type + 's/obj-' +
                      str(schedule.item.parliamentary_item_id))),
                 'item_type':
                 schedule.item.type,
             })
         return s_list
Exemple #36
0
 def getData(self):
     """
     return the data of the query
     """
     data_list = []
     results = self.query.all()
     formatter = self.request.locale.dates.getFormatter('date', 'short')
     for result in results:
         data ={}
         data['qid']= ( 'b_' + str(result.bill_id) )
         data['subject'] = result.short_name
         data['title'] = result.short_name
         data['result_item_class'] = ('workflow-state-' + result.status )
         data['url'] = '%ss/obj-%i' %(result.type, result.parliamentary_item_id)
         data['status'] = misc.get_wf_state(result)
         data['status_date'] = formatter.format(result.status_date)
         data['owner'] = "%s %s" %(result.owner.first_name, result.owner.last_name)
         data['type'] =  _(result.type)
         data['to'] = ""
         data_list.append(data)
     return data_list
Exemple #37
0
 def __call__(self):
     try:
         date = self.request.get('from')
         dateobj = datetime.datetime(*time.strptime(date, "%Y-%m-%d")[0:5])
         start_date = utils.datetimedict.fromdate(dateobj)
     except:
         start_date = None
         
     try:
         date = self.request.get('to')
         dateobj = datetime.datetime(*time.strptime(date, "%Y-%m-%d")[0:5])
         end_date = utils.datetimedict.fromdate(dateobj)
     except:
         end_date = None
     
     if start_date is None:
         start_date = utils.datetimedict.fromdate(datetime.date.today())
         days = tuple(start_date + timedelta(days=d) for d in range(7))
         end_date = days[-1]
     elif end_date is None:
         start_date = utils.datetimedict.fromdate(datetime.date.today())
         days = tuple(start_date + timedelta(days=d) for d in range(7))
         end_date = days[-1]
     sittings = self.context.get_sittings(
         start_date,
         end_date,
         )
     self.sittings = []
     for sitting in sittings.values():
         if checkPermission("zope.View", sitting):
             trusted = removeSecurityProxy(sitting)
             trusted.text = dict(
                 sitting_status = _(
                     misc.get_wf_state(trusted, trusted.status)
                 )
             )
             self.sittings.append(trusted)
     self.request.response.setHeader('Content-type', 'text/xml')
     return self.render()
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in get_states('groupsitting',tagged=['agendaprivate']):
         return s_list
     else:
     # !+DCPROPERTIES(murithi, april-2011) Factor out properties+i18n to DC
         for schedule in sitting.item_schedule:
             descriptor = queryModelDescriptor(schedule.item.__class__)
             s_list.append({
                 'name': IDCDescriptiveProperties(schedule.item).title,
                 'status' : str(misc.get_wf_state(schedule.item))
                 ,
                 'url' : url.set_url_context(('/business/' +
                         schedule.item.type + 's/obj-' + 
                     str(schedule.item.parliamentary_item_id))),
                 'item_type': schedule.item.type,
                 'item_type_title' : (
                     descriptor.display_name if descriptor else
                         schedule.item.type
                 ),
             })
         return s_list
Exemple #39
0
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in self._agenda_private_state_ids:
         return s_list
     else:
         for schedule in sitting.item_schedule:
             descriptor = queryModelDescriptor(schedule.item.__class__)
             s_list.append({
                 "name":
                 IDCDescriptiveProperties(schedule.item).title,
                 "status":
                 str(misc.get_wf_state(schedule.item)),
                 "url":
                 IDCDescriptiveProperties(schedule.item).uri,
                 "item_type":
                 schedule.item.type,
                 "heading":
                 True if schedule.item.type == "heading" else False,
                 "item_type_title": (descriptor.display_name
                                     if descriptor else schedule.item.type),
             })
         return s_list
Exemple #40
0
 def sittings_and_sessions(self):
     event_list = []
     try:
         date = self.request.get("from")
         dateobj = datetime.datetime(*time.strptime(date, "%Y-%m-%d")[0:5])
         start_date = utils.datetimedict.fromdate(dateobj)
     except:
         start_date = None
         
     try:
         date = self.request.get("to")
         dateobj = datetime.datetime(*time.strptime(date, "%Y-%m-%d")[0:5])
         end_date = utils.datetimedict.fromdate(dateobj)
     except:
         end_date = None
     
     if start_date is None:
         start_date = utils.datetimedict.fromdate(datetime.date.today())
         days = tuple(start_date + timedelta(days=d) for d in range(7))
         end_date = days[-1]
     elif end_date is None:
         start_date = utils.datetimedict.fromdate(datetime.date.today())
         days = tuple(start_date + timedelta(days=d) for d in range(7))
         end_date = days[-1]
     sittings = self.context.get_sittings(start_date, end_date)
     for sitting in sittings.values():
         if checkPermission("bungeni.sitting.View", sitting):
             trusted = removeSecurityProxy(sitting)
             trusted.text = dict(
                 sitting_status = _(
                     misc.get_wf_state(trusted, trusted.status)
                 )
             )
             event_list.append(trusted)
     if model_interfaces.IParliament.providedBy(self.context.get_group()):
         return event_list + self.get_sessions()
     else:
         return event_list
Exemple #41
0
 def get_sitting_items(self, sitting):
     s_list = []
     if sitting.status in get_states('groupsitting',
                                     tagged=['agendaprivate']):
         return s_list
     else:
         # !+DCPROPERTIES(murithi, april-2011) Factor out properties+i18n to DC
         for schedule in sitting.item_schedule:
             descriptor = queryModelDescriptor(schedule.item.__class__)
             s_list.append({
                 'name':
                 IDCDescriptiveProperties(schedule.item).title,
                 'status':
                 str(misc.get_wf_state(schedule.item)),
                 'url':
                 url.set_url_context(
                     ('/business/' + schedule.item.type + 's/obj-' +
                      str(schedule.item.parliamentary_item_id))),
                 'item_type':
                 schedule.item.type,
                 'item_type_title': (descriptor.display_name
                                     if descriptor else schedule.item.type),
             })
         return s_list
Exemple #42
0
 def get_wf_state(self):
     # return human readable, and localized, workflow title
     return _(misc.get_wf_state(removeSecurityProxy(self.context)))
Exemple #43
0
 def status(self):
     session = Session()
     context = session.merge(removeSecurityProxy(self.context))
     return translate_i18n(misc.get_wf_state(context))
Exemple #44
0
 def get_wf_state(self):
     """Get the human readable, and localized, workflow state title.
     """
     return _(misc.get_wf_state(removeSecurityProxy(self.context)))
 def get_wf_state(self):
     # return human readable, and localized, workflow title
     return _(misc.get_wf_state(removeSecurityProxy(self.context)))
Exemple #46
0
 def status(self):
     context = _merged(self.context)
     return translate(misc.get_wf_state(context))
Exemple #47
0
 def status(self):
     session = Session()
     context = session.merge(removeSecurityProxy(self.context))
     return translate_i18n(misc.get_wf_state(context))
Exemple #48
0
 def status(self):
     context = _merged(self.context)
     return translate_i18n(misc.get_wf_state(context))
Exemple #49
0
def create_sittings_map(sittings, request):
    """Returns a dictionary that maps:

      (day, hour) -> {
         'record'   : sitting database record
         'actions'  : actions that apply to this sitting
         'class'    : sitting
         'span'     : span
         }
         
      (day, hour) -> ``None``
      
    If the mapped value is a sitting, then a sitting begins on that
    day and hour, if it's ``None``, then a sitting is reaching into
    this day and hour.
    
    The utility of the returned structure is to aid rendering a
    template with columns spanning several rows.
    """

    mapping = {}
    for sitting in sittings.values():
        day = sitting.start_date.weekday()
        hour = sitting.start_date.hour

        start_date = utils.timedict(sitting.start_date.hour,
                                    sitting.start_date.minute)

        end_date = utils.timedict(sitting.end_date.hour,
                                  sitting.end_date.minute)

        status = misc.get_wf_state(sitting)

        proxied = ProxyFactory(sitting)

        if checkPermission(u"bungeni.agendaitem.Schedule", proxied):
            link = "%s/schedule" % ui_url.absoluteURL(sitting, request)
        else:
            link = ui_url.absoluteURL(sitting, request)

        if checkPermission("zope.View", proxied):
            mapping[day, hour] = {
                'url': link,
                'record': sitting,
                'class': u"sitting",
                'actions': get_sitting_actions(sitting, request),
                'span': sitting.end_date.hour - sitting.start_date.hour,
                'formatted_start_time': start_date,
                'formatted_end_time': end_date,
                'status': status,
            }
            for hour in range(sitting.start_date.hour + 1,
                              sitting.end_date.hour):
                mapping[day, hour] = None

        # make sure start- and end-date is the same DAY
        assert (sitting.start_date.day == sitting.end_date.day) and \
               (sitting.start_date.month == sitting.end_date.month) and \
               (sitting.start_date.year == sitting.end_date.year)

    return mapping
 def get_wf_state(self):
     """Get the human readable, and localized, workflow state title.
     """
     return _(misc.get_wf_state(removeSecurityProxy(self.context)))