~unifield-team/unifield-wm/sync-us-27

« back to all changes in this revision

Viewing changes to sync_client/monitor.py

  • Committer: duy.vo at msf
  • Date: 2015-02-26 15:58:39 UTC
  • mfrom: (530.1.8 sync)
  • Revision ID: duy.vo@geneva.msf.org-20150226155839-af2tyqq51170761d
with with trunk uf1.0-3

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
from osv import osv, fields
23
23
import pooler
24
24
import tools
 
25
from tools.translate import _
25
26
 
26
27
 
27
28
class MonitorLogger(object):
50
51
            'data_push_create' : 'null',
51
52
            'data_push_send' : 'null',
52
53
 
 
54
            'nb_msg_pull': 0,
 
55
            'nb_msg_push': 0,
 
56
            'nb_data_pull': 0,
 
57
            'nb_data_push': 0,
 
58
            'nb_msg_not_run': 0,
 
59
            'nb_data_not_run': 0,
 
60
 
53
61
        }
54
62
        self.info.update(defaults)
55
63
        self.final_status = 'ok'
145
153
    def _get_default_sequence_number(self, cr, uid, context=None):
146
154
        return int(self.pool.get('ir.sequence').get(cr, uid, 'sync.monitor'))
147
155
 
 
156
    def _get_default_instance_id(self, cr, uid, context=None):
 
157
        instance = self.pool.get('res.users').get_browse_user_instance(cr, uid, context)
 
158
        return instance and instance.id
 
159
 
 
160
    def _get_default_destination_instance_id(self, cr, uid, context=None):
 
161
        instance = self.pool.get('res.users').get_browse_user_instance(cr, uid, context)
 
162
        if instance:
 
163
            if instance.parent_id:
 
164
                if instance.parent_id.parent_id:
 
165
                    return instance.parent_id.parent_id.id
 
166
                return instance.parent_id.id
 
167
        return False
 
168
 
 
169
 
 
170
    def _get_my_instance(self, cr, uid, ids, field_name, args, context=None):
 
171
        instance = self.pool.get('res.users').get_browse_user_instance(cr, uid, context)
 
172
        if not instance:
 
173
            return dict.fromkeys(ids, False)
 
174
        ret = {}
 
175
        for msg in self.read(cr, uid, ids, ['instance']):
 
176
            ret[msg['id']] = msg['instance'] and msg['instance'][0] == instance.id
 
177
 
 
178
        return ret
 
179
 
 
180
    def _search_my_instance(self, cr, uid, obj, name, args, context=None):
 
181
        res = []
 
182
        instance = self.pool.get('res.users').get_browse_user_instance(cr, uid, context)
 
183
        if not instance:
 
184
            return []
 
185
 
 
186
        for arg in args:
 
187
            if arg[1] not in ('=', '!='):
 
188
                raise osv.except_osv(_('Error !'), _('Filter not implemented on %s' % name))
 
189
            cond = arg[2] in ('True', 't', '1', 1, True)
 
190
            if arg[1] == '!=':
 
191
                cond = not cond
 
192
            if cond:
 
193
                res += ['|',('instance_id', '=', instance.id),('instance_id', '=', False)]
 
194
            else:
 
195
                res.append(('instance_id', '!=', instance.id))
 
196
 
 
197
        return res
 
198
 
 
199
 
148
200
    def get_logger(self, cr, uid, defaults={}, context=None):
149
201
        return MonitorLogger(cr, uid, defaults=defaults, context=context)
150
202
 
190
242
        'error' : fields.text("Messages", readonly=True),
191
243
        'state' : fields.function(_is_syncing, method=True, type='selection', string="Is Syncing", selection=[('syncing', 'Syncing'), ('not_syncing', 'Done')]),
192
244
 
 
245
        'instance_id': fields.many2one('msf.instance', 'Instance', select=1),
 
246
        'my_instance': fields.function(_get_my_instance, method=True, type='boolean', fnct_search=_search_my_instance, string="My Instance"),
 
247
        'nb_msg_pull': fields.integer('# pull msg'),
 
248
        'nb_msg_push': fields.integer('# push msg'),
 
249
        'nb_data_pull': fields.integer('# pull data'),
 
250
        'nb_data_push': fields.integer('# push data'),
 
251
        'nb_msg_not_run': fields.integer('# msg not run'),
 
252
        'nb_data_not_run': fields.integer('# data not run'),
 
253
        'destination_instance_id': fields.many2one('msf.instance', 'HQ Instance'),
193
254
    }
194
255
 
195
256
    _defaults = {
196
257
        'start' : fields.datetime.now,
197
258
        'sequence_number' : _get_default_sequence_number,
 
259
        'instance_id': _get_default_instance_id,
 
260
        'destination_instance_id':  _get_default_destination_instance_id,
198
261
    }
199
262
 
200
263
    #must be sequence!
201
 
    _order = "sequence_number desc"
 
264
    _order = "sequence_number desc, start desc, id desc"
202
265
 
203
266
sync_monitor()
204
267