def request_last_n_days_events(self, n=90, func=None): """ Find the events for 'n' days and packs them into the store Optionally calls func upon completion """ subject = Subject() subject.uri = "!application://*" event_templates = ( Event.new_for_values( interpretation=Interpretation.ACCESS_EVENT.uri, subjects=[subject]), Event.new_for_values( interpretation=Interpretation.MODIFY_EVENT.uri, subjects=[subject]), Event.new_for_values( interpretation=Interpretation.CREATE_EVENT.uri, subjects=[subject]), Event.new_for_values( interpretation=Interpretation.RECEIVE_EVENT.uri, subjects=[subject]), Event.new_for_values( actor="!application://activity-log-manager.desktop")) def callback(events): def _thread_fn(events): event_chunks = [] chunk = [] for i, event in enumerate(events): chunk.append(event) if i % 20 == 0: event_chunks.append(chunk) chunk = [] map(self.add_events, event_chunks) if func: func() return False thread = threading.Thread(target=_thread_fn, args=(events, )) thread.start() end = time.time() - 3 * 86400 start = end - n * 86400 if n >= 60: inc = (end - start) / (n / 30) for i in range(n / 30): a = end - (inc * (i + 1)) + 1 b = end - (inc * (i)) CLIENT.find_events_for_templates( event_templates, callback, [a * 1000, b * 1000], num_events=50000, storage_state=StorageState.Available) else: CLIENT.find_events_for_templates( event_templates, callback, [start * 1000, end * 1000], num_events=50000, storage_state=StorageState.Available) return False
def templates(self): subject = Subject() subject.uri = "!application://*" return [ Event.new_for_values( subjects=[subject], actor="!application://activity-log-manager.desktop") ]
def testFindWithInterpretation(self): import_events("test/data/five_events.js", self) subj = Subject() event_template = Event.new_for_values(interpretation="stfu:OpenEvent", subjects=[subj]) result = self.findEventIdsAndWait([event_template], num_events=0, result_type=1) self.assertEqual(2, len(result)) events = self.getEventsAndWait(result) for event in events: self.assertEqual(event.interpretation, "stfu:OpenEvent")
def _get_base_template(self): base_template = Event() if self.has_uri: subj = Subject() subj.set_uri(self.uri+"/*") base_template.set_subjects([subj]) else: base_template.set_actor(self.uri) return base_template
def testFindWithManifestation(self): import_events("test/data/five_events.js", self) subj = Subject() event_template = Event.new_for_values(manifestation="stfu:EpicFailActivity", subjects=[subj]) result = self.findEventIdsAndWait([event_template], num_events=0, result_type=1) self.assertEqual(1, len(result)) events = self.getEventsAndWait(result) for event in events: self.assertEqual(event.manifestation, "stfu:EpicFailActivity")
def testFindWithActor(self): test_event_1 = parse_events("test/data/one_event.js")[0] self.testSingleInsertGet() subj = Subject() event_template = Event.new_for_values( actor="application://gnome-about.desktop", subjects=[subj,]) result = self.findEventIdsAndWait([event_template], num_events=0, result_type=1) self.assertEqual(1, len(result)) test_event_1[0][0] = 1 self.assertEqual(result[0], test_event_1.id)
def handle_recent(results): self.recent = [] for event in results: if exists(event.subjects[0].uri): self.recent.append([event.subjects[0].uri, event.subjects[0].text]) subj = Subject() subj.uri = "!"+event.subjects[0].uri template.subjects.append(subj) if len(self.recent) >= 5: break CLIENT.find_events_for_templates([template], handle_most, num_events = 1000, result_type = 4)
def __init__(self): super(Store, self).__init__() self.run_build_thread = False self._days = {} self._day_connections = {} self._deleted_uris = [] #Search for uris that have been deleted in order to not display them. #FIXME we should add a timestamp field with the deleted uri #to prevent that a recent event with same uri than an older and deleted one #isn't displayed. - cando self._deleted_uris = [] subject = Subject() subject.uri = "!application://*" template = Event.new_for_values( interpretation=Interpretation.DELETE_EVENT.uri, subjects=[subject], actor="!application://activity-log-manager.desktop") CLIENT.find_events_for_templates((template, ), self.__set_deleted_uris, TimeRange.until_now(), num_events=MAXEVENTS) global currentTimestamp, histogramLoaderCounter today = datetime.date.today() currentTimestamp = time.mktime(today.timetuple()) days_population = CLIENT_EXTENSION.GetHistogramData() for i in xrange(50 * 6): date = datetime.date.fromtimestamp(currentTimestamp) day = Day(date, days_population) self.add_day(date, day) currentTimestamp -= 86400 for day in self.days[-6:]: day.load_ids() content_objects.AbstractContentObject.connect_to_manager( "add", self.add_content_object_with_new_type) content_objects.AbstractContentObject.connect_to_manager( "remove", self.remove_content_objects_with_type)
def dict2event(d): ev = Event() ev[0][Event.Id] = d.get("id", "") ev.timestamp = d.get("timestamp", "") ev.interpretation = d.get("interpretation", "") ev.manifestation = d.get("manifestation", "") ev.actor = d.get("actor", "") ev.origin = d.get("origin", "") ev.payload = d.get("payload", "") subjects = d.get("subjects", []) for sd in subjects: subj = Subject() subj.uri = sd.get("uri", "") subj.current_uri = sd.get("current_uri", "") subj.interpretation = sd.get("interpretation", "") subj.manifestation = sd.get("manifestation", "") subj.origin = sd.get("origin", "") subj.current_origin = sd.get("current_origin", "") subj.mimetype = sd.get("mimetype", "") subj.text = sd.get("text", "") subj.storage = sd.get("storage", "") ev.append_subject(subj) return ev