コード例 #1
0
class Event(ObraModel):
    """
    A single race day - may be standalone or part of a series.
    """
    id = IntegerField(verbose_name='Event ID', primary_key=True)
    name = CharField(verbose_name='Event Name')
    discipline = CharField(verbose_name='Event Discipline', index=True)
    year = IntegerField(verbose_name='Event Year')
    date = CharField(verbose_name='Event Month/Day')
    series = ForeignKeyField(verbose_name='Event Series',
                             model=Series,
                             backref='events',
                             on_update='RESTRICT',
                             on_delete='RESTRICT',
                             null=True)
    parent = ForeignKeyField(verbose_name='Child Events',
                             model='self',
                             backref='children',
                             on_update='RESTRICT',
                             on_delete='RESTRICT',
                             null=True)
    ignore = BooleanField(verbose_name='Ignore/Hide Event', default=False)

    @property
    def discipline_title(self):
        return self.discipline.replace('_', ' ').title()
コード例 #2
0
class Run(BaseModel):
    FAILED = -2
    CANCELED = -1
    PENDING = 0
    SUBMITTED = 1
    RUNNING = 2
    DONE = 3

    STATUS_CHOICES = (
        (FAILED, "Failed"),
        (CANCELED, "Canceled"),
        (PENDING, "Pending"),
        (SUBMITTED, "Submitted"),
        (RUNNING, "Running"),
        (DONE, "Done"),
    )

    id = CharField(null=True, primary_key=True)
    created_at = DateTimeField(default=datetime.now)
    tool = ForeignKeyField(Tool, backref="runs")
    tool_version = CharField(null=True)
    parameter_group = ForeignKeyField(ParameterGroup, backref="runs")
    task = ForeignKeyField(Task, backref="runs")
    status = IntegerField(choices=STATUS_CHOICES, default=PENDING)
    last_step = ForeignKeyField(Step, null=True)
    iteration = IntegerField(default=0)
コード例 #3
0
class PendingUpgrade(ObraModel):
    result = ForeignKeyField(verbose_name='Result with Pending Upgrade',
                             model=Result,
                             backref='pending',
                             on_update='RESTRICT',
                             on_delete='RESTRICT',
                             primary_key=True)
    upgrade_confirmation = ForeignKeyField(
        verbose_name='Member Data Confirming Upgrade',
        model=ObraPersonSnapshot,
        backref='pending',
        on_update='RESTRICT',
        on_delete='RESTRICT')
    discipline = CharField(verbose_name='Upgrade Discipline', index=True)
コード例 #4
0
class RunStatistic(BaseModel):
    TIMEOUT = "TLE"
    MEMOUT = "MEM"
    RUNTIME_ERR = "RTE"
    OUTPUT_LIMIT = "OLE"
    SUCCESS = "OK"

    VERDICT_CHOICES = (
        (TIMEOUT, "Time Limit Exceeded"),
        (MEMOUT, "Memory Limit Exceeded"),
        (RUNTIME_ERR, "Runtime Error"),
        (OUTPUT_LIMIT, "Output Limit Exceeded"),
        (SUCCESS, "Run Successfully"),
    )

    created_at = DateTimeField(default=datetime.now)
    run = ForeignKeyField(Run,
                          backref="statistics",
                          on_delete="cascade",
                          primary_key=True)
    cpu_time = FloatField(help_text="CPU Time (s)", null=True)
    wall_time = FloatField(help_text="Wall Clock Time (s)", null=True)
    max_memory = FloatField(help_text="Max Memory Usage (KiB)", null=True)
    return_code = IntegerField(help_text="Process Return Code", null=True)
    verdict = CharField(choices=VERDICT_CHOICES, max_length=3, null=True)
コード例 #5
0
class Parameter(BaseModel):
    group = ForeignKeyField(ParameterGroup, backref="parameters")
    key = CharField()
    value = CharField()

    class Meta:
        primary_key = CompositeKey("group", "key")
コード例 #6
0
class Result(ObraModel):
    """
    An individual race result - a Person's place in a specific Race.
    """
    id = IntegerField(verbose_name='Result ID', primary_key=True)
    race = ForeignKeyField(verbose_name='Result Race',
                           model=Race,
                           backref='results',
                           on_update='RESTRICT',
                           on_delete='RESTRICT')
    person = ForeignKeyField(verbose_name='Result Person',
                             model=Person,
                             backref='results',
                             on_update='RESTRICT',
                             on_delete='RESTRICT',
                             null=True)
    place = CharField(verbose_name='Place', index=True)
    time = IntegerField(verbose_name='Time', null=True)
    laps = IntegerField(verbose_name='Laps', null=True)
コード例 #7
0
class Points(ObraModel):
    """
    Points toward a category upgrade - awarded for a good Result in a Race of a specific size.
    """
    result = ForeignKeyField(verbose_name='Result awarding Upgrade Points',
                             model=Result,
                             backref='points',
                             on_update='RESTRICT',
                             on_delete='RESTRICT',
                             primary_key=True)
    value = CharField(verbose_name='Points Earned for Result', default='0')
    notes = CharField(verbose_name='Notes', default='')
    needs_upgrade = BooleanField(verbose_name='Needs Upgrade', default=False)
    upgrade_confirmation = ForeignKeyField(
        verbose_name='Member Data Confirming Upgrade',
        model=ObraPersonSnapshot,
        backref='points',
        null=True)
    sum_value = IntegerField(verbose_name='Current Points Sum', default=0)
    sum_categories = JSONField(verbose_name='Current Category', default=[])
