Пример #1
0
    def selected(self):
        Globals.get_instance().setOption(Config.OPTION_SELECTED)
        items = Globals.get_instance().selectedItems()
        if items == None:
            print "No selected file is set"
            return

        liststocks = {}
        for idx in items:
            stockdir = Globals.get_instance().stockpath(idx)
            if stockdir == None:
                liststocks[idx] = None
                continue
            psr = Parser(stockdir)
            liststocks[idx] = psr.getSummer()

        print Parser.getTitle()
        for summer in liststocks:
            if liststocks[summer] == None:
                print "%9s,%8s" % (Globals.get_instance().sin.getname(
                    int(summer)), summer)
                continue
            s = liststocks[summer]
            print Parser.summerFormat() % Parser.formatdata(s)
        pass
Пример #2
0
 def add_dc_log(dc_log):
     Tables.FILE_LOGS.append(dc_log)
     dc_client = DatacenterClient("", dc_log.ip, dc_log.port)
     Globals.add_dc_client(dc_client)
     Tables.TABLE_DC_INFO[(
         dc_log.ip, dc_log.port
     )] = True if dc_log.operation == raft_proto.Available else False
Пример #3
0
 def add_proxy_log(proxy_log):
     Tables.FILE_LOGS.append(proxy_log)
     proxy_client = ProxyClient("", proxy_log.ip, proxy_log.port)
     Globals.add_proxy_client(proxy_client)
     Tables.TABLE_PROXY_INFO[(
         proxy_log.ip, proxy_log.port
     )] = True if proxy_log.operation == raft_proto.Available else False
Пример #4
0
    def input(self):
        try:
            opts, args = getopt.getopt(sys.argv[1:], "hsv:S:pguta", [])
        except:
            self.usage()
            sys.exit(2)

        for o, a in opts:
            if o == "-p":
                Globals.get_instance().setOption(Config.OPTION_SELECTED)

        for o, a in opts:
            if o == "-h":
                self._core.holded()
            elif o == "-s":
                self._core.selected()
            elif o == "-v":
                self._core.verbose(a)
            elif o == "-S":
                try:
                    os.unlink(Config.SELECTED_PATH)
                except:
                    pass
                copyfile(a, Config.SELECTED_PATH)
            elif o == "-u":
                self._core.updateprice()
            elif o == "-t":
                self._core.test()
            elif o == "-g":
                self._core.growinglist()
            elif o == "-a":
                self._core.adjust(args)

            break
        pass
Пример #5
0
 def __init__(self, str_trddate=STR_TODAY, download_winddata_mark=0):
     self.gl = Globals(str_trddate, download_winddata_mark)
     self.list_acctidsbymxz = self.gl.list_acctidsbymxz
     df_fmtted_wssdata_today = pd.DataFrame(
         self.gl.col_fmtted_wssdata.find({'DataDate': self.gl.str_today}, {'_id': 0})
     )
     self.dict_fmtted_wssdata_of_today = df_fmtted_wssdata_today.set_index('WindCode').to_dict()
Пример #6
0
def addToolBar(toolBarId, position, index):
    toolBars = Globals.getAttr('toolBars')
    if not toolBars:
        Globals.setAttr('toolBars', {position: [{'toolBarId': toolBarId, 'items': []}]})
    else:
        if position in toolBars:
            if len(toolBars[position]) > index:
                toolBars[position][index]['toolBarId'] = toolBarId
            else:
                toolBars[position].append({'toolBarId': toolBarId, 'items': []})
        else:
            toolBars[position] = [{'toolBarId': toolBarId, 'items': []}]
            return
Пример #7
0
 def PumpActivityState(self, state_pickle):
   state_pickle = str(state_pickle)
   #logging.info('I JUST RECEIVED PICKLE TYPE: %r - %s (PumpActivityState)', type(state_pickle), state_pickle)
   if len(state_pickle) == 0:
     logging.debug('JokeMachineSession.ReceiveActivityState() -> empty state_pickle - creating empty state')
     activity_state = JokeMachineState().test_data()
   else:
     logging.debug('JokeMachineSession.ReceiveActivityState() -> Unpickling state from remote')
     activity_state = JokeMachineState.loads(state_pickle)
   Globals.set_activity_state(activity_state) 
   
   # refresh activity ui
   Globals.JokeMachineActivity.refresh()
   logging.debug('Finished receiving state')    
Пример #8
0
  def read_file(self, file_path):
    '''Callback to resume activity state from Journal'''
    logging.debug('Reading file from datastore via Journal: %s' % file_path)
    f = open(file_path, 'r')
    pickle = f.read()
    if len(pickle) == 0:
      logging.debug('Activity.read_file() -> Journal has empty pickle - creating empty state')
      activity_state = JokeMachineState().test_data()
    else:
      logging.debug('Unpickling state from Journal')
      activity_state = JokeMachineState.loads(pickle)
    f.close()

    # set Globals.ActivityState
    Globals.set_activity_state(activity_state) 
