Ejemplo n.º 1
0
def preview_message(user_id):
    """Preview translated message"""

    if 'user_id' not in session:
        return redirect("/")
    elif session['user_id'] != user_id:
        return redirect("/users/%s" % session['user_id'])

    user_message = request.form.get("text")
    contact_id_list = MessageController.get_numeric_list(request.form.getlist("contactIds"))

    contacts = MessageController.get_contact_objects(contact_id_list)

    if user_message:
        user_id = session['user_id']
        user = User.query.filter_by(user_id=user_id).all()[0]
        lang_code = user.language.yandex_lang_code 

        unique_lang_dict = MessageController.get_unique_langs(contacts)
        
        translate_langs_dict = MessageController.translate_unique_langs(unique_lang_dict,
                                                                        user_message, 
                                                                        lang_code, 
                                                                        False,
                                                                        False)
    
    trans_msgs = []
    for contact in contacts:
        contact_lang = contact.language.lang_name
        contact_lang_code = contact.language.yandex_lang_code
        contact_name = contact.contact_first_name + " " + contact.contact_last_name
        trans_msg = translate_langs_dict[contact_lang_code]
        trans_msgs.append((trans_msg, contact_name, contact_lang))

    return render_template('preview_table.html', trans_msgs=trans_msgs)
Ejemplo n.º 2
0
def api_alert():
    msgController = MessageController()

    msgController.send_warningMsg( receivers = ['*****@*****.**'])

    # numbers = ["+61433161557","+61405574088","+61457289459","+61432511606"]
    # msgController.send_sms(receivers=numbers)
    print("Alert Send")
    return "Alert Send"
Ejemplo n.º 3
0
    def test_add_sent_msg(self):
        """Test if a sent msg gets added to MessageContact table"""

        sent_msg = MessageController.add_sent_msg("queued", 15, 45)
        query_db = MessageContact.query.filter_by(message_id=45).first()

        self.assertIsNotNone(query_db)
Ejemplo n.º 4
0
    def test_add_trans_msg(self):
        """Test if a translated msg is added to MessageLang table"""

        translated_msg = MessageController.add_trans_msg(4, {"text": u"unittest", "code": 200}, 1)
        query_db = MessageLang.query.filter_by(translated_message="unittest").first()

        self.assertIsNotNone(query_db)
Ejemplo n.º 5
0
    def test_get_unique_langs(self):
        """Test getting of unique languages"""

        contacts = Contact.query.filter_by(user_id=6).all()

        unique_lang_dict = MessageController.get_unique_langs(contacts)
        self.assertEqual(unique_lang_dict, {4: u"fr"})
    def test_add_sent_msg(self):
        """Test if a sent msg gets added to MessageContact table"""

        sent_msg = MessageController.add_sent_msg('queued', 15, 45)
        query_db = MessageContact.query.filter_by(message_id=45).first()

        self.assertIsNotNone(query_db)
    def test_get_unique_langs(self):
        """Test getting of unique languages"""

        contacts = Contact.query.filter_by(user_id=6).all()

        unique_lang_dict = MessageController.get_unique_langs(contacts)
        self.assertEqual(unique_lang_dict, {4: u'fr'})
Ejemplo n.º 8
0
    def test_get_contact_objects(self):
        """Test if you can get a list of contact objects"""

        contacts = MessageController.get_contact_objects(["2"])
        self.assertEqual(contacts[0].contact_first_name, "Contact2")
        self.assertEqual(contacts[0].contact_phone, "4153417706")
        self.assertEqual(contacts[0].user_id, 1)
        self.assertEqual(contacts[0].lang_id, 1)
