def remove_item(scan_path):
    try:
        return DeleteQuery(QueueItemModel).where(
            QueueItemModel.scan_path == scan_path).execute()
    except Exception:
        logger.exception("Exception deleting %r from database: ", scan_path)
        return False
예제 #2
0
파일: tests.py 프로젝트: anarcher/peewee
    def test_delete(self):
        InsertQuery(Blog, title='a').execute()
        InsertQuery(Blog, title='b').execute()
        InsertQuery(Blog, title='c').execute()

        dq = DeleteQuery(Blog).where(title='b')
        self.assertEqual(dq.sql(), ('DELETE FROM blog WHERE title = ?', ['b']))
        self.assertEqual(dq.execute(), 1)

        sq = SelectQuery(Blog).order_by('id')
        self.assertEqual([x.title for x in sq], ['a', 'c'])

        dq = DeleteQuery(Blog)
        self.assertEqual(dq.sql(), ('DELETE FROM blog', []))
        self.assertEqual(dq.execute(), 2)

        sq = SelectQuery(Blog).order_by('id')
        self.assertEqual([x.title for x in sq], [])
예제 #3
0
def purge_invalid_proxies():

    # Set a limit of 15 to ensure we don't grab more than we can handle.
    limit = 15
    urls = []

    try:
        query = (ProxyPool
                 .select()
                 .where(ProxyPool.invalid == 1)
                 .limit(limit))
        for p in query:
            urls.append(p.url)
        if len(urls) > 0:
            log.info('Retrieved proxies for deletion: {}'.format(urls))
            result = DeleteQuery(ProxyPool).where(
                ProxyPool.url << urls).execute()
            log.info('Deleted {} invalid proxies.'.format(result))
    except OperationalError as e:
        log.error('Failed purge invalid proxies query: {}'.format(e))
예제 #4
0
    def add_hooks_to_db(self, job: Job):
        # First delete all hooks to avoid spending too much time
        # updating, deleting, etc ...
        try:
            DeleteQuery(Hook).where(Hook.job == job.id).execute()
        except OperationalError as e:
            pass

        hooks_added = list()
        for hook, params in self._hooks.items():
            hook = Hook(name=hook,
                        when=params['when'],
                        method=params['method'],
                        priority=params['priority'],
                        description=params['description'],
                        active=params['active'],
                        job=job)
            hook.save()
            hooks_added.append(hook.id)

        return hooks_added
예제 #5
0
파일: tests.py 프로젝트: strogo/peewee
    def test_delete(self):
        InsertQuery(Blog, title="a").execute()
        InsertQuery(Blog, title="b").execute()
        InsertQuery(Blog, title="c").execute()

        dq = DeleteQuery(Blog).where(title="b")
        self.assertEqual(dq.sql(), ("DELETE FROM blog WHERE title = ?", ["b"]))
        self.assertEqual(dq.execute(), 1)

        sq = SelectQuery(Blog).order_by("id")
        self.assertEqual([x.title for x in sq], ["a", "c"])

        dq = DeleteQuery(Blog)
        self.assertEqual(dq.sql(), ("DELETE FROM blog", []))
        self.assertEqual(dq.execute(), 2)

        sq = SelectQuery(Blog).order_by("id")
        self.assertEqual([x.title for x in sq], [])
예제 #6
0
파일: tests.py 프로젝트: Walnuts/peewee
 def test_delete(self):
     InsertQuery(Blog, title='a').execute()
     InsertQuery(Blog, title='b').execute()
     InsertQuery(Blog, title='c').execute()
     
     dq = DeleteQuery(Blog).where(title='b')
     self.assertEqual(dq.sql(), ('DELETE FROM blog WHERE title = ?', ['b']))
     self.assertEqual(dq.execute(), 1)
     
     sq = SelectQuery(Blog).order_by('id')
     self.assertEqual([x.title for x in sq], ['a', 'c'])
     
     dq = DeleteQuery(Blog)
     self.assertEqual(dq.sql(), ('DELETE FROM blog', []))
     self.assertEqual(dq.execute(), 2)
     
     sq = SelectQuery(Blog).order_by('id')
     self.assertEqual([x.title for x in sq], [])
예제 #7
0
def parse_gyms(args, gym_responses, wh_update_queue):
    gym_details = {}
    gym_members = {}
    gym_pokemon = {}
    trainers = {}

    i = 0
    for g in gym_responses.values():
        gym_state = g['gym_state']
        gym_id = gym_state['fort_data']['id']

        gym_details[gym_id] = {
            'gym_id': gym_id,
            'name': g['name'],
            'description': g.get('description'),
            'url': g['urls'][0],
        }

        if args.webhooks:
            webhook_data = {
                'id': gym_id,
                'latitude': gym_state['fort_data']['latitude'],
                'longitude': gym_state['fort_data']['longitude'],
                'team': gym_state['fort_data'].get('owned_by_team', 0),
                'name': g['name'],
                'description': g.get('description'),
                'url': g['urls'][0],
                'pokemon': [],
            }

        for member in gym_state.get('memberships', []):
            gym_members[i] = {
                'gym_id': gym_id,
                'pokemon_uid': member['pokemon_data']['id'],
            }

            gym_pokemon[i] = {
                'pokemon_uid':
                member['pokemon_data']['id'],
                'pokemon_id':
                member['pokemon_data']['pokemon_id'],
                'cp':
                member['pokemon_data']['cp'],
                'trainer_name':
                member['trainer_public_profile']['name'],
                'num_upgrades':
                member['pokemon_data'].get('num_upgrades', 0),
                'move_1':
                member['pokemon_data'].get('move_1'),
                'move_2':
                member['pokemon_data'].get('move_2'),
                'height':
                member['pokemon_data'].get('height_m'),
                'weight':
                member['pokemon_data'].get('weight_kg'),
                'stamina':
                member['pokemon_data'].get('stamina'),
                'stamina_max':
                member['pokemon_data'].get('stamina_max'),
                'cp_multiplier':
                member['pokemon_data'].get('cp_multiplier'),
                'additional_cp_multiplier':
                member['pokemon_data'].get('additional_cp_multiplier', 0),
                'iv_defense':
                member['pokemon_data'].get('individual_defense', 0),
                'iv_stamina':
                member['pokemon_data'].get('individual_stamina', 0),
                'iv_attack':
                member['pokemon_data'].get('individual_attack', 0),
                'last_seen':
                datetime.utcnow(),
            }

            trainers[i] = {
                'name': member['trainer_public_profile']['name'],
                'team': gym_state['fort_data']['owned_by_team'],
                'level': member['trainer_public_profile']['level'],
                'last_seen': datetime.utcnow(),
            }

            if args.webhooks:
                webhook_data['pokemon'].append({
                    'pokemon_uid':
                    member['pokemon_data']['id'],
                    'pokemon_id':
                    member['pokemon_data']['pokemon_id'],
                    'cp':
                    member['pokemon_data']['cp'],
                    'num_upgrades':
                    member['pokemon_data'].get('num_upgrades', 0),
                    'move_1':
                    member['pokemon_data'].get('move_1'),
                    'move_2':
                    member['pokemon_data'].get('move_2'),
                    'height':
                    member['pokemon_data'].get('height_m'),
                    'weight':
                    member['pokemon_data'].get('weight_kg'),
                    'stamina':
                    member['pokemon_data'].get('stamina'),
                    'stamina_max':
                    member['pokemon_data'].get('stamina_max'),
                    'cp_multiplier':
                    member['pokemon_data'].get('cp_multiplier'),
                    'additional_cp_multiplier':
                    member['pokemon_data'].get('additional_cp_multiplier', 0),
                    'iv_defense':
                    member['pokemon_data'].get('individual_defense', 0),
                    'iv_stamina':
                    member['pokemon_data'].get('individual_stamina', 0),
                    'iv_attack':
                    member['pokemon_data'].get('individual_attack', 0),
                    'trainer_name':
                    member['trainer_public_profile']['name'],
                    'trainer_level':
                    member['trainer_public_profile']['level'],
                })

            i += 1
        if args.webhooks:
            wh_update_queue.put(('gym_details', webhook_data))

    # All this database stuff is synchronous (not using the upsert queue) on purpose.
    # Since the search workers load the GymDetails model from the database to determine if a gym
    # needs rescanned, we need to be sure the GymDetails get fully committed to the database before moving on.
    #
    # We _could_ synchronously upsert GymDetails, then queue the other tables for
    # upsert, but that would put that Gym's overall information in a weird non-atomic state.

    # upsert all the models
    if len(gym_details):
        bulk_upsert(GymDetails, gym_details)
    if len(gym_pokemon):
        bulk_upsert(GymPokemon, gym_pokemon)
    if len(trainers):
        bulk_upsert(Trainer, trainers)

    # get rid of all the gym members, we're going to insert new records
    if len(gym_details):
        DeleteQuery(GymMember).where(
            GymMember.gym_id << gym_details.keys()).execute()

    # insert new gym members
    if len(gym_members):
        bulk_upsert(GymMember, gym_members)

    log.info('Upserted %d gyms and %d gym members', len(gym_details),
             len(gym_members))
