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))
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 __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)
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
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)))
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()
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)
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()
def add_movie(): body = request.get_json() print(type(body)) player = Player(**body).save() id = player.id return {'id': str(id)}, 200
def get_players(): players = Player.objects().to_json() return Response(players, mimetype="application/json", status=200)