'Returns if the course has been flagged as new. If
there is no flag, return a heuristic value considering the
announcement and the start dates.'

@property
def is_newish(self):

    flag = self.is_new
    if (flag is None):
        (announcement, start, now) = course_metadata_utils.sorting_dates(self.start, self.advertised_start, self.announcement)
        if (announcement and ((now - announcement).days < 30)):
            return True
        elif ((now - start).days < 1):
            return True
        else:
            return False
    elif isinstance(flag, basestring):
        return (flag.lower() in ['true', 'yes', 'y'])
    else:
        return bool(flag)
