Example #1
0
File: views.py Project: gmist/f-toy
def sync_new_task(request, uid):
    logging.info("Create new gift from 5studio.ru with uid: %s" % uid)
    url = 'http://www.5studio.ru/api/v1/get/gift.json?&uid=%s' % uid
    result = urlfetch.fetch(url)
    if result.status_code == 200:
        j = simplejson.loads(result.content)
        if len(j):
            name = j.get('name', '').replace('\\"', '"')
            name_origin = j.get('name_origin', '').replace('\\"', '"')
            barcode = j.get('barcode', '')
            description = j.get('description', '').replace('\\"', '"')
            price = j.get('price', 0.0)
            leftovers = j.get('leftovers', 0)

            gift = Gift.all().filter('uid_5studio =', uid).fetch(1)
            if gift:
                gift = gift[0]
                is_new = False
            else:
                is_new = True
                gift = Gift(
                    uid_5studio=uid,
                    name=name,
                    name_origin=name_origin,
                    barcode=barcode,
                    description=description,
                    price=price,
                    leftovers=leftovers)

            brand = j.get('brand', '').replace('\\"', '"')
            if brand:
                brand_obs = Brand.all().filter('brand =', brand)
                if not brand_obs.count():
                    brand = Brand(brand=brand)
                    brand.put()
                else:
                    brand = brand_obs.get()
                gift.brand = brand

            gift.category = get_category(j)
            gift.subcategory = get_subcategory(j, gift.category)
            gift.put()

            if is_new or not gift.thumbs:
                thumbs_url = j.get('thumbs_url', [])
                for url in thumbs_url:
                    gift_uid = gift.key().id()
                    memcache.add('sync/add_image/%s' % gift_uid,
                        'http://%s' % url, 7200)

                    def txn():
                        taskqueue.add(url=url_for(
                            'sync/sync_add_image',
                            uid=gift.key().id()),
                            transactional=True)
                    db.run_in_transaction(txn)

    return render_json_response({'api_msg': 'Ok', 'api_success': True})