Ejemplo n.º 9
0
    def __init__(self, address="0.0.0.0", port=5000):
        super(Server, self).__init__()
        self.CONNECTION_LIST = []  # list of socket client connected
        self.port = port
        self.ipaddr = address

        # create a new socket
        self.sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sockfd.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.sockfd.bind((self.ipaddr, self.port))
        self.sockfd.listen(5)

        self.CONNECTION_LIST.append(self.sockfd)

        self.gameServer = GameController()
        self.msServer = MessageController()
        print "Game server started on port " + str(self.port)
    def test_get_contact_objects(self):
        """Test if you can get a list of contact objects"""

        contacts = MessageController.get_contact_objects(['2'])
        self.assertEqual(contacts[0].contact_first_name, 'Contact2')
        self.assertEqual(contacts[0].contact_phone, '4153417706')
        self.assertEqual(contacts[0].user_id, 1)
        self.assertEqual(contacts[0].lang_id, 1)
    def test_translate_unique_langs(self):
        """Test translation of unique langs"""

        trans_msgs_dict = MessageController.translate_unique_langs(
            {
                '2': 'es',
                '4': 'fr'
            }, 'hi', 'en', False, False)

        self.assertEqual(trans_msgs_dict, {'es': u'{hola}', 'fr': u'salut'})
    def test_add_trans_msg(self):
        """Test if a translated msg is added to MessageLang table"""

        translated_msg = MessageController.add_trans_msg(
            4, {
                'text': u'unittest',
                'code': 200
            }, 1)
        query_db = MessageLang.query.filter_by(
            translated_message='unittest').first()

        self.assertIsNotNone(query_db)
Ejemplo n.º 13
0
def submit_text_form(user_id):
    """Send message"""

    if 'user_id' not in session:
        return redirect("/")
    elif session['user_id'] != user_id:
        return redirect("/users/%s" % session['user_id'])

    user_message = request.form.get("text")
    contact_id_list = MessageController.get_numeric_list(request.form.keys())

    contacts = MessageController.get_contact_objects(contact_id_list)

    user_id = session['user_id']
    user = User.query.filter_by(user_id=user_id).all()[0]
    original_lang_id = user.language.lang_id
    msg_sent_at = datetime.datetime.now()

    message = Message(message_text=user_message, user_id=user_id, 
                      original_lang_id=original_lang_id, message_sent_at=msg_sent_at)
    
    flash("Message added.")
    db.session.add(message)
    db.session.commit()


    lang_code = user.language.yandex_lang_code
    contact_langs = []

    unique_lang_dict = MessageController.get_unique_langs(contacts)

    translate_langs_dict = MessageController.translate_unique_langs(unique_lang_dict,
                                                                    user_message, 
                                                                    lang_code, message.message_id,
                                                                    True)

    MessageController.send_trans_texts(contacts, translate_langs_dict,
                                      message.message_id)

    flash('The translated texts have been sent')
    return redirect("/users/%s" % user_id)
Ejemplo n.º 14
0
    def test_numeric_contact_list(self):
        """Test if you get only string numbers out of the list of strings"""

        given_list = MessageController.get_numeric_list(["text", "2", "5", "name"])
        self.assertEqual(given_list, ["2", "5"])
