def sync_statement(stmt, same_as, op): if stmt['attribute'] in SKIP_ATTRIBUTES: return via = '%s>>%s' % (same_as['id'], stmt['id']) q = db.session.query(Statement) q = q.filter(Statement.context_id == same_as['context_id']) q = q.filter(Statement.inferred_via == via) stmt_inf = q.first() if stmt_inf is None: stmt_inf = Statement(same_as['value'], stmt['attribute'], None, None) stmt_inf.context_id = same_as['context_id'] stmt_inf.inferred_via = via if op == 'delete' or stmt['deleted_at'] or same_as['deleted_at']: stmt_inf.deleted_at = date_parse(stmt['deleted_at']) or \ date_parse(same_as['deleted_at']) or datetime.utcnow() else: stmt_inf.deleted_at = None stmt_inf.value = stmt['value'] log.info('Inferred statement %s -> %s -> %s via same_as %s', same_as['value'], stmt['attribute'], stmt['value'], via) db.session.add(stmt_inf)
def deserialize(self, value): if isinstance(value, date): return value if isinstance(value, datetime): return value.date() dt = date_parse(value) if dt is not None: return dt.date()
def deserialize(self, value): if isinstance(value, (date, datetime)): return value return date_parse(value)