def on_save(self, widget): sharesdir = os.path.join(self.frame.data_dir, "usershares") try: if not os.path.exists(sharesdir): os.mkdir(sharesdir) except Exception as msg: log.add( _("Can't create directory '%(folder)s', reported error: %(error)s" ), { 'folder': sharesdir, 'error': msg }) try: filepath = os.path.join(sharesdir, clean_file(self.user)) with open(filepath, "w", encoding="utf-8") as sharesfile: import json json.dump(self.shares, sharesfile, ensure_ascii=False) log.add( _("Saved list of shared files for user '%(user)s' to %(dir)s"), { 'user': self.user, 'dir': sharesdir }) except Exception as msg: log.add( _("Can't save shares, '%(user)s', reported error: %(error)s"), { 'user': self.user, 'error': msg })
def read_private_log(self): # Read log file config = self.frame.np.config.sections log = os.path.join(config["logging"]["privatelogsdir"], clean_file(self.user.replace(os.sep, "-")) + ".log") try: numlines = int(config["logging"]["readprivatelines"]) except Exception: numlines = 15 try: with open(log, 'r', encoding='utf-8') as lines: # Only show as many log lines as specified in config lines = deque(lines, numlines) for line in lines: append_line(self.ChatScroll, line, self.tag_hilite, timestamp_format="", username=self.user, usertag=self.tag_hilite) except IOError: pass GLib.idle_add(scroll_bottom, self.ChatScroll.get_parent())
def write_log(self, logsdir, filename, msg, timestamp=None, timestamp_format="%Y-%m-%d %H:%M:%S"): try: from pynicotine.utils import clean_file filename = clean_file(filename) + ".log" path = os.path.join(logsdir, filename) oldumask = os.umask(0o077) if not os.path.exists(logsdir): os.makedirs(logsdir) with open(path, 'ab', 0) as logfile: os.umask(oldumask) text = "%s %s\n" % (time.strftime( timestamp_format, time.localtime(timestamp)), msg) logfile.write(text.encode('utf-8', 'replace')) except Exception as error: self.add( _("Couldn't write to log file \"%(filename)s\": %(error)s") % { "filename": filename, "error": error })
def read_private_log(self): numlines = config.sections["logging"]["readprivatelines"] if not numlines: return filename = clean_file(self.user) + ".log" path = os.path.join(config.sections["logging"]["privatelogsdir"], filename) try: self.append_log_lines(path, numlines) except OSError: pass
def read_room_logs(self): numlines = config.sections["logging"]["readroomlines"] if not numlines: return filename = clean_file(self.room) + ".log" path = os.path.join(config.sections["logging"]["roomlogsdir"], filename) try: self.append_log_lines(path, numlines) except OSError: pass
def on_save_picture(self, widget): if self.image is None or self.image_pixbuf is None: return filename = "%s %s.jpg" % (self.user, time.strftime("%Y-%m-%d %H:%M:%S")) pathname = os.path.join( self.frame.np.config.sections["transfers"]["downloaddir"], clean_file(filename)) if not os.path.exists(pathname): self.image_pixbuf.savev(pathname, "jpeg", ["quality"], ["100"]) log.add(_("Picture saved to %s"), pathname) else: log.add(_("Picture not saved, %s already exists."), pathname)
def on_save(self, widget): sharesdir = os.path.join(self.frame.data_dir, "usershares") try: if not os.path.exists(sharesdir): os.mkdir(sharesdir) except Exception as msg: log.add(_("Can't create directory '%(folder)s', reported error: %(error)s"), {'folder': sharesdir, 'error': msg}) try: import pickle as mypickle import bz2 sharesfile = bz2.BZ2File(os.path.join(sharesdir, clean_file(self.user)), 'w') mypickle.dump(self.shares, sharesfile, protocol=mypickle.HIGHEST_PROTOCOL) sharesfile.close() log.add(_("Saved list of shared files for user '%(user)s' to %(dir)s"), {'user': self.user, 'dir': sharesdir}) except Exception as msg: log.add(_("Can't save shares, '%(user)s', reported error: %(error)s"), {'user': self.user, 'error': msg})
def delete_chat_log_response(self, dialog, response, data): if response == Gtk.ResponseType.OK: log_path = os.path.join( self.frame.np.config.sections["logging"]["privatelogsdir"], clean_file(self.user.replace(os.sep, "-")) + ".log" ) try: if os.path.exists(log_path): os.remove(log_path) except Exception as e: log.add(_("Failed to remove logged chat messages for user '%(user)s'. Error: %(error)s"), { "user": self.user, "error": e }) self.on_clear_messages(dialog) dialog.destroy()
def read_private_log(self): # Read log file config = self.frame.np.config.sections log = os.path.join(config["logging"]["privatelogsdir"], clean_file(self.user.replace(os.sep, "-")) + ".log") try: numlines = int(config["logging"]["readprivatelines"]) except Exception: numlines = 15 try: try: self.append_log_lines(log, numlines, 'utf-8') except UnicodeDecodeError: self.append_log_lines(log, numlines, 'latin-1') except IOError: pass GLib.idle_add(scroll_bottom, self.ChatScroll.get_parent())
def save_shares_list_to_disk(self, user, shares_list): sharesdir = os.path.join(self.config.data_dir, "usershares") try: if not os.path.exists(sharesdir): os.makedirs(sharesdir) except Exception as msg: log.add( _("Can't create directory '%(folder)s', reported error: %(error)s" ), { 'folder': sharesdir, 'error': msg }) try: path = os.path.join(sharesdir, clean_file(user)) with open(path, "w", encoding="utf-8") as file_handle: json.dump(shares_list, file_handle, ensure_ascii=False) log.add( _("Saved list of shared files for user '%(user)s' to %(dir)s"), { 'user': user, 'dir': sharesdir }) except Exception as msg: log.add( _("Can't save shares, '%(user)s', reported error: %(error)s"), { 'user': user, 'error': msg })