Ejemplo n.º 1
0
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/')
Ejemplo n.º 2
0
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/')
Ejemplo n.º 3
0
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/')
Ejemplo n.º 4
0
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))
Ejemplo n.º 5
0
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/')
Ejemplo n.º 6
0
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))
Ejemplo n.º 7
0
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))
Ejemplo n.º 8
0
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/')
Ejemplo n.º 9
0
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')
Ejemplo n.º 10
0
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/')
Ejemplo n.º 11
0
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')
Ejemplo n.º 12
0
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()
Ejemplo n.º 13
0
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()
Ejemplo n.º 14
0
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()
Ejemplo n.º 15
0
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()
Ejemplo n.º 16
0
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))