def get_property(request, property_name): if request.method == 'PUT': model = simplejson.loads(request.data) pr_obj = ProductProperty.get_by_id(property_name) if not pr_obj: return render_json_response({ 'api_success': False, 'api_msg': "Property %s not found." % property_name }) pr_obj.title = model['title'] pr_obj.units = model['units'] pr_obj.put() return render_json_response({ 'api_success': True, 'api_msg': 'Property %s updated' % model['id'] }) if request.method == 'DELETE': pr_obj = ProductProperty.get_by_id(property_name) if not pr_obj: return render_json_response({ 'api_success': False, 'api_msg': "Property %s not found." % property_name }) pr_obj.key.delete() return render_json_response({ 'api_success': True, 'api_msg': "Property %s deleted" % property_name })
def create_property(request): if request.method == 'POST': model = simplejson.loads(request.data) property_obj = ProductProperty( title = model['title'], units = model['units'] ) property_obj.put() data = {'api_success': True, 'api_msg': "Property creating"} data.update(property_obj.to_json()) return render_json_response(data)
def create_value(request, property_key): if request.method == 'POST': model = simplejson.loads(request.data) property_obj = ProductProperty.get_by_id(property_key) value = ProductPropertyValue(title=model['title'], property=property_obj.key) value.put() return render_json_response(value.to_json())
def create(data, is_unique_title=False): title = data.get('title', '') if not title: res = {'api_success':False, 'api_msg':'"Field title" is required', 'api_function':create.__name__} logging.warning(res) return render_json_response(res) if is_unique_title and is_property_exist(title): res = {'api_success':False, 'api_msg':'Field "title" must be unique', 'api_function':create.__name__} logging.warning(res) return render_json_response(res) units = data.get('units', '') property = ProductProperty(title=title, units=units) property.put() res = {'api_success': True, 'api_msg': 'Property "%s" created' % title, 'property': property.to_json()} logging.info(res) return render_json_response(res)
def product(request): all_product = Product.available_list() all_hide_product = Product.not_available_list() available_product_without_properties_count = 0 for pr in all_product: if not len(pr.properties_): available_product_without_properties_count += 1 unavailable_product_without_properties_count = 0 for pr in all_hide_product: if not len(pr.properties_): unavailable_product_without_properties_count += 1 brand_all_available_product = Product.available_list().filter(Product.brand != None) logging.warning(brand_all_available_product.count()) brand_all_not_available_product = Product.not_available_list().filter(Product.brand != None) no_brand_all_available_product_count = Product.available_list().filter(Product.brand == None).count() no_brand_all_not_available_product_count = Product.not_available_list().filter(Product.brand == None).count() available_brand = {} for product_ in brand_all_available_product: if not product_.brand in available_brand: count = Product.available_list().filter(Product.brand == product_.brand).count() available_brand[product_.brand] = count not_available_brand = {} for product_ in brand_all_not_available_product: if not product_.brand in not_available_brand: count = Product.not_available_list().filter(Product.brand == product_.brand).count() not_available_brand[product_.brand] = count categories = Category.query(Category.parent_category == None).order(Category.title) properties = ProductProperty.query().order(ProductProperty.title) brands = Brand.query().order(Brand.title) available_uncategories = all_product available_uncategories = available_uncategories.filter(Product.category == None) unavailable_uncategories = all_hide_product unavailable_uncategories = unavailable_uncategories.filter(Product.category == None) return render_to_response('shop/admin/product.html', locals() )
def create(data, is_unique_title=False): title = data.get('title', '') if not title: res = {'api_success':False, 'api_msg':'"Field title" is required', 'api_function':create.__name__} logging.warning(res) return render_json_response(res) property = ProductProperty.get_by_id(data.get('property', '')) if is_unique_title and is_value_exist(title, property.key): res = {'api_success':False, 'api_msg':'Field "title" must be unique', 'api_function':create.__name__} logging.warning(res) return render_json_response(res) value = ProductPropertyValue(title=title, property=property.key) value.put() res = {'api_success': True, 'api_msg': 'Value "%s" created' % title, 'property': value.to_json()} logging.info(res) return render_json_response(res)
def get_values(request, property_key): property_obj = ProductProperty.get_by_id(property_key) values = ProductPropertyValue.query( ProductPropertyValue.property == property_obj.key ) values = [value.to_json() for value in values] return render_json_response(values)
def product_property_add_val(request, prop_key): prop_obj = ProductProperty.get_by_id(prop_key) return render_to_response( 'shop/admin/property_value.html', {'property':prop_obj})
def get_properties(request): properties = ProductProperty.query() prs = [prop.to_json() for prop in properties] return render_json_response(prs)
def values_json(request, property_id): property_obj = ProductProperty.get_by_id(property_id) values = [value.to_json() for value in property_obj.values.order(ProductPropertyValue.title)] return render_json_response(values)
def properties_json(request): properties = [prop.to_json() for prop in ProductProperty.query().order(ProductProperty.title)] return render_json_response(properties)
def is_property_exist(title): property = ProductProperty.query().filter(ProductProperty.title == title) if property.count(): return True return False