Пример #9
0
def peek(dat, folder, force=False):
    g = Globals()
    outf = g.default_repo_dir

    mkdir(outf + "peek")
    mkdir(outf + "peek/" + dat)

    print("\nPeeking " + folder + " for " + dat)
    dir = outf + "samples/" + dat + "/" + folder
    print("dir", dir)

    if (not force) and (os.path.exists(outf + 'peek/%s/%s.png' %
                                       (dat, folder.replace("/", "_")))):
        print("Already peeked before. Now exit.")
        return

    dataset = dset.ImageFolder(root=dir,
                               transform=transforms.Compose([
                                   transforms.ToTensor(),
                                   transforms.Normalize((0.5, 0.5, 0.5),
                                                        (0.5, 0.5, 0.5)),
                               ]))
    dataloader = torch.utils.data.DataLoader(dataset,
                                             batch_size=96,
                                             shuffle=True,
                                             num_workers=2)

    for i, data in enumerate(dataloader, 0):
        img, _ = data
        saveImage(img,
                  outf + 'peek/%s/%s.png' % (dat, folder.replace("/", "_")),
                  nrow=12)
        break
Пример #10
0
    def outputVerbose(self):
        earnings = self.getpershareearnings()
        price = Globals.get_instance().getstockprice2(self.getid())
        print ""
        print self.getname(), "(", self.getid(), ")"
        print "Price:", price
        print "每股收益: %7.3f" % earnings, "\t折算利率:%6.2f" % (
            earnings / price), "\t区间[%15, %10, %5]:", "[%6.2f %6.2f %6.2f]" % (
                self._pricesRange[0], self._pricesRange[1],
                self._pricesRange[2])
        print "净资产收益率: %6.2f" % self._asset_adding2, "\t平均净资产收益率: %6.2f" % self._average_asset_adding2
        print "稳定增长:", self._continued[
            0], "\t\t365增长加快:", self._increase_fasten[
                0], "\t报告季增长加快:", self._increase_fasten[1]

        print ""
        self.forcast(earnings, price, "报告季增长", self.adding["in report"])
        self.forcast(earnings, price, "365增长", self.adding["adjacent 365"])
        self.forcast(earnings, price, "平均净利润增长", self._continued[1])

        self.forcast(earnings, price, "报告季扣非净利润增长", self.adding["profit2"])
        self.forcast(earnings, price, "平均扣非净利润增长",
                     self.adding["average profit2"])
        self.forcast(earnings, price, "综合分析增长", self.adding["manual"])

        print self._note
Пример #11
0
 def set(self, value): 
   name = Globals.temporary_filename()
   f = open(name, 'w')
   f.write(value)
   f.close()
   self.uri = name
   logging.debug('AudioPlayer - set_raw wrote %d bytes to %s', len(value), name)
Пример #12
0
    def run3(self):

        myurl = 'http://hq.sinajs.cn/list='

        plist = {}
        for f in listdir(Config.STOCKS_PATH):
            fin = Config.STOCKS_PATH + "/" + f + "/finance"
            if not os.path.exists(fin):
                continue
            items = f.split("-")
            idx = int(items[1])
            name = Globals.get_instance().sin.getname(idx)
            if idx >= 600000:
                idy = "sh" + items[1]
            else:
                idy = "sz" + items[1]

            nurl = myurl + idy

            try:
                req = urllib2.Request(url=nurl)
                res = urllib2.urlopen(req)
                res = res.read()
                vals = res.split(",")

                price = float(vals[2])
            except:
                continue

            plist[items[1]] = price
        json.dump(plist, open(Config.OUTPUT_PRICELIST, 'w'))
        pass
Пример #13
0
 def task_at_0840():
     str_today = datetime.today().strftime('%Y%m%d')
     task1 = Globals(str_today, download_winddata_mark=1)
     task2 = PostTrdMng(str_today, download_winddata_mark=0)
     task2.run()
     task3 = PreTrdMng(str_today, download_winddata_mark=0)
     task3.run()
Пример #14
0
 def setSocket(self):
     # configuracao do socket para comunicacao interna
     self.host, self.port, self.buf, self.addr = Globals.getSocketAttr()
     # criando socket
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     self.sock.bind(self.addr)
Пример #15
0
 def un_register_proxy(proxy_ip, proxy_port):
     log = raft_proto.TableLog()
     log.ip = proxy_ip
     log.port = proxy_port
     log.log_index = Globals.get_next_log_index()
     log.operation = raft_proto.Unavailable
     log.logType = raft_proto.ProxyLog
     Tables.add_proxy_log(log)
Пример #16
0
def addItemToToolBar(resourceId, position, index):
    print index
    toolBars = Globals.getAttr('toolBars')
    if not toolBars:
        return
    if position in toolBars:
        toolBars[position][index]['items'].append(resourceId)
    print toolBars
