Created a special function log.unreachable() to mark code unreachable, and changed a function name from log.affirm() to log.assertion().
- Legacy-Id: 12933
This commit is contained in:
parent
089f23f011
commit
5bb5ca727b
|
@ -186,6 +186,8 @@ def retrieve_search_results(form, all_types=False):
|
|||
return docs
|
||||
|
||||
def search(request):
|
||||
from ietf.utils import log
|
||||
log.unreachable()
|
||||
if request.GET:
|
||||
# backwards compatibility
|
||||
get_params = request.GET.copy()
|
||||
|
|
|
@ -170,7 +170,7 @@ class Meeting(models.Model):
|
|||
return qs
|
||||
|
||||
def sessions_that_can_be_placed(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
from django.db.models import Q
|
||||
donotplace_groups = Q(group__acronym="edu")
|
||||
donotplace_groups |= Q(group__acronym="tools")
|
||||
|
@ -544,7 +544,7 @@ class TimeSlot(models.Model):
|
|||
rooms.
|
||||
"""
|
||||
def create_concurrent_timeslots(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
rooms = self.meeting.room_set.all()
|
||||
self.room = rooms[0]
|
||||
self.save()
|
||||
|
@ -653,7 +653,7 @@ class Schedule(models.Model):
|
|||
|
||||
@property
|
||||
def official_class(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
if self.is_official:
|
||||
return "agenda_official"
|
||||
else:
|
||||
|
@ -698,13 +698,13 @@ class Schedule(models.Model):
|
|||
|
||||
@property
|
||||
def group_mapping(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
assignments,sessions,total,scheduled = self.group_session_mapping
|
||||
return assignments
|
||||
|
||||
@property
|
||||
def group_session_mapping(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
assignments = dict()
|
||||
sessions = dict()
|
||||
total = 0
|
||||
|
@ -730,14 +730,14 @@ class Schedule(models.Model):
|
|||
|
||||
# calculate badness of entire schedule
|
||||
def calc_badness(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
# now calculate badness
|
||||
assignments = self.group_mapping
|
||||
return self.calc_badness1(assignments)
|
||||
|
||||
# calculate badness of entire schedule
|
||||
def calc_badness1(self, assignments):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
badness = 0
|
||||
for sess in self.sessions_that_can_meet:
|
||||
badness += sess.badness(assignments)
|
||||
|
@ -789,7 +789,7 @@ class SchedTimeSessAssignment(models.Model):
|
|||
|
||||
@property
|
||||
def area(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
if not self.session or not self.session.group:
|
||||
return ""
|
||||
if self.session.group.type_id == "irtf":
|
||||
|
@ -802,7 +802,7 @@ class SchedTimeSessAssignment(models.Model):
|
|||
|
||||
@property
|
||||
def group_type_str(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
if not self.session or not self.session.group:
|
||||
return ""
|
||||
if self.session.group and self.session.group.type_id == "wg":
|
||||
|
@ -815,7 +815,7 @@ class SchedTimeSessAssignment(models.Model):
|
|||
|
||||
@property
|
||||
def slottype(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
if self.timeslot and self.timeslot.type:
|
||||
return self.timeslot.type.slug
|
||||
else:
|
||||
|
@ -919,20 +919,20 @@ class Constraint(models.Model):
|
|||
|
||||
@property
|
||||
def person_conflicted(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
if self.person is None:
|
||||
return "unknown person"
|
||||
return self.person.name
|
||||
|
||||
def status(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
if self.active_status is not None:
|
||||
return self.active_status
|
||||
else:
|
||||
return True
|
||||
|
||||
def __lt__(self, y):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
#import sys
|
||||
#sys.stdout.write("me: %s y: %s\n" % (self.name.slug, y.name.slug))
|
||||
if self.name.slug == 'conflict' and y.name.slug == 'conflic2':
|
||||
|
@ -944,7 +944,7 @@ class Constraint(models.Model):
|
|||
return False
|
||||
|
||||
def constraint_cost(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
return self.name.penalty;
|
||||
|
||||
def json_url(self):
|
||||
|
@ -1162,7 +1162,7 @@ class Session(models.Model):
|
|||
return self.timeslotassignment_for_agenda(self.meeting.agenda)
|
||||
|
||||
def unique_constraints(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
global constraint_cache_uses, constraint_cache_initials
|
||||
constraint_cache_uses += 1
|
||||
# this cache keeps the automatic placer from visiting the database continuously
|
||||
|
@ -1267,13 +1267,13 @@ class Session(models.Model):
|
|||
|
||||
return self._agenda_file
|
||||
def badness_test(self, num):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
from settings import BADNESS_CALC_LOG # pylint: disable=import-error
|
||||
#sys.stdout.write("num: %u / BAD: %u\n" % (num, BADNESS_CALC_LOG))
|
||||
return BADNESS_CALC_LOG >= num
|
||||
|
||||
def badness_log(self, num, msg):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
if self.badness_test(num):
|
||||
sys.stdout.write(msg)
|
||||
|
||||
|
@ -1290,7 +1290,7 @@ class Session(models.Model):
|
|||
# not being scheduled is worth 10,000,000 points
|
||||
#
|
||||
def badness(self, assignments):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
badness = 0
|
||||
|
||||
if not (self.group in assignments):
|
||||
|
@ -1381,7 +1381,7 @@ class Session(models.Model):
|
|||
return badness
|
||||
|
||||
def setup_conflicts(self):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
conflicts = self.unique_constraints()
|
||||
|
||||
self.session_conflicts = []
|
||||
|
@ -1420,7 +1420,7 @@ class Session(models.Model):
|
|||
# not being scheduled is worth 10,000,000 points
|
||||
#
|
||||
def badness_fast(self, timeslot, scheduleslot, session_pk_list):
|
||||
log.affirm('not "Reachable Code"')
|
||||
log.unreachable()
|
||||
from settings import BADNESS_UNPLACED, BADNESS_TOOSMALL_50, BADNESS_TOOSMALL_100, BADNESS_TOOBIG, BADNESS_MUCHTOOBIG # pylint: disable=import-error
|
||||
|
||||
badness = 0
|
||||
|
|
|
@ -444,7 +444,7 @@ def update_authors(draft, submission):
|
|||
|
||||
a.order = order
|
||||
a.save()
|
||||
log.affirm('a.author_id != "none"')
|
||||
log.assertion('a.author_id != "none"')
|
||||
|
||||
authors.append(email)
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ def log(msg):
|
|||
|
||||
logger = logging.getLogger('django')
|
||||
|
||||
def affirm(statement):
|
||||
def assertion(statement):
|
||||
"""
|
||||
This acts like an assertion. It uses the django logger in order to send
|
||||
the failed assertion and a backtrace as for an internal server error.
|
||||
|
@ -74,3 +74,20 @@ def affirm(statement):
|
|||
tb.tb_lineno = frame.f_lineno
|
||||
tb.tb_next = None
|
||||
logger.error("Assertion '%s' failed.", statement, exc_info=(AssertionError, statement, tb), extra=frame.f_locals)
|
||||
|
||||
def unreachable():
|
||||
"Raises an assertion or sends traceback to admins if executed."
|
||||
class Traceback():
|
||||
pass
|
||||
frame = inspect.stack()[1][0]
|
||||
if settings.DEBUG is True:
|
||||
raise AssertionError("Arrived at code in %s() which was marked unreachable." % frame.f_code.co_name)
|
||||
else:
|
||||
# build a simulated traceback object
|
||||
tb = Traceback()
|
||||
tb.tb_frame = frame
|
||||
tb.tb_lasti = None
|
||||
tb.tb_lineno = frame.f_lineno
|
||||
tb.tb_next = None
|
||||
logger.error("Arrived at code in %s() which was marked unreachable.", frame.f_code.co_name, exc_info=(AssertionError, frame.f_code.co_name, tb), extra=frame.f_locals)
|
||||
|
||||
|
|
Loading…
Reference in a new issue