Пример #1
0
    def get(self):

        isPlayer = login.isPlayer()
        isAdmin = login.isAdmin()

        if not isAdmin and not isPlayer:
            self.response.set_status(500, message='You must log in')
            self.response.out.write('You must log in')
            return

        logging.info(self.request)

        if self.request.get('currentUser'):
            user = users.get_current_user()
            player = Player.all()
            player = player.filter('email =', user.email()).get()
            if player:
                self.response.out.write(playerToJSON(player, isAdmin))
            else:
                self.response.set_status(500, message='You\'re not a player')
                self.response.out.write('You\'re not a player')
                return

        else:
            players = Player.all()
            self.response.out.write(playersToJSON(players, isAdmin))
Пример #2
0
 def role(self):
     if login.isPlayer():
         if login.isAdmin():
             return 'admin'
         else:
             return 'player'
     elif login.isViewer(self.request.get('key')):
         return 'viewer'
Пример #3
0
 def post(self):
     if login.isAdmin():
         id = long(self.request.get('id'))
         player = Player.get_by_id(id)
         if player.isStarred:
             player.isStarred = False
         else:
             player.isStarred = True
         player.put()
Пример #4
0
 def post(self):
     if login.isAdmin():
         name = self.request.get('name')
         if name:
             newPlayer = Player(name=name, status='waiting', isStarred=False)
             newPlayer.put()
             self.response.out.write(self.request.get('name'))
         else:
             self.response.out.write('emptyName')
Пример #5
0
 def get(self):
     if login.isAdmin():
         self.response.out.write('admin')
     elif login.isPlayer():
         self.response.out.write('player')
     elif login.isViewer(self.request.get('key')):
         self.response.out.write('viewer')
     else:
         self.response.out.write('none')
Пример #6
0
 def post(self):
     if login.isAdmin():
         isActive = self.request.get('active') == 'True'
         activeProperty = Configuration.all().filter('name', 'checkin').get()
         if (activeProperty):
             activeProperty.value = isActive
         else:
             activeProperty = Configuration(name='checkin', value=isActive)
         activeProperty.put()
Пример #7
0
 def post(self):
     if login.isAdmin():
         id = long(self.request.get('id'))
         attribute = self.request.get('attribute')
         value = self.request.get('value')
         player = Player.get_by_id(id)
         if attribute == 'name':
             player.name = value
         elif attribute == 'email':
             player.email = value
         player.put()
Пример #8
0
    def post(self):

        if login.isAdmin():

            for player in Player.all().filter('isStarred', False):
                player.delete()
            for player in Player.all().filter('isStarred', True):
                player.status = 'waiting'
                player.put()

            #send message to clients
            result = playersToJSON(Player.all(), True)
            self.response.out.write(result)
            sendMessage(result)
Пример #9
0
    def get(self):

        #elif user.nickname() != 'zilianimarco':
            #self.redirect(user.nickname());
        #user = users.get_current_user()

        isAdmin = False
        isPlayer = False
        isViewer = False
        if login.isPlayer():
            isAdmin = True if login.isAdmin() else False
            isPlayer = True if not isAdmin else False
        elif login.isViewer(self.request.get('key')):
            isViewer = True

        if isAdmin or isPlayer or isViewer:
            self.redirect('app/index.html#/home')

        else:
            #providers = {
                #'Google'   : 'www.google.com/accounts/o8/id',
                #'Yahoo'    : 'yahoo.com',
                #'MySpace'  : 'myspace.com',
                ##'AOL'      : 'aol.com',
                #'MyOpenID' : 'myopenid.com'
                ## add more here
            #}
            #urls = []
            #for name, uri in providers.items():
                #urls.append({
                    #'name': name,
                    #'url': users.create_login_url(federated_identity=uri)
                    #})
            template_values = {
                #'user': user,
                #'urls': urls,
                #'sendStatus': self.request.get('send'),
                #'sendLink': 'authMail',
                'name': 'Google',
                'url': users.create_login_url()
            }
            template = jinja_environment.get_template('login.html')
            self.response.out.write(template.render(template_values))
