예제 #1
0
파일: article.py 프로젝트: imycart/imycart
def detail(request,id):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'Blog'
	try:
		article = Article.objects.get(id=id)
	except:
		raise Http404
		
	ctx['article'] = article
		
	if request.method =='GET': #正常访问,返回动态页面
		return render(request,System_Config.get_template_name() + '/article.html', ctx)
	elif request.method == 'POST':#通过ajax访问,生成静态文件
		content = render_to_string(System_Config.get_template_name() + '/article.html', ctx)
		result_dict = {}
		try:
			import codecs,os
			#先获取商品所属分类,作为目录
			dir = 'media/' + article.folder
			if not os.path.exists(dir):
				os.makedirs(dir)
			f = codecs.open(dir + article.static_file_name ,'w','utf-8')
			f.write(content)
			f.close()
			result_dict['success'] = True
			result_dict['message'] = _('File already generated.')
		except Exception as err:
			logger.error('写文件失败。' + str(err))
			result_dict['success'] = False
			result_dict['message'] = _('File generate failed.')
		finally:
			if f is not None:
				f.close()
		return JsonResponse(result_dict)
예제 #2
0
def register(request):
	ctx = {}
	ctx.update(csrf(request))
	ctx['system_para'] = get_system_parameters()
	ctx['menu_products'] = get_menu_products()
	ctx['page_name'] = 'Regitser'
	ctx = add_captcha(ctx) #添加验证码
	logger.debug('Enter register function.')
	if request.method == 'GET':
		#GET请求,直接返回页面
		return TemplateResponse(request,System_Config.get_template_name() + '/register.html',ctx)
	else:
		form = register_form(request.POST) # 获取Post表单数据
		if form.is_valid():# 验证表单
			from .utils import get_remote_ip
			ip = get_remote_ip(request)
			myuser = MyUser.objects.create_user(username=None,email=form.cleaned_data['email'].lower(),password=form.cleaned_data['password'],first_name=form.cleaned_data['first_name'],last_name=form.cleaned_data['last_name'])
			myuser.reg_ip = ip
			myuser.last_ip = ip
			myuser.save()
			
			#触发用户注册成功的事件
			signals.user_registration_success.send(sender='MyUser',user=myuser)
			#return redirect('/user/login')
			
			#准备登陆
			myuser.password = form.cleaned_data['password']
			return inner_login(request,myuser,ctx)
		else:
			logger.error('form is not valid')
			ctx['reg_result'] = _('Registration faild.')
			return TemplateResponse(request,System_Config.get_template_name() + '/register.html',ctx)			
예제 #3
0
def do_login(request,myuser,ctx):
	logger.debug('do_login myuser:%s' % myuser)
	if myuser is not None:
		if myuser.is_active == True:
			auth.login(request,myuser)
			from .utils import get_remote_ip
			ip = get_remote_ip(request)
			myuser.last_ip = ip
			myuser.save()
			mycart = merge_cart(request)
			redirect_url = reverse('product_view_list')
			if 'next' in request.POST:
				if len(request.POST['next']) > 0:
					redirect_url = request.POST['next']
				
			response = redirect(redirect_url)
			response.set_cookie('cart_id',mycart.id,max_age = 3600*24*365)
			response.set_cookie('cart_item_type_count',mycart.cart_products.all().count(),max_age = 3600*24*365)
			response.set_cookie('icetususer',myuser.email)
			logger.debug('>>>>>>>>>user.backend:%s , type is %s' % (myuser.backend,type(myuser.backend)))
			return response
		else:
			ctx['login_result'] = _('Your account has been banned!')
			return TemplateResponse(request,System_Config.get_template_name() + '/login.html',ctx)
	else:
		ctx['login_result'] = _('Your account name or password is incorrect.')
		return TemplateResponse(request,System_Config.get_template_name() + '/login.html',ctx)	
예제 #4
0
파일: myuser.py 프로젝트: imycart/imycart
def reset_password(request):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'Reset Password'
	if request.method == 'GET':
		ctx['success_display'] = 'display:none;'
		ctx['form_display'] = ''
		try:
			#日期大小与比较要用 "日期字段名__gt=" 表示大于
			reset_password = Reset_Password.objects.filter(expirt_time__gt=datetime.datetime.now()).get(email=request.GET['email'],validate_code=request.GET['validate_code'],is_active=True)
			ctx['email'] = reset_password.email
			ctx['validate_code'] = reset_password.validate_code
			return render(request,System_Config.get_template_name() + '/reset_password.html',ctx)
		except:
			raise Http404
			#ctx['form_display'] = 'none'
			#ctx['reset_message'] = _('Can not find the password reset apply request.')
	else:
		try:
			reset_password = Reset_Password.objects.filter(expirt_time__gt=datetime.datetime.now()).get(email=request.POST['email'],validate_code=request.POST['validate_code'],is_active=True)
			myuser = MyUser.objects.get(email=reset_password.email)
			myuser.set_password(request.POST['password'])
			reset_password.is_active = False
			reset_password.save()
			myuser.save()
			ctx['success_display'] = ''
			ctx['form_display'] = 'display:none;'
			ctx['reset_message'] = _('The password has been reseted.')
		except:
			ctx['success_display'] = ''
			ctx['form_display'] = 'display:none;'
			ctx['reset_message'] = _('Opration faild.')		
		return render(request,System_Config.get_template_name() + '/reset_password.html',ctx)
예제 #5
0
def forget_password(request):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['menu_products'] = get_menu_products()
	ctx['page_name'] = 'Forget Password'
	ctx = add_captcha(ctx) #添加验证码
	if request.method == 'GET':
		ctx['form_display'] = ''
		ctx['success_display'] = 'display:none;'
		return render(request,System_Config.get_template_name() + '/forget_password.html',ctx)
	else:
		form = captcha_form(request.POST) # 获取Post表单数据
		if form.is_valid():
			ctx['form_display'] = 'display:none;'
			ctx.update(csrf(request))
			s_uuid = str(uuid.uuid4())
			reset_password = Reset_Password.objects.create(email=request.POST['email'],validate_code=s_uuid,apply_time=datetime.datetime.now(),expirt_time=(datetime.datetime.now() + datetime.timedelta(hours=24)),is_active=True)
			mail_ctx = {}
			mail_ctx['reset_url'] =  System_Config.get_base_url() + "/user/reset-password?email=" + reset_password.email + "&validate_code=" + reset_password.validate_code
			my_send_mail(useage='reset_password',ctx=mail_ctx,send_to=reset_password.email,title=_('You are resetting you password in %(site_name)s .') % {'site_name':System_Config.objects.get(name='site_name').val})
			ctx['apply_message'] = _('If there is an account associated with %(email_address)s you will receive an email with a link to reset your password.') % {'email_address':reset_password.email}
			ctx['success_display'] = ''
		else:
			ctx['apply_message'] = _('Please check your verify code.')
		return render(request,System_Config.get_template_name() + '/forget_password.html',ctx)
예제 #6
0
파일: myuser.py 프로젝트: imycart/imycart
def login(request):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'Login'
	ctx = add_captcha(ctx) #添加验证码
	if request.method == 'GET':
		#GET请求,直接返回页面
		if 'next' in request.GET:
			ctx['next'] = request.GET['next']
		return render(request,System_Config.get_template_name() + '/login.html',ctx)
	else:
				
		ctx.update(csrf(request))
		form = captcha_form(request.POST) # 获取Post表单数据
		if 'next' in request.POST:
			next = request.POST['next']
			ctx['next'] = next
		
		#if form.is_valid():# 验证表单,会自动验证验证码,(新版不要验证码了)
		myuser = auth.authenticate(username = request.POST['email'].lower(), password = request.POST['password'])
		if myuser is not None:
			auth.login(request,myuser)
			mycart = merge_cart(request)
			redirect_url = reverse('product_view_list')
			if 'next' in request.POST:
				if len(request.POST['next']) > 0:
					redirect_url = request.POST['next']
			
			response = redirect(redirect_url)
			response.set_cookie('cart_id',mycart.id)
			response.set_cookie('imycartuser',myuser.email)
			return response
		else:
			ctx['login_result'] = _('Your account name or password is incorrect.')
			return render(request,System_Config.get_template_name() + '/login.html',ctx)
예제 #7
0
파일: wechat.py 프로젝트: imycart/imycart
	def __init__(self,timestamp,nonce,echostr,signature):
		self.ret = {
			'app_id':System_Config.objects.get(name='wechat_app_id').val,
			'timestamp':timestamp,
			'nonce':nonce,
			'echostr':echostr,
			'token':System_Config.objects.get(name='wechat_token').val,
			'signature':signature,
			'wechat_api_url':System_Config.get(name='wechat_api_url').val,
			'wechat_api_port':System_Config.get(name='wechat_api_port').val
		}
