def _on_uri_changed(self, webview, load_status): if self.webview.get_property("load-status") ==\ WebKit.LoadStatus.FINISHED: if self.current_uri != self.webview.get_uri(): if self.current_uri: event = Event() event.interpretation = Interpretation.LEAVE_EVENT event.manifestation = Manifestation.USER_ACTIVITY event.actor = "application://web.desktop" subject = Subject() subject.uri = self.current_uri subject.mimetype = "text/html" subject.text = self.current_title subject.interpretation = Interpretation.WEBSITE subject.manifestation = Manifestation.REMOTE_PORT_ADDRESS event.subjects = [subject] ZG.insert_event(event) self.current_uri = self.webview.get_uri() self.current_title = self.webview.get_title() print "===>", self.current_title event = Event() event.interpretation = Interpretation.ACCESS_EVENT event.manifestation = Manifestation.USER_ACTIVITY event.actor = "application://web.desktop" subject = Subject() subject.uri = self.current_uri subject.mimetype = "text/html" subject.text = self.current_title subject.interpretation = Interpretation.WEBSITE subject.manifestation = Manifestation.REMOTE_PORT_ADDRESS event.subjects = [subject] ZG.insert_event(event)
def format_events(commits): events = [] for commit in commits: if not commit["desc"].lower().startswith("merge"): event = Event() event.timestamp = commit["timestamp"] * 1000 event.actor = commit["actor"] event.interpretation = Interpretation.MODIFY_EVENT event.manifestation = Manifestation.USER_ACTIVITY subj = Subject() subj.uri = "dav://%s" % commit["uri"] subj.origin = "dav:// " + event.actor subj.interpretation = Interpretation.MESSAGE subj.manifestation = Manifestation.FILE_DATA_OBJECT.REMOTE_DATA_OBJECT subj.text = commit["desc"] event.subjects = [subj] for f in commit["files"]: if f.strip() != "": subj = Subject() subj.uri = "file://" + f subj.interpretation = Interpretation.DOCUMENT subj.manifestation = Manifestation.FILE_DATA_OBJECT.REMOTE_DATA_OBJECT subj.text = f.split("/")[-1] event.subjects.append(subj) events.append(event) return events
def _on_view_pages(self, widget): self.home.reset() uris = [] for pIndex in xrange(self.pages.get_n_pages()): self.pages.set_current_page(pIndex) page = self.pages.get_nth_page(pIndex) overviewPage = PageOverviewWidget(page) overviewPage.connect("clicked", self._on_page_clicked) self.home.add_page(overviewPage) uris.append(page.webview.get_uri()) self.home.show_all() self.box.set_current_page(0) def callback(events): self.home.recentDashboard.recentPages.reset() for event in events: page = PageButton(event.subjects[0]) print event.subjects[0].uri self.home.recentDashboard.recentPages.add_page(page) self.home.show_all() event = Event() event.actor = "application://web.desktop" event.subjects = [] for uri in uris: if uri: subject = Subject() subject.uri = "!"+uri event.subjects.append(subject) print event ZG.find_events_for_template(event, callback, result_type=2)
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 __create_app_subject(self, desktop_file): subject = ZeitgeistSubject() subject.interpretation = ZeitgeistDataModel.Interpretation.SOFTWARE subject.manifestation = ZeitgeistDataModel.Manifestation.SOFTWARE_ITEM subject.uri = APPLICATION_URI_PREFIX + get_desktop_id(desktop_file) subject.current_uri = subject.uri subject.mimetype = "application/x-desktop" return subject
def __create_app_subject(self, desktop_file): subject = ZeitgeistSubject() subject.interpretation = ZeitgeistDataModel.Interpretation.SOFTWARE subject.manifestation = ZeitgeistDataModel.Manifestation.SOFTWARE_ITEM subject.uri = APPLICATION_URI_PREFIX + get_desktop_id(desktop_file); subject.current_uri = subject.uri subject.mimetype = "application/x-desktop" return subject
def templates(self): subject = Subject() subject.uri = "!application://*" return [ Event.new_for_values( subjects=[subject], actor="!application://activity-log-manager.desktop") ]
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
def dict2event(d): ev = Event() ev[0][Event.Id] = d.get("id", "").encode("UTF-8") ev.timestamp = str(d.get("timestamp", "")) ev.interpretation = str(d.get("interpretation", "").encode("UTF-8")) ev.manifestation = str(d.get("manifestation", "").encode("UTF-8")) ev.actor = str(d.get("actor", "").encode("UTF-8")) ev.origin = str(d.get("origin", "").encode("UTF-8")) ev.payload = str(d.get("payload", "").encode("UTF-8")) subjects = d.get("subjects", []) for sd in subjects: subj = Subject() subj.uri = str(sd.get("uri", "").encode("UTF-8")) subj.current_uri = str(sd.get("current_uri", "")).encode("UTF-8") subj.interpretation = str(sd.get("interpretation", "").encode("UTF-8")) subj.manifestation = str(sd.get("manifestation", "").encode("UTF-8")) subj.origin = str(sd.get("origin", "").encode("UTF-8")) subj.current_origin = str(sd.get("current_origin", "")).encode("UTF-8") subj.mimetype = str(sd.get("mimetype", "").encode("UTF-8")) subj.text = str(sd.get("text", "").encode("UTF-8")) subj.storage = str(sd.get("storage", "").encode("UTF-8")) ev.append_subject(subj) return ev