def memacheGroup(groupid): group=memcache.get('groupbyid'+str(groupid)) if not group: if '0000'==groupid: group=Group() group.name=u'大厅' return group groupid=int(groupid) if groupid: group=Group.get_by_id(int(groupid)) memcache.set('groupbyid'+str(groupid),group,36000) else: return None return group
def post(self): try: userName=self.request.get("UserName") user=getorAddUser(userName) dm=self.request.get("dm") dmall=self.request.get("dmall") type_n=self.request.get("type_n") name=self.request.get("name") ###操作类型 do=self.request.get('DoType')# '1'为加入 '2'为退订 groupId=self.request.get('GroupId') if do=='1': #### 下面是加入群 realNo=dmall if dmall=='sh000001': dm=dmall if type_n in ['11','12']: pass # dm=dmall elif type_n == '31': realNo='hk'+dm #dm=realNo elif type_n=='41': realNo='gb_'+dm #dm=realNo else: self.response.out.write(resultStr%('fail',u'只能订阅A股、B股、港股、美股','')) return gupiaoToGroup=memcache.get('gupiaodm'+dm) if not gupiaoToGroup: gupiaoToGroup=GupiaoToGroup.get_by_key_name(key_names='g'+dm) if gupiaoToGroup: memcache.set('gupiaodm'+dm,gupiaoToGroup,36000) if not gupiaoToGroup: group=Group() group.name=name # if type_n =='11': # group.gonggao=u'A股' # if type_n =='12': # group.gonggao=u'B股' if type_n =='31': group.gonggao=u'[港]' if type_n =='41': group.gonggao=u'[美]' group.type=4 group.apptype='4' group.author='000' group.head=int(type_n) group.notecount=1 group.put() guPiaoNote=GuPiaoNote(key_name='g'+str(group.key().id())) guPiaoNote.imagestr='_%s_%s'%(realNo,type_n) guPiaoNote.updateTime=datetime.datetime.utcnow()+timezone guPiaoNote.put() gupiaoToGroup=GupiaoToGroup(key_name='g'+dm) gupiaoToGroup.group=group.key().id() gupiaoToGroup.name=name gupiaoToGroup.dmall=dmall gupiaoToGroup.type=type_n gupiaoToGroup.put() ####### ###同步给股票同步应用 result = urlfetch.fetch( url =setting.GUPIAOURL+'/markGroup?groupid=%s&dm=%s&type=%s&realNo=%s'%(group.key().id(),dm,type_n,realNo), # payload = login_data, method = urlfetch.GET, headers = {'Content-Type':'application/x-www-form-urlencoded', 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6'}, follow_redirects = False,deadline=20) if result.status_code != 200 : group.delete() gupiaoToGroup.delete() guPiaoNote.delete() self.response.out.write(resultStr%('fail',u'订阅股票失败,请稍后再试','')) return else: memcache.set('gupiaodm'+dm,gupiaoToGroup,36000) logging.info(result.content) logging.info(guPiaoNote.content) if result.content!=guPiaoNote.content: guPiaoNote.content=result.content.decode('utf-8') guPiaoNote.updateTime=datetime.datetime.utcnow()+timezone guPiaoNote.put() else: group=memacheGroup(gupiaoToGroup.group) if group: if userName not in group.member: group.member.append(userName) group.put() if group.key().id() not in user.memberGroup: if group.key().id() not in user.memberGroupAdd: user.memberGroupAdd.append(group.key().id()) user.put() if group.key().id() in user.memberGroupRemove: user.memberGroupRemove.remove(group.key().id()) user.put() else: self.response.out.write(resultStr%('fail',u'订阅股票失败,股票已被删除','')) return elif do=='2': ##### 下面是退出群 退订股票 if groupId: try: groupId=int(groupId) except Exception,e: logging.info(str(e)) self.response.out.write('1') return group=memacheGroup(groupId) if userName in group.member: group.member.remove(userName) if group.key().id() in user.memberGroup: user.memberGroup.remove(group.key().id()) if group.key().id() not in user.memberGroupRemove: user.memberGroupRemove.append(group.key().id()) if group.key().id() in user.memberGroupAdd: user.memberGroupAdd.remove(group.key().id()) self.response.out.write(resultStr%('success','',setting.WEBURL[7:]+'/InfoUpdate'))