예제 #8
0
def detail(request,id):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['menu_products'] = get_menu_products()
	ctx['page_name'] = 'Blog'
	try:
		article = Article.objects.get(id=id)
	except:
		raise Http404
		
	ctx['article'] = article
		
	template = '/article.html'
		
	if article.detail_template != '':
		if article.detail_template != 'USE_DEFAULT':
			template = '/custmize/' + article.detail_template	
	
	logger.info('The template name is %s' % template)
	
	if request.method =='GET': #正常访问,返回动态页面
		return render(request,System_Config.get_template_name() + template, ctx)
	elif request.method == 'POST':#通过ajax访问,生成静态文件
		content = render_to_string(System_Config.get_template_name() + template, ctx)
		result_dict = {}
		try:
			import codecs,os
			dir = 'www/' + article.folder
			dir_http = article.folder
			
			if not os.path.exists(dir):
				os.makedirs(dir)
				
			if not dir.endswith('/'):
				dir = dir + '/'
				
			if not dir_http.endswith('/'):
				dir_http = dir_http + '/'
			
			f = codecs.open(dir + article.static_file_name ,'w','utf-8')
			f.write(content)
			f.close()
			result_dict['success'] = True
			result_dict['message'] = _('File already generated.')
			result_dict['static_url'] = dir_http + article.static_file_name
		except Exception as err:
			logger.error('写文件失败。' + str(err))
			result_dict['success'] = False
			result_dict['message'] = _('File generate failed.')
		finally:
			if f is not None:
				f.close()
		return JsonResponse(result_dict)
예제 #9
0
파일: order.py 프로젝트: imycart/imycart
def place_order(request):
	logger.info('Start to place order.')
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'Place Order'
	if request.method == 'POST':
		logger.debug('address_id:' + str(request.POST['address_id']))
		try:
			address = Address.objects.get(id=request.POST['address_id'])
		except:
			ctx['order_result'] = _('Address is not correct')
			return render(request,System_Config.get_template_name() + '/order_result.html',ctx)
			
		if address not in request.user.addresses.all():
			#如果这个地址不是这个用户的,报错
			ctx['order_result'] = 'System Error.Please try again.'
			return render(request,System_Config.get_template_name() + '/order_result.html',ctx)
		
		#金额
		sub_total,shipping,discount,total,remark = request.POST['sub_total'],request.POST['shipping'],request.POST['discount'],request.POST['total'],request.POST['remark']
		logger.debug('>>>>>0:sub_total=' + str(sub_total))
		#生成主订单
		logger.debug('>>>>>1')
		order = Order.objects.create(order_number=get_serial_number(),user=request.user,status=Order.ORDER_STATUS_PLACE_ORDER,country=address.country,province=address.province,city=address.city,district=address.district,address_line_1=address.address_line_1,
			address_line_2=address.address_line_2,first_name=address.first_name,last_name=address.last_name,zipcode=address.zipcode,tel=address.tel,mobile=address.mobile,email=request.user.email,
			products_amount = sub_total,shipping_fee=shipping,discount=discount,order_amount=total,to_seller=remark)

		logger.debug('>>>>>2:order.id='+str(order.id))
		cart_product_id = request.POST.getlist('cart_product_id',[])
		logger.debug('>>>>>3:cart_product_id='+str(cart_product_id))
		
		#计算汇总金额
		amount_to_check = 0.00
		
		for cp_id in cart_product_id:
			cp = Cart_Products.objects.get(id=cp_id)
			
			amount_to_check = amount_to_check + cp.get_total()
			#向主订单加入商品
			logger.debug('>>>>>5:product.id='+str(cp.product.id))
			op = Order_Products.objects.create(product_id=cp.product.id,product_attribute=cp.product_attribute,order=order,name=cp.product.name,short_desc=cp.product.short_desc,price=cp.get_product_price(),
				thumb=cp.product.thumb,image=cp.product.image,quantity=cp.quantity)
			logger.debug('>>>>>6:op.id='+str(op.id))
			#删除购物车中商品
			cp.delete()
			logger.debug('>>>>>8:cp.delete')
		
		#TODO:校验总金额是否正确,不正确则抛出异常
		logger.debug('>>>>>9:amount_to_check=' + str(amount_to_check))
		if abs(amount_to_check-float(sub_total)) > 0.01: #浮点数比较,没法直接用 ==
			raise Exception('System error.Please try again.')
		
		return redirect('/cart/payment/' + str(order.id))
예제 #10
0
파일: utils.py 프로젝트: imycart/imycart
def handle_uploaded_file(f,type='other',product_sn='-1'):
	file_name = ""

	file_names = {}
	
	if not type.endswith('/'):
		type += '/'
	if not product_sn.endswith('/'):
		product_sn += '/'
	
	destination = None
	try:
		path = 'media/' + type + product_sn
		import os
		if not os.path.exists(path):
			os.makedirs(path)
			
		ext = f.name.split('.')[-1]
		logger.debug(str(ext))
		
		#允许上传的类型
		file_allow = ['JPG','JPEG','PNG','GIF']
		if ext.upper() not in file_allow:
			raise Exception('%s File type is not allowed to upload.' % [ext])
		
		random_name = str(uuid.uuid1())
		
		file_name = path + random_name + '.' + ext
		file_thumb_name = path + random_name + '-thumb' + '.' + ext
		
		destination = open(file_name, 'wb+')
		logger.debug('file_name: %s' % file_name)
		for chunk in f.chunks():
			destination.write(chunk)
		destination.close()
		
		result = thumbnail(file_name,file_thumb_name)
		if not result:
			raise Exception('thumbnail failed.')
		else:
			file_names['image'] = file_name
			file_names['thumb'] = file_thumb_name
			file_names['image_url'] = System_Config.get_base_url() + '/' + file_name
			file_names['thumb_url'] = System_Config.get_base_url() + '/' + file_thumb_name
	except Exception as e:
		#pass
		logger.error(str(e))
	finally:
		if destination:
			destination.close()
	return file_names
예제 #11
0
def edit(request):
    ctx = {}
    ctx['system_para'] = get_system_parameters()
    ctx['page_name'] = '文章分类管理'

    if request.method == 'GET':
        id = request.GET.get('id', '')
        try:
            category = ArticleBusiCategory.objects.get(id=id)
            ctx['category'] = category
        except Exception as err:
            logger.error("Can not find ArticleBusiCategory which id is %s . \n Error message: %s" % (id, err))

        # 加载自定义模板供选择
        from .file import file_list
        template_list = file_list(System_Config.get_template_name('client') + '/custmize/',
                                  'custmize_template_article_category')
        logger.debug('>>>>>>>>>>>>>>>>>>custmize_template_article_category: %s' % template_list)
        ctx['custmize_template'] = template_list

        return TemplateResponse(request,
                                System_Config.get_template_name('admin') + '/article_busi_category_detail.html', ctx)
    elif request.method == 'POST':
        result = {}
        result['success'] = False
        result['message'] = '文章分类保存失败'
        category = None

        try:
            id = request.POST.get('id', '')
            category = ArticleBusiCategory.objects.get(id=id)
        except Exception as err:
            logger.info(
                'Can not find ArticleBusiCategory which id is [%s]. Create one. \n Error Message: %s' % (id, err))

        if category:
            form = article_busi_category_form(request.POST, instance=category)
        else:
            form = article_busi_category_form(request.POST)

        if form.is_valid():
            category = form.save()
            result['success'] = True
            result['message'] = '文章分类保存成功'
            result['category_id'] = category.id
        return JsonResponse(result)

    else:
        raise Http404
예제 #12
0
파일: product.py 프로젝트: imycart/imycart
def view_list(request):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'Product'
	
	if request.method =='GET':
		product_list = None
		if 'sort_by' in request.GET:
			if 'direction' in request.GET:
				if 'desc' == request.GET['direction']:
					product_list = Product.objects.filter(is_publish=True).order_by(request.GET['sort_by']).reverse()
				else:
					product_list = Product.objects.filter(is_publish=True).order_by(request.GET['sort_by'])
				
				ctx['direction'] = request.GET['direction']
			else:
				product_list = Product.objects.filter(is_publish=True).order_by(request.GET['sort_by'])
		else:
			logger.debug("all products")
			product_list = Product.objects.filter(is_publish=True)
		
		logger.debug("no sort_by")
		if 'page_size' in request.GET:
			page_size = request.GET['page_size']
		else:
			try:
				page_size = int(System_Config.objects.get(name='product_page_size'))
			except:
				page_size = 12
		
		product_list, page_range = my_pagination(request=request, queryset=product_list,display_amount=page_size)
		
		ctx['product_list'] = product_list
		ctx['page_range'] = page_range
		return render(request,System_Config.get_template_name() + '/product_list.html',ctx)
예제 #13
0
def list_view(request):
    ctx = {}
    ctx['system_para'] = get_system_parameters()
    ctx['page_name'] = '招聘管理'

    if request.method == 'GET':

        all = Recruit.objects.all().order_by('-sort_order')

        page_size = get_page_size()

        count = len(all)
        recruit_list, page_range, current_page = my_pagination(request=request, queryset=all, display_amount=page_size)
        logger.debug('current_page:%s' % current_page)

        # 为页面准备分类的下拉列表
        # from shopcart.myadmin.article_busi_category import get_all_category
        # busi_category_list = get_all_category()
        # logger.debug('busi_category_list : %s' % busi_category_list)
        # ctx['busi_category_list'] = busi_category_list

        ctx['recruit_list'] = recruit_list
        ctx['page_range'] = page_range
        ctx['page_size'] = page_size
        ctx['current_page'] = current_page
        ctx['recruit_count'] = count
        return TemplateResponse(request, System_Config.get_template_name('admin') + '/recruit_list.html', ctx)
    else:
        raise Http404
