def menu_manage_merge(request, c): acount = MemoryCached.get_account() #获取系统唯一的公众号 if request.method == 'GET': if request.GET.has_key('id'): id = request.GET['id'] accountMenu = get_object_or_404(models.AccountMenu, id=id) if accountMenu: c.update({'menu': accountMenu}) rootMenu_qs = models.AccountMenu.objects.filter(id=1) if not rootMenu_qs: rootMenu = models.AccountMenu() rootMenu.id = 1 rootMenu.parent = models.AccountMenu() rootMenu.save() else: rootMenu = rootMenu_qs[0] parent_menus = models.AccountMenu.objects.filter(wxpAccount=acount, parent=rootMenu) c.update({'parent_menus': parent_menus}) c.update(csrf(request)) return render_to_response('wxcms/menu_merge.html', c, context_instance=RequestContext(request)) else: accountMenu = models.AccountMenu() if request.POST.get('id', None): #修改 accountMenu = get_object_or_404(models.AccountMenu, id=request.POST['id']) else: #新建 accountMenu.wxpAccount = MemoryCached.get_account() accountMenu.name = request.POST['name'] menuType = request.POST['type'] accountMenu.url = request.POST['url'] accountMenu.sort = request.POST['sort'] parentId = request.POST['parentId'] parentMenu = get_object_or_404(models.AccountMenu, id=parentId) accountMenu.parent = parentMenu accountMenu.type = menuType if menuType == 'click': #点击事件 accountMenu.url = '' eventType = request.POST['eventType'] if eventType == 'key': #关键字消息 accountMenu.key = request.POST['keyname'] accountMenu.accountMsgIds = '' else: accountMenu.url = request.POST['url'] accountMenu.save() return HttpResponseRedirect('/wxcms/menu/list/')
def menu_manage_merge(request,c): acount = MemoryCached.get_account()#获取系统唯一的公众号 if request.method == 'GET': if request.GET.has_key('id'): id = request.GET['id'] accountMenu = get_object_or_404(models.AccountMenu,id=id) if accountMenu: c.update({'menu':accountMenu}) rootMenu_qs = models.AccountMenu.objects.filter(id=1) if not rootMenu_qs: rootMenu = models.AccountMenu() rootMenu.id = 1 rootMenu.parent = models.AccountMenu() rootMenu.save() else: rootMenu = rootMenu_qs[0] parent_menus = models.AccountMenu.objects.filter(wxpAccount=acount,parent=rootMenu) c.update({'parent_menus':parent_menus}) c.update(csrf(request)) return render_to_response('wxcms/menu_merge.html', c, context_instance=RequestContext(request)) else: accountMenu = models.AccountMenu() if request.POST.get('id',None):#修改 accountMenu = get_object_or_404(models.AccountMenu,id=request.POST['id']) else:#新建 accountMenu.wxpAccount = MemoryCached.get_account() accountMenu.name = request.POST['name'] menuType = request.POST['type'] accountMenu.url = request.POST['url'] accountMenu.sort = request.POST['sort'] parentId = request.POST['parentId'] parentMenu = get_object_or_404(models.AccountMenu,id=parentId) accountMenu.parent = parentMenu accountMenu.type = menuType if menuType == 'click':#点击事件 accountMenu.url = '' eventType = request.POST['eventType'] if eventType == 'key':#关键字消息 accountMenu.key = request.POST['keyname'] accountMenu.accountMsgIds = '' else: accountMenu.url = request.POST['url'] accountMenu.save() return HttpResponseRedirect('/wxcms/menu/list/')
def msgtext_manage_merge(request,c): if request.method == 'GET': if request.GET.has_key('id'): id = request.GET['id'] accountMsg = get_object_or_404(models.AccountMsg,id=id) if accountMsg: c.update({'accountMsg':accountMsg}) c.update(csrf(request)) return render_to_response('wxcms/msgtext_merge.html', c, context_instance=RequestContext(request)) else: accountMsg = models.AccountMsg() text = models.AccountText() if request.POST.get('id',None):#修改 accountMsg = get_object_or_404(models.AccountMsg,id=request.POST['id']) text = accountMsg.accounttext else: accountMsg.wxpAccount = MemoryCached.get_account() accountMsg.inputCode = request.POST['inputCode'] accountMsg.msgType = consts.MsgType.TEXT accountMsg.save() text.content = request.POST['content'] text.accountMsg = accountMsg text.save() return HttpResponseRedirect('/wxcms/msgtext/list/')
def wx_urltoken(request): c = {'cur_nav':'urltoken'} #获取唯一的一个公众号,多账号请开发者自行处理 account = MemoryCached.get_account() if request.method == 'POST': account.account = request.POST['account'] account.appid = request.POST['appid'] account.appsecret = request.POST['appsecret'] msgtype = request.POST['msgtype'] msgcount = request.POST['msgcount'] account.msgtype = int(msgtype) account.msgcount = int(msgcount) u_ext = account.account url = 'http://'+request.get_host()+'/wxapi/inter/%s/' %u_ext token = uuid.uuid4().get_hex() account.url = url account.token = token account.save() c.update({'successflag':True}) c.update({'account':account}) c.update(csrf(request)) return render_to_response("wxcms/urltoken.html", c, context_instance=RequestContext(request))
def msgtext_manage_merge(request, c): if request.method == 'GET': if request.GET.has_key('id'): id = request.GET['id'] accountMsg = get_object_or_404(models.AccountMsg, id=id) if accountMsg: c.update({'accountMsg': accountMsg}) c.update(csrf(request)) return render_to_response('wxcms/msgtext_merge.html', c, context_instance=RequestContext(request)) else: accountMsg = models.AccountMsg() text = models.AccountText() if request.POST.get('id', None): #修改 accountMsg = get_object_or_404(models.AccountMsg, id=request.POST['id']) text = accountMsg.accounttext else: accountMsg.wxpAccount = MemoryCached.get_account() accountMsg.inputCode = request.POST['inputCode'] accountMsg.msgType = consts.MsgType.TEXT accountMsg.save() text.content = request.POST['content'] text.accountMsg = accountMsg text.save() return HttpResponseRedirect('/wxcms/msgtext/list/')
def wx_urltoken(request): c = {'cur_nav': 'urltoken'} #获取唯一的一个公众号,多账号请开发者自行处理 account = MemoryCached.get_account() if request.method == 'POST': account.account = request.POST['account'] account.appid = request.POST['appid'] account.appsecret = request.POST['appsecret'] msgtype = request.POST['msgtype'] msgcount = request.POST['msgcount'] account.msgtype = int(msgtype) account.msgcount = int(msgcount) u_ext = account.account url = 'http://' + request.get_host() + '/wxapi/inter/%s/' % u_ext token = uuid.uuid4().get_hex() account.url = url account.token = token account.save() c.update({'successflag': True}) c.update({'account': account}) c.update(csrf(request)) return render_to_response("wxcms/urltoken.html", c, context_instance=RequestContext(request))
def menu_manage_list(request, c): acount = MemoryCached.get_account() #获取系统唯一的公众号 menu_objs = models.AccountMenu.objects.filter(wxpAccount=acount).order_by( 'parent', 'sort') c.update({'menu_objs': menu_objs}) return render_to_response("wxcms/menu_list.html", c, context_instance=RequestContext(request))
def msgnews_manage_merge(request, c): if request.method == 'GET': if request.GET.has_key('id'): id = request.GET['id'] accountMsg = get_object_or_404(models.AccountMsg, id=id) if accountMsg: c.update({'accountMsg': accountMsg}) c.update(csrf(request)) return render_to_response('wxcms/msgnews_merge.html', c, context_instance=RequestContext(request)) else: accountMsg = models.AccountMsg() news = models.AccountNews() if request.POST.get('id', None): #修改 accountMsg = get_object_or_404(models.AccountMsg, id=request.POST['id']) news = accountMsg.accountnews else: accountMsg.wxpAccount = MemoryCached.get_account() accountMsg.inputCode = request.POST['inputCode'] accountMsg.msgType = consts.MsgType.NEWS accountMsg.save() news.title = request.POST.get('title', None) news.author = request.POST.get('author', None) news.brief = request.POST.get('brief', None) news.description = request.POST.get('description', None) news.showPic = request.POST.get('showPic', 0) news.sort = request.POST.get('sort', 1) news.accountMsg = accountMsg if request.FILES.get('imageFile', None): upload = request.FILES['imageFile'] file_name = upload.name if RegexValidator.picture(file_name): upload_filename = get_upload_filename('images', file_name) image = Image.open(upload) image.thumbnail((290, 160), Image.ANTIALIAS) #对图片进行等比缩放 image.save(upload_filename) #保存图片 news.picPath = upload_filename[len(settings.MEDIA_URL):] picUrl = 'http://' + request.get_host( ) + '/static/%s' % news.picPath news.picUrl = picUrl news.save() if request.POST.get('url', None): news.url = request.POST['url'] else: news.url = 'http://' + request.get_host( ) + '/wxcms/article/read/?id=%s' % (str(news.id)) news.save() return HttpResponseRedirect('/wxcms/msgnews/list/')
def wx_request(request,wxact): if(request.method == 'GET'):#微信平台验证,account.type = 0 account = MemoryCached.get_account() if account: timestamp = request.GET['timestamp'] nonce = request.GET['nonce'] signature = request.GET['signature'] echostr = request.GET['echostr'] token = account.token #token if client.valid_url(token, timestamp, nonce, signature): #验证通过,将account设置为开发者类型:更新数据库的 enable,type字段 return HttpResponse(echostr) return HttpResponse('error') else:#微信平台request的post消息 xml = request.POST.keys()[0]#post的数据 account = MemoryCached.get_account() if account and xml: q_obj = process.get_request_obj(xml.encode('UTF-8'))#获取请求对象dict rep_xml = process.generic_response_obj(account,q_obj)#根据account分发处理业务 if rep_xml: return HttpResponse(rep_xml) return HttpResponse('error')
def msgnews_manage_merge(request,c): if request.method == 'GET': if request.GET.has_key('id'): id = request.GET['id'] accountMsg = get_object_or_404(models.AccountMsg,id=id) if accountMsg: c.update({'accountMsg':accountMsg}) c.update(csrf(request)) return render_to_response('wxcms/msgnews_merge.html', c, context_instance=RequestContext(request)) else: accountMsg = models.AccountMsg() news = models.AccountNews() if request.POST.get('id',None):#修改 accountMsg = get_object_or_404(models.AccountMsg,id=request.POST['id']) news = accountMsg.accountnews else: accountMsg.wxpAccount = MemoryCached.get_account() accountMsg.inputCode = request.POST['inputCode'] accountMsg.msgType = consts.MsgType.NEWS accountMsg.save() news.title = request.POST.get('title',None) news.author = request.POST.get('author',None) news.brief = request.POST.get('brief',None) news.description = request.POST.get('description',None) news.showPic = request.POST.get('showPic',0) news.sort = request.POST.get('sort',1) news.accountMsg = accountMsg if request.FILES.get('imageFile',None): upload = request.FILES['imageFile'] file_name = upload.name if RegexValidator.picture(file_name): upload_filename = get_upload_filename('images',file_name) image = Image.open(upload) image.thumbnail((290,160),Image.ANTIALIAS)#对图片进行等比缩放 image.save(upload_filename)#保存图片 news.picPath = upload_filename[len(settings.MEDIA_URL):] picUrl = 'http://' + request.get_host() + '/static/%s' %news.picPath news.picUrl = picUrl news.save() if request.POST.get('url',None): news.url = request.POST['url'] else: news.url = 'http://' + request.get_host() + '/wxcms/article/read/?id=%s' %(str(news.id)) news.save() return HttpResponseRedirect('/wxcms/msgnews/list/')
def wx_request(request, wxact): if (request.method == 'GET'): #微信平台验证,account.type = 0 account = MemoryCached.get_account() if account: timestamp = request.GET['timestamp'] nonce = request.GET['nonce'] signature = request.GET['signature'] echostr = request.GET['echostr'] token = account.token #token if client.valid_url(token, timestamp, nonce, signature): #验证通过,将account设置为开发者类型:更新数据库的 enable,type字段 return HttpResponse(echostr) return HttpResponse('error') else: #微信平台request的post消息 xml = request.POST.keys()[0] #post的数据 account = MemoryCached.get_account() if account and xml: q_obj = process.get_request_obj(xml.encode('UTF-8')) #获取请求对象dict rep_xml = process.generic_response_obj(account, q_obj) #根据account分发处理业务 if rep_xml: return HttpResponse(rep_xml) return HttpResponse('error')
def delete_wx_menu(request): c = {'wx_type':'delete'} if request.method == 'POST': wxAccount = MemoryCached.get_account() rst_dict = client.delete_menu(wxAccount) if rst_dict and rst_dict.get('menu',None): c.update({'success_flag':1,'errormsg':u'删除菜单成功'})#删除菜单成功 else: errcode = rst_dict.get('errcode',None) c.update({ 'success_flag':0, 'errormsg':consts.WXAPI.ERROR_INFO[str(errcode)] })#查看菜单失败 return render_to_response("common/result.html", c, context_instance=RequestContext(request)) else: raise Http404()
def delete_wx_menu(request): c = {'wx_type': 'delete'} if request.method == 'POST': wxAccount = MemoryCached.get_account() rst_dict = client.delete_menu(wxAccount) if rst_dict and rst_dict.get('menu', None): c.update({'success_flag': 1, 'errormsg': u'删除菜单成功'}) #删除菜单成功 else: errcode = rst_dict.get('errcode', None) c.update({ 'success_flag': 0, 'errormsg': consts.WXAPI.ERROR_INFO[str(errcode)] }) #查看菜单失败 return render_to_response("common/result.html", c, context_instance=RequestContext(request)) else: raise Http404()
def create_wx_menu(request): c = {'wx_type':'create'} if request.method == 'POST': wxAccount = MemoryCached.get_account() if wxAccount.appid and wxAccount.appsecret: menu_data = process.get_account_wx_menus(wxAccount) if menu_data: rst_dict = client.create_menu(wxAccount,menu_data) if rst_dict and rst_dict.get('errcode',None) == 0: c.update({'success_flag':1,'errormsg':u'创建菜单成功'})#创建菜单成功 else: errcode = rst_dict.get('errcode',None) c.update({ 'success_flag':0, 'errormsg':'创建菜单失败:' + consts.WXAPI.ERROR_INFO.get(str(errcode),'请检查菜单是否符合规范') })#创建菜单失败 else: c.update({'success_flag':0,'errormsg':u'创建菜单失败:没有菜单可以创建'})#没有菜单可以创建 else: c.update({'success_flag':0,'errormsg':u'请到"账号基本信息"中完善此账号的App Id和App Secret信息'})#没有菜单可以创建 return render_to_response("common/result.html", c, context_instance=RequestContext(request)) else:#GET方法请求 raise Http404()
def create_wx_menu(request): c = {'wx_type': 'create'} if request.method == 'POST': wxAccount = MemoryCached.get_account() if wxAccount.appid and wxAccount.appsecret: menu_data = process.get_account_wx_menus(wxAccount) if menu_data: rst_dict = client.create_menu(wxAccount, menu_data) if rst_dict and rst_dict.get('errcode', None) == 0: c.update({ 'success_flag': 1, 'errormsg': u'创建菜单成功' }) #创建菜单成功 else: errcode = rst_dict.get('errcode', None) c.update({ 'success_flag': 0, 'errormsg': '创建菜单失败:' + consts.WXAPI.ERROR_INFO.get( str(errcode), '请检查菜单是否符合规范') }) #创建菜单失败 else: c.update({ 'success_flag': 0, 'errormsg': u'创建菜单失败:没有菜单可以创建' }) #没有菜单可以创建 else: c.update({ 'success_flag': 0, 'errormsg': u'请到"账号基本信息"中完善此账号的App Id和App Secret信息' }) #没有菜单可以创建 return render_to_response("common/result.html", c, context_instance=RequestContext(request)) else: #GET方法请求 raise Http404()
def menu_manage_list(request,c): acount = MemoryCached.get_account()#获取系统唯一的公众号 menu_objs = models.AccountMenu.objects.filter(wxpAccount = acount).order_by('parent','sort') c.update({'menu_objs':menu_objs}) return render_to_response("wxcms/menu_list.html", c, context_instance=RequestContext(request))