1
0
mirror of http://aero2k.de/t/repos/urlbot-native.git synced 2017-09-06 15:25:38 +02:00

re-order locking; add working user setting editing

This commit is contained in:
urlbot
2014-12-14 03:41:57 +01:00
parent ed0fb9baf2
commit 2e8df26a66
2 changed files with 52 additions and 18 deletions

View File

@@ -32,16 +32,9 @@ def logger(severity, message):
sys.stderr.write('%s %s %s: %s\n' % args) sys.stderr.write('%s %s %s: %s\n' % args)
def conf_save(obj): def conf_save(obj):
if conf('persistent_locked'):
return False
set_conf('persistent_locked', True)
with open(conf('persistent_storage'), 'wb') as fd: with open(conf('persistent_storage'), 'wb') as fd:
return pickle.dump(obj, fd) return pickle.dump(obj, fd)
set_conf('persistent_locked', False)
def conf_load(): def conf_load():
with open(conf('persistent_storage'), 'rb') as fd: with open(conf('persistent_storage'), 'rb') as fd:
fd.seek(0) fd.seek(0)

View File

@@ -6,7 +6,7 @@ if '__main__' == __name__:
exit(-1) exit(-1)
import time, random, unicodedata, re, sys import time, random, unicodedata, re, sys
from local_config import conf from local_config import conf, set_conf
from common import * from common import *
from urlbot import extract_title from urlbot import extract_title
@@ -442,6 +442,25 @@ def command_show_blacklist(args):
] ]
} }
def usersetting_get(args):
blob = conf_load()
arg_user = args['reply_user']
arg_key = args['argv1']
if not arg_user in blob['user_pref']:
return {
'msg': args['reply_user'] + ': user key not found'
}
return {
'msg': args['reply_user'] + ': %s == %s' % (
arg_key,
'on' if blob['user_pref'][arg_user][arg_key] else 'off'
)
}
def command_usersetting(args): def command_usersetting(args):
if 'register' == args: if 'register' == args:
return { return {
@@ -451,26 +470,48 @@ def command_usersetting(args):
'ratelimit_class': RATE_GLOBAL 'ratelimit_class': RATE_GLOBAL
} }
settings = ['spoiler']
if 'set' != args['argv0']: if 'set' != args['argv0']:
return return
if not args['argv1'] in settings: settings = ['spoiler']
arg_user = args['reply_user']
arg_key = args['argv1']
arg_val = args['argv2']
if not arg_key in settings:
return { return {
'msg': args['reply_user'] + ': known settings: %s' % settings 'msg': args['reply_user'] + ': known settings: ' + (', '.join(settings))
} }
if not args['argv2'] in ['on', 'off']: if not arg_val in ['on', 'off', None]:
return { return {
'msg': args['reply_user'] + ': possible values for %s: on, off' % args['argv1'] 'msg': args['reply_user'] + ': possible values for %s: on, off' % arg_key
} }
logger('plugin', 'user setting plugin called') if None == arg_val:
# display current value
return usersetting_get(args)
return { if conf('persistent_locked'):
'msg': args['reply_user'] + ': FIXME: implement functionality' return {
} 'msg': args['reply_user'] + ''': couldn't get exclusive lock'''
}
set_conf('persistent_locked', True)
blob = conf_load()
if not arg_user in blob['user_pref']:
blob['user_pref'][arg_user] = {}
blob['user_pref'][arg_user][arg_key] = (
True if 'on' == arg_val else False
)
conf_save(blob)
set_conf('persistent_locked', False)
# display value written to db
return usersetting_get(args)
#def command_dummy(args): #def command_dummy(args):
# if 'register' == args: # if 'register' == args: