def get_project_menu(request):
    token = str(request.GET.get('token', ''))
    if authenticate_token(token):
        user = UserManager(token)
        return HttpResponse(json.dumps([user.consumption_project()]))
    else:
        return HttpResponse(status=422)
Beispiel #2
0
def get_project_menu(request):
    token = str(request.GET.get('token', ''))
    if authenticate_token(token):
        user = UserManager(token)
        return HttpResponse(json.dumps([user.consumption_project()]))
    else:
        return HttpResponse(status=422)
def get_overview_menu(request):
    token = str(request.GET.get('token', ''))
    if authenticate_token(token):
        user2 = UserManager(token)
        return HttpResponse(json.dumps([user2.overview()]))
    else:
        return HttpResponse(status=422)
Beispiel #4
0
async def counter(websocket, path):
    # register(websocket) sends user_event() to websocket
    user = await action.register(websocket)
    UserManager.user_connected(user)
    try:
        async for message in websocket:
            data = json.loads(message)
            # 打印不是绘图的数据
            if log.actionShouldLog(data["action"]):
                log.info(message)
            act = action.getMethod(data["action"])
            if act != None:
                act_args = []
                act_arg_names = act.__code__.co_varnames[:act.__code__.
                                                         co_argcount]
                for n in act_arg_names:
                    act_args.append(locals()[n])
                await act(*act_args)
            else:
                print("unsupported event: {}", data)
    except websockets.exceptions.ConnectionClosedError:
        pass  # 连接关闭无需处理,直接走finally移除该用户便是
    except json.decoder.JSONDecodeError as e:
        print("非JSON数据")
        print(e)
        pass
    finally:
        await action.unregister(user)
        UserManager.user_disconnected(user)
        user.websocket = None
Beispiel #5
0
def get_overview_menu(request):
    token = str(request.GET.get('token', ''))
    if authenticate_token(token):
        user2 = UserManager(token)
        return HttpResponse(json.dumps([user2.overview()]))
    else:
        return HttpResponse(status=422)
Beispiel #6
0
def get_variation(request):
    start = str(request.GET.get('month', ''))
    token = str(request.GET.get('token', ''))
    if authenticate_token(token):
        user = UserManager(token)
        return HttpResponse(json.dumps([user.variation(start)]))
    else:
        return HttpResponse(status=422)
def get_variation(request):
    start = str(request.GET.get('month', ''))
    token = str(request.GET.get('token', ''))
    if authenticate_token(token):
        user = UserManager(token)
        return HttpResponse(json.dumps([user.variation(start)]))
    else:
        return HttpResponse(status=422)
 def __init__(self, client_socket: socket.socket, semaphore: Semaphore):
     self.semaphore = semaphore
     self.client = client_socket
     self.connect = get_connection()
     self.userManager = UserManager(self.connect)
     self.weatherManager = WeatherManager(self.connect)
     self.is_login = False
     self.is_admin = False
     self.username = '******'
Beispiel #9
0
 def _sample_game(self):
     self.user_manager = UserManager(User(), User())
     um = self.user_manager
     um.user_1.update_words(WordType.ATTACK, list(get_attack()))
     um.user_1.update_words(WordType.DEFEND, list(get_defend()))
     um.user_1.update_words(WordType.RIVAL, list(get_rival()))
     um.switch_user()
     um.user_2.update_words(WordType.ATTACK, list(get_attack()))
     um.user_2.update_words(WordType.DEFEND, list(get_defend()))
     um.user_2.update_words(WordType.RIVAL, list(get_rival()))
     um.switch_user()
Beispiel #10
0
def user_create():
    form = CreateUserForm()
    manager = UserManager('user')
    if form.validate_on_submit():
        localtime = str(datetime.now())
        manager.add_user(form.name.data, form.password.data, localtime, True,
                         [], None)
        user = current_users.get_user(form.name.data)
        login_user(user)
        user.set('authenticated', True)
        flash('User successfully created', 'success')
        return redirect(url_for('wiki.index'))
    return render_template('createuser.html', form=form)
Beispiel #11
0
    def __init__(self, session):
        self.session = session
        self.logged_in = False
        self.user = None
        self.is_admin = False
        self.cart_items = None

        # self.login()

        self.category_manager = CategoryManager(session=session)
        self.cart_manager = CartManager(session=session)
        self.product_manager = ProductManager(session=session)
        self.user_manager = UserManager(session=session)
        self.order_manager = OrderManager(session=session)
Beispiel #12
0
 def createJob(self, username, jobSpec):
     jobNo = self._getJobNo()
     job = JobPerspective(jobNo, jobSpec)
     self.jobs[jobNo] = job
     
     user = yield UserManager.get(username)
     log.debug("Creating job %d for user %s... connecting slave servers" % (jobNo, user.userSpec.username))
     
     # allocate a bunch of slaves here
     slaves = yield SlaveAllocator.allocate(jobSpec)
     log.debug("Using slaves: %s" % slaves)
     
     # divide the client function to spread the load over all slaves in the set
     clientFunctionPerSlave = "(%s)/%s" % (jobSpec.clientFunction, len(slaves))
     transferLimitPerSlave = jobSpec.transferLimit / len(slaves)
     modifiedJobSpec = JobSpec(jobSpec.toJson())
     modifiedJobSpec.clientFunction = clientFunctionPerSlave
     modifiedJobSpec.transferLimit = transferLimitPerSlave
     
     deferred = Deferred()
     slaveRequests = []
     for slave in slaves:
         request = slave.createJob(modifiedJobSpec)
         request.addCallback(self._createJobSlaveCallback, slave)
         slaveRequests.append(request)
     
     deferredList = DeferredList(slaveRequests)
     deferredList.addCallback(self._createJobCallback, jobNo, user, deferred)
     yield deferredList
     returnValue(jobNo)    
Beispiel #13
0
async def restoreUser(user, data):
    restoreData = json.loads(data["data"])
    if "server" in restoreData:
        if restoreData["server"]["startTime"] == SERVER_START_TIME:
            if UserManager.restore_user(user, restoreData["user"]):
                # 把缓存的临时用户返回,通知浏览器修改当前用户的信息
                await user.send(user_event(user))
                # 把用户的群组返回回去,通知浏览器修改群组
                await user.send(user.group().group_event())
Beispiel #14
0
    def __init__(self, name):
        self.name = name
        self.parse_config("server.ini")

        self.usermgr = UserManager(name)
        self.friendmgr = FriendManager(name, self.usermgr)
        self.postmgr = PostManager(name, self.friendmgr, self.publichost)

        self.userdb = self.usermgr.get_conn
        self.frienddb = self.friendmgr.get_conn
        self.postdb = self.postmgr.get_conn

        self.util = utilities
        super(type(self), self).__init__(bottle.app(), self.session_opts)
Beispiel #15
0
    def __init__(self, room_id, text, user_id=None, ts=None):
        # super(self.__class__, self).__init__()
        BaseModel.__init__(self)

        # Check if room exists
        room = RoomManager.find(room_id)
        if room is None:
            raise RoomNotFound(room_id)
        else:
            self.room = room

        # Check if user exists
        if user_id is not None:
            user = UserManager.find(user_id)
            if user is None:
                raise UserNotFoundError(user_id)
            else:
                self.user = user

        self.text = text
        self.ts = ts
Beispiel #16
0
class UserTest(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(UserTest, self).__init__(*args, **kwargs)
        self.store = StoreManager()
        self.um = UserManager(kanojo_manager=KanojoManager(), store=self.store)
        self.user = {
            "facebook_connect": False,
            "money": 0,
            "sex": "male",
            "create_time": 1413019326,
            "likes": [],
            "id": 1,
            "description": None,
            "uuid": ["test_uuid1", "test_uuid1"],
            "stamina": 100,
            "kanojos": [1, 368],
            "email": "*****@*****.**",
            "twitter_connect": False,
            "generate_count": 0,
            "profile_image_url": "http://www.deviantsart.com/2oo69ib.jpg",
            "birthday": 1413025200,
            "enemies": [],
            "password": None,
            "friends": [231, 31, 149, 333, 335, 336, 337, 339, 30, 220, 361],
            "tickets": 20,
            "name": "everyone",
            "language": "en",
            "level": 1,
            "scan_count": 0
        }
        self.kanojo = {
            "mascot_enabled": "0",
            "avatar_background_image_url": None,
            "mouth_type": 4,
            "skin_color": 1,
            "body_type": 1,
            "race_type": 10,
            "spot_type": 1,
            "sexual": 16,
            "id": 368,
            "recognition": 42,
            "clothes_type": 5,
            "brow_type": 4,
            "consumption": 14,
            "like_rate": 0,
            "eye_position": 0.8,
            "followers": [1],
            "location": "Somewhere",
            "accessory_type": 6,
            "possession": 28,
            "hair_type": 19,
            "clothes_color": 4,
            "ear_type": 2,
            "brow_position": -0.9,
            "barcode": "4011708223260",
            "eye_type": 101,
            "profile_image_url": "http://www.deviantsart.com/3m68o83.png",
            "eye_color": 3,
            "glasses_type": 1,
            "hair_color": 14,
            "owner_user_id": 1,
            "face_type": 4,
            "nationality": "Japan",
            "advertising_product_url": None,
            "profile_image_full_url":
            "http://gdrive-cdn.herokuapp.com/get/0B-nxIpt4DE2TWE1hM0g2bF9LNkU/637179.png",
            "love_gauge": 50,
            "mouth_position": 0.1,
            "name": "\u3042\u304a\u3075\u3043\u308b",
            "fringe_type": 10,
            "nose_type": 1,
            "birthday": 1415271083
        }
        self.kanojo_friend = {
            "mascot_enabled": "0",
            "avatar_background_image_url": None,
            "mouth_type": 10,
            "nose_type": 3,
            "body_type": 1,
            "race_type": 10,
            "spot_type": 1,
            "sexual": 19,
            "id": 31,
            "recognition": 36,
            "clothes_type": 4,
            "brow_type": 2,
            "consumption": 18,
            "like_rate": 0,
            "eye_position": 0,
            "followers": [1],
            "location": "Somewhere",
            "accessory_type": 1,
            "possession": 27,
            "hair_type": 15,
            "clothes_color": 3,
            "ear_type": 1,
            "brow_position": 0,
            "barcode": "hidden",
            "love_gauge": 50,
            "profile_image_url": "http://www.deviantsart.com/u7ij6n.png",
            "eye_color": 6,
            "glasses_type": 1,
            "hair_color": 16,
            "owner_user_id": 0,
            "face_type": 4,
            "nationality": "Japan",
            "advertising_product_url": None,
            "profile_image_full_url":
            "http://gdrive-cdn.herokuapp.com/get/0B-nxIpt4DE2TbnZtVVB1T1RYX00/1277508.png",
            "eye_type": 112,
            "mouth_position": 0,
            "name": "\u30b0\u30e9\u30cb\u30fc\u30cb",
            "fringe_type": 3,
            "skin_color": 10,
            "birthday": 1413571308
        }

    def test_user_action_approche(self):
        user = copy.deepcopy(self.user)
        kanojo = copy.deepcopy(self.kanojo)
        kanojo2 = copy.deepcopy(self.kanojo_friend)

        km = self.um.kanojo_manager
        self.um.kanojo_manager = None
        dt = self.um.user_action(user, kanojo)
        self.assertEqual(dt.get('code'), 500)

        self.um.kanojo_manager = km
        dt = self.um.user_action(user, kanojo)
        self.assertEqual(dt.get('code'), 500)

        dt = self.um.user_action(user, kanojo, action_string="10|12|21")
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertTrue(dt.get('love_increment').has_key('increase_love'))
        self.assertGreater(dt.get('love_increment').get('increase_love'), 0)
        self.assertEqual(dt.get('love_increment').get('decrement_love'), 0)
        self.assertEqual(self.user.get('stamina') - 10, user.get('stamina'))
        #print dt

        dt = self.um.user_action(user,
                                 kanojo2,
                                 action_string="10|12|21|21|20|12|12|20")
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertTrue(dt.get('love_increment').has_key('decrement_love'))
        self.assertGreater(dt.get('love_increment').get('decrement_love'), 0)
        self.assertEqual(dt.get('love_increment').get('increase_love'), 0)
        self.assertEqual(self.user.get('stamina') - 20, user.get('stamina'))

        kanojo2 = copy.deepcopy(self.kanojo_friend)
        kanojo2['love_gauge'] = 1
        dt = self.um.user_action(user,
                                 kanojo2,
                                 action_string="10|12|21|21|20|12|12|20")
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertEqual(self.user.get('stamina') - 30, user.get('stamina'))
        self.assertTrue(dt.get('info').get('change_owner'))

        user['stamina'] = 5
        dt = self.um.user_action(user, kanojo, action_string="10|12|21")
        self.assertEqual(dt.get('code'), 403)

    def test_user_action_item(self):
        user = copy.deepcopy(self.user)
        kanojo = copy.deepcopy(self.kanojo)
        kanojo2 = copy.deepcopy(self.kanojo_friend)

        dt = self.um.user_action(user,
                                 kanojo,
                                 do_gift=110,
                                 is_extended_action=True)
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.get('data'))
        self.assertFalse(self.um.user_items(self.user))
        self.assertTrue(self.um.user_items(user))
        self.assertEqual(len(self.um.user_items(user)), 1)

        # not extended gift
        dt = self.um.user_action(user,
                                 kanojo,
                                 do_gift=1,
                                 is_extended_action=False)
        self.assertEqual(dt.get('code'), 403)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertEqual(dt.get('love_increment').get('alertShow'), 1)
        self.assertTrue(dt.has_key('alerts'))

        user['money'] = 100
        dt = self.um.user_action(user,
                                 kanojo,
                                 do_gift=1,
                                 is_extended_action=False)
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertGreater(dt.get('love_increment').get('increase_love'), 0)
        self.assertNotEqual(kanojo.get('love_gauge'),
                            self.kanojo.get('love_gauge'))

    def test_add_store_item(self):
        user = copy.deepcopy(self.user)

        store_item = self.store.get_item(110)
        self.assertIsNotNone(store_item)

        dt = self.um.add_store_item(user, store_item)
        self.assertIsNotNone(dt)
        #self.assertEqual(dt.get('has_item_id'), store_item.get('has_item_id'))
        self.um.add_store_item(user, store_item)
        dt = self.um.add_store_item(user, store_item)
        self.assertEqual(dt.get('units'), 3)

    def test_give_present(self):
        user = copy.deepcopy(self.user)
        kanojo = copy.deepcopy(self.kanojo)
        kanojo2 = copy.deepcopy(self.kanojo_friend)

        store_item = self.store.get_item(110)
        self.assertIsNotNone(store_item)
        self.um.add_store_item(user, store_item)

        has_items = self.um.user_items(user)
        self.assertIsNotNone(has_items)
        self.assertGreater(len(has_items), 0)

        item = has_items[0]
        dt = self.um.give_present(user, kanojo, item.get('store_item_id'))
Beispiel #17
0
class UserTest(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(UserTest, self).__init__(*args, **kwargs)
        self.store = StoreManager()
        self.um = UserManager(kanojo_manager=KanojoManager(), store=self.store)
        self.user = {
            "facebook_connect": False,
            "money": 0,
            "sex": "male",
            "create_time": 1413019326,
            "likes": [],
            "id": 1,
            "description": None,
            "uuid": ["test_uuid1", "test_uuid1"],
            "stamina": 100,
            "kanojos": [1, 368],
            "email": "*****@*****.**",
            "twitter_connect": False,
            "generate_count": 0,
            "profile_image_url": "http://www.deviantsart.com/2oo69ib.jpg",
            "birthday": 1413025200,
            "enemies": [],
            "password": None,
            "friends": [231, 31, 149, 333, 335, 336, 337, 339, 30, 220, 361],
            "tickets": 20,
            "name": "everyone",
            "language": "en",
            "level": 1, 
            "scan_count": 0
        }
        self.kanojo = {
            "mascot_enabled": "0",
            "avatar_background_image_url": None,
            "mouth_type": 4,
            "skin_color": 1,
            "body_type": 1,
            "race_type": 10,
            "spot_type": 1,
            "sexual": 16,
            "id": 368,
            "recognition": 42,
            "clothes_type": 5,
            "brow_type": 4,
            "consumption": 14,
            "like_rate": 0,
            "eye_position": 0.8,
            "followers": [1],
            "location": "Somewhere",
            "accessory_type": 6,
            "possession": 28,
            "hair_type": 19,
            "clothes_color": 4,
            "ear_type": 2,
            "brow_position": -0.9,
            "barcode": "4011708223260",
            "eye_type": 101,
            "profile_image_url": "http://www.deviantsart.com/3m68o83.png",
            "eye_color": 3,
            "glasses_type": 1,
            "hair_color": 14,
            "owner_user_id": 1,
            "face_type": 4,
            "nationality": "Japan",
            "advertising_product_url": None,
            "profile_image_full_url": "http://gdrive-cdn.herokuapp.com/get/0B-nxIpt4DE2TWE1hM0g2bF9LNkU/637179.png",
            "love_gauge": 50,
            "mouth_position": 0.1,
            "name": "\u3042\u304a\u3075\u3043\u308b",
            "fringe_type": 10,
            "nose_type": 1,
            "birthday": 1415271083
        }
        self.kanojo_friend = {"mascot_enabled": "0", "avatar_background_image_url": None, "mouth_type": 10, "nose_type": 3, "body_type": 1, "race_type": 10, "spot_type": 1, "sexual": 19, "id": 31, "recognition": 36, "clothes_type": 4, "brow_type": 2, "consumption": 18, "like_rate": 0, "eye_position": 0, "followers": [1], "location": "Somewhere", "accessory_type": 1, "possession": 27, "hair_type": 15, "clothes_color": 3, "ear_type": 1, "brow_position": 0, "barcode": "hidden", "love_gauge": 50, "profile_image_url": "http://www.deviantsart.com/u7ij6n.png", "eye_color": 6, "glasses_type": 1, "hair_color": 16, "owner_user_id": 0, "face_type": 4, "nationality": "Japan", "advertising_product_url": None, "profile_image_full_url": "http://gdrive-cdn.herokuapp.com/get/0B-nxIpt4DE2TbnZtVVB1T1RYX00/1277508.png", "eye_type": 112, "mouth_position": 0, "name": "\u30b0\u30e9\u30cb\u30fc\u30cb", "fringe_type": 3, "skin_color": 10, "birthday": 1413571308}

    def test_user_action_approche(self):
        user = copy.deepcopy(self.user)
        kanojo = copy.deepcopy(self.kanojo)
        kanojo2 = copy.deepcopy(self.kanojo_friend)

        km = self.um.kanojo_manager
        self.um.kanojo_manager = None
        dt = self.um.user_action(user, kanojo)
        self.assertEqual(dt.get('code'), 500)

        self.um.kanojo_manager = km
        dt = self.um.user_action(user, kanojo)
        self.assertEqual(dt.get('code'), 500)

        dt = self.um.user_action(user, kanojo, action_string="10|12|21")
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertTrue(dt.get('love_increment').has_key('increase_love'))
        self.assertGreater(dt.get('love_increment').get('increase_love'), 0)
        self.assertEqual(dt.get('love_increment').get('decrement_love'), 0)
        self.assertEqual(self.user.get('stamina')-10, user.get('stamina'))
        #print dt

        dt = self.um.user_action(user, kanojo2, action_string="10|12|21|21|20|12|12|20")
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertTrue(dt.get('love_increment').has_key('decrement_love'))
        self.assertGreater(dt.get('love_increment').get('decrement_love'), 0)
        self.assertEqual(dt.get('love_increment').get('increase_love'), 0)
        self.assertEqual(self.user.get('stamina')-20, user.get('stamina'))

        kanojo2 = copy.deepcopy(self.kanojo_friend)
        kanojo2['love_gauge'] = 1
        dt = self.um.user_action(user, kanojo2, action_string="10|12|21|21|20|12|12|20")
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertEqual(self.user.get('stamina')-30, user.get('stamina'))
        self.assertTrue(dt.get('info').get('change_owner'))

        user['stamina'] = 5
        dt = self.um.user_action(user, kanojo, action_string="10|12|21")
        self.assertEqual(dt.get('code'), 403)

    def test_user_action_item(self):
        user = copy.deepcopy(self.user)
        kanojo = copy.deepcopy(self.kanojo)
        kanojo2 = copy.deepcopy(self.kanojo_friend)

        dt = self.um.user_action(user, kanojo, do_gift=110, is_extended_action=True)
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.get('data'))
        self.assertFalse(self.um.user_items(self.user))
        self.assertTrue(self.um.user_items(user))
        self.assertEqual(len(self.um.user_items(user)), 1)

        # not extended gift
        dt = self.um.user_action(user, kanojo, do_gift=1, is_extended_action=False)
        self.assertEqual(dt.get('code'), 403)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertEqual(dt.get('love_increment').get('alertShow'), 1)
        self.assertTrue(dt.has_key('alerts'))

        user['money'] = 100
        dt = self.um.user_action(user, kanojo, do_gift=1, is_extended_action=False)
        self.assertEqual(dt.get('code'), 200)
        self.assertTrue(dt.has_key('love_increment'))
        self.assertGreater(dt.get('love_increment').get('increase_love'), 0)
        self.assertNotEqual(kanojo.get('love_gauge'), self.kanojo.get('love_gauge'))

    def test_add_store_item(self):
        user = copy.deepcopy(self.user)

        store_item = self.store.get_item(110)
        self.assertIsNotNone(store_item)

        dt = self.um.add_store_item(user, store_item)
        self.assertIsNotNone(dt)
        #self.assertEqual(dt.get('has_item_id'), store_item.get('has_item_id'))
        self.um.add_store_item(user, store_item)
        dt = self.um.add_store_item(user, store_item)
        self.assertEqual(dt.get('units'), 3)

    def test_give_present(self):
        user = copy.deepcopy(self.user)
        kanojo = copy.deepcopy(self.kanojo)
        kanojo2 = copy.deepcopy(self.kanojo_friend)

        store_item = self.store.get_item(110)
        self.assertIsNotNone(store_item)
        self.um.add_store_item(user, store_item)

        has_items = self.um.user_items(user)
        self.assertIsNotNone(has_items)
        self.assertGreater(len(has_items), 0)

        item = has_items[0]
        dt = self.um.give_present(user, kanojo, item.get('store_item_id'))
class HandleClient:
    def __init__(self, client_socket: socket.socket, semaphore: Semaphore):
        self.semaphore = semaphore
        self.client = client_socket
        self.connect = get_connection()
        self.userManager = UserManager(self.connect)
        self.weatherManager = WeatherManager(self.connect)
        self.is_login = False
        self.is_admin = False
        self.username = '******'

    def start(self):
        try:
            while True:
                data: bytes = self.client.recv(SERVER_DATA_LENGTH)
                data: str = bytes_to_str(data)
                data: str = data.strip()

                # break
                if data.startswith('exit'):
                    break

                print(data)

                if data.startswith('login'):
                    self.login(data)
                elif data.startswith('register'):
                    self.register(data)
                elif data.startswith('cities'):
                    self.find_cities()
                elif data.startswith('city'):
                    self.find_city(data)
                elif data.startswith('add_city'):
                    self.add_city(data)
                elif data.startswith('update_weather'):
                    self.update_weather(data)
                elif data.startswith('list_city'):
                    self.list_city()
                else:
                    self.client.sendall(b'Command khong hop le')

        except Exception as e:
            print(e)
        finally:
            print('client {} out'.format(self.username))
            self.semaphore.release()
            self.client.close()
            self.connect.close()

    def login(self, data: str):
        items = data.split(' ')
        _, username, password = items

        if self.userManager.login(username, password):
            self.client.sendall(MESSAGE_SUCCESS)
            self.is_login = True
            self.username = username
            if username == 'admin':
                self.is_admin = True
        else:
            self.client.sendall(b'Username hoac mat khau bi sai')

    def register(seft, data: str):
        items = data.split(' ')
        _, username, password = items

        pattern = '[a-zA-Z0-9]{2,64}'

        if re.match(pattern, username) and re.match(pattern, password):
            if seft.userManager.register(username, password):
                seft.client.sendall(b'Dang ki thanh cong')
            else:
                seft.client.sendall(b'Username da ton tai')
        else:
            seft.client.sendall(
                b'Username va mat khau phai co 2 ki tu va nam trong [a-zA-Z0-9]'
            )

    def find_city(self, data: str):
        if not self.is_login:
            self.client.sendall(b'Ban phai dang nhap')
            return

        items = data.split(' ')
        try:
            city_id = int(items[1])
            data = self.weatherManager.get_city(city_id)
            data = str_to_bytes(data)
            self.client.sendall(data)
        except ValueError:
            self.client.sendall(b'Du lieu khong hop le')

    def find_cities(self):
        if not self.is_login:
            self.client.sendall(b'Ban phai dang nhap')
            return

        data = self.weatherManager.get_cities()
        data = str_to_bytes(data)
        self.client.sendall(data)

    def add_city(self, data: str):
        if not self.is_admin:
            self.client.sendall(b'Ban khong co quyen admin')
            return

        index = len('add_city ')
        city_name = data[index:]

        if self.weatherManager.add_city(city_name):
            self.client.sendall(b'Ban da them thanh cong')
        else:
            self.client.sendall(b'Ban them that bai')

    def update_weather(self, data: str):
        if not self.is_login:
            self.client.sendall(b'Ban phai dang nhap')
            return

        index = len('update_weather ')
        dict = eval(data[index:])

        result = self.weatherManager.save_weather(dict['city_id'], dict['day'],
                                                  dict['status'],
                                                  dict['temp_min'],
                                                  dict['temp_max'])

        if result:
            self.client.sendall(b'Cap nhat thanh cong')
        else:
            self.client.sendall(b'Cap nhat that bai')

    def list_city(self):
        data = self.weatherManager.list_city()
        data = str_to_bytes(data)
        self.client.sendall(data)
Beispiel #19
0
 def __init__(self, *args, **kwargs):
     super(UserTest, self).__init__(*args, **kwargs)
     self.store = StoreManager()
     self.um = UserManager(kanojo_manager=KanojoManager(), store=self.store)
     self.user = {
         "facebook_connect": False,
         "money": 0,
         "sex": "male",
         "create_time": 1413019326,
         "likes": [],
         "id": 1,
         "description": None,
         "uuid": ["test_uuid1", "test_uuid1"],
         "stamina": 100,
         "kanojos": [1, 368],
         "email": "*****@*****.**",
         "twitter_connect": False,
         "generate_count": 0,
         "profile_image_url": "http://www.deviantsart.com/2oo69ib.jpg",
         "birthday": 1413025200,
         "enemies": [],
         "password": None,
         "friends": [231, 31, 149, 333, 335, 336, 337, 339, 30, 220, 361],
         "tickets": 20,
         "name": "everyone",
         "language": "en",
         "level": 1,
         "scan_count": 0
     }
     self.kanojo = {
         "mascot_enabled": "0",
         "avatar_background_image_url": None,
         "mouth_type": 4,
         "skin_color": 1,
         "body_type": 1,
         "race_type": 10,
         "spot_type": 1,
         "sexual": 16,
         "id": 368,
         "recognition": 42,
         "clothes_type": 5,
         "brow_type": 4,
         "consumption": 14,
         "like_rate": 0,
         "eye_position": 0.8,
         "followers": [1],
         "location": "Somewhere",
         "accessory_type": 6,
         "possession": 28,
         "hair_type": 19,
         "clothes_color": 4,
         "ear_type": 2,
         "brow_position": -0.9,
         "barcode": "4011708223260",
         "eye_type": 101,
         "profile_image_url": "http://www.deviantsart.com/3m68o83.png",
         "eye_color": 3,
         "glasses_type": 1,
         "hair_color": 14,
         "owner_user_id": 1,
         "face_type": 4,
         "nationality": "Japan",
         "advertising_product_url": None,
         "profile_image_full_url":
         "http://gdrive-cdn.herokuapp.com/get/0B-nxIpt4DE2TWE1hM0g2bF9LNkU/637179.png",
         "love_gauge": 50,
         "mouth_position": 0.1,
         "name": "\u3042\u304a\u3075\u3043\u308b",
         "fringe_type": 10,
         "nose_type": 1,
         "birthday": 1415271083
     }
     self.kanojo_friend = {
         "mascot_enabled": "0",
         "avatar_background_image_url": None,
         "mouth_type": 10,
         "nose_type": 3,
         "body_type": 1,
         "race_type": 10,
         "spot_type": 1,
         "sexual": 19,
         "id": 31,
         "recognition": 36,
         "clothes_type": 4,
         "brow_type": 2,
         "consumption": 18,
         "like_rate": 0,
         "eye_position": 0,
         "followers": [1],
         "location": "Somewhere",
         "accessory_type": 1,
         "possession": 27,
         "hair_type": 15,
         "clothes_color": 3,
         "ear_type": 1,
         "brow_position": 0,
         "barcode": "hidden",
         "love_gauge": 50,
         "profile_image_url": "http://www.deviantsart.com/u7ij6n.png",
         "eye_color": 6,
         "glasses_type": 1,
         "hair_color": 16,
         "owner_user_id": 0,
         "face_type": 4,
         "nationality": "Japan",
         "advertising_product_url": None,
         "profile_image_full_url":
         "http://gdrive-cdn.herokuapp.com/get/0B-nxIpt4DE2TbnZtVVB1T1RYX00/1277508.png",
         "eye_type": 112,
         "mouth_position": 0,
         "name": "\u30b0\u30e9\u30cb\u30fc\u30cb",
         "fringe_type": 3,
         "skin_color": 10,
         "birthday": 1413571308
     }
Beispiel #20
0
 def __init__(self):
     UserManager.__init__(self)
Beispiel #21
0
 def __init__(self) -> None:
     self.data = Data()
     self.users = UserManager(self.data)
     self.workers = WorkerManager(self.data)
     self.window = WindowManager(self)
     self.start()
Beispiel #22
0
    km = KanojoManager(generate_secret=config.KANOJO_SECRET)

    print(km.generate('123'))

    exit()

    mdb_connection_string = config.MDB_CONNECTION_STRING
    db_name = mdb_connection_string.split('/')[-1]
    db = MongoClient(mdb_connection_string)[db_name]

    #barcode_info = db.kanojos.find_one({ 'id': 368 })
    #barcode_info.pop('_id', None)
    #print json.dumps(barcode_info)

    from user import UserManager
    um = UserManager(db)
    user = um.user(uid=1, clear=CLEAR_NONE)

    import config
    km = KanojoManager(db,
                       generate_secret1=config.KANOJO_SECRET1,
                       generate_secret2=config.KANOJO_SECRET2)
    #kanojo = km.kanojo(368, user, clear=CLEAR_NONE)
    kanojo = km.kanojo(31, user, clear=CLEAR_NONE)
    kanojo.pop('_id', None)
    print(json.dumps(kanojo))

    #import pprint
    #pprint.pprint(km.user_action(kanojo, user, '10|11|12|20|21|20|12|11|10'))

    exit()