예제 #14
0
def detail(request, id=None):
    ctx = {}
    ctx['system_para'] = get_system_parameters()
    ctx['page_name'] = '自定义URL管理'
    try:
        customize_url = CustomizeURL.objects.get(id=id)
    except Exception as err:
        logger.error("Can not find customize_url which id is %s" % id)
        raise Http404

    if request.method == 'GET':
        ctx['customize_url'] = customize_url
        return TemplateResponse(request, System_Config.get_template_name('admin') + '/cust_url_detail.html', ctx)
    else:
        result = {}
        result['success'] = False
        result['message'] = '自定义URL保存失败'

        from shopcart.forms import customize_url_detail_form
        form = customize_url_detail_form(request.POST, instance=customize_url)

        if form.is_valid():
            customize_url = form.save()
            result['success'] = True
            result['message'] = '自定义URL保存成功'

        return JsonResponse(result)
예제 #15
0
def list(request):
    ctx = {}
    ctx['system_para'] = get_system_parameters()
    ctx['page_name'] = '文章分类管理'

    if request.method == 'GET':
        # category_list = ArticleBusiCategory.objects.all().order_by('-update_time')
        category_list = ArticleBusiCategory.objects.all().order_by('-sort_order')

        count = category_list.count()

        page_size = get_page_size()
        category_list, page_range, current_page = my_pagination(request=request, queryset=category_list,
                                                                display_amount=page_size)

        ctx['category_list'] = category_list
        ctx['page_range'] = page_range
        ctx['page_size'] = page_size
        ctx['current_page'] = current_page
        ctx['count'] = count

        return TemplateResponse(request, System_Config.get_template_name('admin') + '/article_busi_category_list.html',
                                ctx)
    elif request.method == 'POST':
        raise Http404
    else:
        raise Http404
예제 #16
0
def detail(request, id):
    ctx = {}
    ctx['system_para'] = get_system_parameters()

    def get_all_top_menu():
        top_menu_list = Menu.objects.filter(parent=None)
        return top_menu_list

    top_menu_list = get_all_top_menu()

    ctx['menu_list'] = top_menu_list
    if request.method == 'GET':
        try:
            try:
                recruit = Recruit.objects.get(id=id)
                ctx['recruit'] = recruit
                ctx['page_name'] = recruit.title
            except Exception as err:
                logger.error('找不到编号为 %s 。' % [id, ])
                raise Http404

            return TemplateResponse(request, System_Config.get_template_name() + '/recruit_detail.html', ctx)
        except Exception as err:
            logger.error("Can not find artice which id is %s . \n Error message: %s" % (id, err))
            raise Http404
    else:
        raise Http404
예제 #17
0
파일: order.py 프로젝트: imycartorg/imycart
def payment(request,order_id):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['menu_products'] = get_menu_products()
	ctx['page_name'] = 'Payment'
	
	order = Order.objects.get(id=order_id)
	
	ctx['paypal_account'] = System_Config.objects.get(name='paypal_account').val
	ctx['item_name'] = 'Your order:' + str(order.order_number) + " in " + System_Config.objects.get(name='site_name').val
	ctx['custom'] = order.order_number #向paypal传送本地订单编号
	ctx['amount'] = order.order_amount
	ctx['return_url'] =  System_Config.objects.get(name='base_url').val + "/order/show/"
	ctx['cancel_url'] = System_Config.objects.get(name='base_url').val + "/order/show/"
	ctx['notify_url'] = System_Config.objects.get(name='base_url').val + reverse('paypal-ipn')
	ctx['cmd'] = '_xclick'
	ctx['currency_code'] = System_Config.objects.get(name='default_currency').val
	ctx['charset'] = 'utf-8'
	ctx['rm'] = '1'
	
	
	paypal_env = 'sandbox'
	try:
		paypal_env = System_Config.objects.get(name='paypal_env').val
	except:
		logger.info('"paypal_env" is not definded,use default value : "sandbox".Please set the system parameter paypal_env = live if you want to use the paypal live service.')
	if paypal_env == 'live':
		ctx['paypal_action_url'] = 'https://www.paypal.com/cgi-bin/websc'
	else:
		ctx['paypal_action_url'] = 'https://www.sandbox.paypal.com/cgi-bin/websc'
	
	return render(request,System_Config.get_template_name() + '/payment.html',ctx)		
예제 #18
0
파일: myuser.py 프로젝트: imycart/imycart
def info(request):
	ctx = {}
	ctx.update(csrf(request))
	ctx['system_para'] = System_Para.get_default_system_parameters()	
	if request.method == 'GET':
		#GET请求,直接返回页面
		return render(request,System_Config.get_template_name() + '/user_info.html',ctx)
	else:
		logger.debug("Modify User Info")
		form = user_info_form(request.POST) # 获取Post表单数据
		myuser = request.user
		if form.is_valid():# 验证表单
			myuser.first_name = form.cleaned_data['first_name']
			myuser.last_name = form.cleaned_data['last_name']
			logger.debug(myuser.last_name)
		else:
			logger.debug('not validate')
		if 'changePassword' in request.POST:
			#需要更改密码
			myuser.set_password(request.POST['password'])
		else:
			#不更改密码
			logger.debug('not checked')
		myuser.save()
		return redirect('/user/info/?success=true')
예제 #19
0
def price_adjusment(request):
	result_dict = {}
	if request.method == 'POST':
		order_id = request.POST.get('order_id','')
		price = request.POST.get('price_adjusment','0')
		
		logger.debug('price_adjusment:%s' % price)
		
		try:
			order = Order.objects.get(id=order_id)
			price = float(price)
		except Exception as err:
			logger.error('Can not find order [%s] \n Error Message:%s' %(order_id,err))
			result_dict['success'] = False
			result_dict['message'] = '价格调整失败'
			return JsonResponse(result_dict)
		
		
		order.price_adjusment = price
		order.calculate_total_price()
		order.save()
		result_dict['success'] = True
		result_dict['message'] = '价格调整成功'
		return JsonResponse(result_dict)
	else:
		ctx = {}
		ctx['system_para'] = get_system_parameters()
		ctx['page_name'] = '价格调整'
		ctx['order_id'] = request.GET.get('order_id')
		return TemplateResponse(request,System_Config.get_template_name('admin') + '/order_price_adjusment.html',ctx)
예제 #20
0
파일: cart.py 프로젝트: icetusorg/cetusshop
def view_cart(request):
    if 'cart_id' in request.COOKIES:
        cart_id = request.COOKIES["cart_id"]
        cart, created = Cart.objects.get_or_create(id=cart_id)
    else:
        if request.user.is_authenticated():
            cart, object = Cart.objects.get_or_create(user=request.user)
        else:
            cart = Cart.objects.create(user=None)

    if request.is_ajax():
        ret_dict = {}
        ret_dict['success'] = True
        ret_dict['item_type_count'] = cart.cart_products.all().count()

        from shopcart.serializer import serializer
        # serialized_cart = serializer(cart,datetime_format='string',output_type='dict',many=True)

        # 先不返回购物车中商品信息
        serialized_cart = serializer(cart, datetime_format='string', output_type='dict', many=False)
        # logger.debug(serialized_cart)
        ret_dict['cart'] = serialized_cart
        return JsonResponse(ret_dict)

    else:
        ctx = {}
        ctx['system_para'] = get_system_parameters()
        ctx['menu_products'] = get_menu_products()
        ctx['page_name'] = 'My Cart'
        if request.method == 'GET':
            ctx['cart'] = cart
            response = TemplateResponse(request, System_Config.get_template_name() + '/cart_detail.html', ctx)
            response.set_cookie('cart_id', cart.id, max_age=3600 * 24 * 365)
            return response
예제 #21
0
def view_blog_list(request):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['menu_products'] = get_menu_products()
	ctx['page_name'] = 'Blog'
	
	try:
		blog_list_page_size = System_Config.objects.get('blog_list_page_size')
	except:
		logger.debug('blog_list_page_size is not defined,use the default value 12.')
		blog_list_page_size = 12
	
	if request.method =='GET':
		product_list = None
		if 'sort_by' in request.GET:
			if 'direction' in request.GET:
				if 'desc' == request.GET['direction']:
					article_list = Article.objects.filter(category=Article.ARTICLE_CATEGORY_BLOG).order_by(request.GET['sort_by']).reverse()
				else:
					article_list = Article.objects.filter(category=Article.ARTICLE_CATEGORY_BLOG).order_by(request.GET['sort_by'])
			else:
				article_list = Article.objects.filter(category=Article.ARTICLE_CATEGORY_BLOG).order_by(request.GET['sort_by'])
		else:
			article_list = Article.objects.filter(category=Article.ARTICLE_CATEGORY_BLOG)
		
		if 'page_size' in request.GET:
			logger.debug('the page_size has been detacted')
			article_list, page_range = my_pagination(request=request, queryset=article_list,display_amount=request.GET['page_size'])
		else:
			article_list, page_range = my_pagination(request=request, queryset=article_list,display_amount=blog_list_page_size)
		
		ctx['article_list'] = article_list
		ctx['page_range'] = page_range
		return render(request,System_Config.get_template_name() + '/blog_list.html',ctx)
예제 #22
0
파일: user.py 프로젝트: icetusorg/cetusshop
def user_list(request):
	ctx = {}
	ctx['page_name'] = '用户管理'

	result_dict = {}
	result_dict['success'] = False
	result_dict['message'] = '用户信息保存失败'

	if request.method == 'GET':
		#user_list = MyUser.objects.filter(is_staff=False).filter(is_superuser=False).order_by('-update_time')
		#user_list = MyUser.objects.order_by('-update_time')
		user_list = MyUser.objects.order_by('-create_time')
		
		item_value = request.GET.get('item_value','')
		
		if item_value:
			from django.db.models import Q
			user_list = user_list.filter(Q(email__icontains=item_value))
			
		count = len(user_list)
	
		page_size = get_page_size()
		user_list, page_range,current_page = my_pagination(request=request, queryset=user_list,display_amount=page_size)	
		
		ctx['user_list'] = user_list
		ctx['page_range'] = page_range
		ctx['page_size'] = page_size
		ctx['current_page'] = current_page
		ctx['item_count'] = count
		return TemplateResponse(request,System_Config.get_template_name('admin') + '/user_list.html',ctx)
	else:
		raise Http404		
