def make_order(data, notes): request_data = { 'amount': data['amount'], 'currency': "INR", 'receipt': data['receipt'], 'notes': notes } response = razorpay_client.order.create(request_data) if current_app.config['DEBUG'] is True: log_info(response) order_id = response.pop('id') response['user_details'] = response.pop('notes') # renamed 'notes' to 'user_details' response.pop("amount") response.pop("receipt") return order_id, response
def get(self): args = parser.parse_args() response = {} log_info(args) try: category_ids = args['category_id'] min_max_price = args['price'] if not (isinstance(category_ids, list) and isinstance(min_max_price, list) and len(category_ids) > 0 and len(min_max_price) == 2): return {'status': 'fail', 'msg': 'Bad Request'}, 400 category_ids = list(map(int, category_ids)) min_max_price = list(map(int, min_max_price)) min_price, max_price = min(min_max_price), max(min_max_price) # SELECT * FROM SecondaryCategoryDB category_docs = (SecondaryCategoryDB.objects( category_id__in=category_ids).all()) product_docs = (ProductDB.objects( category__in=category_docs, discounted_price__gt=min_price, discounted_price__lt=max_price).all()) if len(product_docs) == 0: data = [] else: data = [ get_product_json(doc, product_resource_fields) for doc in product_docs ] response['status'] = 'success' response['msg'] = {'data': data} return response, 200 except Exception as e: response['status'] = 'fail' response['msg'] = str(e) return response, 500
def post(self): args = parser.parse_args() response = {} try: content, status_code = (Product.decode_token( token=args['Authorization'])) if content['status'] == 'success': # Authorized seller product_args = { 'product_name': args['product_name'], 'short_description': args['short_description'], 'long_description': args['long_description'], 'quantity': args['quantity'], 'base_price': args['base_price'], 'discount': args['discount'], 'seller_id': content['data']['user_id'], 'features': [ feature.strip() for feature in args['features'].split(',') ], 'colors': [color.strip() for color in args['colors'].split(',')], 'sizes': [size.strip() for size in args['sizes'].split(',')], 'category_id': args['category_id'], 'img_base_url': args['img_base_url'], 'img_aux_urls': list( filter(lambda x: x is not None, [ args.get('aux_img_url_1'), args.get('aux_img_url_2'), args.get('aux_img_url_3') ])) } if current_app.config['DEBUG'] is True: log_info(args) log_info(product_args) # Add product product = ProductDB.add_document(**product_args) # product.extra = {} # Marshmallow-ing product object product_marshal = get_product_json(product, product_resource_fields) # Get corresponding category from SecondaryCategoryDB # SELECT * FROM SecondaryCategoryDB WHERE category_id=parent_category_id parent_category_id = product.category.category_id category_doc = (SecondaryCategoryDB.objects( category_id=parent_category_id).first()) if category_doc is not None: # Append this product into corresponding category product_id = product_marshal['product_id'] (category_doc.update( add_to_set__product_ids=[product.product_id])) # Marshmallow-ing category object category_data = object_to_json( category_doc, secondary_category_resource_fields) product_marshal['category_data'] = category_data product.save() # SELECT * FROM Seller2Products WHERE seller_id=product.seller_id s2p = (Seller2Products.objects( seller_id=product.seller_id).first()) if s2p is None: # If this seller has not has any product yet s2p = Seller2Products(seller_id=product.seller_id, product_ids=[product.product_id]) s2p.save() else: # If seller already has added few products # then append product.product_id to the # same category's product_ids list s2p.update(add_to_set__product_ids=[product.product_id]) response['status'] = 'success' response['msg'] = {'data': product_marshal} return response, 201 elif content['status'] == 'fail': return content, status_code except KeyError as e: # log_info(e) response['status'] = 'fail' response['msg'] = str(e) + " is not available in json data" return response, 400 except ValidationError as e: # log_info(e) response['status'] = 'fail' response['msg'] = str(e) return response, 400 except Exception as e: # log_info(e) response['status'] = 'fail' response['msg'] = str(e) return response, 500
def put(self, id): args = parser.parse_args() response = {} try: content, status_code = (Product.decode_token( token=args['Authorization'])) if content['status'] == 'success': # Authorized seller product_args = { 'product_name': args['product_name'], 'short_description': args['short_description'], 'long_description': args['long_description'], 'quantity': args['quantity'], 'discount': args['discount'], 'features': [ feature.strip() for feature in args['features'].split(',') ], 'colors': [color.strip() for color in args['colors'].split(',')], 'sizes': [size.strip() for size in args['sizes'].split(',')], 'img_base_url': args['img_base_url'], 'img_aux_urls': list( filter(lambda x: x is not None, [ args.get('aux_img_url_1'), args.get('aux_img_url_2'), args.get('aux_img_url_3') ])) } if current_app.config['DEBUG'] == True: log_info(args) log_info(product_args) # SELECT * FROM ProductDB WHERE product_id=id product = ProductDB.objects(product_id=id).first() # Update values setattr(product.date, 'date_last_update', datetime.utcnow()) # product.extra = {} for key, value in product_args.items(): if hasattr(product, key): setattr(product, key, value) elif hasattr(product.description, key): setattr(product.description, key, value) # Marshmallow-ing product object product_marshal = get_product_json(product, product_resource_fields) # Get corresponding category from SecondaryCategoryDB # SELECT * FROM SecondaryCategoryDB WHERE category_id=parent_category_id parent_category_id = product.category.category_id category_doc = (SecondaryCategoryDB.objects( category_id=parent_category_id).first()) if category_doc is not None: # Marshmallow-ing category object category_data = object_to_json( category_doc, secondary_category_resource_fields) product_marshal['category_data'] = category_data product.save() response['status'] = 'success' response['msg'] = {'data': product_marshal} return response, 200 elif content['status'] == 'fail': return content, status_code except KeyError as e: # log_info(e) response['status'] = 'fail' response['msg'] = str(e) + " is not available in json data" return response, 400 except ValidationError as e: # log_info(e) response['status'] = 'fail' response['msg'] = str(e) return response, 400 except Exception as e: # log_info(e) response['status'] = 'fail' response['msg'] = str(e) return response, 500
def post(self): args = parser.parse_args() response = {} # Check aruments are valid or not error_mssgs = check_valid_request(args, ops='post') # log_info(error_mssgs) # Error for invalid arguments if error_mssgs: return {'status': 'fail', 'msg': error_mssgs}, 400 try: content, status_code = (Payment .decode_token(token=args['Authorization'])) if content['status'] == 'success': amount = args['amount'] user_id = content['data']['user_id'] payment = PaymentDB.add_document(amount, user_id) payment_doc = object_to_json(payment, resource_fields) if current_app.config['DEBUG'] is True: log_info(payment_doc) notes = args['notes'] # Add buyer details into notes notes.update(content['data']) order_id, extra = Payment.make_order(payment_doc, notes) payment.order_id = order_id payment.extra = extra payment.save() payment_doc['order_id'] = order_id payment_doc['extra'] = extra response['status'] = 'success' response['msg'] = { 'data': payment_doc } return response, 201 elif content['status'] == 'fail': return content, status_code except KeyError as e: # log_info(e) response['status'] = 'fail' response['msg'] = str(e) + " is not available in json data" return response, 400 except ValidationError as e: # log_info(e) response['status'] = 'fail' response['msg'] = str(e) return response, 400 except Exception as e: log_info(e) response['status'] = 'fail' response['msg'] = str(e) return response, 500
def put(self, payment_id): if not isinstance(payment_id, int): return { 'status': 'fail', 'msg': 'payment_id must be an integer' }, 400 args = parser.parse_args() response = {} # Check aruments are valid or not error_mssgs = check_valid_request(args, ops='put') # log_info(error_mssgs) # Error for invalid arguments if error_mssgs: return {'status': 'fail', 'msg': error_mssgs}, 400 try: content, status_code = (Payment .decode_token(token=args['Authorization'])) if content['status'] == 'success': # Authorized buyer payment = PaymentDB.objects(payment_id=payment_id).first() if payment is None: response['status'] = 'fail' response['msg'] = {'data': 'Not Found'} return response, 404 if payment.order_id != args['order_id']: response['status'] = 'fail' response['msg'] = {'data': 'Not Acceptable'} return response, 406 params_dict = { 'razorpay_order_id': args['razorpay_order_id'], 'razorpay_payment_id': args['razorpay_payment_id'], 'razorpay_signature': args['razorpay_signature'] } verified = Payment.verify_payment_signature(params_dict) log_info('\nLogging') log_info(args) log_info(verified) log_info('\n') if verified: # Verified signature payment.razorpay_payment_id = args['razorpay_payment_id'] payment.razorpay_order_id = args['razorpay_order_id'] payment.save() response['status'] = 'success' response['msg'] = {'data': True} return response, 200 else: response['status'] = 'fail' response['msg'] = {'data': False} return response, 403 elif content['status'] == 'fail': return content, status_code except KeyError as e: response['status'] = 'fail' response['msg'] = {'data': str(e) + ' KeyError'} return response, 400 except Exception as e: response['status'] = 'fail' response['msg'] = {'data': str(e)} return response, 500
import os from multiprocessing import Process import time from app import Bot, log_info import requests from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_driver = '/usr/local/bin/chromedriver' # Get details log_info("starting..") # Get a list of proxies def get_proxies(driver): url = "https://free-proxy-list.net/" driver.get(url) proxies = [] proxy_table = driver.find_elements_by_xpath( '//*[@id="proxylisttable"]/tbody/tr') for x in proxy_table: row_data = x.find_elements_by_tag_name('td') proxy = row_data[0].text + ":" + row_data[1].text proxies.append(str(proxy)) return proxies