def delete_object(self, data): move_comment_deleted_geokret_id = self._data_layer.get_object( data).move.geokret.id super(MoveCommentDetail, self).delete_object(data) if not current_app.config['ASYNC_OBJECTS_ENHANCEMENT']: update_geokret_and_moves(db.session, move_comment_deleted_geokret_id)
def blend_move_comment(self, *args, **kwargs): with mixer.ctx(): if kwargs.get('count'): move_comments = mixer.cycle(kwargs.get('count')).blend(MoveComment, **kwargs) for move_comment in move_comments: update_geokret_and_moves(db.session, move_comment.move.geokret_id, move_comment.move.id) return move_comments move_comment = mixer.blend(MoveComment, **kwargs) update_geokret_and_moves(db.session, move_comment.move.geokret_id, move_comment.move.id) return move_comment
def blend_move(self, *args, **kwargs): with mixer.ctx(): if 'geokret' not in kwargs: kwargs['geokret'] = mixer.blend(Geokret, created_on_datetime="2019-01-12T16:33:46") if kwargs.get('count'): last_date = kwargs['geokret'].created_on_datetime moves = [] for _ in range(kwargs.get('count')): last_date = last_date + timedelta(seconds=1) move = mixer.blend(Move, moved_on_datetime=last_date, **kwargs) update_geokret_and_moves(db.session, move.geokret_id, move.id) moves.append(move) return moves move = mixer.blend(Move, **kwargs) update_geokret_and_moves(db.session, move.geokret_id, move.id) return move
def test_update_geokret_missing_status(self): """Check Move Tasks: compute GeoKret missing status""" geokret = self.mixer.blend(Geokret, missing=False, created_on_datetime="2017-12-01T21:54:17") move1 = self.mixer.blend(Move, geokret=geokret, type=MOVE_TYPE_DROPPED, moved_on_datetime="2019-01-01T21:54:44") move2 = self.mixer.blend(Move, geokret=geokret, type=MOVE_TYPE_COMMENT, moved_on_datetime="2019-01-01T21:54:59") self.mixer.blend(MoveComment, move=move1, type=MOVE_COMMENT_TYPE_COMMENT) update_geokret_and_moves(self.session, geokret.id, [move1.id, move2.id]) self.assertFalse(geokret.missing) self.mixer.blend(MoveComment, move=move2, type=MOVE_COMMENT_TYPE_COMMENT) update_geokret_and_moves(self.session, move2.geokret.id) self.assertFalse(geokret.missing) self.mixer.blend(MoveComment, move=move1, type=MOVE_COMMENT_TYPE_MISSING) update_geokret_and_moves(self.session, move1.geokret.id) self.assertTrue(geokret.missing) move3 = self.mixer.blend(Move, geokret=geokret, type=MOVE_TYPE_SEEN, moved_on_datetime="2019-01-01T22:29:07") update_geokret_and_moves(self.session, move3.geokret.id) self.assertFalse(geokret.missing) self.mixer.blend(MoveComment, move=move3, type=MOVE_COMMENT_TYPE_MISSING) update_geokret_and_moves(self.session, move3.geokret.id) self.assertTrue(geokret.missing)
def update_object(self, data, qs, kwargs): old_move = safe_query(self, Move, 'id', kwargs.get('id'), 'id') geokrety_to_update = [] # Comming from Comment require tracking-code if old_move.type == MOVE_TYPE_COMMENT and not data.get( 'tracking_code'): raise UnprocessableEntity( "Tracking code is missing", {'pointer': '/data/attributes/tracking-code'}) # Now convert tracking-code to GeoKret ID if 'tracking_code' in data: geokrety_to_update.append(old_move.geokret.id) old_move.geokret = safe_query(self, Geokret, 'tracking_code', data.get('tracking_code'), 'tracking-code') # Save update in database move = super(MoveDetail, self).update_object(data, qs, kwargs) if not current_app.config['ASYNC_OBJECTS_ENHANCEMENT']: geokrety_to_update.append(move.geokret.id) update_geokret_and_moves(db.session, geokrety_to_update, move.id) return move
def update_object(self, data, qs, kwargs): move_comment = super(MoveCommentDetail, self).update_object(data, qs, kwargs) if not current_app.config['ASYNC_OBJECTS_ENHANCEMENT']: update_geokret_and_moves(db.session, move_comment.move.geokret.id) return move_comment
def create_object(self, data, kwargs): move = super(MovesList, self).create_object(data, kwargs) if not current_app.config['ASYNC_OBJECTS_ENHANCEMENT']: update_geokret_and_moves(db.session, move.geokret_id, move.id) return move