コード例 #1
0
def signUp(request):
    try:
        pEmail = request.POST['email']
        pNick = request.POST['nickname']
        pPassw = request.POST['password']
        pRepassw = request.POST['repeat-password']
        logger.error('-' + pRepassw + '-')
        logger.error('-' + pPassw + '-')
        pCountry = request.POST['country']
        if pPassw == pRepassw:
            logger.error('senha confere')
            p = Player(email=pEmail,
                       nickname=pNick,
                       password=pPassw,
                       victories=0,
                       defeats=0,
                       country=pCountry)
            p.save()
        else:
            logger.error('senha errada')
    except:
        logger.error('Theres is no nickname')
    template = loader.get_template('database/signUp.html')
    context = {}
    return HttpResponse(template.render(context, request))
コード例 #2
0
ファイル: players.py プロジェクト: wachjose88/stat466-desktop
 def __handle_save(self):
     """
     Saves the current Player. 
     """
     n = unicode(self.name.text())
     fn = unicode(self.fullname.text())
     if len(n) <= 0 or len(fn) <= 0:
         QMessageBox.warning(self, self.tr('Fill all'),
                           self.tr("Please fill in all fields."))
         return
     
     if self.player_to is None:
         self.player_to = Player(name = n, fullname = fn)
     else:
         self.player_to.name = n
         self.player_to.fullname = fn
     
     self.player_to.save()
     self.name.setText('')
     self.fullname.setText('')
     logging.info('player saved in db - ' + self.player_to.info())
     QMessageBox.information(self, self.tr('Player saved'),
                           self.tr("The player was saved successfully."))
     self.player_to = None
     self.parent.go_home()
コード例 #3
0
ファイル: players.py プロジェクト: wachjose88/stat466-desktop
 def __fill_list(self):
     """
     Fills the QListWidget of the players with all players from db.
     """
     self.list_of_players.clear()
     self.all_players = Player.get()
     for p in self.all_players:
         self.list_of_players.addItem(p.name + ' ' + p.fullname)
コード例 #4
0
ファイル: achievements.py プロジェクト: IU7OG-Team/iu7games
def update_tracker(player: models.Player,
                   tracker: str,
                   value: int,
                   increase=False):
    """
        Обновление конкретного трекера у игрока
    """
    if increase and tracker in player.trackers:
        player.trackers[tracker] += value
    else:
        player.trackers[tracker] = value
