コード例 #1
0
    def build(self):
        return_data = {}
        for i in self.cache.boards:
            board = self.cache.boards[i]

            #return_data[board.id] = {
            #    'id': board.id,
            #    'name': safestr(board.name),
            #    'description': safestr(board.description),
            #    'modify_time': safestr(board.modify_time),
            #    'messages': []
            #}

            return_data[0] = {'number': 0, 'messages': []}

            count = 0
            messages = self.cache.messages[i]
            for listpos, node in enumerate(messages):
                message = node.CurrentOrder
                return_data[0]['messages'].append({
                    'slot':
                    message.slot,
                    'subject':
                    safestr(message.subject),
                    'body':
                    safestr(message.body),
                    'turn':
                    message.turn,
                    #'references': str(message.references)
                })
                count = count + 1

            return_data[0]['number'] = count

        return return_data
コード例 #2
0
ファイル: middleman.py プロジェクト: jbohman/tpclient-pyweb
    def build(self):
        return_data = {}
        for i in self.cache.boards:
            board = self.cache.boards[i]

            #return_data[board.id] = {
            #    'id': board.id,
            #    'name': safestr(board.name),
            #    'description': safestr(board.description),
            #    'modify_time': safestr(board.modify_time),
            #    'messages': []
            #}

            return_data[0] = {'number': 0, 'messages': []}

            count = 0
            messages = self.cache.messages[i]
            for listpos, node in enumerate(messages):
                message = node.CurrentOrder
                return_data[0]['messages'].append({
                    'slot': message.slot,
                    'subject': safestr(message.subject),
                    'body': safestr(message.body),
                    'turn': message.turn,
                    #'references': str(message.references)
                })
                count = count + 1

            return_data[0]['number'] = count

        return return_data
コード例 #3
0
ファイル: middleman.py プロジェクト: jbohman/tpclient-pyweb
    def get_args(self, orderdesc, order=None):
        args = []

        # Loop through all arguments for this order description
        for name, subtype in orderdesc.names:
            name_text = name.title().replace('_', '')

            # Get type and if order also get current value
            type = None
            if subtype == constants.ARG_ABS_COORD:
                type = 'coordinate'
            elif subtype == constants.ARG_LIST:
                type = 'list'
            elif subtype == constants.ARG_STRING:
                type = 'string'
            elif subtype == constants.ARG_TIME:
                type = 'time'
            elif subtype == constants.ARG_OBJECT:
                type = 'object'

            value = None
            if order:
                value = list(getattr(order, name))

                def recur_map(func, data):
                    if hasattr(data, '__iter__'):
                        return [recur_map(func, elem) for elem in data]
                    else:
                        return func(data) 

                value = recur_map(safestr, value)

            args.append({'name': safestr(name_text), 'type': type, 'description': safestr(getattr(orderdesc, name+'__doc__')), 'value': value})
        return args
コード例 #4
0
ファイル: middleman.py プロジェクト: jbohman/tpclient-pyweb
    def build(self):
        """Build json friendly structure"""
        return_data = {}
        for i in self.cache.objects:

            # Retrives object and orders for that object
            object = self.cache.objects[i]
            orders = self.cache.orders[i]

            # If we have orders for this object or the object can receive orders
            if object.order_number > 0 or len(object.order_types) > 0:

                # Build the initialize structure for this object and its orders
                return_data[i] = {'orders': {}, 'order_type': []}

                # Go through all orders currently on the object
                for listpos, node in enumerate(orders):
                    order = node.CurrentOrder
                    orderdesc = objects.OrderDescs()[order.subtype]

                    if hasattr(orderdesc, 'doc'):
                        desc = orderdesc.doc
                    else:
                        desc = orderdesc.__doc__
                        desc = desc.strip()

                    args = self.get_args(orderdesc, order)

                    return_data[i]['orders'][int(node.id)] = {
                        'order_id': int(node.id),
                        'name': safestr(order._name),
                        'description': safestr(desc),
                        'type': order.subtype,
                        'turns': order.turns,
                        'args': args}

                # Go through all possible orders this object can receive
                for type in object.order_types:

                    # If type is not recognized, ignore it
                    if not objects.OrderDescs().has_key(type):
                        continue

                    # Retrive order description
                    orderdesc = objects.OrderDescs()[type]
                    if hasattr(orderdesc, 'doc'):
                        desc = orderdesc.doc
                    else:
                        desc = orderdesc.__doc__
                        desc = desc.strip()

                    args = self.get_args(orderdesc)

                    return_data[i]['order_type'].append({
                        'name': safestr(orderdesc._name),
                        'description': safestr(desc),
                        'type': type,
                        'args': args})

        return return_data
