def update_status(self, user, provider, status_type, time): if not isinstance(time, dt): time = dt.strptime(time, '%Y-%m-%dT%H:%M:%S.%f') self.logger.debug("Time: %s" % time) try: status = self.session.query(Status).filter(and_( Status.user == user, Status.provider == provider)).one() status.status = status_type status.update_time = time self.session.merge(status) self.session.commit() except MultipleResultsFound: self.logger.debug("Multiple results found for %s, %s" % (user, provider)) raise except NoResultFound: self.logger.debug("Status missing for %s, %s in database, adding" \ % (user.display_name, provider)) status = Status(provider, status_type, time) status.user = user self.session.add(status) self.session.commit()
def set_status(username, status_type): try: user = session.query(User).filter( User.account == username).one() except MultipleResultsFound: raise except NoResultFound: raise try: status = session.query(Status).filter(and_( Status.user == user, Status.provider == 'web-update')).one() status.status = status_type status.update_time = dt.now() session.merge(status) session.commit() except MultipleResultsFound: raise except NoResultFound: status = Status('web-update', status_type, dt.now()) status.user = user session.add(status) session.commit()