예제 #23
0
파일: user.py 프로젝트: icetusorg/cetusshop
def admin_edit(request):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = '用户管理'

	result_dict = {}
	result_dict['success'] = False
	result_dict['message'] = '管理员管理操作失败'

	if request.method == 'POST':
		from shopcart.forms import register_form
		form = register_form(request.POST)
		if form.is_valid():
			myuser = MyUser.objects.create_superuser(email=form.cleaned_data['email'].lower(),password=form.cleaned_data['password'],first_name=form.cleaned_data['first_name'],last_name=form.cleaned_data['last_name'],username=form.cleaned_data['email'].lower(),gender='1')
			myuser.is_superuser = True
			myuser.is_staff = True
			myuser.save()
			result_dict['success'] = True
			result_dict['message'] = '管理员管理操作成功'
		return JsonResponse(result_dict)
	elif request.method == 'GET':
	
		return TemplateResponse(request,System_Config.get_template_name('admin') + '/user_admin_detail.html',ctx)
	else:
		raise Http404
	
	
			
			
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
예제 #24
0
def view_index(request, tdk=None):
    ctx = {}
    ctx['system_para'] = get_system_parameters()
    ctx['menu_products'] = get_menu_products()

    def get_all_top_menu():
        top_menu_list = Menu.objects.filter(parent=None)
        return top_menu_list

    top_menu_list = get_all_top_menu()
    ctx['menu_list'] = top_menu_list
    if not tdk:
        try:
            cust = CustomizeURL.objects.get(name='首页')
            if cust.is_customize_tdk:
                tdk = {}
                tdk['page_title'] = cust.page_name
                tdk['keywords'] = cust.keywords
                tdk['short_desc'] = cust.short_desc
        except Exception as err:
            tdk = None

    if tdk:
        customize_tdk(ctx, tdk)

    # from .oauth import SocialSites, SocialAPIError
    # socialsites = SocialSites()

    # s = socialsites.get_site_object_by_name('facebook')
    # ctx['oauth'] = s.authorize_url

    # 判断网站服务是否到期

    maturity_data = System_Config.objects.get(name='maturity_data').val  # 获取到期时间
    new_maturity_data = time.strptime(maturity_data, "%Y-%m-%d %H:%M:%S")  # 转化为时间戳
    new_maturity_data_time = time.mktime(new_maturity_data)

    now_time = int(time.time())  # 获取当前时间

    if now_time - new_maturity_data_time >= 0:
        return TemplateResponse(request, System_Config.get_template_name() + '/index_error.html', ctx)
    else:
        return TemplateResponse(request, System_Config.get_template_name() + '/index.html', ctx)
예제 #25
0
파일: myuser.py 프로젝트: imycart/imycart
def register(request):
	ctx = {}
	ctx.update(csrf(request))
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'Regitser'
	ctx = add_captcha(ctx) #添加验证码
	logger.debug('Enter register function.')
	if request.method == 'GET':
		#GET请求,直接返回页面
		return render(request,System_Config.get_template_name() + '/register.html',ctx)
	else:
		form = register_form(request.POST) # 获取Post表单数据
		if form.is_valid():# 验证表单
			myuser = MyUser.objects.create_user(username=None,email=form.cleaned_data['email'].lower(),password=form.cleaned_data['password'],first_name=form.cleaned_data['first_name'],last_name=form.cleaned_data['last_name'])
			return redirect('/user/login')
		else:
			logger.error('form is not valid')
			ctx['reg_result'] = _('Registration faild.')
			return render(request,System_Config.get_template_name() + '/register.html',ctx)
예제 #26
0
파일: wishlist.py 프로젝트: imycart/imycart
def view_wishlist(request):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'My Wishlist'
	if request.method =='GET':
		wish_list = Wish.objects.filter(user=request.user)
		wish_list, page_range = my_pagination(request, wish_list,display_amount=5)
		ctx['wish_list'] = wish_list
		ctx['page_range'] = page_range
		return render(request,System_Config.get_template_name() + '/wish_list.html',ctx)
예제 #27
0
파일: myuser.py 프로젝트: imycart/imycart
def address_list(request):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'Address Book'
	if request.method=='GET':
		myuser = request.user
		address_list = Address.objects.filter(user=myuser)
		ctx['address_list'] = address_list
		return render(request,System_Config.get_template_name() + '/address.html',ctx)
	else:
		raise Http404
예제 #28
0
def detail(request,id=None):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'Order Detail'
	try:
		order = Order.objects.get(id=id)
	except Exception as err:
		logger.error("Can not find order which id is %s" % id)
		raise Http404	
	
	ctx['order'] = order
	return TemplateResponse(request,System_Config.get_template_name('admin') + '/order_detail.html',ctx)
예제 #29
0
def file_upload(request,item_type,item_id):
	ctx = {}
	ctx['system_para'] = System_Para.get_default_system_parameters()
	ctx['action_url'] = '/file-upload/' + item_type + '/' + item_id + "/"
	ctx['file_delete_url'] = '/file-delete/' + item_type
	ctx['host_item_id'] = item_id
	if request.method == 'GET':
		if item_type == 'product' or item_type == 'product_album':
			try:
				item = Product.objects.get(id=item_id)
				ctx['item'] = item
				try:
					ctx['image_list'] = Product_Images.objects.filter(product=item).order_by('create_time').reverse()
					if item_type == 'product_album':
						ctx['image_list'] = Album.objects.filter(item_type=item_type,item_id=item.id).order_by('create_time').reverse()
				except:
					ctx['image_list'] = []
			except:
				raise Http404
		elif item_type == 'article':
			raise Http404
		else:
			raise Http404
		return render(request,System_Config.get_template_name() + '/file_upload.html',ctx)
	else:
		if item_type == 'product' or item_type == 'product_album':
			try:
				item = Product.objects.get(id=item_id)
			except:
				raise Http404
			filenames = handle_uploaded_file(request.FILES['upload'],item_type,item_id)
			#加入到对象的图片列表中去
			if item_type == 'product':
				pi = Product_Images.objects.create(image=filenames['image_url'],thumb=filenames['thumb_url'],product=item)
			else:
				ai = Album.objects.create(image=filenames['image_url'],thumb=filenames['thumb_url'],item_type=item_type,item_id=item.id)
		elif item_type == 'article':
			try:
				item = Article.objects.get(id=item_id)
			except:
				raise Http404
			filenames = handle_uploaded_file(request.FILES['upload'],item_type,item_id)
			ai = Album.objects.create(image=filenames['image_url'],thumb=filenames['thumb_url'],item_type=item_type,item_id=item.id)
		else:
			raise Http404
		#判断是否是从CKEDITER传上来的
		if 'CKEditorFuncNum' in request.GET:
			logger.debug('请求来自CKEDITER.')
			script = '<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction("' + request.GET['CKEditorFuncNum'] + '","' + filenames['image_url'] + '");</script>';
			logger.debug('返回的script: %s' % [script])
			return HttpResponse(script,content_type='text/html;charset=UTF-8')
		return redirect('/file-upload/' + item_type + '/' + item_id + "/")
예제 #30
0
파일: order.py 프로젝트: imycartorg/imycart
def order_detail(request,id):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['menu_products'] = get_menu_products()
	ctx['page_name'] = 'My Orders'
	if request.method == 'GET':
		try:
			order = Order.objects.get(id=id)
		except Exception as err:
			logger.error('Can not find order %s' % (id))
			raise Http404

		ctx['order'] = order
		return render(request,System_Config.get_template_name() + '/order_view.html',ctx)
