def complete_all_files(self): self.files_deferred.callback("callback complete all") if self.download_dlg: self.download_dlg.complete_all_files() self.download_dlg = None else: display_status("All files downloaded")
def update_file(self, file_name, size): """available to wx navigators only. update downloaded file in specific dialog""" if self.download_dlg: self.download_dlg.update_file(file_name, size) else: display_status("downloading %s (%d)"% (file_name, size))
def load(self, path): if not os.path.exists(path): display_status(_("profile %s does not exists"\ % os.path.basename(path))) return False else: profile_file = open(path) self.encoding = load_encoding(profile_file) self.config = CustomConfigParser(self.encoding) self.config.readfp(profile_file) profile_file.close() return True
def load_encoding(file_obj): """load from profile document its encoding""" encoding_tag = file_obj.readline() if not encoding_tag.startswith("# profile-encoding::"): # wrong format # first line has been wastes: rewind file_obj.seek(0) # return default display_status(_("could not read encoding from profile file. " "Using %s"% ENCODING)) return ENCODING else: encoding = encoding_tag.split("::")[-1].strip() display_status(_("Profile read with encoding %s"% encoding)) return encoding
def run(self): while True: try: # block until new message or TIMEOUT message = self.queue.get(timeout=self.CHECKING_FREQUENCY) if message is None: break else: if message.ip in self.remote_ips: self.remote_ips[message.ip].server.execute(message) else: SecurityAlert(message.ip, _("Message '%s' out of date."\ % str(message))) self._check_peers(datetime.datetime.now()) except Empty: # Empty exception is expected when no message received # during period defined by CHECKING_FREQUENCY. self._check_peers(datetime.datetime.now()) display_status("stopping server")
def execute(self, message): transport = self.peer_server.protocol.transport if message.command in [MESSAGE_HELLO, MESSAGE_PROFILE]: file_obj = get_facade()._desc.document.to_stream() deferred = basic.FileSender().\ beginFileTransfer(file_obj, transport) deferred.addCallback(lambda x: transport.loseConnection()) elif message.command == MESSAGE_BLOG: blog_stream = get_facade().get_blog_file() deferred = basic.FileSender().\ beginFileTransfer(blog_stream, transport) deferred.addCallback(lambda x: transport.loseConnection()) elif message.command == MESSAGE_SHARED: files_stream = get_facade().get_shared_files() deferred = basic.FileSender().beginFileTransfer(files_stream, transport) deferred.addCallback(lambda x: transport.loseConnection()) elif message.command == MESSAGE_FILES: split_path, file_size = extract_data_file(message.data) file_name = os.sep.join(split_path) try: file_desc = get_facade().get_file_container(file_name) # check shared if file_desc._shared: display_status("sending %s"% file_name) deferred = basic.FileSender().\ beginFileTransfer(open(file_name, "rb"), transport) deferred.addCallback(lambda x: transport.loseConnection()) else: self.peer_server.protocol.factory.send_udp_message( self.peer_server.peer.peer_id, MESSAGE_ERROR, message.data) SecurityAlert(self.peer_server.peer.peer_id, "Trying to download unshare file %s"\ % file_name) except ContainerException: SecurityAlert(self.peer_server.peer.peer_id, "Trying to download unvalid file %s"\ % file_name) else: raise ValueError("ERROR in _connect: %s not valid"% message.command)
def ChangedNode(self, node): """need to update node_id""" # ChangedNode is call more than one time on change. Thus, be # careful not to do the job every time if get_facade() is None or get_facade()._desc.document.get_pseudo() != node.pseudo: # creation facade = create_facade(node.id_) filter_facade = create_filter_facade(node.id_) if not facade.load(): display_status(_("You have no profile yet for pseudo %s"% node.pseudo)) # ChangedNode called too many times at startup and make this popup appear several times => bother # Replace by display_status for now # display_message( # _(u"You have no profile yet for pseudo %s.\n\n " # "You may create one clicking on the menu Profile, " # "and selecting 'Modify Profile'"% node.pseudo), # title=_("New profile")) if not filter_facade.load(): display_status(_("You have no filters defined yet for pseudo %s"% node.pseudo)) # ChangedNode called too many times at startup and make this popup appear several times => bother # Replace by display_status for now # display_message( # _(u"You have no filters defined yet for pseudo %s.\n\n Filters are used " # "to match your neighbors' profile and alert you if they " # "match with your criteria.\n\n" # "You may create your filters by clicking on the menu 'Profile', " # "and selecting 'Filter Profiles'"% node.pseudo), # title=_("New filters")) facade.change_pseudo(node.pseudo) # updating views if self.editor_frame: facade.add_view(EditorView(facade._desc, self.editor_frame)) self.editor_frame.on_change_facade() facade.add_view(ViewerView(facade._desc, self.viewer_frame)) self.viewer_frame.on_change_facade() if self.filter_frame: filter_facade.add_view(FilterView(filter_facade._desc, self.filter_frame)) self.filter_frame.on_change_facade() display_status(_("Loaded data for %s"% node.pseudo))
def lineReceived(self, line): display_status(_("Unexpected line received: %s"% line))