Пример #17
0
 def __init__(self):
     self.history_path = Globals.get_valid_path('history.json')
     if os.path.isfile(self.history_path):
         self._history = self.load_history()
         self.playlist_history = self._history['playlist']
     else:
         self._history = {'playlist': []}
         self.playlist_history = self._history['playlist']
Пример #18
0
 def set(self, value):
     name = Globals.temporary_filename()
     f = open(name, 'w')
     f.write(value)
     f.close()
     self.uri = name
     logging.debug('AudioPlayer - set_raw wrote %d bytes to %s',
                   len(value), name)
Пример #19
0
 def un_register_dc(dc_ip, dc_port):
     log = raft_proto.TableLog()
     log.ip = dc_ip
     log.port = dc_port
     log.log_index = Globals.get_next_log_index()
     log.operation = raft_proto.Unavailable
     log.logType = raft_proto.DatacenterLog
     Tables.add_dc_log(log)
Пример #20
0
    def doparse(self):
        if self._stockpath[-1] != "/":
            self._stockpath += "/"
        items = os.path.basename(os.path.dirname(self._stockpath)).split("-")
        self._id = int(items[1])
        self._name = Globals.get_instance().sin.getname(self._id)

        self._fh = FinancialHistory(self._stockpath + "/finance")
        self._fh.doparse()

        self._latestfd = self._fh.getlatest()

        #最新季报净利润/每股收益 = 总股数
        self._totalstocks = self._latestfd.profit / self._latestfd.per_share_earnings

        #每股收益 = 最近365天净利润 / 总股数
        self._pershareearnings = self.get365Profit(
            self._latestfd) / self._totalstocks

        #[15% ~ 10% ~ 5%]区间收益
        self._pricesRange = Common().pricesRange(self._pershareearnings)

        #parse adding ...
        #报告季增长
        self.adding["in report"] = self._latestfd.profit_adding / 100
        #最近两个365增长,即最新季度往前推一年,和更早的一年,之间净利润的增长
        prev_fd = self._fh.getreport(self._latestfd.year - 1,
                                     self._latestfd.season)  #上一年同季净利润
        prev_profit365 = self.get365Profit(prev_fd)
        profit365 = self.get365Profit(self._latestfd)
        adding = (profit365 - prev_profit365) / prev_profit365
        self.adding["adjacent 365"] = adding
        #持续增长分析
        self._continued = self.continueParsing()
        self.adding["average"] = self._continued[1]
        #增长加快评级
        self._increase_fasten = self.increaseAdding()
        #净资产收益率
        self._asset_adding2 = self._pershareearnings / self._latestfd.per_share_asset
        #净资产收益率近年平均值
        self._average_asset_adding2 = self.getAverageAssetAdding2()
        #扣非净利率增长
        self.adding["profit2"] = self._latestfd.profit2_adding / 100
        if self.adding["profit2"] < -0.9999:  #skip such stupid data
            self.adding["profit2"] = -0.9999
        #扣非净利率平均增长
        self.adding["average profit2"] = self.average_profit2_adding()

        note = Note(os.path.dirname(self._stockpath) + "/note.xml")
        try:
            note.doparse()
            self._note = note._note
            self.adding["manual"] = note._adding
            self._summary = note._summary
        except:
            self._note = None
            self.adding["manual"] = None
            self._summary = ""
Пример #21
0
    def read_file(self, file_path):
        '''Callback to resume activity state from Journal'''
        logging.debug('Reading file from datastore via Journal: %s' %
                      file_path)
        f = open(file_path, 'r')
        pickle = f.read()
        if len(pickle) == 0:
            logging.debug(
                'Activity.read_file() -> Journal has empty pickle - creating empty state'
            )
            activity_state = JokeMachineState().test_data()
        else:
            logging.debug('Unpickling state from Journal')
            activity_state = JokeMachineState.loads(pickle)
        f.close()

        # set Globals.ActivityState
        Globals.set_activity_state(activity_state)
Пример #22
0
    def PumpActivityState(self, state_pickle):
        state_pickle = str(state_pickle)
        #logging.info('I JUST RECEIVED PICKLE TYPE: %r - %s (PumpActivityState)', type(state_pickle), state_pickle)
        if len(state_pickle) == 0:
            logging.debug(
                'JokeMachineSession.ReceiveActivityState() -> empty state_pickle - creating empty state'
            )
            activity_state = JokeMachineState().test_data()
        else:
            logging.debug(
                'JokeMachineSession.ReceiveActivityState() -> Unpickling state from remote'
            )
            activity_state = JokeMachineState.loads(state_pickle)
        Globals.set_activity_state(activity_state)

        # refresh activity ui
        Globals.JokeMachineActivity.refresh()
        logging.debug('Finished receiving state')
Пример #23
0
def addResource(resourceId, clientId):
    if clientId == -1:
        Log.w(u'clientId为-1,忽略')
        return
    identifiers = Globals.getAttr('identifiers')
    if clientId in identifiers:
        identifiers[clientId].append(resourceId)
    else:
        identifiers[clientId] = resourceId