Ejemplo n.º 15
0
class Server(object):
    """docstring for Server"""
    def __init__(self, address="0.0.0.0", port=5000):
        super(Server, self).__init__()
        self.CONNECTION_LIST = []  # list of socket client connected
        self.port = port
        self.ipaddr = address

        # create a new socket
        self.sockfd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sockfd.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.sockfd.bind((self.ipaddr, self.port))
        self.sockfd.listen(5)

        self.CONNECTION_LIST.append(self.sockfd)

        self.gameServer = GameController()
        self.msServer = MessageController()
        print "Game server started on port " + str(self.port)

    def serverListen(self):
        while 1:
            readsock, writesock, errsock = select.select(
                self.CONNECTION_LIST, [], [])

            for sock in readsock:
                if sock == self.sockfd:
                    sockfd, addr = self.sockfd.accept()
                    self.CONNECTION_LIST.append(sockfd)
                    print "Client %s:%s connected" % addr

                else:
                    try:
                        msg = self.msServer.receiveMessage(
                            sock)  # receive the message sent from sock
                        print "receiving", msg
                        msgType = msg[standard.MESSAGE]

                        if msgType == standard.MESSAGE_AUTH:  # user first-time log into the server
                            playerName = msg[standard.MESSAGE_PARAM][
                                standard.PARAM_USERNAME]
                            player = self.gameServer.newPlayer(
                                playerName, sock)
                            self.gameServer.addPlayerOnline(player)

                            obj = dict([(standard.MESSAGE, msgType),
                                        (standard.MESSAGE_SUCCESS, 1),
                                        (standard.PARAM_PLAYER_ID,
                                         player.getPlayerId())])
                            print "send:", obj
                            self.msServer.sendMessage(sock, obj)

                        elif msgType == standard.MESSAGE_REFRESH:  # get the list of the room in the server
                            roomList = []
                            for room in self.gameServer.getRoomList():
                                playerList = []
                                for playerId in room.getPlayersInRoom():
                                    player = self.gameServer.findPlayer(
                                        playerId)
                                    if player:
                                        playerTuple = [
                                            (standard.PARAM_PLAYER_ID,
                                             player.getPlayerId()),
                                            (standard.PARAM_USERNAME,
                                             player.getPlayerNickname())
                                        ]
                                        playerList.append(playerTuple)

                                roomTuple = [
                                    (standard.PARAM_ROOM_ID, room.getRoomId()),
                                    (standard.PARAM_ROOM_NAME,
                                     room.getRoomName()),
                                    (standard.PARAM_ROOM_PLAYERS, playerList)
                                ]
                                roomList.append(roomTuple)

                            obj = dict([(standard.MESSAGE, msgType),
                                        (standard.MESSAGE_SUCCESS, 1),
                                        (standard.PARAM_ROOM_LIST, roomList)])
                            print "send:", obj
                            self.msServer.sendMessage(sock, obj)
                            self.broadcastToAll(obj)

                        elif msgType == standard.MESSAGE_CREATE_ROOM:  # player want to create a new room with the name
                            roomName = msg[standard.MESSAGE_PARAM][
                                standard.PARAM_ROOM_NAME]
                            room = self.gameServer.newRoom(roomName)
                            self.gameServer.addRoom(room)

                            obj = dict([(standard.MESSAGE, msgType),
                                        (standard.MESSAGE_SUCCESS, 1)])
                            print "send", obj
                            self.msServer.sendMessage(sock, obj)

                        elif msgType == standard.MESSAGE_JOIN_ROOM:  # player want to join the defined room
                            roomId = msg[standard.MESSAGE_PARAM][
                                standard.PARAM_ROOM_ID]
                            roomTarget = self.gameServer.findRoom(roomId)

                            # check if the room is full
                            # if not full, add the player to the room
                            if len(roomTarget.getPlayersInRoom()) < 5:
                                roomTarget.addPlayerToRoom(
                                    msg[standard.MESSAGE_PARAM][
                                        standard.PARAM_PLAYER_ID])

                                playerList = []
                                for playerId in roomTarget.getPlayersInRoom():
                                    player = self.gameServer.findPlayer(
                                        playerId)
                                    if player:
                                        playerTuple = [
                                            (standard.PARAM_PLAYER_ID,
                                             player.getPlayerId()),
                                            (standard.PARAM_USERNAME,
                                             player.getPlayerNickname())
                                        ]
                                        playerList.append(playerTuple)

                                obj = dict([(standard.MESSAGE, msgType),
                                            (standard.MESSAGE_SUCCESS, 1),
                                            (standard.PARAM_ROOM_ID,
                                             roomTarget.getRoomId()),
                                            (standard.PARAM_ROOM_NAME,
                                             roomTarget.getRoomName()),
                                            (standard.PARAM_ROOM_PLAYERS,
                                             playerList)])
                            else:
                                obj = dict([(standard.MESSAGE, msgType),
                                            (standard.MESSAGE_SUCCESS, 0)])

                            print "send", obj
                            self.msServer.sendMessage(sock, obj)
                            self.broadcastToRoom(roomId, obj)

                        elif msgType == standard.MESSAGE_LEAVE:  # case if the player lefts the current room he was in
                            roomId = msg[standard.MESSAGE_PARAM][
                                standard.PARAM_ROOM_ID]
                            roomTarget = self.gameServer.getRoomList()[roomId]

                            roomTarget.deletePlayerFromRoom(
                                msg[standard.MESSAGE_PARAM][
                                    standard.PARAM_PLAYER_ID])
                            if len(roomTarget.getPlayersInRoom()) == 0:
                                # function to delete the room
                                gameServer.deleteRoom(roomTarget)
                                print "Room %d deleted! Room is empty" % (
                                    roomId)

                            obj = dict([(standard.MESSAGE, msgType),
                                        (standard.MESSAGE_SUCCESS, 1)])
                            print "send", obj
                            self.msServer.sendMessage(sock, obj)

                            # broadcast the current user
                            playerList = []
                            for playerId in roomTarget.getPlayersInRoom():
                                player = self.gameServer.findPlayer(playerId)
                                if player:
                                    playerTuple = [(standard.PARAM_PLAYER_ID,
                                                    player.getPlayerId()),
                                                   (standard.PARAM_USERNAME,
                                                    player.getPlayerNickname())
                                                   ]
                                    playerList.append(playerTuple)

                            obj = dict([(standard.MESSAGE, msgType),
                                        (standard.MESSAGE_SUCCESS, 1),
                                        (standard.PARAM_ROOM_ID,
                                         roomTarget.getRoomId()),
                                        (standard.PARAM_ROOM_NAME,
                                         roomTarget.getRoomName()),
                                        (standard.PARAM_ROOM_PLAYERS,
                                         playerList)])
                            self.broadcastToRoom(roomId, obj)

                        elif msgType == standard.MESSAGE_JOIN_GAME:
                            #INCOMPLETE
                            roomId = msg[standard.MESSAGE_PARAM][
                                standard.PARAM_ROOM_ID]
                            roomTarget = self.gameServer.getRoomList()[roomId]
                            playerId = msg[standard.MESSAGE_PARAM][
                                standard.PARAM_PLAYER_ID]

                            # if not full, add the player to the game on the room
                            if playerId in roomTarget.getPlayersInRoom():
                                roomTarget.getGame().addPlayerToGame(playerId)
                                obj = dict([(standard.MESSAGE, msgType),
                                            (standard.MESSAGE_SUCCESS, 1)])
                            else:
                                obj = dict([(standard.MESSAGE, msgType),
                                            (standard.MESSAGE_SUCCESS, 0)])

                            print "send", obj
                            self.msServer.sendMessage(sock, obj)

                        elif msgType == standard.MESSAGE_START_GAME:  # start the game command
                            # check the current enlisted game if maximum
                            pass

                        elif msgType == standard.MESSAGE_SET_PAWN:
                            pass

                        elif msgType == standard.MESSAGE_CHAT:
                            pass

                        else:
                            pass

                    except Exception, e:
                        print e
                        if sock in self.CONNECTION_LIST:
                            self.CONNECTION_LIST.remove(sock)
                        print "Client (%s, %s) is offline!" % addr
                        # closing the sockets
                        sock.close()

                        continue

                    except KeyboardInterrupt:
                        exit()
    def test_numeric_contact_list(self):
        """Test if you get only string numbers out of the list of strings"""

        given_list = MessageController.get_numeric_list(
            ['text', '2', '5', 'name'])
        self.assertEqual(given_list, ['2', '5'])
