Пример #1
0
def create_players():
    """
    Creates all players.
    :return: List of created players
    """
    logger.info('Creating players...')

    player_objects = []

    for team in Team.objects.all():
        players = fetch_players(team.id)
        if players:
            for player in players:
                player_objects.append(
                    Player(
                        team=team,
                        name=player['name'],
                        position=dict(Player.POSITION)[player['position']],
                        jersey_number=player['jerseyNumber'] or None,
                        date_of_birth=player['dateOfBirth'] or None,
                        nationality=dict(Player.NATIONALITY)[player['nationality']],
                        contract_until=player['contractUntil'] or None,
                        market_value=re.sub('[^0-9]', '', player['marketValue']) if player['marketValue'] else None,
                        image=get_wikipedia_image(player['name']),
                    )
                )

    created_players = Player.objects.bulk_create(player_objects)
    logger.info('Created ' + str(len(created_players)) + ' players')
    return created_players
Пример #2
0
def player_scorecard(data):

    try:
        if data['espn_object_id'] != None:
            data['espn_object_id'] = int(data['espn_object_id'])
        else:
            pass
    except:
        data['espn_object_id'] = None

    if data['espn_object_id'] != None and len(
            Player.objects.filter(espn_object_id=data['espn_object_id'])) == 1:
        return Player.objects.get(espn_object_id=data['espn_object_id'])
    elif len(Player.objects.filter(fullname=data['name'])) == 1:
        return Player.objects.get(fullname=data['name'])
    elif len(Player.objects.filter(card_name=data['name'])) == 1:
        return Player.objects.get(card_name=data['name'])
    elif len(Player.objects.filter(nickname=data['name'])) == 1:
        return Player.objects.get(nickname=data['name'])
    elif len(Player.objects.filter(name=data['name'])) == 1:
        return Player.objects.get(name=data['name'])
    else:
        p = Player(**data)
        p.save()
        return p
Пример #3
0
    def create_player(cls, ep):
        username = ep.get('username', '')
        username += '_ai_' + User.objects.make_random_password(length=8)
        newu = User(username=username)
        newu.save()
        p = Player(user=newu, ptype=ep['ptype'])
        p.save()

        return p
Пример #4
0
 def test_player_set(self):
     test = Player(id=10,
                   name="player3",
                   description="player3 description",
                   mac_address="00:00:00:q1:ss:88",
                   status=False)
     test.save()
     self.assertEqual(test.name, "player3")
     self.assertEqual(test.mac_address, "00:00:00:q1:ss:88")
Пример #5
0
    def test_meeting_between_players_without_challenge(self):
        user_1 = User.objects.create_user('user_1', '*****@*****.**',
                                          'qweqweqwe')
        user_2 = User.objects.create_user('user_2', '*****@*****.**',
                                          'qweqweqwe')
        pos = GEOSGeometry('POINT(37.00000 -5.00000)')
        player_1 = Player(user=user_1, pos=pos)
        player_1.save()
        player_2 = Player(user=user_2, pos=pos)
        player_2.save()

        response = self.c.authenticate(self.get_username(player_1.pk),
                                       self.pwd)
        self.assertEqual(response.status_code, 200)
        # step 1
        response = self.c.post('/api/player/meeting/{0}/'.format(player_2.pk),
                               {})
        self.assertEqual(response.status_code, 201)

        response = self.c.authenticate(self.get_username(player_2.pk),
                                       self.pwd)
        self.assertEqual(response.status_code, 200)
        # step 2
        response = self.c.post('/api/player/meeting/{0}/'.format(player_1.pk),
                               {})
        self.assertEqual(response.status_code, 200)

        secret = Meeting.objects.get(player1=player_1, player2=player_2).secret
        response = self.c.authenticate(self.get_username(player_1.pk),
                                       self.pwd)
        self.assertEqual(response.status_code, 200)
        # step 3
        response = self.c.post(
            '/api/player/meeting/{0}/captured/{1}/'.format(
                player_2.pk, secret), {})
        self.assertEqual(response.status_code, 200)

        response = self.c.authenticate(self.get_username(player_2.pk),
                                       self.pwd)
        self.assertEqual(response.status_code, 200)
        # step 4
        response = self.c.get(
            '/api/player/meeting/{0}/qrclue/'.format(player_1.pk), {})
        self.assertEqual(response.status_code, 200)