Beispiel #23
0
class Driver:
    def __init__(self, session):
        self.session = session
        self.logged_in = False
        self.user = None
        self.is_admin = False
        self.cart_items = None

        # self.login()

        self.category_manager = CategoryManager(session=session)
        self.cart_manager = CartManager(session=session)
        self.product_manager = ProductManager(session=session)
        self.user_manager = UserManager(session=session)
        self.order_manager = OrderManager(session=session)

    def login(self):
        email = input('Enter E-mail: ')
        pwd = input('Enter Password: '******'{user} logged in successfully')
        except exc.NoResultFound:
            raise Exception('wrong credentials. please try again.')

    def collect_category_details(self):
        category_detail = {}
        for key, value in CATEGORY_DETAILS.items():
            category_detail[key] = input(f'Enter {value}: ')
        return category_detail

    def collect_product_details(self):
        product_detail = {}
        for key, value in PRODUCT_DETAILS.items():
            product_detail[key] = input(f'Enter {value}: ')
        return product_detail

    def select_user(self):
        users = self.user_manager.list_users()
        for index, value in enumerate(users, 1):
            print(f'{index}. {value}')
        user_index = int(input('Select User: '******'Products added to the cart by user {user}')
        for item in cart_items:
            print(f'Product: {item.product}, Quantity: {item.quantity}')
        print()

    def select_category(self):
        categories = self.category_manager.list_categories()
        for index, category in enumerate(categories, 1):
            print(f'{index}. {category}')
        category_index = int(input('Select Category: '))

        return categories[category_index-1]

    def select_product(self):
        products = self.product_manager.list_products()
        for index, product in enumerate(products, 1):
            print(f'{index}. {product}')
        product_index = int(input('Select Product: '))

        return products[product_index-1]

    def display_cart(self, action=None):
        cart_items = self.user.cart_items
        print('User\'s Cart: ')
        for index, item in enumerate(cart_items, 1):
            print(f'{index}. Product: {item.product}, Quantity: {item.quantity}')

        if action == 'select':
            item_index = int(input('Select Product: '))

            return cart_items[item_index-1]

    def place_order(self):
        items = []
        self.order_manager.create_order(self.user)
        while True:
            item = self.display_cart(action='select')
            self.order_manager.add_item(item=item.product, quantity=item.quantity)
            items.append(item)
            self.cart_manager.remove_item(product=item, silent=True, commit=False)
            add_more = input('Want to add more items from cart? (y/n)')
            if add_more not in ['y', 'Y', 'Yes', 'YES', 'yes']:
                break
        print('Order Placed.')
        res = self.order_manager.is_discount()
        if res[1]:
            print('Voila.. You got 500 discount on this order')
            print(f'Order Amount: {res[0]}, Discount: 500, Net Payable: {res[0]-500}')
        else:
            print(f'Order Amount: {res[0]}, Net Payable: {res[0]}')

        self.cart_manager.commit_changes()
        self.order_manager.complete_order()

    def is_already_added_to_cart(self, product):
        for cart_item in self.user.cart_items:
            if product.id == cart_item.product_id:
                return cart_item
        else:
            return False

    def remove_item_from_cart(self):
        item = self.display_cart(action='select')
        self.cart_manager.remove_item(product=item)

    def add_product_to_user_cart(self):
        product = self.select_product()
        quantity = int(input('Enter Quantity: '))
        cart_item = self.is_already_added_to_cart(product)
        if cart_item:
            self.cart_manager.update_item(cart_item, quantity)
        else:
            self.cart_manager.add_item(user=self.user, product=product, quantity=quantity)

    def view_product_details(self):
        product = self.select_product()
        details = self.product_manager.view_details(product_id=product.id)
        for k, v in details.items():
            print(f'{k}: {v}')

    def list_products_by_category(self):
        category = self.select_category()
        products = self.category_manager.list_products_by_category(category_name=category.name)
        for index, product in enumerate(products, 1):
            print(f'{index}. {product}')

    def list_product_categories(self):
        categories = self.category_manager.list_categories()
        for index, category in enumerate(categories, 1):
            print(f'{index}. {category}')

    def create_user(self):
        user_detail = {}
        for key, value in USER_DETAILS.items():
            user_detail[key] = input(f'Enter {value}: ')
        self.user_manager.add_user(**user_detail)

    def start_admin_flow(self):
        while True:
            print('Select option: ')
            for index, value in enumerate(ACTIONS.get('admin', []), 1):
                print(f'{index}. {value}')

            admin_choice = int(input())

            if admin_choice == 1:
                #   Add Category
                category_detail = self.collect_category_details()
                self.category_manager.add_category(**category_detail)
                input('Press Enter to Continue..')

            elif admin_choice == 2:
                #   Add Product
                product_details = self.collect_product_details()
                self.product_manager.add_product(**product_details)
                input('Press Enter to Continue..')

            elif admin_choice == 3:
                #   View Cart Details
                for_user = self.select_user()
                self.display_user_cart(for_user)
                input('Press Enter to Continue..')

            elif admin_choice == 4:
                #   View Bills
                user = self.select_user()
                bill = self.user_manager.list_bills(user=user)
                # print('Function Under Construction')
                print(json.dumps(bill, indent=4, default=str))
                input('Press Enter to Continue..')

            elif admin_choice == 5:
                return

            else:
                print('Enter Valid Input')
                input('Press Enter to Continue..')

    def start_user_flow(self):
        while True:
            print('Select option: ')
            for index, value in enumerate(ACTIONS.get('user', []), 1):
                print(f'{index}. {value}')

            user_choice = int(input())
            if user_choice == 1:
                #   List Categories
                self.list_product_categories()
                input('Press Enter to Continue..')

            elif user_choice == 2:
                #   List Products by Category
                self.list_products_by_category()
                input('Press Enter to Continue..')

            elif user_choice == 3:
                #   View Product Detail
                self.view_product_details()
                input('Press Enter to Continue..')

            elif user_choice == 4:
                #   View Cart
                self.display_cart()
                input('Press Enter to Continue..')

            elif user_choice == 5:
                #   Add Product to Cart
                self.add_product_to_user_cart()
                input('Press Enter to Continue..')

            elif user_choice == 6:
                #   Remove Product from Cart
                self.remove_item_from_cart()
                input('Press Enter to Continue..')

            elif user_choice == 7:
                #   Place Order
                self.place_order()
                input('Press Enter to Continue..')

            elif user_choice == 8:
                return

            else:
                print('Enter Valid Input')
Beispiel #24
0
def user_manager(session):
    return UserManager(session)
Beispiel #25
0
class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.current_user = 0
        self._create_windows()
        self._set_defaults()
        self._sample_game()
        self._render_game()

    def _sample_game(self):
        self.user_manager = UserManager(User(), User())
        um = self.user_manager
        um.user_1.update_words(WordType.ATTACK, list(get_attack()))
        um.user_1.update_words(WordType.DEFEND, list(get_defend()))
        um.user_1.update_words(WordType.RIVAL, list(get_rival()))
        um.switch_user()
        um.user_2.update_words(WordType.ATTACK, list(get_attack()))
        um.user_2.update_words(WordType.DEFEND, list(get_defend()))
        um.user_2.update_words(WordType.RIVAL, list(get_rival()))
        um.switch_user()

    def _set_defaults(self):
        self.master.title('Typefight')
        self.master.geometry('1000x800')
        self.bind("<Key>", self._key_callback)
        self.bind("<BackSpace>", self._back)
        self.bind("<space>", self._space)
        self.bind("<Return>", self._switch_user)
        self.bind("<Tab>", self._switch_typing_mode)
        self.focus_set()
        self.pack()

    # this method is for convience for switching between users
    # a user should not have this ability
    def _switch_user(self, event=None):
        if self.current_user:
            self.current_user = 0
        else:
            self.current_user = 1
        self.user_manager.switch_user()
        self._render_game()
        self._tag_frames()

    def _switch_typing_mode(self, event):
        self.user_manager.toggle_mode()

    # this is used primarily because of the need to change users
    def _render_game(self):
        current = self._get_current_user()
        other = self._get_rival_user()
        current.clear_frame()
        other.clear_frame()
        for x in self.user_manager.get_words(WordType.ATTACK).queue:
            current.add_attack_word(x)
        for x in self.user_manager.get_words(WordType.DEFEND).queue:
            current.add_defense_word(x)
        for x in self.user_manager.get_words(WordType.RIVAL).queue:
            other.add_defense_word(x)

    def _get_current_user(self):
        if self.current_user:
            return self.first_user
        return self.second_user

    def _get_rival_user(self):
        if self.current_user:
            return self.second_user
        return self.first_user

    def _tag_frames(self):
        if self.current_user:
            self.first_user['text'] = 'User'
            self.second_user['text'] = 'Rival'
        else:
            self.first_user['text'] = 'Rival'
            self.second_user['text'] = 'User'

    def _create_windows(self):
        left_pane = tk.Frame(self, width=500, height=800)
        right_pane = tk.Frame(self, width=500, height=800)
        left_pane.grid(row=0, column=0)
        right_pane.grid(row=0, column=1)
        self.first_user = UserFrame(left_pane)
        self.second_user = UserFrame(right_pane)
        self._tag_frames()

    def _update_current_word(self):
        self._get_current_user().set_message(
            self.user_manager.get_current_word())

    def _back(self, event):
        self.user_manager.remove_previous()
        self._update_current_word()

    def _key_callback(self, event):
        if re.match("\\w", event.char):
            self.user_manager.type_key(event.char)
            self._update_current_word()

    def _space(self, event):
        if self.user_manager.publish_word():
            self._render_game()
            self._get_current_user().set_message('')
        self._update_current_word()
Beispiel #26
0
    km = KanojoManager(generate_secret=config.KANOJO_SECRET)

    print km.generate('123')

    exit()

    mdb_connection_string = config.MDB_CONNECTION_STRING    
    db_name = mdb_connection_string.split('/')[-1]
    db = MongoClient(mdb_connection_string)[db_name]

    #barcode_info = db.kanojos.find_one({ 'id': 368 })
    #barcode_info.pop('_id', None)
    #print json.dumps(barcode_info)

    from user import UserManager
    um = UserManager(db)
    user = um.user(uid=1, clear=CLEAR_NONE)

    import config
    km = KanojoManager(db, generate_secret1=config.KANOJO_SECRET1, generate_secret2=config.KANOJO_SECRET2)
    #kanojo = km.kanojo(368, user, clear=CLEAR_NONE)
    kanojo = km.kanojo(31, user, clear=CLEAR_NONE)
    kanojo.pop('_id', None)
    print json.dumps(kanojo)

    #import pprint
    #pprint.pprint(km.user_action(kanojo, user, '10|11|12|20|21|20|12|11|10'))

    exit()

    for i in range(1417822084, 1417822084+60*60*24*15, 60*60):
Beispiel #27
0
from fastapi import FastAPI
from user import UserManager

app = FastAPI()
user_manager = UserManager()


@app.get("/api/")
def api():
    return {"code": 0, "msg": "OK", "user": user_manager.get_user_num()}
Beispiel #28
0
 def __init__(self, *args, **kwargs):
     super(UserTest, self).__init__(*args, **kwargs)
     self.store = StoreManager()
     self.um = UserManager(kanojo_manager=KanojoManager(), store=self.store)
     self.user = {
         "facebook_connect": False,
         "money": 0,
         "sex": "male",
         "create_time": 1413019326,
         "likes": [],
         "id": 1,
         "description": None,
         "uuid": ["test_uuid1", "test_uuid1"],
         "stamina": 100,
         "kanojos": [1, 368],
         "email": "*****@*****.**",
         "twitter_connect": False,
         "generate_count": 0,
         "profile_image_url": "http://www.deviantsart.com/2oo69ib.jpg",
         "birthday": 1413025200,
         "enemies": [],
         "password": None,
         "friends": [231, 31, 149, 333, 335, 336, 337, 339, 30, 220, 361],
         "tickets": 20,
         "name": "everyone",
         "language": "en",
         "level": 1, 
         "scan_count": 0
     }
     self.kanojo = {
         "mascot_enabled": "0",
         "avatar_background_image_url": None,
         "mouth_type": 4,
         "skin_color": 1,
         "body_type": 1,
         "race_type": 10,
         "spot_type": 1,
         "sexual": 16,
         "id": 368,
         "recognition": 42,
         "clothes_type": 5,
         "brow_type": 4,
         "consumption": 14,
         "like_rate": 0,
         "eye_position": 0.8,
         "followers": [1],
         "location": "Somewhere",
         "accessory_type": 6,
         "possession": 28,
         "hair_type": 19,
         "clothes_color": 4,
         "ear_type": 2,
         "brow_position": -0.9,
         "barcode": "4011708223260",
         "eye_type": 101,
         "profile_image_url": "http://www.deviantsart.com/3m68o83.png",
         "eye_color": 3,
         "glasses_type": 1,
         "hair_color": 14,
         "owner_user_id": 1,
         "face_type": 4,
         "nationality": "Japan",
         "advertising_product_url": None,
         "profile_image_full_url": "http://gdrive-cdn.herokuapp.com/get/0B-nxIpt4DE2TWE1hM0g2bF9LNkU/637179.png",
         "love_gauge": 50,
         "mouth_position": 0.1,
         "name": "\u3042\u304a\u3075\u3043\u308b",
         "fringe_type": 10,
         "nose_type": 1,
         "birthday": 1415271083
     }
     self.kanojo_friend = {"mascot_enabled": "0", "avatar_background_image_url": None, "mouth_type": 10, "nose_type": 3, "body_type": 1, "race_type": 10, "spot_type": 1, "sexual": 19, "id": 31, "recognition": 36, "clothes_type": 4, "brow_type": 2, "consumption": 18, "like_rate": 0, "eye_position": 0, "followers": [1], "location": "Somewhere", "accessory_type": 1, "possession": 27, "hair_type": 15, "clothes_color": 3, "ear_type": 1, "brow_position": 0, "barcode": "hidden", "love_gauge": 50, "profile_image_url": "http://www.deviantsart.com/u7ij6n.png", "eye_color": 6, "glasses_type": 1, "hair_color": 16, "owner_user_id": 0, "face_type": 4, "nationality": "Japan", "advertising_product_url": None, "profile_image_full_url": "http://gdrive-cdn.herokuapp.com/get/0B-nxIpt4DE2TbnZtVVB1T1RYX00/1277508.png", "eye_type": 112, "mouth_position": 0, "name": "\u30b0\u30e9\u30cb\u30fc\u30cb", "fringe_type": 3, "skin_color": 10, "birthday": 1413571308}
Beispiel #29
0
def get_users():
    users = getattr(g, '_users', None)
    if users is None:
        users = g._users = UserManager(current_app.config['USER_DIR'])
    return users
Beispiel #30
0
 def __init__(self):
     self.clients = {}
     self.um = UserManager()
     self.cm = ChatManager(self)