Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/storage.py
# Copyright (C) 2015-2018 The Software Heritage developers | # Copyright (C) 2015-2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from collections import defaultdict | from collections import defaultdict | ||||
import copy | import copy | ||||
from concurrent.futures import ThreadPoolExecutor | from concurrent.futures import ThreadPoolExecutor | ||||
import datetime | import datetime | ||||
import itertools | import itertools | ||||
import json | import json | ||||
import warnings | |||||
import dateutil.parser | import dateutil.parser | ||||
import psycopg2 | import psycopg2 | ||||
import psycopg2.pool | import psycopg2.pool | ||||
from . import converters | from . import converters | ||||
from .common import db_transaction_generator, db_transaction | from .common import db_transaction_generator, db_transaction | ||||
from .db import Db | from .db import Db | ||||
▲ Show 20 Lines • Show All 1,145 Lines • ▼ Show 20 Lines | def snapshot_get_branches(self, snapshot_id, branches_from=b'', | ||||
'id': snapshot_id, | 'id': snapshot_id, | ||||
'branches': branches, | 'branches': branches, | ||||
'next_branch': next_branch, | 'next_branch': next_branch, | ||||
} | } | ||||
return None | return None | ||||
@db_transaction() | @db_transaction() | ||||
def origin_visit_add(self, origin, date=None, type=None, | def origin_visit_add(self, origin, date, type=None, | ||||
db=None, cur=None, *, ts=None): | db=None, cur=None): | ||||
"""Add an origin_visit for the origin at ts with status 'ongoing'. | """Add an origin_visit for the origin at ts with status 'ongoing'. | ||||
For backward compatibility, `type` is optional and defaults to | For backward compatibility, `type` is optional and defaults to | ||||
the origin's type. | the origin's type. | ||||
Args: | Args: | ||||
origin (Union[int,str]): visited origin's identifier or URL | origin (Union[int,str]): visited origin's identifier or URL | ||||
date: timestamp of such visit | date (Union[str,datetime]): timestamp of such visit | ||||
type (str): the type of loader used for the visit (hg, git, ...) | type (str): the type of loader used for the visit (hg, git, ...) | ||||
Returns: | Returns: | ||||
dict: dictionary with keys origin and visit where: | dict: dictionary with keys origin and visit where: | ||||
- origin: origin identifier | - origin: origin identifier | ||||
- visit: the visit identifier for the new visit occurrence | - visit: the visit identifier for the new visit occurrence | ||||
""" | """ | ||||
if ts is None: | |||||
if date is None: | |||||
raise TypeError('origin_visit_add expected 2 arguments.') | |||||
else: | |||||
assert date is None | |||||
warnings.warn("argument 'ts' of origin_visit_add was renamed " | |||||
"to 'date' in v0.0.109.", | |||||
DeprecationWarning) | |||||
date = ts | |||||
if isinstance(origin, str): | if isinstance(origin, str): | ||||
origin = self.origin_get({'url': origin}, db=db, cur=cur) | origin = self.origin_get({'url': origin}, db=db, cur=cur) | ||||
origin_id = origin['id'] | origin_id = origin['id'] | ||||
else: | else: | ||||
origin = self.origin_get({'id': origin}, db=db, cur=cur) | origin = self.origin_get({'id': origin}, db=db, cur=cur) | ||||
origin_id = origin['id'] | origin_id = origin['id'] | ||||
if isinstance(date, str): | if isinstance(date, str): | ||||
# FIXME: Converge on iso8601 at some point | |||||
date = dateutil.parser.parse(date) | date = dateutil.parser.parse(date) | ||||
if type is None: | if type is None: | ||||
type = origin['type'] | type = origin['type'] | ||||
visit_id = db.origin_visit_add(origin_id, date, type, cur) | visit_id = db.origin_visit_add(origin_id, date, type, cur) | ||||
if self.journal_writer: | if self.journal_writer: | ||||
▲ Show 20 Lines • Show All 699 Lines • Show Last 20 Lines |