コード例 #1
0
    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
コード例 #2
0
 def templates(self):
     subject = Subject()
     subject.uri = "!application://*"
     return [
         Event.new_for_values(
             subjects=[subject],
             actor="!application://activity-log-manager.desktop")
     ]
コード例 #3
0
ファイル: engine-test.py プロジェクト: freedesktop/zeitgeist
	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")
コード例 #4
0
ファイル: zeitgeist_menus.py プロジェクト: genesi/dockmanager
	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
コード例 #5
0
ファイル: engine-test.py プロジェクト: freedesktop/zeitgeist
	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")
コード例 #6
0
ファイル: engine-test.py プロジェクト: freedesktop/zeitgeist
	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)
コード例 #7
0
ファイル: zeitgeist_menus.py プロジェクト: genesi/dockmanager
		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)
コード例 #8
0
    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)
コード例 #9
0
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