コード例 #8
0
class Rank(ObraModel):
    """
    Rank points associated with a Result
    """
    result = ForeignKeyField(verbose_name='Rank from Result',
                             model=Result,
                             backref='rank',
                             on_update='RESTRICT',
                             on_delete='RESTRICT',
                             primary_key=True)
    value = DecimalField(verbose_name='Rank for Place', decimal_places=2)
コード例 #9
0
class Quality(ObraModel):
    """
    Race Quality figures for a Race
    """
    race = ForeignKeyField(verbose_name='Quality Race',
                           model=Race,
                           backref='quality',
                           on_update='RESTRICT',
                           on_delete='RESTRICT')
    value = DecimalField(verbose_name='Race Quality', decimal_places=2)
    points_per_place = DecimalField(verbose_name='Points per Place',
                                    decimal_places=2)
コード例 #10
0
class Race(ObraModel):
    """
    A single race at an event, with one or more results.
    """
    id = IntegerField(verbose_name='Race ID', primary_key=True)
    name = CharField(verbose_name='Race Name', index=True)
    date = DateField(verbose_name='Race Date')
    categories = JSONField(verbose_name='Race Categories')
    starters = IntegerField(verbose_name='Race Starting Field Size', default=0)
    created = DateTimeField(verbose_name='Results Created')
    updated = DateTimeField(verbose_name='Results Updated')
    event = ForeignKeyField(verbose_name='Race Event',
                            model=Event,
                            backref='races',
                            on_update='RESTRICT',
                            on_delete='RESTRICT')
コード例 #11
0
class ObraPersonSnapshot(ObraModel):
    """
    A point in time record of OBRA member data.
    The OBRA website doesn't make historical data available, so we store a timestamped
    copy every time we do a lookup. Doesn't help with really old upgrades, but it should
    be useful going forward.
    """
    id = AutoField(verbose_name='Scrape ID', primary_key=True)
    date = DateField(verbose_name='Scrape Date')
    person = ForeignKeyField(verbose_name='Person',
                             model=Person,
                             backref='obra',
                             on_update='RESTRICT',
                             on_delete='RESTRICT')
    license = IntegerField(verbose_name='License', null=True)
    mtb_category = IntegerField(verbose_name='MTB Category', default=3)
    dh_category = IntegerField(verbose_name='DH Category', default=3)
    ccx_category = IntegerField(verbose_name='CX Category', default=5)
    road_category = IntegerField(verbose_name='Road Category', default=5)
    track_category = IntegerField(verbose_name='Track Category', default=5)

    class Meta:
        indexes = ((('date', 'person'), True), )

    def category_for_discipline(self, discipline):
        discipline = discipline.replace('mountain_bike', 'mtb')
        discipline = discipline.replace('short_track', 'mtb')
        discipline = discipline.replace('cyclocross', 'ccx')
        discipline = discipline.replace('criterium', 'road')
        discipline = discipline.replace('time_trial', 'road')
        discipline = discipline.replace('circuit', 'road')
        discipline = discipline.replace('gran_fondo', 'road')
        discipline = discipline.replace('gravel', 'road')
        discipline = discipline.replace('tour', 'road')
        discipline = discipline.replace('downhill', 'dh')
        discipline = discipline.replace('super_d', 'dh')
        return getattr(self, discipline + '_category')
コード例 #12
0
class Reference(BaseModel):
    name = TextField()
    reference_type = TextField(default=None, null=True)
    character = ForeignKeyField(Character, related_name='references')
コード例 #13
0
class ParameterGroup(BaseModel):
    name = CharField()
    tool = ForeignKeyField(Tool, backref="parameter_groups")

    class Meta:
        indexes = ((("name", "tool"), True), )
コード例 #14
0
class Task(BaseModel):
    group = ForeignKeyField(TaskGroup, backref="tasks")
    path = CharField(primary_key=True)
コード例 #15
0
class SudokuVerdict(BaseModel):
    created_at = DateTimeField(default=datetime.now)
    run = ForeignKeyField(Run, backref="sudoku_verdicts", on_delete="cascade")
    is_valid = BooleanField()
コード例 #16
0
ファイル: sysinfo.py プロジェクト: vroland/reprobench
class RunNode(BaseModel):
    run = ForeignKeyField(Run, backref="run_node", primary_key=True)
    node = ForeignKeyField(Node, backref="runs")
コード例 #17
0
class SudokuVerdict(BaseModel):
    run = ForeignKeyField(Run, backref="sudoku_verdicts", on_delete="cascade")
    is_valid = BooleanField()
コード例 #18
0
class Song(BaseModel):
    title = TextField()
    artist = TextField()
    link = TextField(default=None, null=True)
    reference = ForeignKeyField(Reference, related_name='songs')