コード例 #5
0
 def propertyparselist(property, property_list):
     """Todo: Relative Position/Vector needs to be accounted for"""
     #print property_list
     #print "Property_list size: ",len(property_list)
     vardict = {}
     subvardict = {}
     if property.__dict__.has_key('structures'): #Is group sturcture
         subproperty_list = getattr(property_list, property.name) #Gets Position list
         for subproperty in property.structures:
             subvardict.update(propertyparselist(subproperty, subproperty_list))
     
     if(len(subvardict) > 0):
          vardict[safestr(property.name)] = subvardict
     else: #Is not a group structure
         #print "===================="
         if type(property_list) == Structures.ListStructure.ListProxy:
             for key, value in enumerate(property_list):
                 vardict[key] = value
         elif type(property_list) == Structures.GroupStructure.GroupProxy:
             vardict[safestr(property.name)] = safestr(getattr(property_list, property.name))
         else:
             print property
             print type(property)
             print property_list
             print type(property_list)
             print "===================="
         
         #print property_list, property.name, type(property)
         #print vardict
     return vardict
コード例 #6
0
 def get_args(self, orderdesc, order=None):
     args = []
     
     for property in orderdesc.properties:
         name = property.name
         name_text = name.title().replace('_', '')
         
         type = None
         if isinstance(property, parameters.OrderParamAbsSpaceCoords):
             type = 'coordinate'
         elif isinstance(property, parameters.OrderParamList):
             type = 'list'
         elif isinstance(property, parameters.OrderParamString):
             type = 'string'
         elif isinstance(property, parameters.OrderParamTime):
             type = 'time'
         elif isinstance(property, parameters.OrderParamObject):
             type = 'object'
         else:
              print "Unknown Type"
         
         value = None
         if order:
             value = list(getattr(order, name))
             def recur_map(func, data):
                 if hasattr(data, '__iter__'):
                     return [recur_map(func, elem) for elem in data]
                 else:
                     return func(data) 
 
             value = recur_map(safestr, value)
     
         args.append({'name': safestr(name_text), 'type': type, 'description': safestr(property.description), 'value': value})
     
     """
         TODO MAYBE IF NEEDED    
         elif isinstance(property, parameters.OrderParamPlayer):
             args += [[0, 0]]
         elif isinstance(property, parameters.OrderParamRange):
             args += [[-1, -1, -1, -1]]
         elif isinstance(property, parameters.OrderParamReference):
             args += [[0, [0]]]
         elif isinstance(property, parameters.OrderParamReferenceList):
             args += [[[0], [0]]] OrderComponent
         elif isinstance(property, parameters.OrderParamResourceList):
             args += [[[0,0], 0, 0, [0,0]]]
         elif isinstance(property, parameters.OrderParamGenericReferenceQuantityList):
             args += [[[0, []], [0, "", 0, [], []], []]]
         else:
             print "Unknown: ", type(property)
             return
         """
    
     return args