Пример #10
0
    def put(self, id):
        isActive = Configuration.all().filter('name', 'checkin').get()
        isAdmin = login.isAdmin()
        isPlayer = login.isPlayer() and not isAdmin
        user = users.get_current_user()
        if not isAdmin and not isPlayer:
            self.response.out.write('not_logged_in')
        else:
            request = json.loads(self.request.body)
            status = request['status']
            n_presents = Player.all().filter('status =', 'present').count()

            if status != 'present' or n_presents < 10:
                player = None
                if isAdmin:
                    id = long(id)
                    player = Player.get_by_id(id)
                    logging.info('Admin set status to \'' + status + '\' for ' +
                                 str(player.email))
                elif isPlayer and (isActive is None or isActive.value):
                    player = Player.all()
                    player = player.filter('email =', user.email()).get()
                    logging.info(str(player.email) + ' set status to \'' +
                                 status + '\'')

                if player:
                    player.status = status
                    player.put()
                    #self.response.out.write('ok')
                else:
                    logging.info(user.nickname() + ' (' + user.email() +
                                 ') tried to set status to \'' +
                                 status + '\' but it was inactive')
                    self.response.set_status(401, 'La lista &egrave; bloccata o \
                            non sei pi&ugrave; loggato')

            else:
                logging.info(user.nickname() + ' (' + user.email() +
                             ') tried to set status to \'' + status +
                             '\' but it was full')
                self.response.set_status(500, 'La lista &egrave; piena')
Пример #11
0
    def delete(self):
        if login.isAdmin():

            #logging.info(self.request.body)
            #try:
                #player_data = json.loads(self.request.body)
            #except ValueError:
            player_data = self.request
            logging.info(player_data)

            if player_data and player_data.get('id'):
                id = int(player_data.get('id'))
                db_player = Player.get_by_id(id)
                if db_player:
                    db_player.delete()
                    result = playerToJSON(db_player, True)
                    self.response.out.write(result)
                    #send message to clients
                    sendMessage(result)
                else:
                    self.response.out.write('player not found')
Пример #12
0
    def post(self):
        #email = users.get_current_user().email()
        isActive = Configuration.all().filter('name', 'checkin').get()
        isAdmin = login.isAdmin()
        isPlayer = login.isPlayer() and not isAdmin
        user = users.get_current_user()
        if not isAdmin and not isPlayer:
            self.response.out.write('not_logged_in')
        else:
            n_presents = Player.all().filter('status =', 'present').count()
            status = self.request.get('status')
            if status != 'present' or n_presents < 10:
                player = None
                id = self.request.get('id')
                if isAdmin and id:
                    id = long(id)
                    player = Player.get_by_id(id)
                    logging.info('Admin set status to \'' + 
                            status + '\' for ' + str(player.email))
                elif isActive == None or isActive.value:
                    player = Player.all()
                    player = player.filter('email =', user.email()).get()
                    logging.info(str(player.email) + ' set status to \'' + 
                            status + '\'')

                if player:
                    player.status = status
                    player.put()
                    self.response.out.write('ok')
                else:
                    logging.info(user.nickname() + ' (' + user.email() + 
                            ') tried to set status to \'' + status + 
                            '\' but it was inactive')
                    self.response.out.write('inactive')

            else:
                logging.info(user.nickname() + ' (' + user.email() + 
                        ') tried to set status to \'' + status + 
                        '\' but it was full')
                self.response.out.write('full')
Пример #13
0
def playersToJsonApp(request):

    isPlayer = login.isPlayer()
    isAdmin = login.isAdmin()
    user = users.get_current_user()
    email = str(user.email()) if user else ''

    #uri = 'www.google.com/accounts/o8/id'
    url = request.referer or '/'
    logging.info(url)
    loginUrl = users.create_login_url(url)
    logoutUrl = users.create_logout_url(url)

    result = []
    result.append('{"isAdmin": "' + str(isAdmin) + '", ')
    result.append('"user": "******", ')
    result.append('"isPlayer": "' + str(isPlayer) + '", ')
    result.append('"loginUrl": "' + loginUrl + '", ')
    result.append('"logoutUrl": "' + logoutUrl + '"')

    if isAdmin or isPlayer:
        players = Player.all()
        result.append(', "players": ' + playersToJSON(players, isAdmin) + '')
        currentId = None
        current_user = users.get_current_user()
        for player in players:
            id = str(player.key().id())
            if current_user and current_user.email() == player.email:
                currentId = id

        if currentId:
            result.append(', "id": "' + currentId + '"')

    result.append('}')

    return ''.join(result)
