コード例 #1
0
ファイル: main.py プロジェクト: durden/google_saucer
    def get(self, start=None, fetch=None):
        ids = []
        ii = 0
        added = 0
        skip = 10
        saucer = Saucer()
        saucer.reset_stats()
        all_beers = saucer.getAllBeers()
        num_beers = len(all_beers)

        if fetch is not None:
            num_beers = int(fetch)

        if start is not None:
            ii = int(start)

        # Don't skip by more than requested
        if num_beers < skip:
            skip = num_beers

        while added < num_beers:
            beers = all_beers[ii:ii + skip]
            for beer in beers:
                ids.append(beer['id'])

            details = saucer.getBeerDetails(ids)
            num_details = len(details)
            if not num_details:
                break

            jj = 0
            for det in details:
                tmp = Beer(name=beers[jj]['name'], type=beers[jj]['type'],
                            style=det['Style:'], descr=det['Description:'])
                db.put(tmp)
                jj += 1

            added += num_details
            ii += skip
            ids = []

        template_values = {'fetch' : Saucer.fetch, 'san' : Saucer.san,
                            'details' : Saucer.create_details, 'added' : added,
                            'start' : start, 'requested' : fetch}
        path = os.path.join(os.path.dirname(__file__), 'templates/update.html')
        self.response.out.write(template.render(path, template_values)) 
コード例 #2
0
ファイル: views.py プロジェクト: durden/django_saucer
def retire(request):
    """Retire all beers currently available in our db and not saucer site"""

    if request.method == 'GET':
        saucer = Saucer()
        saucer_beers = saucer.get_all_beers()
        db_beers = Beer.objects.filter(avail=True)
        retired_beers = []

        for db_beer in db_beers:
            found = False
            for saucer_beer in saucer_beers:
                if saucer_beer['name'] == db_beer.name and\
                    saucer_beer['type'] == db_beer.type:
                    found = True
                    break

            if not found:
                db_beer.avail = False
                db_beer.save()
                retired_beers.append(db_beer)

        template_values = {'retired': retired_beers}
        return render_to_response('retire.html', template_values)
コード例 #3
0
ファイル: views.py プロジェクト: durden/django_saucer
def update(request, start=None, fetch=None):
    """Update DB with beers from saucer site starting with index (start) and
    update no more than (fetch) number of beers"""

    if request.method == 'GET':
        ids = []
        ii = 0
        added = 0
        skip = 10
        saucer = Saucer()
        all_beers = saucer.get_all_beers()
        num_beers = len(all_beers)

        if fetch is not None:
            num_beers = int(fetch)

        if start is not None:
            ii = int(start)

        # Don't skip by more than requested
        if num_beers < skip:
            skip = num_beers

        while added < num_beers:
            beers = all_beers[ii:ii + skip]
            for beer in beers:
                ids.append(beer['id'])

            details = saucer.get_beer_details(ids)
            num_details = len(details)
            if not num_details:
                break

            jj = 0
            for det in details:
                _type = beers[jj]['type']
                _name = beers[jj]['name']

                # Maybe we don't find it
                try:
                    curr_beer = Beer.objects.filter(type=_type, name=_name)[0]
                except IndexError:
                    curr_beer = None

                # Beer already in db, but maybe it's newly available
                if curr_beer:
                    if not curr_beer.avail:
                        curr_beer.avail = True
                        curr_beer.date = datetime.date.today()
                        curr_beer.save()
                        added += 1
                else:
                    b = Beer(name=_name, type=_type, avail=True,
                                style=det['Style:'], descr=det['Description:'])
                    b.save()
                    added += 1
                jj += 1

            ii += skip
            ids = []

        template_values = {'fetch': saucer.fetch, 'san': saucer.san,
                            'details': saucer.create_details, 'added': added,
                            'start': start, 'requested': fetch}
        return render_to_response('update.html', template_values)