def given_event_with(self, start="4 Aug 2010", end="10 Aug 2010", text="Text", description=None, pos=(0, 0), size=(0, 0)): event = Event(self.db.get_time_type(), human_time_to_py(start), human_time_to_py(end), text) if description is not None: event.set_data("description", description) self.db.save_event(event) self.mock_drawer.events_and_rects.append((event, wx.Rect(pos[0], pos[1], size[0], size[1]))) return event
def copy_db(from_db, to_db): """ Copy all content from one db to another. to_db is assumed to have no categories (conflicting category names are not handled). """ if isinstance(to_db, MemoryDB): to_db.disable_save() # Copy categories (parent attribute fixed later) cat_map = {} for cat in from_db.get_categories(): # name, color, and visible all immutable so safe to copy new_cat = Category(cat.name, cat.color, None, cat.visible) cat_map[cat.name] = new_cat to_db.save_category(new_cat) # Fix parent attribute for cat in from_db.get_categories(): if cat.parent is not None: cat_map[cat.name].parent = cat_map[cat.parent.name] # Copy events for event in from_db.get_all_events(): cat = None if event.category is not None: cat = cat_map[event.category.name] # start_time, end_time, and text all immutable so safe to copy new_event = Event(to_db.get_time_type(), event.time_period.start_time, event.time_period.end_time, event.text, cat) # description immutable so safe to copy if event.get_data("description") is not None: new_event.set_data("description", event.get_data("description")) # icon immutable in practice (since never modified) so safe to copy if event.get_data("icon") is not None: new_event.set_data("icon", event.get_data("icon")) to_db.save_event(new_event) # Copy view properties (ViewProperties is specific to db so we need to copy # like this instead of just using load/save_view_properties in db). from_vp = ViewProperties() from_db.load_view_properties(from_vp) to_vp = ViewProperties() for from_cat in from_db.get_categories(): cat = cat_map[from_cat.name] visible = from_vp.is_category_visible(from_cat) to_vp.set_category_visible(cat, visible) if from_vp.displayed_period is not None: # start_time and end_time immutable so safe to copy start = from_vp.displayed_period.start_time end = from_vp.displayed_period.end_time to_vp.displayed_period = TimePeriod(to_db.get_time_type(), start, end) to_db.save_view_properties(to_vp) # Save if isinstance(to_db, MemoryDB): to_db.enable_save()
def given_event_with(self, start="4 Aug 2010", end="10 Aug 2010", text="Text", description=None, pos=(0, 0), size=(0, 0)): event = Event(self.db.get_time_type(), human_time_to_py(start), human_time_to_py(end), text) if description is not None: event.set_data("description", description) self.db.save_event(event) self.mock_drawer.events_and_rects.append( (event, wx.Rect(pos[0], pos[1], size[0], size[1]))) return event
def _get_events(self, decider_fn=None): self.events = [] for cal in self.cals: for event in cal.walk("VEVENT"): start, end = extract_start_end(event) txt = "" if event.has_key("summary"): txt = event["summary"] elif event.has_key("description"): txt = event["description"] else: txt == "Unknown" e = Event(self.get_time_type(), start, end, txt) e.set_id(event["timeline_id"]) if event.has_key("description"): e.set_data("description", event["description"]) if decider_fn is None or decider_fn(e): self.events.append(e) return self.events
def _create_db(self): db = XmlTimeline(self.tmp_path) # Create categories cat1 = Category("Category 1", (255, 0, 0), (0, 0, 255), True) db.save_category(cat1) cat2 = Category("Category 2", (0, 255, 0), None, True, parent=cat1) db.save_category(cat2) cat3 = Category("Category 3", (0, 0, 255), None, True, parent=cat2) db.save_category(cat3) # Create events ev1 = Event(db.get_time_type(), datetime(2010, 3, 3), datetime(2010, 3, 6), "Event 1", cat1) ev1.set_data("description", u"The <b>first</b> event åäö.") ev1.set_data("alert", (datetime(2012, 12, 31), "Time to go")) db.save_event(ev1) # Create view properties vp = ViewProperties() start = datetime(2010, 3, 1) end = datetime(2010, 4, 1) vp.displayed_period = TimePeriod(db.get_time_type(), start, end) vp.set_category_visible(cat3, False) db.save_view_properties(vp)
def add_event(self, text, description, start_add, end_add=None): start, end = self.calc_start_end(start_add, end_add) evt = Event(self.db.get_time_type(), start, end, text, self.last_cat) if description: evt.set_data("description", description) self.db.save_event(evt)