Пример #14
0
 def get(self):
     if login.isAdmin():
         self.response.out.write('loggedIn')
     else:
         self.response.out.write(
                 users.create_login_url(self.request.uri))
Пример #15
0
    def post(self):

        isAdmin = login.isAdmin()
        isPlayer = login.isPlayer()
        user = users.get_current_user()

        if not isAdmin and not isPlayer:
            self.response.set_status(500, message='You must log in')
            self.response.out.write('You must log in')
            return

        # get player data
        logging.info(self.request.body)
        try:
            player_data = json.loads(self.request.body)
        except ValueError:
            player_data = self.request
        logging.info(player_data)

        if player_data and player_data.get('id'):
            id = int(player_data.get('id'))
            db_player = Player.get_by_id(id)
        elif player_data.get('name'):
            db_player = Player(name=player_data['name'])
        else:
            self.response.set_status(500, message='You have not specified an id or a name')
            self.response.out.write('You have not specified an id or a name')
            return

        if not isAdmin and db_player.email != user.email():
            logging.info(db_player.email)
            logging.info(user.email())
            self.response.set_status(500, message='You are not authorized')
            self.response.out.write('You are not authorized')
            return

        # edit player in db
        if db_player:

            status = player_data.get('status') or 'waiting'
            # check if status is valid
            n_presents = Player.all().filter('status =', 'present').count()
            if db_player.status != 'present' and status == 'present' and n_presents >= 10:
                logging.info(user.nickname() + ' (' + user.email() +
                             ') tried to set status to \'' + status +
                             '\' but it was full')
                self.response.set_status(500, message='La lista e\' piena')
                self.response.out.write('La lista e\' piena')
                return

            db_player.status = status

            if isAdmin:
                isStarred = player_data.get('isStarred') == 'True' or False
                db_player.isStarred = isStarred
                db_player.name = player_data.get('name')
                if player_data.get('email'):
                    db_player.email = player_data.get('email')

            db_player.put()

            #send message to clients
            result = playerToJSON(db_player, isAdmin)
            sendMessage(result)
            self.response.out.write(result)

        else:
            self.response.out.write('emptyName')
Пример #16
0
 def get(self):
     if login.isViewer(self.request.get('key')):
         players = Player.all()
         self.response.out.write(playersToJson(players, login.isAdmin()))
Пример #17
0
 def get(self):
     if login.isViewer(self.request.get('key')):
         players = Player.all()
         self.response.out.write(playersToJsonApp(players, login.isAdmin()))
     else:
         self.response.out.write('not_logged_in')
Пример #18
0
 def post(self):
     if login.isAdmin():
         id = long(self.request.get('id'))
         player = Player.get_by_id(id)
         player.delete()
         self.response.out.write(id)
Пример #19
0
 def get(self):
     if login.isAdmin():
         isActive = Configuration.all().filter('name', 'checkin').get()
         self.response.out.write(isActive == None or isActive.value)
Пример #20
0
 def get(self):
     if login.isAdmin():
         playerList.reset(self.response)
