def init_data(self): ''' when called this initiates a dictionary of key value pairs where keys are all dates between the start and end values and the values are DayDataObjects with only public holiday data loaded ''' q_query = QtSql.QSqlQuery(SETTINGS.psql_conn) #due to database constraints, this list will be a #set of key value pairs. query = '''select dt, event from (SELECT dt FROM generate_dates(?, ?, 1) dt) as gen left join calendar on dt = date_id''' q_query.prepare(query) q_query.addBindValue(self.start_date) q_query.addBindValue(self.end_date) q_query.exec_() while q_query.next(): record = q_query.record() day_data = DiaryDayData(record.value("dt").toDate()) day_data.set_public_hol_text(record.value("event").toString()) if QtCore.QDate.currentDate() <= day_data.date <= self.last_day: day_data.in_bookable_range = True ##QDate.__hash__ has a bug.. so have to convert here ##this has been fixed in recent PyQt4.. ##there may be a perfomance benefit here self._data[day_data.date.toPyDate()] = day_data q_query.finish()
def data(self, date, view_style=_DiarySettings.DAY): ''' returns a 'DayData' object for the date requested ''' ##QDate.__hash__ has a bug.. so have to convert here try: day_data = self._data[date.toPyDate()] except KeyError: day_data = DiaryDayData(date) self._data[date.toPyDate()] = day_data if view_style != self.TASKS: if not day_data.sessions_loaded: day_data.load_sessions() return day_data