Пример #24
0
def addResource(resourceId, clientId):
    if clientId == -1:
        Log.w(u'clientId为-1,忽略')
        return
    identifiers = Globals.getAttr('identifiers')
    if clientId in identifiers:
        identifiers[clientId].append(resourceId)
    else:
        identifiers[clientId] = resourceId
Пример #25
0
def lookUpToolBarIdByResourceId(resourceId):
    toolBars = Globals.getAttr('toolBars')
    if not toolBars:
        return
    for position in toolBars:
        for index, tmp in enumerate(toolBars[position]):
            items = tmp['items']
            for resourceId_ in items:
                if resourceId_ == resourceId:
                    return toolBars[position][index]['toolBarId']
Пример #26
0
def lookUpToolBarIdByResourceId(resourceId):
    toolBars = Globals.getAttr('toolBars')
    if not toolBars:
        return
    for position in toolBars:
        for index, tmp in enumerate(toolBars[position]):
            items = tmp['items']
            for resourceId_ in items:
                if resourceId_ == resourceId:
                    return toolBars[position][index]['toolBarId']
Пример #27
0
def addToolBar(toolBarId, position, index):
    toolBars = Globals.getAttr('toolBars')
    if not toolBars:
        Globals.setAttr('toolBars',
                        {position: [{
                            'toolBarId': toolBarId,
                            'items': []
                        }]})
    else:
        if position in toolBars:
            if len(toolBars[position]) > index:
                toolBars[position][index]['toolBarId'] = toolBarId
            else:
                toolBars[position].append({
                    'toolBarId': toolBarId,
                    'items': []
                })
        else:
            toolBars[position] = [{'toolBarId': toolBarId, 'items': []}]
            return
Пример #28
0
def delItemFromToolBar(resourceId):
    toolBars = Globals.getAttr('toolBars')
    if not toolBars:
        return
    for position in toolBars:
        for index, tmp in enumerate(toolBars[position]):
            items = tmp['items']
            for resourceId_ in items:
                if resourceId_ == resourceId:
                    items.remove(resourceId_)
                    return True
Пример #29
0
def delItemFromToolBar(resourceId):
    toolBars = Globals.getAttr('toolBars')
    if not toolBars:
        return
    for position in toolBars:
        for index, tmp in enumerate(toolBars[position]):
            items = tmp['items']
            for resourceId_ in items:
                if resourceId_ == resourceId:
                    items.remove(resourceId_)
                    return True
Пример #30
0
    def AddFileLog(self, request, context):
        if Globals.NODE_STATE == NodeState.LEADER:
            request.log_index = Globals.get_next_log_index()
            Tables.FILE_LOGS.append(request)
            log_info("LOG ADDED")

            # Update Table_log and File_info_table
            Tables.set_table_log(Tables.FILE_LOGS)

        ack = raft_proto.Ack()
        ack.id = 1
        return ack
Пример #31
0
 def insert_file_chunk_info_to_file_log(file_name, chunk_id, lst_dc,
                                        log_operation):
     for dc in lst_dc:
         log = raft_proto.TableLog()
         log.fileName = file_name
         log.chunkId = chunk_id
         log.ip = dc[0]
         log.port = dc[1]
         log.log_index = Globals.get_next_log_index()
         log.operation = log_operation
         log.logType = raft_proto.FileLog
         Tables.add_file_log(log)
Пример #32
0
    def holded(self):
        Globals.get_instance().setOption(Config.OPTION_HOLDED)
        holded = Globals.get_instance().holded.holded

        liststocks = {}
        for idx in holded:
            stockdir = Globals.get_instance().stockpath(holded[idx][0])
            if stockdir == None:
                liststocks[idx] = None
                continue
            psr = Parser(stockdir)
            #            psr.outputSimple()
            liststocks[idx] = psr.getSummer()

        print Parser.getTitle()
        for summer in liststocks:
            if liststocks[summer] == None:
                print "%9s,%8s" % (Globals.get_instance().sin.getname(
                    int(summer)), summer)
                continue
            if Globals.get_instance().getstocktotal(int(summer)) < 10.0:
                continue
            s = liststocks[summer]
            print Parser.summerFormat() % Parser.formatdata(s)
        pass
Пример #33
0
    def getSummer(self):
        n = self.getname()
        i = self.getid()
        e = self.getpershareearnings()
        p = Globals.get_instance().getstockprice(self.getid())
        t = Globals.get_instance().getstocktotal(self.getid())
        a = self._asset_adding2

        adding = self.getadding()

        earnings2 = e * ((1 + adding)**2)
        y2 = earnings2 * 100 / 10  #对应10%收益的价格
        if y2 < 0:
            p2adding = -0.99
        else:
            p2adding = ((y2 / p)**(1.0 / 2)) - 1

        earnings5 = e * ((1 + adding)**5)
        y5 = earnings5 * 100 / 10
        if y5 < 0:
            p5adding = -0.99
        else:
            p5adding = ((y5 / p)**(1.0 / 5)) - 1

        return {
            "stockname": n,
            "id": i,
            "earning": e,
            "price": p,
            "total": t,
            "asset%": a,
            "flag": self.getFlag(),
            "adding": adding,
            "2Yprice": y2,
            "p2adding": p2adding,
            "p5adding": p5adding,
            "summary": self._summary
        }
