Changeset View
Changeset View
Standalone View
Standalone View
swh/web/browse/views/origin.py
Show All 24 Lines | |||||
from swh.web.misc.coverage import code_providers | from swh.web.misc.coverage import code_providers | ||||
from .utils.snapshot_context import ( | from .utils.snapshot_context import ( | ||||
browse_snapshot_directory, browse_snapshot_content, | browse_snapshot_directory, browse_snapshot_content, | ||||
browse_snapshot_log, browse_snapshot_branches, | browse_snapshot_log, browse_snapshot_branches, | ||||
browse_snapshot_releases | browse_snapshot_releases | ||||
) | ) | ||||
@browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/directory/', # noqa | |||||
r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/directory/(?P<path>.+)/', # noqa | @browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/directory/', # noqa | '/visit/(?P<timestamp>.+)/directory/', | ||||
r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/directory/(?P<path>.+)/', # noqa | r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/directory/', # noqa | '/visit/(?P<timestamp>.+)/directory/(?P<path>.+)/', | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/directory/(?P<path>.+)/', # noqa | r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
r'origin/(?P<origin_url>.+)/directory/', # noqa | '/directory/', | ||||
r'origin/(?P<origin_url>.+)/directory/(?P<path>.+)/', # noqa | r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
'/directory/(?P<path>.+)/', | |||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/directory/', | |||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)' | |||||
'/directory/(?P<path>.+)/', | |||||
r'origin/(?P<origin_url>.+)/directory/', | |||||
r'origin/(?P<origin_url>.+)/directory/(?P<path>.+)/', | |||||
view_name='browse-origin-directory') | view_name='browse-origin-directory') | ||||
def origin_directory_browse(request, origin_url, origin_type=None, | def origin_directory_browse(request, origin_url, origin_type=None, | ||||
timestamp=None, path=None): | timestamp=None, path=None): | ||||
"""Django view for browsing the content of a directory associated | """Django view for browsing the content of a directory associated | ||||
to an origin for a given visit. | to an origin for a given visit. | ||||
The url scheme that points to it is the following: | The url scheme that points to it is the following: | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/directory/[(path)/]` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/directory/[(path)/]` | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/directory/[(path)/]` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/directory/[(path)/]` | ||||
""" # noqa | """ # noqa | ||||
return browse_snapshot_directory( | return browse_snapshot_directory( | ||||
request, origin_type=origin_type, origin_url=origin_url, | request, origin_type=origin_type, origin_url=origin_url, | ||||
timestamp=timestamp, path=path) | timestamp=timestamp, path=path) | ||||
@browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/content/(?P<path>.+)/', # noqa | @browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/content/(?P<path>.+)/', # noqa | '/visit/(?P<timestamp>.+)/content/(?P<path>.+)/', | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/content/(?P<path>.+)/', # noqa | r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
r'origin/(?P<origin_url>.+)/content/(?P<path>.+)/', # noqa | '/content/(?P<path>.+)/', | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)' | |||||
'/content/(?P<path>.+)/', | |||||
r'origin/(?P<origin_url>.+)/content/(?P<path>.+)/', | |||||
view_name='browse-origin-content') | view_name='browse-origin-content') | ||||
def origin_content_browse(request, origin_url, origin_type=None, path=None, | def origin_content_browse(request, origin_url, origin_type=None, path=None, | ||||
timestamp=None): | timestamp=None): | ||||
"""Django view that produces an HTML display of a content | """Django view that produces an HTML display of a content | ||||
associated to an origin for a given visit. | associated to an origin for a given visit. | ||||
The url scheme that points to it is the following: | The url scheme that points to it is the following: | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/content/(path)/` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/content/(path)/` | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/content/(path)/` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/content/(path)/` | ||||
""" # noqa | """ # noqa | ||||
return browse_snapshot_content(request, origin_type=origin_type, | return browse_snapshot_content(request, origin_type=origin_type, | ||||
origin_url=origin_url, timestamp=timestamp, | origin_url=origin_url, timestamp=timestamp, | ||||
path=path) | path=path) | ||||
PER_PAGE = 20 | PER_PAGE = 20 | ||||
@browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/log/', # noqa | @browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
'/visit/(?P<timestamp>.+)/log/', | |||||
r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/log/', | r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/log/', | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/log/', # noqa | r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/log/', | ||||
r'origin/(?P<origin_url>.+)/log/', | r'origin/(?P<origin_url>.+)/log/', | ||||
view_name='browse-origin-log') | view_name='browse-origin-log') | ||||
def origin_log_browse(request, origin_url, origin_type=None, timestamp=None): | def origin_log_browse(request, origin_url, origin_type=None, timestamp=None): | ||||
"""Django view that produces an HTML display of revisions history (aka | """Django view that produces an HTML display of revisions history (aka | ||||
the commit log) associated to a software origin. | the commit log) associated to a software origin. | ||||
The url scheme that points to it is the following: | The url scheme that points to it is the following: | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/log/` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/log/` | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/log/` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/log/` | ||||
""" # noqa | """ # noqa | ||||
return browse_snapshot_log(request, origin_type=origin_type, | return browse_snapshot_log(request, origin_type=origin_type, | ||||
origin_url=origin_url, timestamp=timestamp) | origin_url=origin_url, timestamp=timestamp) | ||||
@browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/branches/', # noqa | |||||
r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/branches/', # noqa | @browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/branches/', # noqa | '/visit/(?P<timestamp>.+)/branches/', | ||||
r'origin/(?P<origin_url>.+)/branches/', # noqa | r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
'/branches/', | |||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/branches/', | |||||
r'origin/(?P<origin_url>.+)/branches/', | |||||
view_name='browse-origin-branches') | view_name='browse-origin-branches') | ||||
def origin_branches_browse(request, origin_url, origin_type=None, | def origin_branches_browse(request, origin_url, origin_type=None, | ||||
timestamp=None): | timestamp=None): | ||||
"""Django view that produces an HTML display of the list of branches | """Django view that produces an HTML display of the list of branches | ||||
associated to an origin for a given visit. | associated to an origin for a given visit. | ||||
The url scheme that points to it is the following: | The url scheme that points to it is the following: | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/branches/` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/branches/` | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/branches/` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/branches/` | ||||
""" # noqa | """ # noqa | ||||
return browse_snapshot_branches(request, origin_type=origin_type, | return browse_snapshot_branches(request, origin_type=origin_type, | ||||
origin_url=origin_url, timestamp=timestamp) | origin_url=origin_url, timestamp=timestamp) | ||||
@browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/releases/', # noqa | @browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/releases/', # noqa | '/visit/(?P<timestamp>.+)/releases/', | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/releases/', # noqa | r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)' | ||||
r'origin/(?P<origin_url>.+)/releases/', # noqa | '/releases/', | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/releases/', | |||||
r'origin/(?P<origin_url>.+)/releases/', | |||||
view_name='browse-origin-releases') | view_name='browse-origin-releases') | ||||
def origin_releases_browse(request, origin_url, origin_type=None, | def origin_releases_browse(request, origin_url, origin_type=None, | ||||
timestamp=None): | timestamp=None): | ||||
"""Django view that produces an HTML display of the list of releases | """Django view that produces an HTML display of the list of releases | ||||
associated to an origin for a given visit. | associated to an origin for a given visit. | ||||
The url scheme that points to it is the following: | The url scheme that points to it is the following: | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/releases/` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/releases/` | ||||
* :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/releases/` | * :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visit/(timestamp)/releases/` | ||||
""" # noqa | """ # noqa | ||||
return browse_snapshot_releases(request, origin_type=origin_type, | return browse_snapshot_releases(request, origin_type=origin_type, | ||||
origin_url=origin_url, timestamp=timestamp) | origin_url=origin_url, timestamp=timestamp) | ||||
@browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/visits/', | @browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/visits/', | ||||
r'origin/(?P<origin_url>.+)/visits/', | r'origin/(?P<origin_url>.+)/visits/', | ||||
view_name='browse-origin-visits') | view_name='browse-origin-visits') | ||||
def origin_visits_browse(request, origin_url, origin_type=None): | def origin_visits_browse(request, origin_url, origin_type=None): | ||||
"""Django view that produces an HTML display of visits reporting | """Django view that produces an HTML display of visits reporting | ||||
for a swh origin identified by its id or its url. | for a swh origin identified by its id or its url. | ||||
The url that points to it is :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visits/`. | The url that points to it is | ||||
""" # noqa | :http:get:`/browse/origin/[(origin_type)/url/](origin_url)/visits/`. | ||||
""" | |||||
try: | try: | ||||
origin_info = get_origin_info(origin_url, origin_type) | origin_info = get_origin_info(origin_url, origin_type) | ||||
origin_visits = get_origin_visits(origin_info) | origin_visits = get_origin_visits(origin_info) | ||||
snapshot_context = get_snapshot_context(origin_type=origin_type, | snapshot_context = get_snapshot_context(origin_type=origin_type, | ||||
origin_url=origin_url) | origin_url=origin_url) | ||||
except Exception as exc: | except Exception as exc: | ||||
return handle_view_exception(request, exc) | return handle_view_exception(request, exc) | ||||
▲ Show 20 Lines • Show All 125 Lines • ▼ Show 20 Lines | |||||
@browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/', | @browse_route(r'origin/(?P<origin_type>[a-z]+)/url/(?P<origin_url>.+)/', | ||||
r'origin/(?P<origin_url>.+)/', | r'origin/(?P<origin_url>.+)/', | ||||
view_name='browse-origin') | view_name='browse-origin') | ||||
def origin_browse(request, origin_url, origin_type=None): | def origin_browse(request, origin_url, origin_type=None): | ||||
"""Django view that redirects to the display of the latest archived | """Django view that redirects to the display of the latest archived | ||||
snapshot for a given software origin. | snapshot for a given software origin. | ||||
""" # noqa | """ | ||||
last_snapshot_url = reverse('browse-origin-directory', | last_snapshot_url = reverse('browse-origin-directory', | ||||
url_args={'origin_type': origin_type, | url_args={'origin_type': origin_type, | ||||
'origin_url': origin_url}) | 'origin_url': origin_url}) | ||||
return redirect(last_snapshot_url) | return redirect(last_snapshot_url) |