Пример #21
0
def main():
    badansw = 0
    normalansw = 0
    niceansw = 0
    print("start")

    tok = 'PUT UR VK TOKEN HERE'
    vk_session = vk_api.VkApi(token=tok)

    longpoll = VkLongPoll(vk_session)
    vk = vk_session.get_api()

    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
            text = str(event.text)
            time = str(datetime.datetime.now())
            time = time[:19]

            if isAdmin(str(event.user_id)):
                try:
                    print(str(event.user_id) + "  " + text)
                    res = str(get_name(
                        event.user_id)) + ", " + adminresponce(text)
                    vk.messages.send(user_id=event.user_id,
                                     message=res,
                                     random_id=randint(0, 9999),
                                     keyboard=keyb)
                except Exception as e:
                    requests.post("http://danr0.pythonanywhere.com/api/err/",
                                  data=str(event.user_id) + "$" + str(e) +
                                  "$" + time)
                    print(str(e))
            elif isLogin(str(event.user_id)):
                try:
                    print(str(event.user_id) + "  " + text)
                    if text == "Nice answer!":
                        niceansw += 1
                        res = "Уже " + str(niceansw) + " nice answers"
                    elif text == "Bad answer!":
                        badansw += 1
                        res = "Уже " + str(badansw) + " bad answers"
                    elif text == "Normal answer.":
                        normalansw += 1
                        res = "Уже " + str(normalansw) + " normal answers"
                    else:
                        text = text.replace("\n", '')
                        res = get_name(event.user_id) + ", " + response(
                            text
                        )  #заглушка со стандартнами ответами, потом сюда прикрутим нормальные ответы
                    vk.messages.send(user_id=event.user_id,
                                     message=res,
                                     random_id=randint(0, 9999),
                                     keyboard=keyb)
                except Exception as e:
                    #логирование ошибок
                    requests.post("http://danr0.pythonanywhere.com/api/err/",
                                  data=str(event.user_id) + "$" + str(e) +
                                  "$" + time)
                    print(str(e))
            else:
                try:
                    res = login(str(event.user_id), text)
                    vk.messages.send(user_id=event.user_id,
                                     message=res,
                                     random_id=randint(0, 9999),
                                     keyboard=keyb)
                    print(str(event.user_id) + "  " + text)
                except Exception as e:
                    #логирование ошибок
                    requests.post("http://danr0.pythonanywhere.com/api/err/",
                                  data=str(event.user_id) + "$" + str(e) +
                                  "$" + time)
                    print(str(e))
Пример #22
0
    def get(self):

        # elif user.nickname() != 'zilianimarco':
        # self.redirect(user.nickname());
        user = users.get_current_user()

        isAdmin = False
        isPlayer = False
        isViewer = False
        if login.isPlayer():
            isAdmin = True if login.isAdmin() else False
            isPlayer = True if not isAdmin else False
        elif login.isViewer(self.request.get("key")):
            isViewer = True

        if isAdmin or isPlayer or isViewer:

            ua = self.request.headers.get("User-Agent")
            forceDesktop = self.request.get("v") == "desktop"
            isMobile = self.isSmart(ua) and not forceDesktop

            if isMobile:

                if isAdmin or isPlayer:
                    logging.info(user.nickname() + " (" + user.email() + ") visited mobile version")
                elif isViewer:
                    logging.info("Anonymous visited mobile version")

                self.redirect("m/index.html")

            else:
                if (self.request.get("dev") != "plain" and not self.isBlackBerry(ua)) or self.request.get(
                    "dev"
                ) == "full":
                    if login.isPlayer():
                        logging.info(user.nickname() + " (" + user.email() + ") visited desktop version")
                    elif login.isViewer(self.request.get("key")):
                        logging.info("Anonymous visited desktop version")

                    self.response.out.write(Desktop().render())

                else:

                    if user:
                        current = Player.all().filter("email", user.email()).get()
                        logging.info(user.nickname() + " (" + user.email() + ") visited desktop simple version")
                    else:
                        current = None
                        logging.info("Anonymous visited desktop simple version")

                    template_values = {
                        "status": current.status if current else None,
                        "id": current.key().id() if current else None,
                        "waiting": Player.all().filter("status =", "waiting"),
                        "present": Player.all().filter("status =", "present"),
                        "absent": Player.all().filter("status =", "absent"),
                    }
                    template = jinja_environment.get_template("desktop/desktop_plain.html")
                    self.response.out.write(template.render(template_values))

        else:
            providers = {
                "Google": "www.google.com/accounts/o8/id",
                "Yahoo": "yahoo.com",
                "MySpace": "myspace.com",
                #'AOL'      : 'aol.com',
                "MyOpenID": "myopenid.com"
                # add more here
            }
            # urls = []
            # for name, uri in providers.items():
            # urls.append({
            #'name': name,
            #'url': users.create_login_url(federated_identity=uri)
            # })
            template_values = {
                #'user': user,
                #'urls': urls,
                #'sendStatus': self.request.get('send'),
                #'sendLink': 'authMail',
                "name": "Google",
                "url": users.create_login_url(),
            }
            template = jinja_environment.get_template("login.html")
            self.response.out.write(template.render(template_values))