Пример #34
0
    def __init__(self):
        self.gl = Globals()
        self.dict_acctidbyxxq2acctidbymxz = {}
        for _ in self.gl.col_acctinfo.find({'DataDate': self.gl.str_today}):
            if _['StrategiesAllocationByAcct']:
                list_strategies = _['StrategiesAllocationByAcct'].split(';')
                if 'AutoT0_IndexFuture' in list_strategies or 'AutoT0_SecurityLoan' in list_strategies:
                    self.dict_acctidbyxxq2acctidbymxz.update(
                        {_['AcctIDByXuXiaoQiang4Trd']: _['AcctIDByMXZ']})
            else:
                continue

        # 上传kdb原始委托数据
        self.fpath_order_from_kdb_102_116 = f'D:/projects/autot0/data/kdb_102_116/q_{self.gl.str_today}.csv'
        with open(self.fpath_order_from_kdb_102_116, encoding='utf-8') as f:
            list_dicts_order_from_kdb = []
            list_list_datalines = f.readlines()
            list_fields = list_list_datalines[0].strip().split(',')
            list_list_values = [
                _.strip().split(',') for _ in list_list_datalines[1:]
            ]
            for list_value in list_list_values:
                dict_order_from_kdb = dict(zip(list_fields, list_value))
                dict_order_from_kdb['DataDate'] = self.gl.str_today
                if dict_order_from_kdb[
                        'accountname'] not in self.dict_acctidbyxxq2acctidbymxz:
                    dict_order_from_kdb['AcctIDByMXZ'] = ''
                else:
                    dict_order_from_kdb['AcctIDByMXZ'] = (
                        self.dict_acctidbyxxq2acctidbymxz[
                            dict_order_from_kdb['accountname']])
                list_dicts_order_from_kdb.append(dict_order_from_kdb)
            self.gl.col_trade_rawdata_order_from_kdb_102_116.delete_many(
                {'DataDate': self.gl.str_today})
            if list_dicts_order_from_kdb:
                self.gl.col_trade_rawdata_order_from_kdb_102_116.insert_many(
                    list_dicts_order_from_kdb)
Пример #35
0
    def run(self):
        self.stocklists = {}

        for f in listdir(Config.STOCKS_PATH):
            fin = Config.STOCKS_PATH + "/" + f + "/finance"
            if not os.path.exists(fin):
                continue
            items = f.split("-")
            idx = items[1]

            psr = Parser(Config.STOCKS_PATH + "/" + f)
            if psr._pershareearnings < 0.001:
                continue

            q = Globals.get_instance().getstockprice3(idx)
            eq = psr._pershareearnings / q

            stock = {}
            stock["name"] = psr._name
            stock["earnings"] = psr._pershareearnings
            stock["q"] = q
            stock["eq"] = eq

            suitcount = 0
            totaldelta = 0
            for val in psr.adding:
                if not val in Config.ADDINGS:
                    continue
                info = {}

                a = psr.adding[val]
                ref = (((1.0 + self.p) /
                        (1 + a))**self.n) * self.p  # reference eq
                delta = ((psr._pershareearnings / ref) - q) / q

                info["a"] = a
                info["ref"] = ref
                info["delta"] = delta
                stock[val] = info
                if delta > 0.001:
                    suitcount += 1
                totaldelta += delta

            stock["count"] = suitcount
            stock["avdelta"] = totaldelta / len(Config.ADDINGS)
            self.stocklists[idx] = stock

        pass
Пример #36
0
def removeResource(resourceId, clientId=None):
    if clientId == -1:
        Log.w(u'clientId为-1,忽略')
        return
    identifiers = Globals.getAttr('identifiers')
    if clientId:
        if clientId in identifiers:
            if resourceId in identifiers[clientId]:
                identifiers[clientId].remove(resourceId)
                return True
    else:
        for clientId in identifiers:
            if resourceId in identifiers[clientId]:
                identifiers[clientId].remove(resourceId)
                return True
    Log.w(u'未找到对应的资源,删除失败')
Пример #37
0
def removeResource(resourceId, clientId=None):
    if clientId == -1:
        Log.w(u'clientId为-1,忽略')
        return
    identifiers = Globals.getAttr('identifiers')
    if clientId:
        if clientId in identifiers:
            if resourceId in identifiers[clientId]:
                identifiers[clientId].remove(resourceId)
                return True
    else:
        for clientId in identifiers:
            if resourceId in identifiers[clientId]:
                identifiers[clientId].remove(resourceId)
                return True
    Log.w(u'未找到对应的资源,删除失败')