예제 #31
0
파일: file.py 프로젝트: icetusorg/cetusshop
def file_upload(request, item_type, item_id):
    ctx = {}
    ctx['action_url'] = '/admin/file-upload/' + item_type + '/' + item_id + "/"
    ctx['file_delete_url'] = '/file-delete/' + item_type
    ctx['host_item_id'] = item_id

    if request.method == 'GET':
        ctx['item_type'] = item_type
        ctx['extra_info'] = request.GET.get('extra-info')
        return TemplateResponse(
            request,
            System_Config.get_template_name('admin') + '/file_upload.html',
            ctx)
    else:
        ctx['result_message'] = '文件上传成功'

        result_extra = {}
        ctx['result_extra'] = json.dumps(result_extra)

        manual_name = request.POST.get('manual_name', 'noname')
        same_name_handle = request.POST.get('same_name_handle', 'reject')
        alt_value = request.POST.get('alt_value', '')
        filename_type = request.POST.get('filename_type', 'random')
        href = request.POST.get('href', '')
        sort = request.POST.get('sort', '0')
        extra_info = request.POST.get('extra_info', '')

        #长度和高度的限制,给自动缩放用,自动缩放是否启用,没有配置,默认为不缩放,或者最长边不超过1280

        if item_type == 'product' or item_type == 'product_album':
            try:
                item = Product.objects.get(id=item_id)
            except:
                raise Http404

            logger.debug("filename_type:%s" % filename_type)
            filenames = handle_uploaded_file(request.FILES['upload'],
                                             item_type, item_id, filename_type,
                                             manual_name, same_name_handle,
                                             get_scale_para('product'))
            if filenames['upload_result'] == False:
                ctx['result_message'] = filenames['upload_error_msg']
                return TemplateResponse(
                    request,
                    System_Config.get_template_name('admin') +
                    '/file_upload.html', ctx)
            # return HttpResponse(filenames['upload_error_msg'])

            real_name = filenames['real_name']
            thumb_name = filenames['real_thumb']
            file_path = filenames['real_path']

            # 加入到对象的图片列表中去
            is_show = request.POST.get('is_show_in_product_detail', False)

            if item_type == 'product':
                pi = Product_Images.objects.create(
                    image=filenames['image_url'],
                    thumb=filenames['thumb_url'],
                    product=item,
                    sort=sort,
                    is_show_in_product_detail=is_show,
                    alt_value=alt_value,
                    file_name=real_name,
                    thumb_name=thumb_name,
                    path=file_path)
                '''
				如果改商品原来没有图片,则自动把第一张作为主图
				'''
                if not item.image:
                    item.image = pi.image
                    item.thumb = pi.thumb
                    item.save()

                result_extra['img_id'] = pi.id
            else:
                ai = Album.objects.create(image=filenames['image_url'],
                                          thumb=filenames['thumb_url'],
                                          item_type=item_type,
                                          item_id=item.id,
                                          alt_value=alt_value,
                                          file_name=real_name,
                                          thumb_name=thumb_name,
                                          sort=sort,
                                          path=file_path)

                result_extra['img_id'] = ai.id
        elif item_type == 'article':
            try:
                item = Article.objects.get(id=item_id)
            except:
                raise Http404
            filenames = handle_uploaded_file(request.FILES['upload'],
                                             item_type, item_id, filename_type,
                                             manual_name, same_name_handle,
                                             get_scale_para('article'))
            if filenames['upload_result'] == False:
                ctx['result_message'] = filenames['upload_error_msg']
                return TemplateResponse(
                    request,
                    System_Config.get_template_name('admin') +
                    '/file_upload.html', ctx)

            real_name = filenames['real_name']
            thumb_name = filenames['real_thumb']
            file_path = filenames['real_path']

            logger.debug('Upload success!!!')
            ai = Album.objects.create(image=filenames['image_url'],
                                      thumb=filenames['thumb_url'],
                                      item_type=item_type,
                                      item_id=item.id,
                                      alt_value=alt_value,
                                      file_name=real_name,
                                      thumb_name=thumb_name,
                                      sort=sort,
                                      path=file_path)
            '''
			如果改文章原来没有图片,则自动把第一张作为主图
			'''
            if not item.image:
                item.image = ai.image
                item.thumb = ai.thumb
                item.save()
            result_extra['img_id'] = ai.id
            logger.debug('ai success!!!')

        elif item_type == 'attribute':
            try:
                item = Attribute_Group.objects.get(id=item_id)
            except:
                raise Http404
            filenames = handle_uploaded_file(request.FILES['upload'],
                                             item_type, item_id,
                                             request.POST['filename_type'],
                                             manual_name, same_name_handle,
                                             get_scale_para('attribute'))
            if filenames['upload_result'] == False:
                ctx['result_message'] = filenames['upload_error_msg']
                return TemplateResponse(
                    request,
                    System_Config.get_template_name('admin') +
                    '/file_upload.html', ctx)

            real_name = filenames['real_name']
            thumb_name = filenames['real_thumb']
            file_path = filenames['real_path']

            ai = Album.objects.create(image=filenames['image_url'],
                                      thumb=filenames['thumb_url'],
                                      item_type=item_type,
                                      item_id=item.id,
                                      alt_value=alt_value,
                                      file_name=real_name,
                                      thumb_name=thumb_name,
                                      sort=sort,
                                      path=file_path)
            result_extra['img_id'] = ai.id
            logger.info('Attribute_Group image upload success')
        elif item_type == 'slider':
            try:
                item = Slider.objects.get(id=item_id)
            except:
                raise Http404
            filenames = handle_uploaded_file(request.FILES['upload'],
                                             item_type, item_id,
                                             request.POST['filename_type'],
                                             manual_name, same_name_handle,
                                             get_scale_para('slider'))
            if filenames['upload_result'] == False:
                ctx['result_message'] = filenames['upload_error_msg']
                return TemplateResponse(
                    request,
                    System_Config.get_template_name('admin') +
                    '/file_upload.html', ctx)

            real_name = filenames['real_name']
            thumb_name = filenames['real_thumb']
            file_path = filenames['real_path']

            ai = Album.objects.create(image=filenames['image_url'],
                                      thumb=filenames['thumb_url'],
                                      item_type=item_type,
                                      item_id=item.id,
                                      alt_value=alt_value,
                                      href=href,
                                      file_name=real_name,
                                      thumb_name=thumb_name,
                                      sort=sort,
                                      path=file_path)
            result_extra['img_id'] = ai.id
            logger.info('Slider image upload success')
        elif item_type == 'attachment':
            try:
                item = Product.objects.get(id=item_id)
            except:
                raise Http404

            logger.debug("filename_type:%s" % filename_type)

            upload = request.FILES.get('upload', None)
            upload2 = request.FILES.get('upload2', None)

            if not upload2:
                upload2 = upload

            filenames = handle_uploaded_attachment_file(
                upload, upload2, item_type, item_id, filename_type,
                manual_name, same_name_handle)
            if filenames['upload_result'] == False:
                ctx['result_message'] = filenames['upload_error_msg']
                return TemplateResponse(
                    request,
                    System_Config.get_template_name('admin') +
                    '/file_upload.html', ctx)
            real_name = filenames['real_name']
            thumb_name = filenames['real_thumb']
            file_path = filenames['real_path']

            ai = Album.objects.create(image=filenames['image_url'],
                                      thumb=filenames['thumb_url'],
                                      item_type=item_type,
                                      item_id=item.id,
                                      alt_value=alt_value,
                                      file_name=real_name,
                                      thumb_name=thumb_name,
                                      sort=sort,
                                      path=file_path)

            result_extra['img_id'] = ai.id
        else:
            raise Http404

        logger.info('come in')
        # 判断是否是从CKEDITER传上来的
        if 'CKEditorFuncNum' in request.GET:
            logger.info('从CKEDITER')
            logger.debug('请求来自CKEDITER.')
            script = '<script type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction("' + request.GET[
                'CKEditorFuncNum'] + '","' + filenames[
                    'image_url'] + '");</script>'
            logger.debug('返回的script: %s' % [script])
            return HttpResponse(script, content_type='text/html;charset=UTF-8')

        return_url = '/admin/file-upload/' + item_type + '/' + item_id + "/"
        if 'return_url' in request.POST:
            return_url = request.POST.get('return_url')
            return redirect(return_url)

        result_extra['extra_info'] = extra_info
        ctx['result_extra'] = json.dumps(result_extra)
        return TemplateResponse(
            request,
            System_Config.get_template_name('admin') + '/file_upload.html',
            ctx)
예제 #32
0
def handle_uploaded_file(f,
                         type='other',
                         product_sn='-1',
                         file_name_type='random',
                         manual_name='noname',
                         same_name_handle='reject'):
    file_name = ""

    file_names = {}

    if not type.endswith('/'):
        type += '/'
    if not product_sn.endswith('/'):
        product_sn += '/'

    destination = None
    try:
        path = 'media/' + type + product_sn
        import os
        if not os.path.exists(path):
            os.makedirs(path)

        ext = f.name.split('.')[-1]
        logger.debug('filename origin:' + str(f.name))
        logger.debug(str(ext))

        #允许上传的类型
        file_allow = ['JPG', 'JPEG', 'PNG', 'GIF']
        if ext.upper() not in file_allow:
            raise Exception('%s File type is not allowed to upload.' % [ext])

        #20160616,koala加入对文件名生成的生成规则
        real_name = ''
        real_thumb = ''
        real_path = path
        if file_name_type == 'random':
            random_name = str(uuid.uuid1())
            file_name = path + random_name + '.' + ext
            file_thumb_name = path + random_name + '-thumb' + '.' + ext
            real_name = random_name + '.' + ext
            real_thumb = random_name + '-thumb' + '.' + ext
        elif file_name_type == 'origin':

            file_name = path + f.name
            name_list_tmp = f.name.split('.')
            length = len(name_list_tmp)
            name_list_tmp[length - 2] = name_list_tmp[length - 2] + '-thumb'
            file_thumb_name = path + '.'.join(name_list_tmp)

            real_name = f.name
            real_thumb = '.'.join(name_list_tmp)

        elif file_name_type == 'manual':
            file_name = path + manual_name + '.' + ext
            file_thumb_name = path + manual_name + '-thumb' + '.' + ext

            real_name = manual_name + '.' + ext
            real_thumb = manual_name + '-thumb' + '.' + ext

        else:
            raise Exception('file upload failed')

        logger.info('real_name : %s , real_thumb : %s' %
                    (real_name, real_thumb))

        # 判断文件是否已经存在
        if os.path.exists(file_name):
            if same_name_handle == 'reject':
                file_names['upload_result'] = False
                file_names['upload_error_msg'] = 'File already exists.'
                raise Exception('File already exists.')
            elif same_name_handle == 'rewrite':
                #覆盖,无需处理
                pass
            else:
                raise Exception('No such method: %s' % same_name_handle)

        destination = open(file_name, 'wb+')
        logger.debug('file_name: %s' % file_name)
        for chunk in f.chunks():
            destination.write(chunk)
        destination.close()

        result = thumbnail(file_name, file_thumb_name)
        if not result:
            file_names['upload_result'] = False
            file_names['upload_error_msg'] = 'Thumbnail failed.'
            raise Exception('Thumbnail failed.')
        else:
            file_names['upload_result'] = True
            file_names['image'] = file_name
            file_names['thumb'] = file_thumb_name
            file_names['real_name'] = real_name
            file_names['real_thumb'] = real_thumb
            file_names['real_path'] = real_path
            file_names['image_url'] = System_Config.get_base_url(
            ) + '/' + file_name
            file_names['thumb_url'] = System_Config.get_base_url(
            ) + '/' + file_thumb_name
    except Exception as e:
        #pass
        logger.error(str(e))
    finally:
        if destination:
            destination.close()
    return file_names