コード例 #7
0
ファイル: middleman.py プロジェクト: jbohman/tpclient-pyweb
    def build(self):
        ret = {}
        for i in self.cache.objects:
            obj = self.cache.objects[i]
            ret[obj.id] = {
                'name': safestr(obj.name),
                'id': obj.id,
                'type': {'id': obj.subtype, 'name': object_type[obj.subtype]},
                'size': obj.size,
                'contains': obj.contains
            }

            if hasattr(obj, 'pos'):
                ret[obj.id]['pos'] = obj.pos

            if hasattr(obj, 'vel'):
                ret[obj.id]['vel'] = obj.vel

            if hasattr(obj, 'parent'):
                ret[obj.id]['parent'] = obj.parent

            if hasattr(obj, 'owner'):
                ret[obj.id]['owner'] = obj.owner

            if hasattr(obj, 'resources'):
                ret[obj.id]['resources'] = obj.resources

            if hasattr(obj, 'damage'):
                ret[obj.id]['damage'] = obj.damage

            if hasattr(obj, 'ships'):
                ret[obj.id]['ships'] = obj.ships
        return ret
コード例 #8
0
    def get_args(self, orderdesc, order=None):
        args = []

        # Loop through all arguments for this order description
        for name, subtype in orderdesc.names:
            name_text = name.title().replace('_', '')

            # Get type and if order also get current value
            type = None
            if subtype == constants.ARG_ABS_COORD:
                type = 'coordinate'
            elif subtype == constants.ARG_LIST:
                type = 'list'
            elif subtype == constants.ARG_STRING:
                type = 'string'
            elif subtype == constants.ARG_TIME:
                type = 'time'
            elif subtype == constants.ARG_OBJECT:
                type = 'object'

            value = None
            if order:
                value = list(getattr(order, name))

                def recur_map(func, data):
                    if hasattr(data, '__iter__'):
                        return [recur_map(func, elem) for elem in data]
                    else:
                        return func(data)

                value = recur_map(safestr, value)

            args.append({
                'name':
                safestr(name_text),
                'type':
                type,
                'description':
                safestr(getattr(orderdesc, name + '__doc__')),
                'value':
                value
            })
        return args
コード例 #9
0
def checkIfImageExists(objectData, mediaListName):
    global knownImageUrls
    
    #Construct Server Image arr
    if len(knownImageUrls) == 0:
        knownImageUrls = getImageListFromFile(mediaListName)
    
    for i in objectData:
        obj = objectData[i]
        for k in ["Media", "Icon"]:
            if k in obj: 
                url = obj[k]
                print "CheckingifImage " + "http://" + mediaRepoURL + url
                if url in knownImageUrls:
                    objectData[i][k] = safestr("http://" + mediaRepoURL + url + "." + knownImageUrls[url]) 
            else:
                obj[k] = ""
    return objectData
コード例 #10
0
    def build(self):
        ret = {}
        for i in self.cache.objects:
            obj = self.cache.objects[i]
            ret[obj.id] = {
                'name': safestr(obj.name),
                'id': obj.id,
                'type': {
                    'id': obj.subtype,
                    'name': object_type[obj.subtype]
                },
                'size': obj.size,
                'contains': obj.contains
            }

            if hasattr(obj, 'pos'):
                ret[obj.id]['pos'] = obj.pos

            if hasattr(obj, 'vel'):
                ret[obj.id]['vel'] = obj.vel

            if hasattr(obj, 'parent'):
                ret[obj.id]['parent'] = obj.parent

            if hasattr(obj, 'owner'):
                ret[obj.id]['owner'] = obj.owner

            if hasattr(obj, 'resources'):
                ret[obj.id]['resources'] = obj.resources

            if hasattr(obj, 'damage'):
                ret[obj.id]['damage'] = obj.damage

            if hasattr(obj, 'ships'):
                ret[obj.id]['ships'] = obj.ships
        return ret
