def change_status(self, new_status, status_from_date=None, status_thru_date=end_of_times()): from sqlalchemy import orm if not status_from_date: status_from_date = datetime.date.today() mapper = orm.class_mapper(self.__class__) status_property = mapper.get_property('status') status_type = status_property._get_target().class_ old_status = status_type.query.filter( and_( status_type.status_for == self, status_type.status_from_date <= status_from_date, status_type.status_thru_date >= status_from_date)).first() if old_status != None: old_status.thru_date = datetime.date.today( ) - datetime.timedelta(days=1) old_status.status_thru_date = status_from_date - datetime.timedelta( days=1) new_status = status_type(status_for=self, classified_by=new_status, status_from_date=status_from_date, status_thru_date=status_thru_date, from_date=datetime.date.today(), thru_date=end_of_times()) if old_status: self.query.session.flush([old_status]) self.query.session.flush([new_status])
def change_status(self, new_status, status_from_date=None, status_thru_date=end_of_times()): """ Change the status of this object. This method does not start a transaction, but it is advised to run this method in a transaction. """ if not status_from_date: status_from_date = datetime.date.today() history_type = self._status_history session = orm.object_session(self) old_status_query = session.query(history_type) old_status_query = old_status_query.filter( sql.and_(history_type.status_for == self, history_type.status_from_date <= status_from_date, history_type.status_thru_date >= status_from_date)) new_thru_date = datetime.date.today() - datetime.timedelta(days=1) new_status_thru_date = status_from_date - datetime.timedelta(days=1) for old_status in old_status_query.yield_per(10): old_status.thru_date = new_thru_date old_status.status_thru_date = new_status_thru_date new_status = history_type(status_for=self, classified_by=new_status, status_from_date=status_from_date, status_thru_date=status_thru_date, from_date=datetime.date.today(), thru_date=end_of_times()) session.flush()
def change_status(self, new_status, status_from_date=None, status_thru_date=end_of_times()): from sqlalchemy import orm if not status_from_date: status_from_date = datetime.date.today() history_type = self._status_history session = orm.object_session(self) old_status_filter = sql.and_( history_type.status_for == self, history_type.status_from_date <= status_from_date, history_type.status_thru_date >= status_from_date) old_status_query = session.query(history_type) old_status = old_status_query.filter(old_status_filter).first() if old_status != None: old_status.thru_date = datetime.date.today() - datetime.timedelta( days=1) old_status.status_thru_date = status_from_date - datetime.timedelta( days=1) new_status = history_type(status_for=self, classified_by=new_status, status_from_date=status_from_date, status_thru_date=status_thru_date, from_date=datetime.date.today(), thru_date=end_of_times()) session.flush()
def change_status( self, new_status, status_from_date=None, status_thru_date=end_of_times() ): from sqlalchemy import orm if not status_from_date: status_from_date = datetime.date.today() history_type = self._status_history session = orm.object_session( self ) old_status_filter = sql.and_( history_type.status_for == self, history_type.status_from_date <= status_from_date, history_type.status_thru_date >= status_from_date ) old_status_query = session.query( history_type ) old_status = old_status_query.filter( old_status_filter ).first() if old_status != None: old_status.thru_date = datetime.date.today() - datetime.timedelta( days = 1 ) old_status.status_thru_date = status_from_date - datetime.timedelta( days = 1 ) new_status = history_type( status_for = self, classified_by = new_status, status_from_date = status_from_date, status_thru_date = status_thru_date, from_date = datetime.date.today(), thru_date = end_of_times() ) session.flush()
def change_status(self, new_status, status_from_date=None, status_thru_date=end_of_times()): from sqlalchemy import orm if not status_from_date: status_from_date = datetime.date.today() mapper = orm.class_mapper(self.__class__) status_property = mapper.get_property('status') status_type = status_property.mapper.class_ old_status = status_type.query.filter( sql.and_( status_type.status_for == self, status_type.status_from_date <= status_from_date, status_type.status_thru_date >= status_from_date ) ).first() if old_status != None: old_status.thru_date = datetime.date.today() - datetime.timedelta( days = 1 ) old_status.status_thru_date = status_from_date - datetime.timedelta( days = 1 ) new_status = status_type( status_for = self, classified_by = new_status, status_from_date = status_from_date, status_thru_date = status_thru_date, from_date = datetime.date.today(), thru_date = end_of_times() ) if old_status: self.query.session.flush( [old_status] ) self.query.session.flush( [new_status] )