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
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
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
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
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
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
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 }
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 }
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 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
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
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
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
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
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
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 _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 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
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
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
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
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_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
def get_wf_state(self): # return human readable, and localized, workflow title return _(misc.get_wf_state(removeSecurityProxy(self.context)))
def status(self): session = Session() context = session.merge(removeSecurityProxy(self.context)) return translate_i18n(misc.get_wf_state(context))
def get_wf_state(self): """Get the human readable, and localized, workflow state title. """ return _(misc.get_wf_state(removeSecurityProxy(self.context)))
def status(self): context = _merged(self.context) return translate(misc.get_wf_state(context))
def status(self): context = _merged(self.context) return translate_i18n(misc.get_wf_state(context))
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