* Updated build list to include an alert state * Docstring issue fixed. * Template filter name changed. * Logic Moved to Models * Lint issue Fixed.master
parent
5978dcfde0
commit
3218c808e8
|
@ -702,6 +702,14 @@ p.build-missing { font-size: .8em; color: #9d9a55; margin: 0 0 3px; }
|
|||
#footer label { color: #BCC1C3; font-weight: normal; }
|
||||
#footer input[type="text"], #footer input[type="email"] { padding: 4px; font-size: 12px; line-height: 16px; margin-bottom: 5px }
|
||||
|
||||
/* Warning Icon for Build List triggered */
|
||||
.module-item.col-span a span.icon-warning:before {
|
||||
font-family: FontAwesome;
|
||||
font-size: .9em;
|
||||
padding-right: .3em;
|
||||
font-weight: normal;
|
||||
content: "\f071";
|
||||
}
|
||||
|
||||
/* utils */
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
"""Models for the builds app."""
|
||||
|
||||
import datetime
|
||||
import logging
|
||||
import os.path
|
||||
import re
|
||||
|
@ -31,6 +32,7 @@ from .constants import (
|
|||
BRANCH,
|
||||
BUILD_STATE,
|
||||
BUILD_STATE_FINISHED,
|
||||
BUILD_STATE_TRIGGERED,
|
||||
BUILD_TYPES,
|
||||
LATEST,
|
||||
NON_REPOSITORY_VERSIONS,
|
||||
|
@ -629,6 +631,12 @@ class Build(models.Model):
|
|||
"""Return if build has a finished state."""
|
||||
return self.state == BUILD_STATE_FINISHED
|
||||
|
||||
@property
|
||||
def is_stale(self):
|
||||
"""Return if build state is triggered & date more than 5m ago."""
|
||||
mins_ago = timezone.now() - datetime.timedelta(minutes=5)
|
||||
return self.state == BUILD_STATE_TRIGGERED and self.date < mins_ago
|
||||
|
||||
|
||||
class BuildCommandResultMixin:
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
import os
|
||||
|
||||
import mock
|
||||
from django.test import TestCase
|
||||
from django_dynamic_fixture import fixture, get
|
||||
from django.utils import timezone
|
||||
|
||||
from readthedocs.builds.models import Build, Version
|
||||
from readthedocs.doc_builder.config import load_yaml_config
|
||||
|
@ -531,3 +533,32 @@ class BuildModelTests(TestCase):
|
|||
build_two.save()
|
||||
self.assertEqual(build_two._config, {})
|
||||
self.assertEqual(build_two.config, {})
|
||||
|
||||
def test_build_is_stale(self):
|
||||
now = timezone.now()
|
||||
|
||||
build_one = get(
|
||||
Build,
|
||||
project=self.project,
|
||||
version=self.version,
|
||||
date=now - datetime.timedelta(minutes=8),
|
||||
state='finished'
|
||||
)
|
||||
build_two = get(
|
||||
Build,
|
||||
project=self.project,
|
||||
version=self.version,
|
||||
date=now - datetime.timedelta(minutes=6),
|
||||
state='triggered'
|
||||
)
|
||||
build_three = get(
|
||||
Build,
|
||||
project=self.project,
|
||||
version=self.version,
|
||||
date=now - datetime.timedelta(minutes=2),
|
||||
state='triggered'
|
||||
)
|
||||
|
||||
self.assertFalse(build_one.is_stale)
|
||||
self.assertTrue(build_two.is_stale)
|
||||
self.assertFalse(build_three.is_stale)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{% for build in build_qs %}
|
||||
<li class="module-item col-span">
|
||||
<div id="build-{{ build.id }}">
|
||||
<a href="{{ build.get_absolute_url }}"><span id="build-state">{% if build.state != 'finished' %}{{ build.get_state_display }} {% else %} {% if build.success %}{% trans "Passed" %}{% else %}{% trans "Failed" %}{% endif %}{% endif %}</span>
|
||||
<a href="{{ build.get_absolute_url }}">{% if build.is_stale %}<span class="icon-warning" title="{% trans 'This build is still waiting to be built' %}"></span>{% endif %}<span id="build-state">{% if build.state != 'finished' %}{{ build.get_state_display }} {% else %} {% if build.success %}{% trans "Passed" %}{% else %}{% trans "Failed" %}{% endif %}{% endif %}</span>
|
||||
<img src="{% static 'core/img/loader.gif' %}" class="build-loading hide">
|
||||
<span class="quiet">{% if build.version %}{% blocktrans with build.version.slug as slug and build.type as type %}version {{ slug }} ({{ type }}){% endblocktrans %}{% endif %}</span><span class="quiet right">{% blocktrans with build.date|timesince as date %}{{ date }} ago{% endblocktrans %}</span>
|
||||
</a>
|
||||
|
|
Loading…
Reference in New Issue