Пример #38
0
    def __init__(self):
        self.streaming_quality = u'hi'
        self.current_track = None  # track dict
        self.playback_started = False  # if track was started
        self.player = None  # mplayer process
        self.output_watcher = None
        self.queue = LifoQueue()
        self._start_mplayer()
        self.volume = int(Globals.CONFIG.get('Player', 'volume'))
        self.set_volume(self.volume)

        # set mp3 path & name (replace \ with / because mplayer expects / as separator, even on Windows)
        Globals.MP3_PATH = Globals.get_valid_path('../res/stream{}.mp3'.format(Globals.MPLAYER_PID)).replace('\\', '/')
        open(Globals.MP3_PATH, 'w').close()  # Create/empty dummy mp3

        super().__init__()
Пример #39
0
    def mark_all_file_chunks_in_dc_available(dc_ip, dc_port):
        for file_name in Tables.TABLE_FILE_INFO.keys():
            for chunk_id in Tables.TABLE_FILE_INFO[file_name].keys():
                for ip, port in Tables.TABLE_FILE_INFO[file_name][chunk_id]:
                    if ip == dc_ip and port == dc_port:
                        log = raft_proto.TableLog()
                        log.fileName = file_name
                        log.chunkId = chunk_id
                        log.ip = ip
                        log.port = port
                        log.log_index = Globals.get_next_log_index()
                        upload_status = Tables.TABLE_FILE_INFO[file_name][
                            chunk_id][(ip, port)]

                        if upload_status == raft_proto.TemporaryUnavailable:
                            log.operation = raft_proto.Uploaded
                            Tables.add_file_log(log)
Пример #40
0
    def do_POST(self):
        logger.debug('got post on path:%s'%self.path)
        try:
            ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
            if ctype == 'multipart/form-data':
                postvars = cgi.parse_multipart(self.rfile, pdict)
            elif ctype == 'application/x-www-form-urlencoded':
                length = int(self.headers.getheader('content-length'))
                postvars = urlparse.parse_qs(self.rfile.read(length), keep_blank_values=1)
            else:
                postvars = {}

            dict = {}
            for key in postvars:
                dict[key] = postvars[key][0]

            logger.debug('got dict %s on path %s' % (dict, self.path))
            logger.debug('known shares: %s' %shares)

            if self.path.endswith('newShare'):
                if dict['local_port'] in shares:
                    #update existing share
                    share = shares[dict['local_port']]
                    share.from_dict(dict)
                else:
                    if dict['type'] == 'Share':
                        share = Share()
                    else:
                        share = Session()
                    share.from_dict(dict)

                    globals = Globals()
                    globals.account_id = share.account_id
                    globals.key_id = share.key_id
#                    logger.debug( 'path: <%s>' % share.filePath )

                    save_request(share)
                    if onNewShare:
                        onNewShare(share)
                    global shares
                    shares[share.local_port] = share
                    logger.debug('added new share')
                    logger.debug(shares)
                self.write_response('ok')
            elif self.path.endswith('successShare'):
                logger.debug('success')
                if not dict['local_port'] in shares:
                    logger.error('unknown key: %s in shares %s' % (dict['local_port'], shares))
                    self.write_response('unknown')
                else:
                    shares[dict['local_port']].notify_success()
                    self.write_response('ok')

            elif self.path.endswith('errorShare'):
                logger.debug('error')
                if not dict['local_port'] in shares:
                    logger.error('unknown key: %s in shares %s' % (dict['local_port'], shares))
                    self.write_response('unknown')
                else:
                    shares[dict['local_port']].notify_error()
                    self.write_response('ok')
            elif self.path.endswith('stopShare'):
                logger.debug('stopShare')
                if not dict['local_port'] in shares:
                    logger.error('unknown key: %s in shares %s' % (dict['local_port'], shares))
                    self.write_response('unknown')
                else:
                    shares[dict['local_port']].notify_stop()
                    #self.write_response('ok') # no need to answer


        except Exception, e:
            logger.exception(e)
            self.write_response('an error has occurred')