Пример #6
0
def new(request):
    if request.method == 'GET':
        return render(request, 'player/new.html',{})
    elif request.method == 'POST':
        if request.POST['name'] == '':
            return render(request,'player/new.html',{'error':'You must have a username'})
        else:
            player = Player(name = request.POST['name'])
            player.save()
            return HttpResponseRedirect('/player/%s/' % player.id)
Пример #7
0
def session():
    engine = create_engine('sqlite:///:memory:')
    DeclarativeBase.metadata.create_all(engine)

    session_cls = sessionmaker(bind=engine)
    rep = PlayerRepository(session_cls())

    test_player = Player(username=TEST_USERNAME, password=TEST_PASSWORD, country="Chile")
    rep.db.add(test_player)

    return rep
Пример #8
0
def add_player(request):
    if request.method == 'POST':
        player = Player()
        player_form = PlayerForm(request.POST, instance=player)
        if player_form.is_valid():
            player_form.save()
            return redirect('player')
        else:
            context = {'status_code': 201}
            context = {'errorlist': _(u'Ошибка во введенных данных')}
            return render_to_response('player/player_add.html', context, context_instance=RequestContext(request))
    else:
        player_form = PlayerForm()
        context = {'title': _(u'Создание игрока'), 'player_form': player_form}
        return render_to_response('player/player_add.html', context, context_instance=RequestContext(request))
Пример #9
0
    def create_player(self, username, password, country, elo=None):
        try:
            player = Player(username=username,
                            password=password,
                            country=country,
                            elo=elo)
        except AssertionError:
            return False

        try:
            self.rep.db.add(player)
            self.rep.db.commit()
        except exc.IntegrityError:
            self.rep.db.rollback()
            return False

        return True
Пример #10
0
def register_view(request):
    form = RegistrationForm(request.POST or None)
    if request.method == 'POST' and form.is_valid():
        name_ = form.cleaned_data['name']
        username_ = form.cleaned_data['username']
        email_ = form.cleaned_data['email']
        password_ = form.cleaned_data['password']
        re_password_ = form.cleaned_data['re_password']
        user_type_ = form.cleaned_data['user_type']
        user = User.objects.create_user(first_name=name_,
                                        username=username_,
                                        password=password_,
                                        email=email_)

        activation_string = user.email + SALT
        activation_key = md5(activation_string.encode("ascii")).hexdigest()

        activation_link = BASE_URL + "/accounts/activate?user="******"&activation_key=" + activation_key
        print("Activation Url - " + activation_link)

        with mail.get_connection() as connection:
            mail.EmailMessage(
                "GameStop - Activate your account",
                "To activate your account, follow the link - " +
                activation_link,
                "*****@*****.**",
                [email_],
                connection=connection,
            ).send()

        if (user_type_ == '1'):
            dev_ = Developer(user=user)
            dev_.registered = False
            dev_.activation_key = activation_key
            dev_.save()
        else:
            player_ = Player(user=user)
            player_.registered = False
            player_.activation_key = activation_key
            player_.save()
        #login(request, user)
        return HttpResponseRedirect("/home")

    context = {'form': form}
    return render(request, 'accounts/register.html', context)
    def setUp(self):
        # User
        self.username = "******"
        self.email = "*****@*****.**"
        self.password = "******"
        self.user = User._default_manager.create_user(
            username=self.username,
            email=self.email,
        )
        self.user.set_password(self.password)
        self.user.save()

        # Board
        self.board_name = 'boardcito'
        self.board_owner = self.user
        self.board = Board(
            name=self.board_name,
            owner=self.board_owner
        )
        self.board.save()

        # Room
        self.room = Room(
            name='roomcito',
            board=self.board,
            game_has_started=True,
            owner=self.user,
        )
        self.room.save()

        # Game
        self.game = Game(room=self.room)
        self.game.save()

        # Player
        self.player = Player(
            user=self.user,
            game=self.game,
            colour='colorcito'
        )
        self.player.save()
        self.client.force_authenticate(self.user)