예제 #33
0
def recruit_basic_edit(request):
    ctx = {}

    result = {}
    result['success'] = False
    result['message'] = ''
    result['data'] = {}

    if request.method == 'GET':
        ctx = {}

        result = {}
        result['success'] = False
        result['message'] = ''
        result['data'] = {}

        id = request.GET.get('id', '')
        logger.debug('获取ID %s' % id)
        if id != '':
            try:
                recruit = Recruit.objects.get(id=id)
                ctx['recruit'] = recruit
            except Exception as err:
                logger.error('Can not find article which id is %s. The error message is %s' % (id, err))
        return TemplateResponse(request, System_Config.get_template_name('admin') + '/recruit_detail.html', ctx)
    elif request.method == 'POST':

        try:
            recruit = Recruit.objects.get(id=request.POST['id'])
            logger.debug('获取recruit %s' % recruit)
            form = recruit_basic_info_form(request.POST, instance=recruit)
        except:
            recruit = None
            form = recruit_basic_info_form(request.POST)
            logger.info('New recruit to store.')

        if form.is_valid():
            # 判断自定义文件名是否重复
            url = form.cleaned_data['static_file_name']
            if url:
                try:
                    a = Recruit.objects.get(static_file_name=url)
                except Exception as err:
                    a = None

                if a and a != recruit:
                    # 能找到,说明重名了
                    result['success'] = False
                    result['message'] = '自定义URL与%s重复!' % a.title
                    return JsonResponse(result)

            recruit = form.save()

            logger.info('招聘文章保存成功')
            result['success'] = True
            result['message'] = '招聘文章保存成功'
            data = {}
            data['recruit_id'] = recruit.id
            result['data'] = data
        else:
            result['success'] = False
            result['message'] = '招聘文章保存失败'
            result['data'] = {}

        return JsonResponse(result)
    else:
        raise Http404
예제 #34
0
파일: product.py 프로젝트: imycart/imycart
def detail(request,id):
	ctx = {}
	ctx['system_para'] = get_system_parameters()
	ctx['page_name'] = 'Product'
	try:
		product = Product.objects.get(id=id)
	except Exception as err:
		logger.error('找不到编号为 %s 的商品。' % [id,])
		raise Http404
	#由于存在外键关系,只需要查出product对象,product所关联的images可以在模板中用product.images.all获得。
	ctx['product'] = product
	price_min = product.price
	price_max = product.price
	for attribut in product.attributes.all():
		if attribut.price_adjusment > 0:
			if attribut.price_adjusment + product.price > price_max:
				price_max = attribut.price_adjusment + product.price
		else:
			if product.price + attribut.price_adjusment < price_min:
				price_min = product.price + attribut.price_adjusment
	ctx['price_min'] = price_min
	ctx['price_max'] = price_max
	if price_max - price_min < 0.01:
		ctx['has_price_range'] = False
	else:
		ctx['has_price_range'] = True
		
	if request.method =='GET': #正常访问,返回动态页面
		#检查商品是否已经加入了用户的愿望清单
		if request.user.is_authenticated():
			wish_list = request.user.wishs.all()
			for wish in wish_list:
				if product == wish.product:
					logger.debug('The product which id is %s has been added to user\'s wishlist.' % (product.id))
					ctx['is_my_wish'] = True
		return render(request,System_Config.get_template_name() + '/product_detail.html', ctx)
	elif request.method == 'POST':#通过ajax访问,生成静态文件
		content = render_to_string(System_Config.get_template_name() + '/product_detail.html', ctx)
		result_dict = {}
		try:
			import codecs,os
			#先获取商品所属分类,作为目录
			category_list = product.categorys.all()
			f = None
			for cat in category_list:
				dir = 'media/' + cat.get_dirs()
				if not os.path.exists(dir):
					os.makedirs(dir)
				f = codecs.open(dir + product.static_file_name ,'w','utf-8')
				f.write(content)
				f.close()
			result_dict['success'] = True
			result_dict['message'] = _('File already generated.')
			result_dict['static_url'] = dir + product.static_file_name
		except Exception as err:
			logger.error('写文件失败。' + str(err))
			result_dict['success'] = False
			result_dict['message'] = _('File generate failed.')
		finally:
			if f is not None:
				f.close()
		return JsonResponse(result_dict)
예제 #35
0
def view_list(request, category_id=None):
    ctx = {}
    ctx['system_para'] = get_system_parameters()
    ctx['menu_products'] = get_menu_products()
    ctx['page_name'] = 'Product'

    template = '/product_list.html'

    logger.debug('Parameters in request:%s' % request.GET)

    if request.method == 'GET':
        product_list = None
        sort_by = None
        reverse = False

        if 'direction' in request.GET:
            direction = request.GET['direction']
            if 'asc' == direction:
                reverse = True
            else:
                reverse = False

        if 'sort_by' in request.GET:
            sort_by = request.GET['sort_by']
            if not reverse:
                logger.debug('desc')
                product_list = Product.objects.filter(
                    is_publish=True).order_by(request.GET['sort_by'])
            else:
                logger.debug('asc')
                product_list = Product.objects.filter(
                    is_publish=True).order_by(
                        request.GET['sort_by']).reverse()

            ctx['direction'] = request.GET['direction']
        else:
            logger.debug("all products")
            if not reverse:
                order_by = '-sort_order'
            else:
                order_by = 'sort_order'
            product_list = Product.objects.filter(
                is_publish=True).order_by(order_by)

            logger.debug('Products count in product_list : [%s]' %
                         len(product_list))

        #按分类筛选
        logger.debug('category_id : %s ' % category_id)
        if category_id:
            #查找该分类是否设置了自定义的分类模板
            try:
                category = Category.objects.get(id=category_id)
                from .category import get_all_children
                cat_list = get_all_children(category, [])
                logger.debug('cat_list: %s' % cat_list)
                ctx['page_key_words'] = category.keywords
                ctx['page_description'] = category.short_desc
                if category.page_title:
                    ctx['page_name'] = category.page_title
                else:
                    ctx['page_name'] = category.name
                if category.category_template:
                    template = '/custmize/category/' + category.category_template
                product_list = product_list.filter(categorys__in=cat_list)
                product_list = list(set(product_list))
                #product_list = sorted(product_list,key= lambda product:product.update_time,reverse=True)
                if sort_by == 'create_time':
                    product_list = sorted(
                        product_list,
                        key=lambda product: product.create_time,
                        reverse=reverse)
                elif sort_by == 'market_price':
                    product_list = sorted(
                        product_list,
                        key=lambda product: product.market_price,
                        reverse=reverse)
                elif sort_by == 'name':
                    product_list = sorted(product_list,
                                          key=lambda product: product.name,
                                          reverse=reverse)
                else:
                    product_list = sorted(
                        product_list,
                        key=lambda product: product.sort_order,
                        reverse=reverse)
                logger.debug('Products count in product_list : [%s]' %
                             len(product_list))

                ctx['category'] = category
            except Exception as err:
                logger.error(
                    'Can not find category which id is %s. Error message is %s '
                    % (category_id, err))

            #设置分类专用的标题和描述
            ctx['category_title'] = category.name
            ctx['category_desc'] = category.description

        if 'page_size' in request.GET:
            page_size = request.GET['page_size']
        else:
            try:
                page_size = int(
                    System_Config.objects.get(name='product_page_size').val)
            except:
                page_size = 12

        product_list, page_range = my_pagination(request=request,
                                                 queryset=product_list,
                                                 display_amount=page_size)

        ctx['product_list'] = product_list
        ctx['page_range'] = page_range
        return TemplateResponse(request,
                                System_Config.get_template_name() + template,
                                ctx)
