예제 #1
0
def to_db(value, row, field='DOB'):
    """
    Given either a DOB string or an age string, set DOB+DOB_prec on the 
    object /row/ if the value is different.
    """
    if not value:
        dob = None
        prec = None
    elif isinstance(value, basestring):
        row_dob = getattr(row, field)
        row_age = None
        if row_dob:
            row_age = Age.from_dob(row_dob)
        try:
            age = Age.parse(value)
            if age == row_age:
                return
            dob, prec = age.to_dobprec()
        except Error:
            try:
                dob = datetime.mx_parse_date(value).mx()
                prec = PREC_DOB
            except Error:
                raise Error('Invalid DOB/age %r' % value)
    else:
        dob = value
        prec = PREC_DOB
    setattr(row, field, dob)
    setattr(row, field + '_prec', prec)
예제 #2
0
def to_db(value, row, field='DOB'):
    """
    Given either a DOB string or an age string, set DOB+DOB_prec on the 
    object /row/ if the value is different.
    """
    if not value:
        dob = None
        prec = None
    elif isinstance(value, basestring):
        row_dob = getattr(row, field)
        row_age = None
        if row_dob:
            row_age = Age.from_dob(row_dob)
        try:
            age = Age.parse(value)
            if age == row_age:
                return
            dob, prec = age.to_dobprec()
        except Error:
            try:
                dob = datetime.mx_parse_date(value).mx()
                prec = PREC_DOB
            except Error:
                raise Error('Invalid DOB/age %r' % value)
    else:
        dob = value
        prec = PREC_DOB
    setattr(row, field, dob)
    setattr(row, field+'_prec', prec)
예제 #3
0
 def calc_tick_labels(self):
     """
     Generate ticks & tick labels. If the density of the ticks looks like
     it will be too high, we start skipping ticks (tick_stride).
     """
     assert self.n_bins
     assert self.bin_span
     tick_labels = []
     ticks = []
     tick_stride = int(math.ceil(self.n_bins / float(self.max_ticks)))
     tick = self.first
     if self.bin_span.days == 1:
         adj = 0
         if tick_stride == 1:
             step = RelativeDateTime(days=1)
         elif tick_stride <= 7:
             step = RelativeDateTime(weeks=1, weekday=(Monday,0))
             tick += step
         elif tick_stride <= 14:
             step = RelativeDateTime(weeks=2, weekday=(Monday,0))
             tick += RelativeDateTime(weeks=1, weekday=(Monday,0))
         else:
             step = RelativeDateTime(day=1, months=1)
             tick += step
     else:
         adj = -0.5
         step = self.bin_span * tick_stride
     while tick < self.last:
         bin = (tick - self.first) / self.bin_span
         ticks.append(bin+adj)
         tick_labels.append(str(datetime.mx_parse_date(tick)))
         tick += step
     return ticks, tick_labels
 def to_sql(self, value):
     if value is None:
         return None
     elif isinstance(value, str):
         try:
             return datetime.mx_parse_date(value).mx()
         except datetime.Error, e:
             raise dbapi.ValidationError('%s: %s' % (self.name, e))
 def to_sql(self, value):
     if value is None:
         return None
     elif isinstance(value, str):
         try:
             return datetime.mx_parse_date(value).mx()
         except datetime.Error, e:
             raise dbapi.ValidationError('%s: %s' % (self.name, e))
예제 #6
0
def age_if_dob(dob):
    """
    If DOB (not age) string, return age string, otherwise return None
    """
    if dob:
        try:
            return str(Age.from_dob(datetime.mx_parse_date(dob)))
        except Error:
            pass
예제 #7
0
def age_if_dob(dob):
    """
    If DOB (not age) string, return age string, otherwise return None
    """
    if dob:
        try:
            return str(Age.from_dob(datetime.mx_parse_date(dob)))
        except Error:
            pass
예제 #8
0
def parse_dob_or_age(value, now=None):
    """
    Given a date-of-birth or age string, return a DOB & precision
    """
    if not value:
        return None, None
    try:
        return Age.parse(value).to_dobprec(now)
    except Error:
        pass
    try:
        return datetime.mx_parse_date(value).mx(), PREC_DOB
    except Error:
        raise Error('Invalid DOB/age %r' % value)
예제 #9
0
def parse_dob_or_age(value, now=None):
    """
    Given a date-of-birth or age string, return a DOB & precision
    """
    if not value:
        return None, None
    try:
        return Age.parse(value).to_dobprec(now)
    except Error:
        pass
    try:
        return datetime.mx_parse_date(value).mx(), PREC_DOB
    except Error:
        raise Error('Invalid DOB/age %r' % value)
 def from_sql(self, value):
     if value is not None:
         return datetime.mx_parse_date(value)
 def from_user(self, value):
     try:
         return datetime.mx_parse_date(value)
     except datetime.Error:
         return value
 def from_sql(self, value):
     if value is not None:
         return datetime.mx_parse_date(value)
 def from_user(self, value):
     try:
         return datetime.mx_parse_date(value)
     except datetime.Error:
         return value