コード例 #5
0
ファイル: pastats.py プロジェクト: pa-pyrus/cronCommander
def update():
    logger = getLogger("cronjob.pastats")
    logger.info("Updating PAStats Winners database...")

    # calculate duration, at most seconds since start
    with shelfopen(environ["PASTATS_SHELF"], "c") as shelf:
        last = shelf.get("last", 0)
    reset = int(environ["PASTATS_RESET"])
    start = max(last, reset)

    reference = datetime(1970, 1, 1) + timedelta(seconds=start)
    dur_delta = datetime.utcnow() - reference
    duration = int(dur_delta.total_seconds())

    # create url we need for the query
    params = {"start": start, "duration": duration}
    winners_url = "http://pastats.com/report/winners"
    url = "{0}?{1}".format(winners_url, urlencode(params))
    logger.debug("PAStats URL: %s", url)

    # update start for next query
    start += duration
    # set it back again three hours so we can be sure to get all matches
    start -= (60 * 60 * 3)
    # save it for the next run
    with shelfopen(environ["PASTATS_SHELF"], "c") as shelf:
        shelf["last"] = start

    request = Request(url, headers={"Accept-Encoding": "gzip"})
    with urlopen(request) as response:
        data = response.read()
        if response.info().get("Content-Encoding") == "gzip":
            data = decompress(data)
            data = str(data, "utf-8")

    logger.info("Updating game database...")
    games = loads(data)
    session = Session()
    known_games = list(chain(*session.query(Game.gid).all()))

    for game in games:
        game_id = game["gameId"]
        # check only games we haven't seen yet
        if game_id in known_games:
            continue

        # for now only add games with exactly 2 teams and 1 player per team
        teams = game["teams"]
        if (len(teams) != 2 or len(teams[0]["players"]) != 1
                or len(teams[1]["players"]) != 1):
            continue

        # start time is stored in ms
        game_start = game["startTime"] // 1000
        game_time = datetime(1970, 1, 1) + timedelta(seconds=game_start)

        p1 = teams[0]["players"][0]
        p2 = teams[1]["players"][0]

        p1_id, p1_name = p1["playerId"], p1["playerName"]
        p2_id, p2_name = p2["playerId"], p2["playerName"]

        del p1, p2

        # ignore matches vs anonymous players for now
        if p1_id == -1 or p2_id == -1:
            continue

        try:
            p1 = session.query(Player).filter(Player.pid == p1_id).one()
        except NoResultFound:
            p1 = Player(p1_id, p1_name, trueskill.Rating(), game_time)
            session.add(p1)
            logger.debug("Created new player: {0}".format(p1))

        if p1.name != p1_name:
            p1.name = p1_name
            session.add(p1)

        if p1.updated < game_time:
            p1.updated = game_time
            session.add(p1)

        try:
            p2 = session.query(Player).filter(Player.pid == p2_id).one()
        except NoResultFound:
            p2 = Player(p2_id, p2_name, trueskill.Rating(), game_time)
            session.add(p2)
            logger.debug("Created new player: {0}".format(p2))

        if p2.name != p2_name:
            p2.name = p2_name
            session.add(p2)

        if p2.updated < game_time:
            p2.updated = game_time
            session.add(p2)

        # check for winner or draw and update ratings
        if game["winner"] == -1:
            winner = None
            p1.skill, p2.skill = trueskill.rate_1vs1(p1.skill,
                                                     p2.skill,
                                                     drawn=True)
        elif teams[0]["teamId"] == game["winner"]:
            winner = p1
            p1.skill, p2.skill = trueskill.rate_1vs1(p1.skill, p2.skill)
        else:
            winner = p2
            p2.skill, p1.skill = trueskill.rate_1vs1(p2.skill, p1.skill)

        # add match
        session.add(Game(game_id, winner, p1, p2))

        # for the unlikely case we receive the same match twice:
        known_games.append(game_id)

    session.commit()
    session.close()

    logger.info("Received and parsed all new data, "
                "seen {0} matches".format(len(known_games)))