Ejemplo n.º 17
0
class RootController:
    import FileController
    import ShareController
    import MessageController
    import AdminController
    import AccountController
    share = ShareController.ShareController()
    file = FileController.FileController()
    account = AccountController.AccountController()
    admin = AdminController.AdminController()
    message = MessageController.MessageController()

    #DropPrivileges(cherrypy.engine, umask=077, uid='nobody', gid='nogroup').subscribe()

    def __init__(self):
        pass

    @cherrypy.expose
    def local(self, **kwargs):
        raise cherrypy.HTTPRedirect(
            "%s/login?local=%s" %
            (cherrypy.request.app.config['filelocker']['root_url'], str(True)))

    @cherrypy.expose
    def login(self, **kwargs):
        msg, errorMessage, config = (None, None,
                                     cherrypy.request.app.config['filelocker'])
        authType = session.query(ConfigParameter).filter(
            ConfigParameter.name == "auth_type").one().value
        orgConfig = get_config_dict_from_objects(
            session.query(ConfigParameter).filter(
                ConfigParameter.name.like('org_%')).all())
        if kwargs.has_key("msg"):
            msg = kwargs['msg']
        if kwargs.has_key("local") and kwargs['local'] == str(True):
            authType = "local"

        loginPage = config['root_url'] + "/process_login"
        if msg is not None and str(strip_tags(msg)) == "1":
            errorMessage = "Invalid username or password"
        elif msg is not None and str(strip_tags(msg)) == "2":
            errorMessage = "You have been logged out of the application"
        elif msg is not None and str(strip_tags(msg)) == "3":
            errorMessage = "Password cannot be blank"

        if authType == "ldap" or authType == "local":
            currentYear = datetime.date.today().year
            footerText = str(
                Template(file=get_template_file('footer_text.tmpl'),
                         searchList=[locals(), globals()]))
            tpl = Template(file=get_template_file('login.tmpl'),
                           searchList=[locals(), globals()])
            return str(tpl)
        elif authType == "cas":
            raise cherrypy.HTTPRedirect(config['root_url'])
        else:
            cherrypy.log.error(
                "[system] [login] [No authentication variable set in config]")
            raise cherrypy.HTTPError(403, "No authentication mechanism")

    @cherrypy.expose
    @cherrypy.tools.requires_login()
    def logout(self):
        config = cherrypy.request.app.config['filelocker']
        orgConfig = get_config_dict_from_objects(
            session.query(ConfigParameter).filter(
                ConfigParameter.name.like('org_%')).all())
        authType = session.query(ConfigParameter).filter(
            ConfigParameter.name == "auth_type").one().value
        if authType == "cas":
            from lib.CAS import CAS
            casUrl = session.query(ConfigParameter).filter(
                ConfigParameter.name == "cas_url").one().value
            casConnector = CAS(casUrl)
            casLogoutUrl = casConnector.logout_url(
            ) + "?redirectUrl=" + config['root_url'] + "/logout_cas"
            currentYear = datetime.date.today().year
            footerText = str(
                Template(file=get_template_file('footer_text.tmpl'),
                         searchList=[locals(), globals()]))
            tpl = Template(file=get_template_file('cas_logout.tmpl'),
                           searchList=[locals(), globals()])
            cherrypy.session['user'], cherrypy.response.cookie['filelocker'][
                'expires'] = None, 0
            return str(tpl)
        else:
            cherrypy.session['user'], cherrypy.response.cookie['filelocker'][
                'expires'] = None, 0
            raise cherrypy.HTTPRedirect(config['root_url'] + '/login?msg=2')

    @cherrypy.expose
    def logout_cas(self):
        from lib.CAS import CAS
        config = cherrypy.request.app.config['filelocker']
        orgConfig = get_config_dict_from_objects(
            session.query(ConfigParameter).filter(
                ConfigParameter.name.like('org_%')).all())
        currentYear = datetime.date.today().year
        footerText = str(
            Template(file=get_template_file('footer_text.tmpl'),
                     searchList=[locals(), globals()]))
        tpl = Template(file=get_template_file('cas_logout_confirmation.tmpl'),
                       searchList=[locals(), globals()])
        return str(tpl)

    @cherrypy.expose
    def process_login(self, local, username, password, **kwargs):
        rootURL, local = cherrypy.request.app.config['filelocker'][
            'root_url'], False
        if kwargs.has_key("local") and local == str(True):
            local = True
        username = strip_tags(username)

        if password is None or password == "":
            raise cherrypy.HTTPRedirect("%s/login?msg=3&local=%s" %
                                        (rootURL, str(local)))
        else:
            directory = AccountService.ExternalDirectory(local)
            if directory.authenticate(username, password):
                currentUser = AccountService.get_user(
                    username, True
                )  #if they are authenticated and local, this MUST return a user object
                if currentUser is not None:
                    if not currentUser.authorized:
                        raise cherrypy.HTTPError(
                            403,
                            "You do not have permission to access this system")
                    session.add(
                        AuditLog(
                            cherrypy.session.get("user").id, "Login",
                            "User %s logged in successfully from IP %s" %
                            (currentUser.id, cherrypy.request.remote.ip)))
                    session.commit()
                    raise cherrypy.HTTPRedirect(rootURL)
                else:  #This should only happen in the case of a user existing in the external directory, but having never logged in before
                    try:
                        newUser = directory.lookup_user(username)
                        AccountService.install_user(newUser)
                        currentUser = AccountService.get_user(username, True)
                        if currentUser is not None and currentUser.authorized != False:
                            raise cherrypy.HTTPRedirect(rootURL)
                        else:
                            raise cherrypy.HTTPError(
                                403,
                                "You do not have permission to access this system"
                            )
                    except Exception, e:
                        return "Unable to install user: %s" % str(e)
            else:
Ejemplo n.º 18
0
    def test_translate_unique_langs(self):
        """Test translation of unique langs"""

        trans_msgs_dict = MessageController.translate_unique_langs({"2": "es", "4": "fr"}, "hi", "en", False, False)

        self.assertEqual(trans_msgs_dict, {"es": u"{hola}", "fr": u"salut"})