コード例 #11
0
    def build(self):
        """Build json friendly structure"""
        return_data = {}
        for i in self.cache.objects:

            # Retrives object and orders for that object
            object = self.cache.objects[i]
            orders = self.cache.orders[i]

            # If we have orders for this object or the object can receive orders
            if object.order_number > 0 or len(object.order_types) > 0:

                # Build the initialize structure for this object and its orders
                return_data[i] = {'orders': {}, 'order_type': []}

                # Go through all orders currently on the object
                for listpos, node in enumerate(orders):
                    order = node.CurrentOrder
                    orderdesc = objects.OrderDescs()[order.subtype]

                    if hasattr(orderdesc, 'doc'):
                        desc = orderdesc.doc
                    else:
                        desc = orderdesc.__doc__
                        desc = desc.strip()

                    args = self.get_args(orderdesc, order)

                    return_data[i]['orders'][int(node.id)] = {
                        'order_id': int(node.id),
                        'name': safestr(order._name),
                        'description': safestr(desc),
                        'type': order.subtype,
                        'turns': order.turns,
                        'args': args
                    }

                # Go through all possible orders this object can receive
                for type in object.order_types:

                    # If type is not recognized, ignore it
                    if not objects.OrderDescs().has_key(type):
                        continue

                    # Retrive order description
                    orderdesc = objects.OrderDescs()[type]
                    if hasattr(orderdesc, 'doc'):
                        desc = orderdesc.doc
                    else:
                        desc = orderdesc.__doc__
                        desc = desc.strip()

                    args = self.get_args(orderdesc)

                    return_data[i]['order_type'].append({
                        'name':
                        safestr(orderdesc._name),
                        'description':
                        safestr(desc),
                        'type':
                        type,
                        'args':
                        args
                    })

        return return_data
コード例 #12
0
    def build(self):
        """Build json friendly structure"""
        
        return_data = {}
        for i in self.cache.objects:
            # Retrives object and orders for that object
            object = self.cache.objects[i]
            if hasattr(object, 'Orders'):
                orders = object.Orders
                orders = orders[0]
                orderTypes = getOrderTypes(self.cache, i)
                queueid = orders.queueid
                
                # Build the initialize structure for this object and its orders
                return_data[queueid] = {'orders': {}, 'order_type': []}
                
                orderobj = self.cache.orders[queueid]
                
                # Go through all orders currently on the object
                orderobj = self.cache.orders[queueid]
                ordersAr = {}
                
                
                if queueid > 0:
                    for listpos, node in enumerate(orderobj):
                        print "order time"

                        order = node.CurrentOrder
                        orderdesc = objects.OrderDescs()[order.subtype]
                        
                        if hasattr(orderdesc, 'doc'):
                            desc = orderdesc.doc
                        else:
                            desc = orderdesc.__doc__
                            desc = desc.strip()
                        
                        args = self.get_args(orderdesc, order)
                        
                        ordersAr[int(node.id)] = {
                            'order_id': int(node.id),
                            'name': safestr(order._name),
                            'description': safestr(desc),
                            'type': order.subtype,
                            'turns': order.turns,
                            'args': args} 
                    
                    if len(ordersAr) > 0:
                        for key in sorted(ordersAr.iterkeys()): 
                            return_data[queueid]['orders'][key] = ordersAr[key]
                    
                    if len(orderTypes[queueid]) > 0:  
                        # Go through all possible orders this object can receive
                        for type in orderTypes[queueid]:
                            # If type is not recognized, ignore it
                            if not objects.OrderDescs().has_key(type):
                                continue
        
                            # Retrive order description
                            orderdesc = objects.OrderDescs()[type]
                            #print orderdesc.__dict__
                            if hasattr(orderdesc, 'doc'):
                                desc = orderdesc.doc
                            else:
                                desc = orderdesc.__doc__
                                desc = desc.strip()
        
                            args = self.get_args(orderdesc)
        
                            return_data[queueid]['order_type'].append({
                                'name': safestr(orderdesc._name),
                                'description': safestr(desc),
                                'type': type,
                                'args': args})
                    
        print("Done Processing Orders")

        return return_data
