예제 #1
0
 def process_ware(self, ware):
     attr_res = {
         1: lambda i,q: setattr(i, 'weight', q),
         2: lambda i,q: setattr(i, 'units', q),
         3: lambda i,q: setattr(i, 'pack', q)
     }
     tags = [t['title'] for t in self.iterate_qs("SELECT t.title FROM shop_ware_tags AS wt LEFT JOIN shop_tag AS t ON t.id=wt.tag_id WHERE wt.ware_id=%d" % ware['id'])]
     winstance = Ware.objects.create(
         category=self.main_category,
         brand=self.unknown_brand,
         title=ware['title'],
         enabled=True
     )
     variants = self.iterate_qs("SELECT id,price,articul FROM shop_variant WHERE ware_id=%d" % ware['id'])
     for variant in variants:
         vinstance = Variant(price=variant['price'], articul=variant['articul'], ware=winstance)
         attrs = self.iterate_qs("SELECT value_text,schema_id FROM shop_attribute WHERE entity_id=%d" % variant['id'])
         for attr in attrs:
             attr_res[attr['schema_id']](vinstance, attr['value_text'])
         vinstance.save()
     winstance.tags.add(*tags)
예제 #2
0
파일: load_dbf.py 프로젝트: H359/BarboskeRu
 def handle(self, *args, **kwargs):
     #fh = urllib2.urlopen(self.dbf_url)
     #tf = tempfile.NamedTemporaryFile()
     #tf.write(fh.read())
     #fh.close()
     unknown_brand, _ = Brand.objects.get_or_create(title=u'Неизвестный')
     unknown_category, _ = Category.objects.get_or_create(title=u'Неразобранное', parent=None)
     coeff = Entry.get('shop.discount.markup')
     print coeff
     return
     with transaction.commit_on_success():
 	    dbf = ydbf.open(tf, encoding='cp866')
         for record in dbf:
             created = False
             try:
                 variant = Variant.objects.select_related().get(articul=record['COD_ARTIC'])
             except ObjectDoesNotExist, e:
                 ware = Ware.objects.create(
                     enabled=False,
                     title=record['NAME_ARTIC'],
                     category=unknown_category,
                     brand=unknown_brand
                 )
                 variant = Variant()
                 variant.ware = ware
                 variant.articul = record['COD_ARTIC']
                 created = True
                 try:
             	variant.original_title = record['NAME_ARTIC']
                     variant.store_qty = int(record['REZ_KOLCH'])
                     variant.base_price = record['CENA_ARTIC']
                     variant.pack = int(record['EDN_V_UPAK'])
                     variant.units = record['EDIN_IZMER']
                     if variant.fix_price:
                         raise Exception, u'Цена для товара зафиксирована, цена из базы -- %s' % record['CENA_ARTIC']
                     else:
                         variant.price = coeff*variant['base_price']
                     variant.save()
                     if created:
                         raise Exception, u'Создан новый товар и вариант -- %s' % record['NAME_ARTIC']
                 except Exception, e:
                     print unicode(e)
                     ImportIssue.objects.create(
                         variant=variant,
                         description=unicode(e)
                     )