コード例 #6
0
ファイル: games.py プロジェクト: wachjose88/stat466-desktop
 def __init__(self, parent = None):
     """
     Constructor: inits all elements of the widget. It offers an 
     analysis of games by specifying the players.
     It creates the actions and connects them to their methods.
     
     Keyword arguments:
     parent -- parent widget
     """
     QWidget.__init__(self, parent)
     self.parent = parent
     self.game = None
     self.all_players = Player.get()
     if len(self.all_players) < 4:
         error = QLabel(self.tr('Error!\nThere are not enough Players.'), self)
         error.move(30, 30)
         return
         
     greet = QLabel(self.tr('Analysis'), self)
     greet.setStyleSheet("""
         QLabel { 
             font-size: 12pt;
         }""")
      
     ok = QPushButton(self.tr('Print Analysis'), self)
     self.connect(ok, SIGNAL('clicked()'), 
         self.__handle_print)
      
     lbl_num = QLabel(self.tr('Games played:'), self)
     self.num = QLabel(' ', self)
     hbox_num = QHBoxLayout()
     hbox_num.addWidget(lbl_num)
     hbox_num.addWidget(self.num)
     
     mind = Game.getMinDate()
     d_from = QDate(1900, 1, 1)
     if mind is not None and len(mind) > 9:
         d_from = QDate.fromString(mind[0:10], 'yyyy-MM-dd')
     lbl_start_date = QLabel(self.tr('From:'), self)
     self.start_date = QDateEdit(d_from, self)
     self.start_date.setDisplayFormat('dd.MM.yyyy')
     self.start_date.setMinimumDate(QDate(1900, 1, 1))
     self.start_date.setMaximumDate(QDate(3000, 1, 1))
     lbl_end_date = QLabel(self.tr('To:'), self)
     self.end_date = QDateEdit(QDate.currentDate (), self)
     self.end_date.setDisplayFormat('dd.MM.yyyy')
     self.end_date.setMinimumDate(QDate(1900, 1, 1))
     self.end_date.setMaximumDate(QDate(3000, 1, 1))
     hbox_start_date = QHBoxLayout()
     hbox_start_date.addStretch(1)
     hbox_start_date.addWidget(lbl_start_date)
     hbox_start_date.addWidget(self.start_date)
     hbox_start_date.addSpacing(11)
     hbox_start_date.addWidget(lbl_end_date)
     hbox_start_date.addWidget(self.end_date)
     hbox_start_date.addStretch(1)
     
     vbox_game = QVBoxLayout()
     vbox_game.addWidget(greet)
     vbox_game.addStretch(2)
     vbox_game.addLayout(hbox_start_date)
     vbox_game.addStretch(2)
     vbox_game.addLayout(hbox_num)
     vbox_game.addStretch(1)
     
     lbl_t1 = QLabel(self.tr('Team 1:'), self)
     vbox_game.addWidget(lbl_t1)
     self.combo_t1_p1 = self.__fill_combo()
     vbox_game.addWidget(self.combo_t1_p1)
     self.combo_t1_p2 = self.__fill_combo(1)
     vbox_game.addWidget(self.combo_t1_p2)
     self.points_t1 = QLabel(' ', self)
     hbox_pt1 = QHBoxLayout()
     lbl_p1 = QLabel(self.tr('Points:'), self)
     hbox_pt1.addWidget(lbl_p1)
     hbox_pt1.addWidget(self.points_t1)
     vbox_game.addLayout(hbox_pt1)
     self.diff_t1 = QLabel(' ', self)
     hbox_diff_t1 = QHBoxLayout()
     lbl_diff_t1 = QLabel(self.tr('Difference:'), self)
     hbox_diff_t1.addWidget(lbl_diff_t1)
     hbox_diff_t1.addWidget(self.diff_t1)
     vbox_game.addLayout(hbox_diff_t1)
     self.avg_t1 = QLabel(' ', self)
     lbl_a1 = QLabel(self.tr('AVG Points per Game:'), self)
     hbox_avg1 = QHBoxLayout()
     hbox_avg1.addWidget(lbl_a1)
     hbox_avg1.addWidget(self.avg_t1)
     vbox_game.addLayout(hbox_avg1)
     vbox_game.addStretch(1)
     lbl_t2 = QLabel(self.tr('Team 2:'), self)
     vbox_game.addWidget(lbl_t2)
     self.combo_t2_p1 = self.__fill_combo(2)
     vbox_game.addWidget(self.combo_t2_p1)
     self.combo_t2_p2 = self.__fill_combo(3)
     vbox_game.addWidget(self.combo_t2_p2)
     self.points_t2 = QLabel(' ', self)
     lbl_p2 = QLabel(self.tr('Points:'), self)
     hbox_pt2 = QHBoxLayout()
     hbox_pt2.addWidget(lbl_p2)
     hbox_pt2.addWidget(self.points_t2)
     vbox_game.addLayout(hbox_pt2)
     self.diff_t2 = QLabel(' ', self)
     hbox_diff_t2 = QHBoxLayout()
     lbl_diff_t2 = QLabel(self.tr('Difference:'), self)
     hbox_diff_t2.addWidget(lbl_diff_t2)
     hbox_diff_t2.addWidget(self.diff_t2)
     vbox_game.addLayout(hbox_diff_t2)
     self.avg_t2 = QLabel(' ', self)
     lbl_a2 = QLabel(self.tr('AVG Points per Game:'), self)
     hbox_avg2 = QHBoxLayout()
     hbox_avg2.addWidget(lbl_a2)
     hbox_avg2.addWidget(self.avg_t2)
     vbox_game.addLayout(hbox_avg2)
     vbox_game.addStretch(2)
     
     vbox_game.addWidget(ok)
     
     self.setLayout(vbox_game)
     
     self.preview = QPrintPreviewDialog()
     self.connect(self.preview,
         SIGNAL("paintRequested (QPrinter *)"),self.__print)
     self.connect(self.combo_t1_p1,
         SIGNAL("currentIndexChanged (int)"),self.__handle_ok)
     self.connect(self.combo_t1_p2,
         SIGNAL("currentIndexChanged (int)"),self.__handle_ok)
     self.connect(self.combo_t2_p1,
         SIGNAL("currentIndexChanged (int)"),self.__handle_ok)
     self.connect(self.combo_t2_p2,
         SIGNAL("currentIndexChanged (int)"),self.__handle_ok)
     self.connect(self.start_date,
         SIGNAL("dateChanged (const QDate&)"),self.__handle_ok)
     self.connect(self.end_date,
         SIGNAL("dateChanged (const QDate&)"),self.__handle_ok)
     self.__handle_ok()
