aboutsummaryrefslogtreecommitdiffstats
path: root/src/sqmod/sqmod_test/py/sqmod_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/sqmod/sqmod_test/py/sqmod_test.py')
-rw-r--r--src/sqmod/sqmod_test/py/sqmod_test.py88
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'