Ejemplo n.º 1
0
class ProgramGroupBonus(Model):
    "Bonus time for a program group."
    COLUMNS = {
        "id": ColumnInteger(autoincrement=True, primary_key=True),
        "amount_minutes": ColumnInteger(null=False),
        "created": ColumnDatetime(null=False),
        "creator": ColumnText(null=False),
        "effective_date": ColumnDate(null=False),
        "message": ColumnText(null=False),
        "program_group": ColumnForeignKey(ProgramGroup),
    }
Ejemplo n.º 2
0
class ProgramGroup(Model):
    "A group of several programs tracked together."
    COLUMNS = {
        "id": ColumnInteger(autoincrement=True, primary_key=True),
        "name": ColumnText(null=False),
        "minutes_monday": ColumnInteger(null=False),
        "minutes_tuesday": ColumnInteger(null=False),
        "minutes_wednesday": ColumnInteger(null=False),
        "minutes_thursday": ColumnInteger(null=False),
        "minutes_friday": ColumnInteger(null=False),
        "minutes_saturday": ColumnInteger(null=False),
        "minutes_sunday": ColumnInteger(null=False),
        "minutes_weekly": ColumnInteger(null=False),
        "minutes_monthly": ColumnInteger(null=False),
    }
Ejemplo n.º 3
0
class ProgramProcess(Model):
    "A process that a program may run on a system."
    COLUMNS = {
        "id": ColumnInteger(autoincrement=True, primary_key=True),
        "name": ColumnText(null=False),
        "program": ColumnForeignKey(Program),
    }
Ejemplo n.º 4
0
class Program(Model):
    "A program that can run on a computer that we track."
    COLUMNS = {
        "id": ColumnInteger(autoincrement=True, primary_key=True),
        "name": ColumnText(null=False),
        "program_group": ColumnForeignKey(ProgramGroup),
    }
Ejemplo n.º 5
0
class WindowWeekDaySpanOverride(Model):
    "An override for a single day in a window week."
    COLUMNS = {
        "id": ColumnInteger(autoincrement=True, primary_key=True),
        "created": ColumnDatetime(null=False),
        "creator": ColumnText(null=False),
        "effective": ColumnDate(null=False),
        "message": ColumnText(null=False),
    }
Ejemplo n.º 6
0
class WebsiteVisit(Model):
    "A single visit to a website."
    COLUMNS = {
        "id": ColumnInteger(autoincrement=True, primary_key=True),
        "at": ColumnDatetime(null=False),
        "hostname": ColumnText(null=False),
        "incognito": ColumnBoolean(null=False),
        "url": ColumnText(null=False),
        "username": ColumnText(null=False),
    }
Ejemplo n.º 7
0
class OneTimeMessage(Model):
    "A message to send once to a given person."
    COLUMNS = {
        "id": ColumnInteger(autoincrement=True, primary_key=True),
        "content": ColumnText(null=False),
        "hostname": ColumnText(null=True),
        "created": ColumnDatetime(null=False),
        "sent": ColumnDatetime(null=True),
        "username": ColumnText(null=True),
    }
Ejemplo n.º 8
0
class WindowWeekDaySpan(Model):
    "A span of time for a day of a week window."
    COLUMNS = {
        "id": ColumnInteger(autoincrement=True, primary_key=True),
        "day": ColumnInteger(null=False),
        "end": ColumnDatetime(null=True),
        "start": ColumnDatetime(null=False),
        "window_name": ColumnText(null=False),
    }

    def minutes_left(self, moment: datetime.time) -> int:
        """Get the minutes left in the span for a moment.

		Returns: 0 if the current moment falls outside of the span,
			or the number of minutes left until the span ends if the
			current moment is inside the span.
		"""

        return max(span.minutes_left(moment) for span in self.spans)

    @property
    def value(self) -> str:
        return "{}-{}".format(self.start, self.end)
Ejemplo n.º 9
0
class ProgramSession(Model):
    "A session using a particular program."
    COLUMNS = {
        "id": ColumnInteger(autoincrement=True, primary_key=True),
        "hostname": ColumnText(null=False),
        "end": ColumnDatetime(null=True),
        "pids": ColumnText(null=False),
        "program": ColumnForeignKey(Program),
        "start": ColumnDatetime(null=False),
        "username": ColumnText(null=False),
    }

    @property
    def duration(self) -> Optional[datetime.timedelta]:
        "Get the duration of the session, if possible."
        if self.start and self.end:
            return self.end - self.start
Ejemplo n.º 10
0
 class MyTable(Model):
     COLUMNS = {
         "id": ColumnInteger(autoincrement=True, primary_key=True),
         "count": ColumnInteger(),
         "name": ColumnText(null=True),
     }