コード例 #7
0
ファイル: games.py プロジェクト: wachjose88/stat466-desktop
 def __init__(self, parent = None):
     """
     Constructor: inits all elements of the widget. It offers a 
     calendar, combo- and input boxes to create a game.
     It creates the actions and connects them to their methods.
     
     Keyword arguments:
     parent -- parent widget
     """
     QWidget.__init__(self, parent)
     self.parent = parent
     self.game = None
     self.all_players = Player.get()
     if len(self.all_players) < 4:
         error = QLabel(self.tr('Error!\nThere are not enough Players.'), self)
         error.move(30, 30)
         return
     
     greet = QLabel(self.tr('Create a new Game'), self)
     greet.setStyleSheet("""
         QLabel { 
             font-size: 12pt;
         }""")
     at_lbl = QLabel(self.tr('Played at:'), self)
     
     self.calendar = QCalendarWidget()
     self.calendar.setMinimumDate(QDate(1900, 1, 1))
     self.calendar.setMaximumDate(QDate(3000, 1, 1))
     self.calendar.setGridVisible(True)
     self.calendar.setFirstDayOfWeek(Qt.Monday)
     
     save = QPushButton(self.tr('Save Game'), self)
     self.connect(save, SIGNAL('clicked()'), 
         self.__handle_save)
         
     chancel = QPushButton(self.tr('Chancel'), self)
     self.connect(chancel, SIGNAL('clicked()'), 
         self.__handle_chancel) 
      
     lbl_time = QLabel(self.tr('Time:'), self)
     self.time = QTimeEdit(QTime.currentTime (), self)
     hbox_time = QHBoxLayout()
     hbox_time.addWidget(lbl_time)
     hbox_time.addWidget(self.time)
     
     lbl_game = QLabel(self.tr('Game:'), self)
     vbox_game = QVBoxLayout()
     vbox_game.addWidget(lbl_game)
     vbox_game.addStretch(1)
     
     
     lbl_t1 = QLabel(self.tr('Team 1:'), self)
     vbox_game.addWidget(lbl_t1)
     self.combo_t1_p1 = self.__fill_combo()
     vbox_game.addWidget(self.combo_t1_p1)
     self.combo_t1_p2 = self.__fill_combo(1)
     vbox_game.addWidget(self.combo_t1_p2)
     self.points_t1 = QLineEdit()
     hbox_pt1 = QHBoxLayout()
     lbl_p1 = QLabel(self.tr('Points:'), self)
     hbox_pt1.addWidget(lbl_p1)
     hbox_pt1.addWidget(self.points_t1)
     vbox_game.addLayout(hbox_pt1)
     vbox_game.addStretch(1)
     lbl_t2 = QLabel(self.tr('Team 2:'), self)
     vbox_game.addWidget(lbl_t2)
     self.combo_t2_p1 = self.__fill_combo(2)
     vbox_game.addWidget(self.combo_t2_p1)
     self.combo_t2_p2 = self.__fill_combo(3)
     vbox_game.addWidget(self.combo_t2_p2)
     self.points_t2 = QLineEdit()
     lbl_p2 = QLabel(self.tr('Points:'), self)
     hbox_pt2 = QHBoxLayout()
     hbox_pt2.addWidget(lbl_p2)
     hbox_pt2.addWidget(self.points_t2)
     vbox_game.addLayout(hbox_pt2)
     vbox_game.addStretch(2)
     
     hbox_btns = QHBoxLayout()
     hbox_btns.addStretch(2)
     hbox_btns.addWidget(save)
     hbox_btns.addWidget(chancel)
     vbox_at = QVBoxLayout()
     vbox_at.addWidget(at_lbl)
     vbox_at.addWidget(self.calendar)
     vbox_at.addLayout(hbox_time)
     hbox_all = QHBoxLayout()
     hbox_all.addLayout(vbox_at)
     hbox_all.addLayout(vbox_game)
     vbox = QVBoxLayout()
     vbox.addWidget(greet)
     vbox.addLayout(hbox_all)
     vbox.addLayout(hbox_btns)
     
     self.setLayout(vbox)