Пример #12
0
    def __init__(self):

        self.board = Board()
        self.game = Game(AIPlayer(deep_blue_game_piece), Player(opponent_game_piece))
Пример #13
0
    def post(cls, request, ev_id=None):
        ev = request.data

        if ev_id:
            e = get_object_or_404(Event, pk=ev_id)
        else:
            e = Event()

        for k, v in ev.items():
            if k in ['pk', 'players', 'owners', 'task_id', 'place', 'game']:
                continue
            if 'date' in k:
                try:
                    v = datetime.datetime.strptime(v, '%Y-%m-%d %H:%M %z')
                except:
                    v = parse_datetime(v)
            setattr(e, k, v)

        # setting the place
        place = ev.get('place', None)
        if place:
            if type(place) == str:
                place = GEOSGeometry(place)
            else:
                place = GEOSGeometry(str(place['geometry']))
            if isinstance(place, Polygon):
                place = MultiPolygon(place)
            e.place = place

        # setting the game
        g = ev.get('game', None)
        if g:
            g = get_object_or_404(Game, pk=g['pk'])
            e.game = g

        e.save()
        e.owners.add(request.user)

        players_ids = []
        for ep in ev.get('players', []):
            pk = ep['pk']
            if pk < 0:
                # negative pk will create the player
                p = Player()
                p = cls.create_player(ep)
            else:
                p = Player.objects.get(pk=pk)

            p.about = ep['username']

            p.set_position(*ep['pos'])
            players_ids.append(p.pk)
            e.set_playing(p, avoid_playing_event=True)

            Clue.objects.filter(player=p, event=e).delete()

            for ch in ep.get('challenges', []):
                c = Challenge.objects.get(pk=ch['pk'], games=e.game)
                clue = Clue(player=p, event=e, challenge=c, main=True)
                clue.save()

        players = e.players.exclude(membership__player__pk__in=players_ids)
        for p in players:
            p.user.delete()

        return Response({'status': 'ok'})
Пример #14
0
    def parse(self, excel):
        # search player nick name from title of PS excel audit file
        # working with RU files

        head = pandas.read_excel(excel, nrows=0, usecols=[0])
        player = head.columns[0]
        lang = detect(player)
        date_format = [
            r'%d.%m.%Y %I:%M %p', r'%Y/%m/%d %I:%M %p', r'%Y-%m-%d %H:%M:%S'
        ]
        if lang == 'ru':
            player = re.search(r'для (\S+)', player)
        else:
            player = re.search(r'Audit .(\S+). ', player)
        player = player.group(1)
        # search for player object
        # if there is now player - create new instance of Player model
        if 'pk' in self.kwargs.keys():
            player_obj = Player.objects.get(pk=self.kwargs['pk'])
            if player_obj.name != player:
                player_obj.name = player_obj.name + ', ' + player
                player_obj.save()
        else:
            player_obj = Player.objects.filter(name=player)
            if len(player_obj) < 1:
                player_obj = Player(name=player)
                player_obj.save()
            else:
                player_obj = player_obj[0]

        # cutin empty colums
        excel_rows = pandas.read_excel(excel, header=2, parse_dates=False)
        excel_rows.dropna(axis=1, how='all', inplace=True)
        excel.close()
        # set list of keys
        columns = excel_rows.columns.values.tolist()
        keys = [
            'date_played',
            'action',
            'action_number',
            'game',
            'curency',
            'summary',
            's_coins',
            't_money',
            'w_money',
            'cashier',
            'get_s_coins',
            't_money_cashier',
            'w_money_cashier',
        ]
        # queryset of patterns
        pattern_query = PatternBody.objects.all()
        # run loop to create PlayerAudit instences,
        # format date to date field and write action type
        for _, row in excel_rows.iterrows():
            kwargs = {}
            for key in range(len(keys)):
                kwargs[keys[key]] = row[columns[key]]
            for item in date_format:
                try:
                    kwargs['date_played'] = datetime.strptime(
                        str(kwargs[keys[0]]), item)
                except ValueError:
                    continue
            for item in pattern_query:
                if item.pattern in kwargs['action']:
                    kwargs['action_type'] = item.pattern_type.pattern_name
                    break
            audit = PlayerAudit(player=player_obj, **kwargs)
            audit.save()