Пример #41
0
def on_handler_event(resp):
    """
    events triggered from the icabbi handler thread are caught here
    """
    # CHANGED HOST
    if resp.event == handler.EVENT_HOST_UPDATE:
        Logger.info("Host is now {host}".format(host=resp.host))
    # CHANGED DRIVER ID
    elif resp.event == handler.EVENT_DRIVER_UPDATE:
        if hasattr(resp, "driver_id"):
            Logger.info("New driver ID #{_id}".format(_id=resp.driver_id))
    # NEW BID
    elif resp.event == handler.EVENT_BID_UPDATE:
        sv = Globals.mainscrn.ids.get("sv_namevalue")
        sv.add("Bid: ", "{} ({})".format(resp.bid["title"],
                                         resp.bid["distance"]))
    # NOW ON JOB
    elif resp.event == handler.EVENT_NEW_JOB:
        sv = Globals.mainscrn.ids.get("sv_namevalue")
        sv.clear()
        for name, value in tuple(format_booking(resp.booking).items()):
            sv.add(name + ": ", value)
            if name == "Phone" or name == "Address" or name == "direct_connect":
                sv.add("", "")
        sv.add(
            "",
            '''[ref={"action":"arrived","booking_id":"%s"}][color=#FFD919]Notify Customer[/color][/ref]'''
            % resp.booking["id"])
        sv.add(
            "",
            '''[ref={"action":"madecontact", "booking_id": "%s"}][color=#E67300]Picked up Customer[/color][/ref]'''
            % resp.booking["id"])
    # JOB HAS BEEN OFFERED
    elif resp.event == handler.EVENT_JOB_OFFER:
        if hasattr(resp, "accepted"):
            if Globals.settings["audio"]:
                Globals.android_play_system_sound("notification")
                Globals.android_text2speak.speak(
                    "Job offer has been accepted.")
            show_toast("Job offer has been accepted...")
    # LOGGED OUT
    elif resp.event == handler.EVENT_LOGGED_OUT:
        sv = Globals.mainscrn.ids["sv_namevalue"]
        sv.clear()
        sv.add("Driver Status: ", "Logged out")
    # ALL ZONES CHANGED
    elif resp.event == handler.EVENT_ZONES:
        # if status screen then show zone update
        if Globals.app.root.current == "status":
            # get the listctrl window
            listctrl = Globals.app.root.current_screen.ids.get("headerview_id")
            listctrl.column_rv.populate(resp.zones)
    # ZONE HAS CHANGED
    elif resp.event == handler.EVENT_ZONE_UPDATE:
        zone = resp.zone
        sv = Globals.mainscrn.ids.get("sv_namevalue")
        sv.clear()
        sv.add("Zone: ", zone.get("title"))
        sv.add("Id: ", zone.get("id"))
        sv.add("Position: ", zone.get("position"))
        sv.add("Drivers: ", zone.get("total"))
        sv.add("Jobs: ", zone.get("job_count"))
    # QUITING
    elif resp.event == handler.EVENT_QUIT:
        Logger.info("iCabbi thread has now closed.")
    # BOOKING UPDATED
    elif resp.event == handler.EVENT_BOOKING_UPDATE:
        #Globals.mainscrn.status_text = "Customer has been notified" if resp.status == "arrived" else "Picked up Customer"
        pass
    # ERROR
    elif resp.event == handler.EVENT_NETWORK_ERROR:
        if Globals.loading_dialog.is_open():
            Globals.loading_dialog.dismiss()
        sv = Globals.mainscrn.ids["sv_namevalue"]
        sv.clear()
        sv.add("[color=#FF0000]ERROR[/color]: ", resp.message)
    # PREBOOKINGS
    elif resp.event == handler.EVENT_PREBOOKINGS_UPDATE:
        pass
    # BOOKING ARCHIVE REQUEST
    elif resp.event == handler.EVENT_BOOKING_ARCHIVE:
        if Globals.earnings_dialog:
            Globals.earnings_dialog.display_earnings(resp.takings)
        elif Globals.app.root.current == "history":
            # history screen is open
            history_screen = Globals.app.root.get_screen("history")
            history_screen.load_bookings(resp.bookings, resp.takings)
    # KICKED DRIVER
    elif resp.event == handler.EVENT_KICK_DRIVERS:
        sv = Globals.mainscrn.ids.get("sv_namevalue")
        sv.add("[color=#ffff00]Kicking[/color]: ", resp.message)
    # MESSAGE ARCHIVE REQUEST
    elif resp.event == handler.EVENT_MESSAGE_ARCHIVE:
        for message in resp.messages:
            date_created = str(time.ctime(message["created"]))
            text = "{} - {}".format(date_created, str(message["message"]))
            Globals.message_list_view.data.append({
                "id": str(message["id"]),
                "text": text
            })
    # EXTENDED MESSAGE REQUEST
    elif resp.event == handler.EVENT_MESSAGE:
        if Globals.message_dialog:
            print(resp.message)
            Globals.message_dialog.message_label.text = resp.message["message"]
    # SENT MESSAGE
    elif resp.event == handler.EVENT_MESSAGE_DISPATCH:
        if resp.message == "{}":
            show_toast("Message Sent")
        else:
            show_toast(resp.message)
    # BIDDING HAS CHANGED
    elif resp.event == handler.EVENT_CHANGE_BIDDING:
        sv = Globals.mainscrn.ids.get("sv_namevalue")
        sv.add("[color=#ffff00]Setting[/color]: ",
               f"Auto Bidding is set to {resp.enable}")
    # THREAD EXCEPTION
    elif resp.event == handler.EVENT_THREAD_EXCEPTION:
        if Globals.loading_dialog.is_open:
            Globals.loading_dialog.dismiss()
        dlg = MessageDialog()
        dlg.message_label.text = resp.error
        dlg.open()
