def create_alarm(self, alarm): """Create an alarm. :param alarm: The alarm to create. """ session = sqlalchemy_session.get_session() with session.begin(): session.merge(User(id=alarm.user_id)) session.merge(Project(id=alarm.project_id)) alarm_row = Alarm(id=alarm.alarm_id) alarm_row.update(alarm.as_dict()) session.add(alarm_row) session.flush() return self._row_to_alarm_model(alarm_row)
def update_alarm(self, alarm): """Update an alarm. :param alarm: the new Alarm to update """ session = sqlalchemy_session.get_session() with session.begin(): alarm_row = session.merge(Alarm(id=alarm.alarm_id)) alarm_row.update(alarm.as_dict()) session.flush() return self._row_to_alarm_model(alarm_row)
def update_alarm(self, alarm): """update alarm :param alarm: the new Alarm to update """ if alarm.alarm_id: alarm_row = self.session.merge(Alarm(id=alarm.alarm_id)) self._alarm_model_to_row(alarm, alarm_row) else: self.session.merge(User(id=alarm.user_id)) self.session.merge(Project(id=alarm.project_id)) alarm_row = self._alarm_model_to_row(alarm) self.session.add(alarm_row) self.session.flush() return self._row_to_alarm_model(alarm_row)
def _alarm_model_to_row(alarm, row=None): if row is None: row = Alarm(id=str(uuid.uuid1())) row.update(alarm.as_dict()) return row