models.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from public import db
  2. from libs.model import ModelMixin
  3. from libs.tools import human_time
  4. from datetime import datetime
  5. class Job(db.Model, ModelMixin):
  6. __tablename__ = 'schedule_jobs'
  7. id = db.Column(db.Integer, primary_key=True)
  8. name = db.Column(db.String(50))
  9. desc = db.Column(db.String(255))
  10. group = db.Column(db.String(50))
  11. command_user = db.Column(db.String(50))
  12. command = db.Column(db.String(255))
  13. targets = db.Column(db.String(255))
  14. trigger = db.Column(db.String(50))
  15. trigger_args = db.Column(db.String(255))
  16. enabled = db.Column(db.Boolean, default=False)
  17. def __repr__(self):
  18. return '<schedule.Job name=%r trigger=%r>' % (self.name, self.trigger)
  19. class JobHistory(db.Model, ModelMixin):
  20. __tablename__ = 'schedule_jobs_history'
  21. id = db.Column(db.Integer, primary_key=True)
  22. job_id = db.Column(db.Integer, db.ForeignKey('schedule_jobs.id', ondelete='CASCADE'))
  23. target = db.Column(db.String(50))
  24. exit_code = db.Column(db.Integer)
  25. stdout = db.Column(db.Text)
  26. stderr = db.Column(db.Text)
  27. time_cost = db.Column(db.Float)
  28. created = db.Column(db.String(20))
  29. @classmethod
  30. def write(cls, job_id, start_time, target, exit_code, stdout, stderr):
  31. cls(
  32. job_id=job_id,
  33. target=target,
  34. exit_code=exit_code,
  35. stdout=stdout[:1024],
  36. stderr=stderr[:1024],
  37. time_cost=round((datetime.now() - start_time).total_seconds(), 3),
  38. created=human_time(start_time)
  39. ).save()
  40. def __repr__(self):
  41. return '<schedule.JonHistory id=%r job_id=%r>' % (self.id, self.job_id)