コード例 #8
0
ファイル: players.py プロジェクト: wachjose88/stat466-desktop
class EditPlayer(QWidget):
    """
    This class offers the possibilty to create and edit players. 
    """
    
    def __init__(self, player = None, parent = None):
        """
        Constructor: inits all elements of the widget. It offers input
        textboxes for the name and the fullname of a player.
        It creates the actions and connects them to their methods.
        
        Keyword arguments:
        player -- a database.models.Player to edit, if None a new one 
                  is created
        parent -- parent widget
        """
        
        QWidget.__init__(self, parent)
        self.parent = parent
        self.player_to = player
        
        gtext = self.tr('Create a new Player')
        if player is not None:
            gtext = self.tr('Edit a Player')
        greet = QLabel(gtext, self)
        greet.setStyleSheet("""
            QLabel { 
                font-size: 12pt;
            }""")
        
        save = QPushButton(self.tr('Save Player'), self)
        self.connect(save, QtCore.SIGNAL('clicked()'), 
            self.__handle_save)
            
        chancel = QPushButton(self.tr('Chancel'), self)
        self.connect(chancel, QtCore.SIGNAL('clicked()'), 
            self.__handle_chancel) 
        
        lbl_name = QLabel(self.tr('Name:'), self)
        self.name = QLineEdit()
        lbl_fullname = QLabel(self.tr('Fullame:'), self)
        self.fullname = QLineEdit()
        
        if player is not None:
            self.name.setText(player.name)
            self.fullname.setText(player.fullname)
        
        hbox_name = QHBoxLayout()
        hbox_name.addWidget(lbl_name)
        hbox_name.addWidget(self.name)
        
        hbox_fullname = QHBoxLayout()
        hbox_fullname.addWidget(lbl_fullname)
        hbox_fullname.addWidget(self.fullname)
        
        hbox_btns = QHBoxLayout()
        hbox_btns.addStretch(2)
        hbox_btns.addWidget(save)
        hbox_btns.addWidget(chancel)

        vbox = QVBoxLayout()
        vbox.addStretch(1)
        vbox.addWidget(greet)
        vbox.addStretch(1)
        vbox.addLayout(hbox_name)
        vbox.addStretch(1)
        vbox.addLayout(hbox_fullname)
        vbox.addStretch(1)
        vbox.addLayout(hbox_btns)
        vbox.addStretch(3)
        
        self.setLayout(vbox)
        
        
        
        
    def __handle_save(self):
        """
        Saves the current Player. 
        """
        n = unicode(self.name.text())
        fn = unicode(self.fullname.text())
        if len(n) <= 0 or len(fn) <= 0:
            QMessageBox.warning(self, self.tr('Fill all'),
                              self.tr("Please fill in all fields."))
            return
        
        if self.player_to is None:
            self.player_to = Player(name = n, fullname = fn)
        else:
            self.player_to.name = n
            self.player_to.fullname = fn
        
        self.player_to.save()
        self.name.setText('')
        self.fullname.setText('')
        logging.info('player saved in db - ' + self.player_to.info())
        QMessageBox.information(self, self.tr('Player saved'),
                              self.tr("The player was saved successfully."))
        self.player_to = None
        self.parent.go_home()
    

    def __handle_chancel(self):
        """
        Asks if the current Player realy should not be saved and 
        leaves the EditPlayer dialog.
        """
        reply = QMessageBox.question(self, self.tr('Chancel?'),
            self.tr("Are you sure you want to chancel and do not save the player?"), 
            QMessageBox.Yes, QMessageBox.No)

        if reply == QMessageBox.Yes:
            self.name.setText('')
            self.fullname.setText('')
            self.player_to = None
            self.parent.go_home()
コード例 #9
0
def add_movie():
    body = request.get_json()
    print(type(body))
    player = Player(**body).save()
    id = player.id
    return {'id': str(id)}, 200
コード例 #10
0
def get_players():
    players = Player.objects().to_json()
    return Response(players, mimetype="application/json", status=200)