예제 #36
0
파일: order.py 프로젝트: chree188/cetusshop
def place_order(request):
    logger.info('Start to place order.')
    ctx = {}
    ctx['system_para'] = get_system_parameters()
    ctx['menu_products'] = get_menu_products()
    ctx['page_name'] = 'Place Order'
    if request.method == 'POST':
        logger.debug('address_id:' + str(request.POST['address_id']))
        try:
            address = Address.objects.get(id=request.POST['address_id'])
        except:
            ctx['content'] = _('Address is not correct')
            return TemplateResponse(
                request,
                System_Config.get_template_name() + '/info_show.html', ctx)

        if address not in request.user.addresses.all():
            #如果这个地址不是这个用户的,报错
            ctx['content'] = 'System Error.Please try again.'
            return TemplateResponse(
                request,
                System_Config.get_template_name() + '/info_show.html', ctx)

        #金额
        sub_total, shipping, discount, total, remark, express_type = request.POST[
            'sub_total'], request.POST['shipping'], request.POST[
                'discount'], request.POST['total'], request.POST[
                    'remark'], request.POST['express']

        promotion_code = request.POST.get('promotion_code')
        cart_product_id = request.POST.getlist('cart_product_id', [])
        #logger.debug('>>>>>0:sub_total=' + str(sub_total))

        try:
            express = ExpressType.objects.get(id=express_type)
        except Exception as err:
            logger.error('Can not find express_type %s. \n Error Message:%s' %
                         (express_type, err))
            ctx['content'] = 'System Error.Please try again.'
            return TemplateResponse(
                request,
                System_Config.get_template_name() + '/info_show.html', ctx)

        from .cart import get_prices
        prices, promotion = get_prices(cart_product_id_list=cart_product_id,
                                       express_type=express,
                                       discount_code=promotion_code)

        if abs(float(shipping) - float(prices['shipping'])) > 0.01:
            logger.error(
                'Amount shipping check faild! Amount in client is [%s],but the server need [%s].'
                % (shipping, prices['shipping']))
            raise Exception('System error.Please try again.')

        if abs(float(discount) - float(prices['discount'])) > 0.01:
            logger.error(
                'Amount discount check faild! Amount in client is [%s],but the server need [%s].'
                % (discount, prices['discount']))
            raise Exception('System error.Please try again.')

        if abs(float(total) - float(prices['total'])) > 0.01:
            logger.error(
                'Amount total check faild! Amount in client is [%s],but the server need [%s].'
                % (total, prices['total']))
            raise Exception('System error.Please try again.')

        logger.info('Amount check success!')

        #生成主订单
        #logger.debug('>>>>>1')
        order = Order.objects.create(order_number=get_serial_number(),
                                     user=request.user,
                                     status=Order.ORDER_STATUS_PLACE_ORDER,
                                     country=address.country,
                                     province=address.province,
                                     city=address.city,
                                     district=address.district,
                                     address_line_1=address.address_line_1,
                                     address_line_2=address.address_line_2,
                                     first_name=address.first_name,
                                     last_name=address.last_name,
                                     zipcode=address.zipcode,
                                     tel=address.tel,
                                     mobile=address.mobile,
                                     email=request.user.email,
                                     products_amount=sub_total,
                                     shipping_fee=shipping,
                                     discount=discount,
                                     order_amount=total,
                                     to_seller=remark,
                                     express_type_name=express.name,
                                     promotion_code=promotion_code)

        for cp_id in cart_product_id:
            cp = Cart_Products.objects.get(id=cp_id)

            #amount_to_check = amount_to_check + cp.get_total()
            #向主订单加入商品
            #logger.debug('>>>>>5:product.id='+str(cp.product.id))

            pa_id = None
            pa_name = ''
            pa_item_number = None
            if cp.product_attribute:
                pa_id = cp.product_attribute.id
                pa_name = cp.product_attribute.get_grouped_attribute_desc()
                pa_item_number = cp.product_attribute.sub_item_number

            op = Order_Products.objects.create(
                product_id=cp.product.id,
                product_attribute_id=pa_id,
                order=order,
                name=cp.product.name,
                short_desc=cp.product.short_desc,
                price=cp.get_product_price(),
                thumb=cp.product.thumb,
                image=cp.product.image,
                quantity=cp.quantity,
                product_attribute_name=pa_name,
                product_attribute_item_number=pa_item_number)

            #logger.debug('>>>>>6:op.id='+str(op.id))
            # 20160614,考拉,加入了扣减库存的逻辑
            if cp.product_attribute:
                product_attribute = cp.product_attribute
                product_attribute.quantity = product_attribute.quantity - cp.quantity
                if product_attribute.quantity < 0:
                    ctx['content'] = 'The product "%s" is sold out.' % product_attribute.product.name
                    ctx['backurl'] = '/cart/show/'
                    return TemplateResponse(
                        request,
                        System_Config.get_template_name() + '/info_show.html',
                        ctx)

                    #raise Exception('The product "%s" is sold out.' % product_attribute.product.name)
                product_attribute.save()
            else:
                product = cp.product
                product.quantity = product.quantity - cp.quantity
                if product.quantity < 0:
                    ctx['content'] = 'The product "%s" is sold out.' % product.name
                    ctx['backurl'] = '/cart/show/'
                    return TemplateResponse(
                        request,
                        System_Config.get_template_name() + '/info_show.html',
                        ctx)
                    #raise Exception('The product "%s" is sold out.' % product.name)
                product.save()

            #删除购物车中商品
            cp.delete()
            #logger.debug('>>>>>8:cp.delete')

        return redirect('/cart/payment/' + str(order.id))
예제 #37
0
def detail(request, id):
    ctx = {}
    ctx['system_para'] = get_system_parameters()
    ctx['menu_products'] = get_menu_products()
    ctx['page_name'] = 'Product'
    try:
        product = Product.objects.get(id=id)
    except Exception as err:
        logger.error('找不到编号为 %s 的商品。' % [
            id,
        ])
        raise Http404
    #由于存在外键关系,只需要查出product对象,product所关联的images可以在模板中用product.images.all获得。
    ctx['product'] = product
    ctx['page_key_words'] = product.keywords
    ctx['page_description'] = product.short_desc
    if product.page_title:
        ctx['page_name'] = product.page_title
    else:
        ctx['page_name'] = product.name
    '''价格规则改成判断数量了,这段暂时不要
	price_min = product.price
	price_max = product.price
	for attribut in product.attributes.all():
		if attribut.price_adjusment > 0:
			if attribut.price_adjusment + product.price > price_max:
				price_max = attribut.price_adjusment + product.price
		else:
			if product.price + attribut.price_adjusment < price_min:
				price_min = product.price + attribut.price_adjusment
	ctx['price_min'] = price_min
	ctx['price_max'] = price_max
	
	
	
	if product.get_max_price_max - price_min < 0.01:
		ctx['has_price_range'] = False
	else:
		ctx['has_price_range'] = True
	'''

    if request.method == 'GET':  #正常访问,返回动态页面
        #检查商品是否已经加入了用户的愿望清单
        if request.user.is_authenticated():
            wish_list = request.user.wishs.all()
            for wish in wish_list:
                if product == wish.product:
                    logger.debug(
                        'The product which id is %s has been added to user\'s wishlist.'
                        % (product.id))
                    ctx['is_my_wish'] = True

        #获取特定的模板,先判断商品是否设置了模板,没有则判断商品所在的分类是否设置了指定模板,都没有,则使用系统统一模板
        template = '/product_detail.html'

        if product.categorys.count() > 0:
            cat = product.categorys.all()[0]
            if cat.detail_template != '':
                template = '/custmize/product/' + cat.detail_template

        if product.detail_template != '':
            if product.detail_template.upper() == 'USE_DEFAULT':
                #强行指定用默认模板
                template = '/product_detail.html'
            else:
                template = '/custmize/product/' + product.detail_template

        return TemplateResponse(request,
                                System_Config.get_template_name() + template,
                                ctx)
    elif request.method == 'POST':  #通过ajax访问,生成静态文件
        content = render_to_string(
            System_Config.get_template_name() + '/product_detail.html', ctx)
        result_dict = {}
        try:
            import codecs, os
            #先获取商品所属分类,作为目录
            category_list = product.categorys.all()
            f = None
            dir = ''
            for cat in category_list:
                dir = 'www/' + cat.get_dirs()
                dir_http = cat.get_dirs()
                if not os.path.exists(dir):
                    os.makedirs(dir)
                f = codecs.open(dir + product.static_file_name, 'w', 'utf-8')
                f.write(content)
                f.close()
            result_dict['success'] = True
            result_dict['message'] = _('File already generated.')
            result_dict['static_url'] = dir_http + product.static_file_name
        except Exception as err:
            logger.error('写文件失败。' + str(err))
            result_dict['success'] = False
            result_dict['message'] = _('File generate failed.')
        finally:
            if f is not None:
                f.close()
        return JsonResponse(result_dict)
예제 #38
0
def list_view(request):
    ctx = {}
    ctx['system_para'] = get_system_parameters()
    ctx['page_name'] = '文章管理'

    if request.method == 'GET':

        type = request.GET.get('type', '')
        ctx['type'] = type
        # 默认只查询博客文章
        if not type:
            type = '0'

        query_item = request.GET.get('query_item', '')
        ctx['query_item'] = query_item
        logger.debug('query item : %s' % query_item)

        item_value = request.GET.get('item_value', '')
        ctx['item_value'] = item_value
        logger.debug('item_value : %s' % item_value)
        query_busi_category = request.GET.get('query_busi_category', '')
        ctx['query_busi_category_id'] = query_busi_category
        try:
            busi_cat = ArticleBusiCategory.objects.get(id=query_busi_category)
            ctx['query_busi_category_name'] = busi_cat.name
        except:
            ctx['query_busi_category_name'] = ''

        logger.debug('query_busi_category : %s' % query_busi_category)

        # all = Article.objects.all().order_by('-update_time')
        all = Article.objects.all().order_by('-sort_order')
        if type:
            all = all.filter(category=type)

        if query_item == 'title':
            if item_value:
                from django.db.models import Q
                all = all.filter(Q(title__icontains=item_value))

        if query_busi_category:
            all = all.filter(busi_category=query_busi_category)

        page_size = get_page_size()

        count = len(all)
        artile_list, page_range, current_page = my_pagination(
            request=request, queryset=all, display_amount=page_size)
        logger.debug('current_page:%s' % current_page)

        # 为页面准备分类的下拉列表
        from shopcart.myadmin.article_busi_category import get_all_category
        busi_category_list = get_all_category()
        logger.debug('busi_category_list : %s' % busi_category_list)
        ctx['busi_category_list'] = busi_category_list

        ctx['article_list'] = artile_list
        ctx['page_range'] = page_range
        ctx['page_size'] = page_size
        ctx['current_page'] = current_page
        ctx['article_count'] = count
        return TemplateResponse(
            request,
            System_Config.get_template_name('admin') + '/article_list.html',
            ctx)
    else:
        raise Http404
