Esempio n. 1
0
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)
Esempio n. 2
0
 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()
Esempio n. 3
0
 def deserialize(self, value):
     if isinstance(value, (date, datetime)):
         return value
     return date_parse(value)