コード例 #13
0
 def build(self):
     global mediaRepoURL
     ret = {}
     noExtensionURLs = {}
     #print("Build Object Data Structure")
     
     #cacheObjectPrintout(self.cache)
     minX = 0
     maxX = 0
     minY = 0
     maxY = 0
     
     for i in self.cache.objects:
         obj = self.cache.objects[i]
         
         #Get Object Type Name
         objdesc = objects.ObjectDescs()[obj.subtype]
         
         print obj.__dict__
         #The attributes that have no nested elements
         ret[obj.id] = {
             'name': safestr(obj.name),
             'id': obj.id,
             'type': {'id': obj.subtype, 'name': safestr(objdesc._name)},
             #'size': obj.size,
             'contains': obj.contains
         }
         
         ret[obj.id].update(getPropertyList(obj))
         mediaRelativeURLS = getMediaURLs(self.cache, obj.id)            
         
         if "Media" in ret[obj.id]:
             ret[obj.id]["Media"] = ret[obj.id]["Media"]["url"] 
             ret[obj.id]["Media"] = safestr(mediaRelativeURLS["Media"])
         if "Icon" in ret[obj.id]:
             ret[obj.id]["Icon"] = ret[obj.id]["Icon"]["url"]
             ret[obj.id]["Icon"] = safestr(mediaRelativeURLS["Icon"])
         if "Size" in ret[obj.id]:
             ret[obj.id]["Size"] = ret[obj.id]["Size"]["size"]
         if "Year" in ret[obj.id]:
             ret[obj.id]["Year"] = ret[obj.id]["Year"]["value"]
         if "Damage" in ret[obj.id]:
             ret[obj.id]["Damage"] = ret[obj.id]["Damage"]["value"]
         if "Ship List" in ret[obj.id]:
             shiplist = {}
             for listnum in ret[obj.id]["Ship List"]['references']:
                 ships = ret[obj.id]["Ship List"]['references'][listnum]
                 designs = self.cache.designs[ships[1]]
                 shiplist[listnum] = {0: safestr(designs.name), 1: ships[2] }   
             ret[obj.id]["Ship List"] = shiplist
         if "Owner" in ret[obj.id]:
             id = int(ret[obj.id]["Owner"]["id"])
             
             if id is 0:
                 ret[obj.id]["Owner"] = safestr("")
             else:
                 ret[obj.id]["Owner"] = safestr(self.cache.players[id].name) 
         #ownerid = getOwner(self.cache, obj.id)
         
         """Fix for relative"""
         if "Position" in ret[obj.id]:
             ret[obj.id]["Position"] = ret[obj.id]["Position"]["vector"]
         if "Velocity" in ret[obj.id]:
             ret[obj.id]["Velocity"] = ret[obj.id]["Velocity"]["vector"]
         
         print type(ret[obj.id]["Position"]["x"]) 
         print type(minX)
         print str(ret[obj.id]["Position"]["x"]) + " " + str(minX)
         
         
         """Find the Boundries of the Universe"""
         objX = int(ret[obj.id]["Position"]["x"])
         objY = int(ret[obj.id]["Position"]["y"])
         
         if objX < minX:
             minX = objX
         elif objX > maxX:
             maxX = objX
         if objY < minY:
             minY = objY
         elif objY > maxY:
             maxY = objY
         
         #print checkIfImageExists(safestr(mediaRepoURL + mediaRelativeURLS["Media"]))
         
         
         if hasattr(obj, 'parent'):
             ret[obj.id]['parent'] = obj.parent
         
         
         """fix: Convert owner to name"""
         
     ret = checkIfImageExists(ret, self.mediaListName)
     
     """Add the universe dimensions to the universe object array"""
     ret[0]["Size"] = {'minX': minX, 'maxX': maxX, 'minY': minY, 'maxY': maxY}
     #print "Done With Building Items"
     return ret