mirror of
				https://github.com/Mikaela/Limnoria.git
				synced 2025-10-30 15:17:22 +01:00 
			
		
		
		
	Dump/load commands.
This commit is contained in:
		
							parent
							
								
									7c8f8b4fca
								
							
						
					
					
						commit
						7f00bf01c2
					
				| @ -39,6 +39,7 @@ __contributors__ = { | ||||
|     } | ||||
| 
 | ||||
| import os | ||||
| import csv | ||||
| import sets | ||||
| from itertools import imap | ||||
| 
 | ||||
| @ -212,6 +213,32 @@ class SqliteKarmaDB(object): | ||||
|                           WHERE normalized=%s""", normalized) | ||||
|         db.commit() | ||||
| 
 | ||||
|     def dump(self, channel, filename): | ||||
|         filename = conf.supybot.directories.data.dirize(filename) | ||||
|         fd = utils.transactionalFile(filename) | ||||
|         out = csv.writer(fd) | ||||
|         db = self._getDb(channel) | ||||
|         cursor = db.cursor() | ||||
|         cursor.execute("""SELECT name, added, subtracted FROM karma""") | ||||
|         for (name, added, subtracted) in cursor.fetchall(): | ||||
|             out.writerow([name, added, subtracted]) | ||||
|         fd.close() | ||||
| 
 | ||||
|     def load(self, channel, filename): | ||||
|         filename = conf.supybot.directories.data.dirize(filename) | ||||
|         fd = file(filename) | ||||
|         reader = csv.reader(fd) | ||||
|         db = self._getDb(channel) | ||||
|         cursor = db.cursor() | ||||
|         cursor.execute("""DELETE FROM karma""") | ||||
|         for (name, added, subtracted) in reader: | ||||
|             normalized = name.lower() | ||||
|             cursor.execute("""INSERT INTO karma | ||||
|                               VALUES (NULL, %s, %s, %s, %s)""", | ||||
|                            name, normalized, added, subtracted) | ||||
|         db.commit() | ||||
|         fd.close() | ||||
|          | ||||
| KarmaDB = plugins.DB('Karma', | ||||
|                      {'sqlite': SqliteKarmaDB}) | ||||
| 
 | ||||
| @ -382,6 +409,27 @@ class Karma(callbacks.Privmsg): | ||||
|         name = name.strip('()') | ||||
|         return name | ||||
| 
 | ||||
|     def dump(self, irc, msg, args, channel, filename): | ||||
|         """[<channel>] <filename> | ||||
| 
 | ||||
|         Dumps the Karma database for <channel> to <filename> in the bot's | ||||
|         data directory.  <channel> is only necessary if the message isn't sent | ||||
|         in the channel itself. | ||||
|         """ | ||||
|         self.db.dump(channel, filename) | ||||
|         irc.replySuccess() | ||||
|     dump = wrap(dump, [('checkCapability', 'owner'), 'channeldb', 'filename']) | ||||
| 
 | ||||
|     def load(self, irc, msg, args, channel, filename): | ||||
|         """[<channel>] <filename> | ||||
| 
 | ||||
|         Loads the Karma database for <channel> from <filename> in the bot's | ||||
|         data directory.  <channel> is only necessary if the message isn't sent | ||||
|         in the channel itself. | ||||
|         """ | ||||
|         self.db.load(channel, filename) | ||||
|         irc.replySuccess() | ||||
|     load = wrap(load, [('checkCapability', 'owner'), 'channeldb', 'filename']) | ||||
| 
 | ||||
| Class = Karma | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jeremy Fincher
						Jeremy Fincher