예제 #8
0
파일: query.py 프로젝트: xliaoong/torpeewee
    def __init__(self, *args, **kwargs):
        BaseDeleteQuery.__init__(self, *args, **kwargs)
        gen.Future.__init__(self)

        self._future = None
예제 #9
0
    def process_gym_details(self, json_data):
        self.gym_details += 1
        if args.no_gymdetail:
            return

        monkey = False
        if 'gym_defenders' in json_data:
            monkey = True

        to_keep = ["gym_id", "name", "description", "url"]

        gymdetails = {}

        if monkey is False:
            id = json_data['id']
            gymdetails[id] = json_data
            # copy this for webhook forwarding
            wh_gymdetails = gymdetails[id].copy()
            # the wh sends "id", the but the database
            # wants gym_id
            gymdetails[id].update({'gym_id': gymdetails[id]['id']})

        if monkey is True:
            id = json_data['gym_id']
            gymdetails[id] = json_data
            wh_gymdetails = gymdetails[id].copy()
            gymdetails[id].update({
                'gym_id': id,
                'name': gymdetails[id]['name'],
                'description': gymdetails[id]['name'],
                'url': gymdetails[id]['url']
            })
            # I found a gym that doesn't send a name, so we'll put this here.
            if gymdetails[id]['name'] is None:
                gymdetails[id].update({'name': "None"})

        # DB needs something not NULL
        if json_data['url'] is None:
            gymdetails[id]['url'] = "http://notgiven.com"

        # we need to extract trainer and pokemon information before
        # getting gymdetails ready for the database

        (gym_pokemon, gym_members,
         trainers) = self.process_gympokemon(id, monkey, gymdetails)

        # copies all the keys we want for the DB
        gymdetails[id] = {
            key: gymdetails[id][key]
            for key in gymdetails[id] if key in to_keep
        }

        log.debug("%s", gymdetails)
        # put it all into the db queue
        db_queue.put((GymDetails, gymdetails))
        db_queue.put((Trainer, trainers))
        db_queue.put((GymPokemon, gym_pokemon))

        # Need to delete gym members
        DeleteQuery(GymMember).where(
            GymMember.gym_id << gymdetails.keys()).execute()

        db_queue.put((GymMember, gym_members))

        if args.webhooks:
            wh_queue.put(('gym_details', wh_gymdetails))
예제 #10
0
 def clear():
     query = DeleteQuery(DbJiraIssues)
     query.execute()