def get(self): status = self.get_argument("status", None) ft = (Order.status >= 0) if status: ft = ft & (Order.status == status) page = int(self.get_argument("page", 1)) pagesize = self.settings['admin_pagesize'] oq = Order.select().where(ft) total = oq.count() orders = [] for order in oq.paginate(page, pagesize).order_by( Order.ordered.desc()).dicts(): order['orderitems'] = [] try: order['ua'] = UserAddr.get(id=order['uaid']) except: order['ua'] = UserAddr() try: order['distr'] = Distribution.get(id=order['distrid']) except: order['distr'] = Distribution() for orderitem in OrderItem.select().where( OrderItem.oid == order['id']).dicts(): try: orderitem['shop'] = Shop.get(id=orderitem['sid']) if orderitem['said'] > 0: orderitem['shopattr'] = ShopAttr.get( id=orderitem['said']) order['orderitems'].append(orderitem) except: orderitem['shop'] = Shop() if order['orderitems']: orders.append(order) self.render('admin/order.html', orders=orders, total=total, page=page, pagesize=pagesize)
def create_shop(shop_id, name, lat, lng, address_num=None, address_street=None, zipcode=None): """Create a shop, add to db, return shop.""" shop = Shop(shop_id=shop_id, name=name, address_num=address_num, address_street=address_street, zipcode=zipcode, lat=lat, lng=lng) db.session.add(shop) db.session.commit() return shop
def new_shop(req: ShopCreateRequest): try: b64decode(req.shop_pub_key) except binascii.Error: raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail='公鑰錯誤') shop = Shop(name=req.name, shop_pub_key=req.shop_pub_key) private_key = PrivateKey.generate() box = SecretBox(SERVER_MASTER_SECRET) try: Secret(shop=shop, server_secret_key=b64encode( box.encrypt(private_key._private_key)).decode('ascii')) commit() except TransactionIntegrityError: rollback() raise HTTPException(status_code=status.HTTP_409_CONFLICT, detail='公鑰已被使用') return b64encode(private_key.public_key._public_key).decode('ascii')
session.commit() shop_handlings = [ {'url': 'https://www.kobu-teeversand.de', 'name': "Kobu Tee ® und Futon", 'spider': KobuSpider}, {'url': 'https://www.teehandel-kolodziej-shop.de/', 'name': "Teehandel Kolodziej e.K.", 'spider': KolodziejSpider}, {'url': 'https://www.nibelungentee.de', 'name': "Nibelungentee internet-connect GmbH", 'spider': NibelungenSpider}, {'url': 'https://www.sunday.de', 'name': "Sunday Natural Products GmbH", 'spider': SundaySpider}, {'url': 'https://www.teaworld.de/', 'name': "Teaworld OHG", 'spider': TeaworldSpider} ] for shop_handling in shop_handlings: shop = session.query(Shop).filter_by(name=shop_handling['name']).first() if not shop: shop = Shop(name=shop_handling['name'], url=shop_handling['url']) session.add(shop) try: spider = shop_handling['spider'](shop_handling['url'], logging) products = spider.get_products() for product in products: save_product(session, product, shop) session.commit() except: logging.info("exception in spider {}".format(shop_handling.spider)) pass # clean max_date = session.query(func.max(Price.date)).all()[0] logging.info("delete products with date < {}".format(max_date)) print("delete products with date < {}".format(max_date))
import sqlalchemy as sa from sqlalchemy.orm import Query, scoped_session, sessionmaker import datetime from model import Publisher, Book, Shop, Stock, Sale from engine_session import engine, Session #################### setup some data ###################### pub1 = Publisher(name='МИФ') sa.session.add(pub1) sa.session.commit() book1 = Book(title='45 татуировок менеджера', id_publisher=0) sa.session.add(book1) sa.session.commit() sh1 = Shop(name='Буквоед-1') sa.session.add(sh1) sa.session.commit() st1 = Stock(id_book=0, id_shop=0, count=100) sa.session.add(st1) sa.session.commit() sale1 = Sale(price=570, date_sale=datetime.today(), id_stock=0, count=84) sa.session.add(sale1) sa.session.commit()
def load_data(data_path): """ (str) -> set Loads the data from the csv file. It creates and returns a set of all the Products. """ shop_dict = {} log.info('Loading data...') start_time = int(round(time() * 1000)) # Load shops try: with open(data_path + '/shops.csv') as shop_file: reader = csv.DictReader(shop_file) for row in reader: shop = Shop(row['id'], row['name'], row['lat'], row['lng']) shop_dict[shop.id] = shop except IOError as e: log.error(e) shop_time = int(round(time() * 1000)) log.debug('Loaded shops in {0} ms'.format((shop_time - start_time))) # Load tags tag_dict = {} try: with open(data_path + '/tags.csv') as tag_file: reader = csv.DictReader(tag_file) for row in reader: tag_dict[row['id']] = row['tag'] with open(data_path + '/taggings.csv') as taggings_file: reader = csv.DictReader(taggings_file) for row in reader: if row['shop_id'] in shop_dict: shop_dict[row['shop_id']].tags.add(tag_dict[row['tag_id']]) except IOError as e: log.error(e) tag_time = int(round(time() * 1000)) log.debug('Loaded tags in {0} ms'.format((tag_time - start_time))) # Load products products = set() try: with open(data_path + '/products.csv') as product_file: reader = csv.DictReader(product_file) for row in reader: product = Product(row['id'], row['title'], row['popularity'], row['quantity']) if row['shop_id'] in shop_dict: product.shop = shop_dict[row['shop_id']] products.add(product) except IOError as e: log.error(e) product_time = int(round(time() * 1000)) log.debug('Loaded products in {0} ms'.format((product_time - tag_time))) end_time = int(round(time() * 1000)) log.info('Loaded data in {0} ms'.format((end_time - start_time))) return products
def post(self, cid): try: category = Category.get(id=cid) except: self.flash("此分类不存在") self.redirect("/admin/addshop") return categoryattrs = CategoryAttr.select().where(CategoryAttr.cid == cid) cover = self.get_argument("cover", None) pics = self.get_argument("pics", None) name = self.get_argument("name", None) ename = self.get_argument("ename", None) price = str(float(str(self.get_argument("price", 0.0)))) level = int(self.get_argument("level", 3)) resume = self.get_argument("resume", "") intro = self.get_argument("intro", "") prompt = self.get_argument("prompt", "") views = int(self.get_argument("views", 0)) try: shop = Shop() shop.name = name shop.ename = ename shop.cid = cid shop.level = level shop.resume = resume shop.intro = intro shop.prompt = prompt shop.price = price shop.views = views args = {} for categoryattr in categoryattrs: caid = str(categoryattr.id) args['attr_' + caid] = self.get_argument('attr_' + caid, '') shop.args = simplejson.dumps(args) if pics: pics = pics.split(',') pics = [pic.replace('/upload/', '') for pic in pics] if not cover: cover = pics[0] if not cover: cover = '' shop.cover = cover.replace('/upload/', '') shop.validate() shop.save() if isinstance(pics, list): for pic in pics: shoppic = ShopPic() shoppic.sid = shop.id shoppic.path = pic shoppic.save() self.flash(u"添加商品%s成功" % name, 'ok') if category.id == 2: self.redirect("/admin/shops") else: self.redirect("/admin/addshopattr/" + str(shop.id)) return except Exception, ex: self.flash(str(ex))