예제 #39
0
파일: file.py 프로젝트: icetusorg/cetusshop
def file_list_show(request, item_type, item_id):
    ctx = {}
    ctx['action_url'] = '/admin/file-upload/' + item_type + '/' + item_id + "/"
    ctx['file_delete_url'] = '/file-delete/' + item_type
    ctx['host_item_id'] = item_id
    ctx['item_type'] = item_type
    if request.method == 'GET':
        if item_type == 'product' or item_type == 'product_album':
            try:
                item = Product.objects.get(id=item_id)
                ctx['item'] = item
                try:
                    image_list = Product_Images.objects.filter(
                        product=item).order_by('create_time').reverse()
                    if item_type == 'product_album':
                        image_list = Album.objects.filter(
                            item_type=item_type,
                            item_id=item.id).order_by('create_time').reverse()
                except:
                    image_list = []
            except:
                raise Http404
        elif item_type == 'article':
            try:
                item = Article.objects.get(id=item_id)
                ctx['item'] = item
                try:
                    image_list = Album.objects.filter(
                        item_type=item_type,
                        item_id=item.id).order_by('create_time').reverse()
                except:
                    image_list = []
            except:
                raise Http404
        elif item_type == 'attribute':
            try:
                item = Attribute_Group.objects.get(id=item_id)
                ctx['item'] = item
                try:
                    image_list = Album.objects.filter(
                        item_type=item_type,
                        item_id=item.id).order_by('create_time').reverse()
                except:
                    image_list = []
            except:
                raise Http404
        elif item_type == 'slider':
            try:
                item = Slider.objects.get(id=item_id)
                ctx['item'] = item
                try:
                    image_list = Album.objects.filter(
                        item_type=item_type,
                        item_id=item.id).order_by('create_time').reverse()
                except:
                    image_list = []
            except:
                raise Http404
        elif item_type == 'attachment':
            try:
                item = Product.objects.get(id=item_id)
                ctx['item'] = item
                try:
                    image_list = Album.objects.filter(
                        item_type=item_type,
                        item_id=item.id).order_by('create_time').reverse()
                    logger.info(image_list)
                except:
                    image_list = []
            except:
                raise Http404
        else:
            raise Http404

        page_size = 12
        count = image_list.count()
        image_list, page_range, current_page = my_pagination(
            request=request, queryset=image_list, display_amount=page_size)
        ctx['image_list'] = image_list
        ctx['page_range'] = page_range
        ctx['page_size'] = page_size
        ctx['current_page'] = current_page
        ctx['item_count'] = count
        return TemplateResponse(
            request,
            System_Config.get_template_name('admin') + '/picture_list.html',
            ctx)
    else:
        raise Http404
예제 #40
0
def ship_out(request):
    result_dict = {}
    if request.method == 'POST':
        #logger.debug('request.POST:%s' % request.POST)

        try:
            order_id = request.POST.get('order_id', '')
            order = Order.objects.get(id=order_id)
        except Exception as err:
            logger.error(
                'Save shippment which id is [%s] faild. \n Error Message:%s' %
                (order_id, err))
            result_dict['success'] = False
            result_dict['message'] = '订单号为%s的订单找不到!' % order_id
            return JsonResponse(result_dict)

        try:
            express_id = request.POST.get('express_id', '')
            express = Express.objects.get(id=express_id)
        except Exception as err:
            logger.error(
                'Save shippment which id is [%s] faild. Because of the express which id is %s can not be found. \n Error Message:%s'
                % (order_id, express_id, err))
            result_dict['success'] = False
            result_dict['message'] = 'ID号为%s的快递公司找不到!' % express_id
            return JsonResponse(result_dict)

        from shopcart.forms import order_shippment_form
        form = order_shippment_form(request.POST)
        if form.is_valid():
            order_shippment = form.save()
            order_shippment.order = order
            order_shippment.shipper_name = express.name
            order_shippment.express = express
            order_shippment.save()
            #修改订单状态
            is_all_shipped = request.POST.get('is_all_shipped', 'true')
            if is_all_shipped == 'false':
                order.status = Order.ORDER_STATUS_PART_SHIPPING
            else:
                order.status = Order.ORDER_STATUS_SHIPPING
            order.save()

            result_dict['success'] = True
            result_dict['message'] = '发货成功'
            return JsonResponse(result_dict)
        else:
            result_dict['success'] = False
            result_dict['message'] = '表单填写的内容不合法,请检查。'
            return JsonResponse(result_dict)
    else:
        ctx = {}
        ctx['system_para'] = get_system_parameters()
        ctx['page_name'] = '发货管理'

        order_id = request.GET.get('order_id', '')
        try:
            order = Order.objects.get(id=order_id)
        except Exception as err:
            logger.error('Can not find order [%s]. \n Error Message:%s' %
                         (order_id, err))
            raise Http404

        #快递列表
        express_list = Express.objects.filter(is_in_use=True).filter(
            is_delete=False)
        express_type_list = ExpressType.objects.filter(is_in_use=True).filter(
            is_delete=False)
        ctx['express_type_list'] = express_type_list

        express_list_result = express_list
        if order.express_type_id != 0:
            try:
                logger.debug("1.1")
                express_list_result = express_list.filter(
                    express_type=order.express_type_id)
                logger.debug("1.2 : %s " % express_list_result)
            except Exception as err:
                logger.debug('1.3 : %s ' % err)

        ctx['express_list'] = express_list_result

        ctx['order'] = order
        return TemplateResponse(
            request,
            System_Config.get_template_name('admin') +
            '/order_shippment_detail.html', ctx)
예제 #41
0
def article_basic_edit(request):
    ctx = {}

    result = {}
    result['success'] = False
    result['message'] = ''
    result['data'] = {}

    # 加载自定义模板供选择
    from .file import file_list
    template_list = file_list(
        System_Config.get_template_name('client') + '/custmize/',
        'custmize_template_article')
    logger.debug('custome_templates: %s' % template_list)
    ctx['custmize_template'] = template_list

    if request.method == 'GET':
        id = request.GET.get('id', '')
        method = request.GET.get('method', 'blog')
        if id != '':
            try:
                article = Article.objects.get(id=id)
                ctx['article'] = article

                # 图片处理URL
                ctx['upload_url'] = '/admin/file-upload/article/%s/' % id
                logger.debug('upload_url:%s' % ctx['upload_url'])

                ctx['file_delete_url'] = '/file-delete/article'

                try:
                    ctx['image_list'] = Album.objects.filter(
                        item_type='article').filter(
                            item_id=id).order_by('create_time').reverse()
                    logger.debug("ctx['image_list']:%s" % ctx['image_list'])
                except Exception as err:
                    logger.error("Error:%s" % err)
                    ctx['image_list'] = []

                logger.debug('article category:%s' % article.category)

                if article.category == Article.ARTICLE_CATEGORY_BLOG:
                    ctx['is_blog'] = True
                else:
                    ctx['is_blog'] = False

            except Exception as err:
                logger.error(
                    'Can not find article which id is %s. The error message is %s'
                    % (id, err))
                if method == 'blog':
                    ctx['is_blog'] = True
                else:
                    ctx['is_blog'] = False
        else:
            if method == 'blog':
                ctx['is_blog'] = True
            else:
                ctx['is_blog'] = False

        # 放入文章的业务分类
        from .article_busi_category import get_all_category

        ctx['category_list'] = get_all_category()
        return TemplateResponse(
            request,
            System_Config.get_template_name('admin') + '/article_detail.html',
            ctx)
    elif request.method == 'POST':
        try:
            article = Article.objects.get(id=request.POST['id'])
            form = article_basic_info_form(request.POST, instance=article)
        except:
            article = None
            form = article_basic_info_form(request.POST)
            logger.info('New article to store.')

        if form.is_valid():
            article = form.save()

            # # 只有属于博客类的文章才需要保存分类
            # if article.category == Article.ARTICLE_CATEGORY_BLOG:
            #     category_id = request.POST.get('busi_category', '')
            #     if category_id:
            #         try:
            #             category = ArticleBusiCategory.objects.get(id=category_id)
            #         except Exception as err:
            #             logger.error('Can not find article_busi_category [%s].\nError Message:%s' % (category_id, err))
            #             result['success'] = False
            #             result['message'] = '文章保存失败,请选择文章分类。'
            #             result['data'] = {}
            #             return JsonResponse(result)
            #         article.busi_category = category
            #         article.save()

            result['success'] = True
            result['message'] = '文章保存成功'
            data = {}
            data['article_id'] = article.id
            result['data'] = data
        else:
            result['success'] = False
            result['message'] = '文章保存失败'
            result['data'] = {}

        return JsonResponse(result)
    else:
        raise Http404