コード例 #1
0
def export(req, cluster_id):
    def _get_last_id(service):
        response = req.zato.client.invoke(service, {})
        if response.has_data:
            return response.data.value

    def _get_last_dict_id():
        return _get_last_id('zato.kvdb.data-dict.dictionary.get-last-id')

    def _get_last_translation_id():
        return _get_last_id('zato.kvdb.data-dict.translation.get-last-id')

    def _get_dict_list():
        for item in req.zato.client.invoke(
                'zato.kvdb.data-dict.dictionary.get-list', {}):
            yield item.id, item.system, item.key, item.value

    def _get_translation_list():
        for item in req.zato.client.invoke(
                'zato.kvdb.data-dict.translation.get-list', {}):
            yield item.id, item.system1, item.key1, item.value1, item.system2, \
                  item.key2, item.value2, item.id1, item.id2

    return_data = {
        'meta': {
            'current_host': current_host(),
            'timestamp_utc': datetime.utcnow().isoformat(),
            'user': req.user.username
        }
    }
    return_data['data'] = {'dict_list': [], 'translation_list': []}

    return_data['data']['last_dict_id'] = _get_last_dict_id()
    return_data['data']['last_translation_id'] = _get_last_translation_id()

    for id, system, key, value in _get_dict_list():
        return_data['data']['dict_list'].append({
            'id': id,
            'system': system,
            'key': key,
            'value': value
        })

    for id, system1, key1, value1, system2, key2, value2, id1, id2 in _get_translation_list(
    ):
        return_data['data']['translation_list'].append({
            translation_name(system1, key1, value1, system2, key2): {
                'id': id,
                'value2': value2,
                'id1': id1,
                'id2': id2
            }
        })

    response = HttpResponse(dumps(return_data, indent=4).encode('bz2'),
                            content_type='application/x-bzip2')
    response['Content-Disposition'] = 'attachment; filename={}'.format(
        'zato-data-dict-export.json.bz2')

    return response
コード例 #2
0
    def handle(self):
        data = loads(self.request.input.data.decode('base64').decode('bz2'))
        with self.server.kvdb.conn.pipeline() as p:
            p.delete(KVDB.DICTIONARY_ITEM_ID)
            p.delete(KVDB.DICTIONARY_ITEM)
            p.delete(KVDB.TRANSLATION_ID)

            for item in self._get_translations():
                key = translation_name(item['system1'], item['key1'], item['value1'], item['system2'], item['key2'])
                p.delete(key)

            # Another proof software engineering and philosophy have /a lot/ in common!
            data = data['data']

            p.set(KVDB.DICTIONARY_ITEM_ID, data['last_dict_id'])

            if data['last_translation_id']:
                p.set(KVDB.TRANSLATION_ID, data['last_translation_id'])

            for item in data['dict_list']:
                p.hset(KVDB.DICTIONARY_ITEM, item['id'], dict_item_name(item['system'], item['key'], item['value']))

            for item in data['translation_list']:
                key = item.keys()[0]
                for value_key, value in item[key].items():
                    p.hset(key, value_key, value)

            p.execute()
コード例 #3
0
ファイル: impexp.py プロジェクト: Aayush-Kasurde/zato
 def handle(self):
     data = loads(self.request.input.data.decode('base64').decode('bz2'))
     with self.server.kvdb.conn.pipeline() as p:
         p.delete(KVDB.DICTIONARY_ITEM_ID)
         p.delete(KVDB.DICTIONARY_ITEM)
         p.delete(KVDB.TRANSLATION_ID)
         
         for item in self._get_translations():
             key = translation_name(item['system1'], item['key1'], item['value1'], item['system2'], item['key2'])
             p.delete(key)
             
         # Another proof software engineering and philosophy have /a lot/ in common!
         data = data['data'] 
         
         p.set(KVDB.DICTIONARY_ITEM_ID, data['last_dict_id'])
         p.set(KVDB.TRANSLATION_ID, data['last_translation_id'])
         
         for item in data['dict_list']:
             p.hset(KVDB.DICTIONARY_ITEM, item['id'], dict_item_name(item['system'], item['key'], item['value']))
             
         for item in data['translation_list']:
             key = item.keys()[0]
             for value_key, value in item[key].items():
                 p.hset(key, value_key, value)
             
         p.execute()
コード例 #4
0
ファイル: impexp.py プロジェクト: Aayush-Kasurde/zato
def export(req, cluster_id):
    
    def _get_last_id(service):
        response = req.zato.client.invoke(service, {})
        if response.has_data:
            return response.data.value
        
    def _get_last_dict_id():
        return _get_last_id('zato.kvdb.data-dict.dictionary.get-last-id')
    
    def _get_last_translation_id():
        return _get_last_id('zato.kvdb.data-dict.translation.get-last-id')

    def _get_dict_list():
        for item in req.zato.client.invoke('zato.kvdb.data-dict.dictionary.get-list', {}):
            yield item.id, item.system, item.key, item.value
    
    def _get_translation_list():
        for item in req.zato.client.invoke('zato.kvdb.data-dict.translation.get-list', {}):
            yield item.id, item.system1, item.key1, item.value1, item.system2, \
                  item.key2, item.value2, item.id1, item.id2
    
    return_data = {'meta': {'current_host':current_host(), 'timestamp_utc':datetime.utcnow().isoformat(), 'user':req.user.username}}
    return_data['data'] = {'dict_list':[], 'translation_list':[]}
    
    return_data['data']['last_dict_id'] = _get_last_dict_id()
    return_data['data']['last_translation_id'] = _get_last_translation_id()
    
    for id, system, key, value in _get_dict_list():
        return_data['data']['dict_list'].append({'id':id, 'system':system, 'key':key, 'value':value})
        
    for id, system1, key1, value1, system2, key2, value2, id1, id2 in _get_translation_list():
        return_data['data']['translation_list'].append(
            {translation_name(system1, key1, value1, system2, key2): {'id':id, 'value2':value2, 'id1':id1, 'id2':id2}})
    
    response = HttpResponse(dumps(return_data, indent=4).encode('bz2'), mimetype='application/x-bzip2')
    response['Content-Disposition'] = 'attachment; filename={}'.format('zato-data-dict-export.json.bz2')

    return response
コード例 #5
0
ファイル: __init__.py プロジェクト: dangnammta/zato
 def _name(self, system1, key1, value1, system2, key2):
     return translation_name(system1, key1, value1, system2, key2)
コード例 #6
0
ファイル: __init__.py プロジェクト: Aayush-Kasurde/zato
 def _name(self, system1, key1, value1, system2, key2):
     return translation_name(system1, key1, value1, system2, key2)