Beispiel #1
0
 def assertEventsEqual(self, ev1, ev2):
     ev1 = self.get_plain_event(Event(ev1))
     ev2 = self.get_plain_event(Event(ev2))
     if ev1 is not NULL_EVENT and ev2 is not NULL_EVENT:
         if (ev1[0][0] and not ev2[0][0]) or (ev2[0][0] and not ev1[0][0]):
             ev1[0][0] = ev2[0][0] = ""  # delete IDs
     self.assertEqual(ev1, ev2)
Beispiel #2
0
    def run(self, keywords, path, regex=False):
        """Run the Zeitgeist SearchMethod."""
        self.stop_search = False
        event_template = Event()
        time_range = TimeRange.from_seconds_ago(60 * 3600 * 24)
        # 60 days at most

        results = iface.FindEvents(
            time_range,  # (min_timestamp, max_timestamp) in milliseconds
            [event_template, ],
            datamodel.StorageState.Any,
            1000,
            datamodel.ResultType.MostRecentSubjects
        )

        results = (datamodel.Event(result) for result in results)
        uniques = []

        for event in results:
            if self.stop_search:
                break
            for subject in event.get_subjects():
                uri = str(subject.uri)
                if uri.startswith('file://'):
                    fullname = str(uri[7:])
                    filepath, filename = os.path.split(fullname)
                    if keywords.lower() in filename and \
                            uri not in uniques and \
                            path in filepath:
                        uniques.append(uri)
                        yield fullname
        self.stop_search = True
Beispiel #3
0
	def testFindEventIdsWithMultipleSubjects(self):
		subj1 = Subject.new_for_values(uri="file:///tmp/foo.txt")
		subj2 = Subject.new_for_values(uri="file:///tmp/loo.txt")
		event = new_event(subjects=[subj1, subj2])
		orig_ids = self.insertEventsAndWait([event])
		result_ids = self.findEventIdsAndWait([Event()], num_events=0,
			result_type=ResultType.LeastRecentEvents)
		self.assertEqual(orig_ids, list(result_ids))
Beispiel #4
0
	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 get_rss_by_usage(self):
        print "Events: ",
        event_template = Event.new_for_values(
            actor=APP_ID, interpretation=Interpretation.VISIT_EVENT.uri)

        results = []

        ids = self.iface.FindEventIds((0, 0), [event_template], 0, 0, 5)
        for event in self.iface.GetEvents(ids):
            for subject in Event(event).subjects:
                results.append(str(subject.uri))
        return results
Beispiel #6
0
	def testDeleteTwoSimilarEvents(self):
		# Insert a couple similar events
		event1 = parse_events("test/data/single_event.js")[0]
		event2 = Event(event1)
		event2.timestamp = int(event1.timestamp) + 1
		ids = self.insertEventsAndWait([event1, event2])

		# Try deleting one of them
		self.deleteEventsAndWait([ids[0]])

		# Make sure it's gone, but the second one is still there
		retrieved_events = self.getEventsAndWait(ids)
		self.assertEqual(retrieved_events[0], None)
		self.assertEventsEqual(retrieved_events[1], event2)
Beispiel #7
0
 def transport(self, events=[]):
     '''
     Update couchdb with events
     '''
     self.log(logging.INFO, "Insert events into couchdb")
     if events == []:
         last = self.last_transaction()
         #get events
         if (last):
             self.log(logging.INFO, "getting itens created after %s", last)
             #update of database
             #count
             from_last_to_now = TimeRange.until_now()
             from_last_to_now.begin = int(last) + 1
             _events = self._zdclient.FindEvents(
                 #timerange
                 from_last_to_now,
                 [],
                 StorageState.Any,
                 0,
                 ResultType.LeastRecentEvents
             )
         else:
             self.log(logging.INFO, "First interaction, getting last item")
             #fist interaction with database
             _events = self._zdclient.FindEvents(
                 #timerange
                 TimeRange.always(),
                 [],
                 StorageState.Any,
                 1,
                 ResultType.MostRecentEvents
             )
     #convert into records
     records = []
     [records.append(
         self.zgToDb(Event(event)) if isinstance(event, dbus.Struct)\
         else self.zgToDb(event) if isinstance(event, Event)\
         else event
         ) for event in events]
     #put on couchdb
     self.log(logging.INFO, "put %s records in couchdb", len(records))
     self.put_records(records)
     #save last as last_transaction
     if len(records): self.last_transaction(records[-1]['timestamp'])
Beispiel #8
0
	def load_events(self, start=0, end=0, actor=None):
		self.set_title("Journal for "+actor)
		def exists(uri):
			return not uri.startswith("file://") or os.path.exists(urllib.unquote(str(uri[7:])))

		def _handle_find_events(ids):
			self._zg.get_events(ids, _handle_get_events)

		def _handle_get_events(events):
			uris = []
			for event in events:
				for subject in event.subjects:
					if exists(subject.uri):
						self.view.append_object(event)
		
		event = Event()
		event.set_actor(actor)
		self._zg.find_events_for_templates([event],_handle_get_events, [start, end], StorageState.Any, 0, 4) 
Beispiel #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
Beispiel #10
0
	def testInsertGetWithoutTimestamp(self):
		# We test two things, that Event creates a default timestamp
		# and that the engine provides one for us if necessary

		subj = Subject.new_for_values(interpretation="foo://interp",
					manifestation="foo://manif",
					uri="nowhere")
		ev = Event.new_for_values(interpretation="foo://bar",
					manifestation="foo://quiz",
					actor="actor://myself",
					subjects=[subj])

		# Assert that timestamp is set
		self.assertTrue(ev.timestamp)

		# Clear the timestamp and insert event
		ev.timestamp = ""
		ids = self.insertEventsAndWait([ev])
		result = self.getEventsAndWait(ids)

		self.assertEqual(1, len(result))
		resulting_event = Event(result.pop())
		self.assertEqual("foo://bar", resulting_event.interpretation)
		self.assertTrue(resulting_event.timestamp) # We should have a timestamp again
Beispiel #11
0
	def testFindEventIdsForId(self):
		# Retrieve events for a particular event ID 
		template = Event([["3", "", "", "", "", ""], [], ""])
		ids = self.findEventIdsAndWait([template])
		self.assertEqual(ids, [3])
Beispiel #12
0
#! /usr/bin/env python
from zeitgeist.client import ZeitgeistDBusInterface
from zeitgeist.datamodel import Event, Interpretation, TimeRange, \
 StorageState, ResultType
from datetime import datetime
import dateutil

zg = ZeitgeistDBusInterface()
events = zg.FindEvents(
    #timerange
    TimeRange.always(),
    #Evente template
    [Event.new_for_values(
           interpretation=\
           Interpretation.EVENT_INTERPRETATION.LEAVE_EVENT)],
    #Storage State
    StorageState.Any,
    #How many results
    10,
    #Result sort
    ResultType.MostRecentEvents)

for event in events:
    last_event = Event(event)
    last_subject = last_event.get_subjects()[0]
    print last_subject.uri, datetime.fromtimestamp(float(last_event.timestamp) / 1000)

 def event(self):
     events = CLIENT._iface.GetEvents([self.id])
     if events:
         return Event(events[0])