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 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
 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