Changeset View
Changeset View
Standalone View
Standalone View
swh/web/browse/views/origin.py
Show All 15 Lines | |||||
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_url>.+)/visit/(?P<timestamp>.+)/directory/', | @browse_route(r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)' | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)' | r'/directory/(?P<path>.+)/', | ||||
'/directory/(?P<path>.+)/', | |||||
r'origin/(?P<origin_url>.+)/directory/', | |||||
r'origin/(?P<origin_url>.+)/directory/(?P<path>.+)/', | r'origin/(?P<origin_url>.+)/directory/(?P<path>.+)/', | ||||
r'origin/(?P<origin_url>.+)/visit/(?P<timestamp>.+)/directory/', | |||||
r'origin/(?P<origin_url>.+)/directory/', | |||||
view_name='browse-origin-directory') | view_name='browse-origin-directory') | ||||
vlorentz: They are still ambiguous.
`origin/https://foobar/visit/1234/directory/directory/` can be… | |||||
anlambertAuthorUnsubmitted Done Inline ActionsIndeed, this will not work for origins containing visit or directory in their url (sigh). Currently, the origins that felt into those categories in the archive are: softwareheritage=> select * from origin where url ~ '.*/visit/.*'; id | url ----------+-------------------------------------------------------- 55571 | https://github.com/visit/CitybreakSsoDemo 137981 | https://github.com/visit/template_fix 142252 | https://github.com/visit/html_fix 2600737 | https://github.com/visit/spark-svn-mirror 2703707 | https://github.com/visit/Cbis.ProductManagement.Client 3448566 | https://github.com/visit/Citybreak.DistanceLookup 3786892 | https://github.com/visit/QConsole.NET 13264749 | https://github.com/visit/turisthack.se 13496506 | https://github.com/visit/crystalquartz 24401239 | https://github.com/visit/CBIS.WriteAPI.Client 27434679 | https://github.com/visit/api-doc 69842117 | https://github.com/visit/galaxy-docs 28586454 | https://github.com/visit/ha-api 29281950 | https://github.com/visit/cbisimport 32562703 | https://github.com/visit/ngit 34607943 | https://github.com/visit/reveal.js 35033245 | https://github.com/visit/gelf4net 37858795 | https://github.com/visit/structuremap 46831477 | https://github.com/visit/Spark 61764716 | https://github.com/visit/citybreak-online 64497527 | https://github.com/visit/visit-doc-template 84983803 | https://pypi.org/project/visit/ (22 lignes) softwareheritage=> select * from origin where url ~ '.*/directory/.*'; id | url ----------+-------------------------------------------------------------------- 84497127 | https://gitlab.com/TownPound/Cyclos/directory/directory-api-JS.git 84958944 | https://pypi.org/project/directory/ 89452895 | http://hdiff.luite.com/cgit/directory/ 89492532 | https://git.savannah.gnu.org/cgit/directory/dev/ 89492517 | https://git.savannah.gnu.org/cgit/directory/sbin/ 89493242 | https://git.savannah.gnu.org/cgit/directory/cvsroot/ 89494005 | http://git.savannah.gnu.org/git/directory/run 89493912 | http://git.savannah.gnu.org/git/directory/home 89492511 | https://git.savannah.gnu.org/cgit/directory/lib64/ 89493249 | https://git.savannah.gnu.org/cgit/directory/net/ 89494075 | http://git.savannah.gnu.org/git/directory/media 89493014 | https://git.savannah.gnu.org/cgit/directory/lib/ 89493140 | https://git.savannah.gnu.org/cgit/directory/tmp/ 89493752 | http://git.savannah.gnu.org/git/directory/srv 89494342 | http://git.savannah.gnu.org/git/directory/sbin 89492933 | https://git.savannah.gnu.org/cgit/directory/etc/ 89493575 | http://git.savannah.gnu.org/git/directory/usr 89493439 | http://git.savannah.gnu.org/git/directory/var 89492699 | https://git.savannah.gnu.org/cgit/directory/local/ 89493186 | https://git.savannah.gnu.org/cgit/directory/sources/ 89492476 | https://git.savannah.gnu.org/cgit/directory/home/ 89493683 | http://git.savannah.gnu.org/git/directory/net 89493457 | http://git.savannah.gnu.org/git/directory/sources 89493547 | http://git.savannah.gnu.org/git/directory/lib 89492783 | https://git.savannah.gnu.org/cgit/directory/mnt/ 89492998 | https://git.savannah.gnu.org/cgit/directory/proc/ 89493023 | https://git.savannah.gnu.org/cgit/directory/root/ 89492575 | https://git.savannah.gnu.org/cgit/directory/boot/ 89492673 | https://git.savannah.gnu.org/cgit/directory/usr/ 89492674 | https://git.savannah.gnu.org/cgit/directory/var/ 89492781 | https://git.savannah.gnu.org/cgit/directory/srv/ 89493307 | https://git.savannah.gnu.org/cgit/directory/sys/ 89493314 | https://git.savannah.gnu.org/cgit/directory/archives/ 89492689 | https://git.savannah.gnu.org/cgit/directory/lost+found/ 89492690 | https://git.savannah.gnu.org/cgit/directory/run/ 89492966 | https://git.savannah.gnu.org/cgit/directory/bin/ 89493899 | http://git.savannah.gnu.org/git/directory/sys 89493911 | http://git.savannah.gnu.org/git/directory/bin 89493178 | https://git.savannah.gnu.org/cgit/directory/opt/ 89494044 | http://git.savannah.gnu.org/git/directory/root 89493954 | http://git.savannah.gnu.org/git/directory/archives 89493347 | https://git.savannah.gnu.org/cgit/directory/media/ 89493849 | http://git.savannah.gnu.org/git/directory/opt 89493662 | http://git.savannah.gnu.org/git/directory/local 89493930 | http://git.savannah.gnu.org/git/directory/tmp 89494298 | http://git.savannah.gnu.org/git/directory/mnt 89493889 | http://git.savannah.gnu.org/git/directory/lib64 89494119 | http://git.savannah.gnu.org/git/directory/boot 89494306 | http://git.savannah.gnu.org/git/directory/lost+found 89494452 | http://git.savannah.gnu.org/git/directory/etc 89494362 | http://git.savannah.gnu.org/git/directory/dev 89494559 | http://git.savannah.gnu.org/git/directory/proc 89494501 | http://git.savannah.gnu.org/git/directory/cvsroot (53 lignes) I will abandon that diff and create a task to globally disambiguate browse urls and rely on query parameters instead of url arguments as this is the only solution to fix that mess. anlambert: Indeed, this will not work for origins containing `visit` or `directory` in their url (sigh). | |||||
def origin_directory_browse(request, origin_url, | def origin_directory_browse(request, origin_url, | ||||
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_url)/directory/[(path)/]` | * :http:get:`/browse/origin/(origin_url)/directory/[(path)/]` | ||||
▲ Show 20 Lines • Show All 139 Lines • Show Last 20 Lines |
They are still ambiguous.
origin/https://foobar/visit/1234/directory/directory/ can be parsed in these ways:
origin/https://foobar/visit/1234/directory/ can be parsed in these ways:
And none of these are more valid than others, so changing order won't fix the issue.