Пример #42
0
  def __init__(self, handle):
    activity.Activity.__init__(self, handle)

    # TODO - clean -  install gettext
    os.chdir(Globals.pwd)  # required for i18n.py to work
    #gettext.install('JokeMachine', './po', unicode=True)
    #presLan_af = gettext.translation("JokeMachine", os.path.join(Globals.pwd, 'po'), languages=['af'])
    #presLan_af.install()
    #locale.setlocale(locale.LC_ALL, 'af')    

    # customize theme
    gtkrc = os.path.join(Globals.pwd, 'resources/gtkrc')
    if os.path.exists(gtkrc):
      logging.debug("Loading resources from %s" % gtkrc)
      gtk.rc_add_default_file(gtkrc)
      settings = gtk.settings_get_default()
      #gtk.rc_reset_styles(settings)
      gtk.rc_reparse_all_for_settings(settings, True)
      logging.debug("Loading resources DONE")

    Globals.set_activity_instance(self)

    logging.debug("Starting the Joke Machine activity")

    # toolbox
    self.__toolbox = activity.ActivityToolbox(self)
    self.set_toolbox(self.__toolbox)

    # main activity frame
    self.__activity_frame = Frame()
    vbox = gtk.VBox()
    vbox.pack_start(self.__activity_frame)
    vbox.show()
    self.set_canvas(vbox)
    self.show_all()

    # Initialize mesh ##########################################################

    # init Presence Service
    self.__presence_service = presenceservice.get_instance()
    try:
      name, path = self.__presence_service.get_preferred_connection()
      self.__telepathy_connection = telepathy.client.Connection(name, path)
      self.__telepathy_initiating = None
    except TypeError:
      logging.debug('Presence service offline')

    # Buddy object for you
    owner = self.__presence_service.get_owner()
    Globals.set_owner(owner)

    self.__session = None  # JokeMachineSession
    self.connect('shared', self.__do_activity_shared)


    # Check if we're joining another instance 
    self.__is_initiator = True
    if self._shared_activity is not None:
      self.alert(_('Joke Machine'), _('Please wait a moment for your buddy\'s Jokebooks to show up'))
      self.__is_initiator = False
      logging.debug('shared:  %s' % self._shared_activity.props.joined)
      # We are joining the activity
      logging.debug('Joined activity')                      
      self.connect('joined', self.__do_activity_joined) 
      self._shared_activity.connect('buddy-joined', self.__do_buddy_joined) 
      self._shared_activity.connect('buddy-left', self.__do_buddy_left) 
      if self.get_shared():
        # We've already joined
        self.__do_activity_joined()
    else:   
      logging.debug('Created activity')    

    # ##########################################################################

    # set default startup page if we're the initiator
    if self.is_initiator: 
      self.set_page(pages.choose.Choose)
Пример #43
0
 def can_close(self):    
   '''Called on activity close'''
   logging.info('Exiting Activity. Performing cleanup...')
   Globals.shutdown()
   logging.info('Done')
   return True
Пример #44
0
 def socketSend(self):
     host, port, buf, addr = Globals.getSocketAttr()
     udp_sock = socket(AF_INET, SOCK_DGRAM)
     udp_sock.sendto('col_hard col_undi col_soft col_vamp col_network' , addr)
     udp_sock.close()
Пример #45
0
 def connect(self):
     """Conecta ao socket para comunicar-se com o cacic.py"""
     # Set the socket parameters
     self.host, self.port, self.buf, self.addr = Globals.getSocketAttr()
     self.udp_sock = socket(AF_INET, SOCK_DGRAM)                
Пример #46
0
# -*- coding: utf-8 -*-
from globals import Globals
from log import Log


Globals.setAttr('identifiers', {-1: []})


def addResource(resourceId, clientId):
    if clientId == -1:
        Log.w(u'clientId为-1,忽略')
        return
    identifiers = Globals.getAttr('identifiers')
    if clientId in identifiers:
        identifiers[clientId].append(resourceId)
    else:
        identifiers[clientId] = resourceId


def removeResource(resourceId, clientId=None):
    if clientId == -1:
        Log.w(u'clientId为-1,忽略')
        return
    identifiers = Globals.getAttr('identifiers')
    if clientId:
        if clientId in identifiers:
            if resourceId in identifiers[clientId]:
                identifiers[clientId].remove(resourceId)
                return True
    else:
        for clientId in identifiers:
Пример #47
0
def lookUpClientIdByResourceId(resourceId):
    identifiers = Globals.getAttr('identifiers')
    for clientId in identifiers:
        if resourceId in identifiers[clientId]:
            return clientId
Пример #48
0
def getRandomClientId():
    identifiers = Globals.getAttr('identifiers')
    for clientId in identifiers:
        if clientId != -1:
            return clientId