diff options
Diffstat (limited to 'src/sqmod/sqmod_test/py/sqmod_test.py')
-rw-r--r-- | src/sqmod/sqmod_test/py/sqmod_test.py | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/sqmod/sqmod_test/py/sqmod_test.py b/src/sqmod/sqmod_test/py/sqmod_test.py new file mode 100644 index 0000000..a209892 --- /dev/null +++ b/src/sqmod/sqmod_test/py/sqmod_test.py @@ -0,0 +1,88 @@ +from tojauth import TOJAuth +from asyncdb import AsyncDB +import mod +import com +import config +import imc.async +from imc.proxy import Proxy +from square import Square + +class sqmod_test(Square): + _sqmod_name = 'sqmod_test' + + def __init__(self, mod_idendesc, get_link_fn, sqid): + self._sqid = sqid; + self._idendesc = mod_idendesc + self.get_link = get_link_fn + + self._accessid = mod.SquareMg.get_accessid_by_sqid(self._sqid) + + self.db = AsyncDB(config.MOD_DBNAME, config.MOD_DBUSER, + config.MOD_DBPASSWORD) + + self._reg_path = 'sq/' + str(self._sqid) + '/' + + Proxy.instance.register_call( + self._reg_path,'list_jurank',self.list_jurank) + Proxy.instance.register_call( + self._reg_path,'update_result',self.update_result) + + def unload(self): + pass + + def join_square(self,uid): + return mod.SquareMg.JOIN_ACCEPT + + def quit_square(self,uid): + pass + + @staticmethod + def create_square_data(): + pass + + @staticmethod + def delete_square_data(): + pass + + + @imc.async.caller + def list_jurank(self): + #TOJAuth.check_access_func(self._accessid, TOJAuth.ACCESS_READ) + + cur = self.db.cursor(); + cur.execute('SELECT "name","song","score","maxcombo" FROM "SQMOD_TEST_JURANK" ORDER BY "score" DESC') + + ret = [] + for data in cur: + ret.append({ + 'name':data[0], + 'song':data[1], + 'score':data[2], + 'maxcombo':data[3], + }) + + return ret + + @imc.async.caller + def update_result(self,name,song,score,maxcombo): + #TOJAuth.check_access_func(self._accessid, TOJAuth.ACCESS_READ) + + cur = self.db.cursor(); + cur.execute('SELECT "score" FROM "SQMOD_TEST_JURANK" WHERE "name"=%s AND "song"=%s', + (name,song)) + + if cur.rowcount == 1: + if cur.fetchone()[0] > score: + return 'Success' + + cur.upsert('SQMOD_TEST_JURANK', + {'name':name,'song':song}, + {'score':score,'maxcombo':maxcombo}) + + client_links = self.get_link('client') + subpath = 'sq/' + str(self._sqid) + '/' + for link in client_links: + Proxy.instance.call_async( + link + subpath, 'update_jurank', 10000, None) + + return 'Success' |