Compare commits
31 Commits
v24.7.29
...
368e248efc
Author | SHA1 | Date | |
---|---|---|---|
368e248efc | |||
a71b1f783e
|
|||
77531b1948
|
|||
![]() |
2bf2fa235f | ||
![]() |
87a0d37953 | ||
![]() |
4210a46f9a | ||
![]() |
bd4d50b84e | ||
![]() |
fcd473608c | ||
74bfaed558 | |||
![]() |
4e25b014e4 | ||
1a1d963ca4
|
|||
f8d5473c25 | |||
![]() |
c15b22203a | ||
![]() |
b39c4c9385 | ||
43c333727d | |||
![]() |
3da96a4007 | ||
eda6dd9f3f | |||
![]() |
fc191bbe84 | ||
![]() |
c68204d6bb | ||
004064c15c
|
|||
305cbdc3d8
|
|||
9a05c787d7
|
|||
46f4123e45
|
|||
498f565866 | |||
60ef0b9766
|
|||
![]() |
59ef2de085 | ||
![]() |
b3f923d5f4 | ||
e83a93055a
|
|||
98bdc48716
|
|||
![]() |
31333d3516 | ||
![]() |
f8995eb72e |
14
.github/workflows/build-docker.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
|||||||
REGISTRY: gitea.artixlinux.org
|
REGISTRY: gitea.artixlinux.org
|
||||||
DH_REGISTRY: docker.io
|
DH_REGISTRY: docker.io
|
||||||
REPO_ORG: ${{ gitea.repository_owner }}
|
REPO_ORG: ${{ gitea.repository_owner }}
|
||||||
DH_ORG: corysanin
|
DH_ORG: artixlinux
|
||||||
IMAGE_NAME: archweb
|
IMAGE_NAME: archweb
|
||||||
DH_IMAGE_NAME: archweb
|
DH_IMAGE_NAME: archweb
|
||||||
ABSOLUTE_IMAGE: ${{ env.REGISTRY }}/${{ env.REPO_ORG }}/${{ env.IMAGE_NAME }}
|
ABSOLUTE_IMAGE: ${{ env.REGISTRY }}/${{ env.REPO_ORG }}/${{ env.IMAGE_NAME }}
|
||||||
@@ -37,15 +37,15 @@ jobs:
|
|||||||
- name: Set up docker
|
- name: Set up docker
|
||||||
run: curl -fsSL https://get.docker.com | sh
|
run: curl -fsSL https://get.docker.com | sh
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: https://github.com/docker/setup-qemu-action@v2
|
uses: https://github.com/docker/setup-qemu-action@v3
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: https://github.com/docker/setup-buildx-action@v2
|
uses: https://github.com/docker/setup-buildx-action@v3
|
||||||
with:
|
with:
|
||||||
install: true
|
install: true
|
||||||
|
|
||||||
- name: Log in to the Container registry
|
- name: Log in to the Container registry
|
||||||
uses: https://github.com/docker/login-action@v2
|
uses: https://github.com/docker/login-action@v3
|
||||||
if: startsWith(gitea.ref, 'refs/tags/v')
|
if: startsWith(gitea.ref, 'refs/tags/v')
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ${{ env.REGISTRY }}
|
||||||
@@ -53,7 +53,7 @@ jobs:
|
|||||||
password: ${{ secrets.PAT }}
|
password: ${{ secrets.PAT }}
|
||||||
|
|
||||||
- name: Log in to the Docker Hub
|
- name: Log in to the Docker Hub
|
||||||
uses: https://github.com/docker/login-action@v2
|
uses: https://github.com/docker/login-action@v3
|
||||||
if: startsWith(gitea.ref, 'refs/tags/v')
|
if: startsWith(gitea.ref, 'refs/tags/v')
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.DH_REGISTRY }}
|
registry: ${{ env.DH_REGISTRY }}
|
||||||
@@ -94,7 +94,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build and push release Docker image
|
- name: Build and push release Docker image
|
||||||
if: startsWith(gitea.ref, 'refs/tags/v')
|
if: startsWith(gitea.ref, 'refs/tags/v')
|
||||||
uses: https://github.com/docker/build-push-action@v4
|
uses: https://github.com/docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
file: Dockerfile
|
file: Dockerfile
|
||||||
target: deploy
|
target: deploy
|
||||||
@@ -106,7 +106,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build develop Docker image
|
- name: Build develop Docker image
|
||||||
if: "!startsWith(gitea.ref, 'refs/tags/v')"
|
if: "!startsWith(gitea.ref, 'refs/tags/v')"
|
||||||
uses: https://github.com/docker/build-push-action@v4
|
uses: https://github.com/docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
file: Dockerfile
|
file: Dockerfile
|
||||||
target: deploy
|
target: deploy
|
||||||
|
@@ -10,6 +10,7 @@ version: '2'
|
|||||||
# docker compose run --rm packages_web python manage.py generate_keyring pgp.surfnet.nl ./config/keyring
|
# docker compose run --rm packages_web python manage.py generate_keyring pgp.surfnet.nl ./config/keyring
|
||||||
# docker compose run --rm packages_web python manage.py pgp_import ./config/keyring
|
# docker compose run --rm packages_web python manage.py pgp_import ./config/keyring
|
||||||
## go to /admin/devel/developerkey/ and set the owner (and parent) for the ownerless key
|
## go to /admin/devel/developerkey/ and set the owner (and parent) for the ownerless key
|
||||||
|
## go to /admin/sites/site/1/change/ and set the domain
|
||||||
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
@@ -11,6 +11,18 @@
|
|||||||
"testing": true
|
"testing": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"pk": 15,
|
||||||
|
"model": "main.repo",
|
||||||
|
"fields": {
|
||||||
|
"bugs_category": 33,
|
||||||
|
"staging": true,
|
||||||
|
"name": "Extra-Staging",
|
||||||
|
"bugs_project": 5,
|
||||||
|
"svn_root": "packages",
|
||||||
|
"testing": false
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"pk": 1,
|
"pk": 1,
|
||||||
"model": "main.repo",
|
"model": "main.repo",
|
||||||
@@ -118,5 +130,17 @@
|
|||||||
"svn_root": "packages",
|
"svn_root": "packages",
|
||||||
"testing": true
|
"testing": true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pk": 16,
|
||||||
|
"model": "main.repo",
|
||||||
|
"fields": {
|
||||||
|
"bugs_category": 10,
|
||||||
|
"staging": true,
|
||||||
|
"name": "Core-Staging",
|
||||||
|
"bugs_project": 1,
|
||||||
|
"svn_root": "packages",
|
||||||
|
"testing": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"bugs_category": 0,
|
"bugs_category": 0,
|
||||||
"staging": false,
|
"staging": false,
|
||||||
"name": "World-Gremlins",
|
"name": "world-gremlins",
|
||||||
"bugs_project": 0,
|
"bugs_project": 0,
|
||||||
"svn_root": "packages",
|
"svn_root": "packages",
|
||||||
"testing": true
|
"testing": true
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"bugs_category": 0,
|
"bugs_category": 0,
|
||||||
"staging": false,
|
"staging": false,
|
||||||
"name": "Galaxy-Gremlins",
|
"name": "galaxy-gremlins",
|
||||||
"bugs_project": 0,
|
"bugs_project": 0,
|
||||||
"svn_root": "packages",
|
"svn_root": "packages",
|
||||||
"testing": true
|
"testing": true
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"bugs_category": 0,
|
"bugs_category": 0,
|
||||||
"staging": false,
|
"staging": false,
|
||||||
"name": "System",
|
"name": "system",
|
||||||
"bugs_project": 0,
|
"bugs_project": 0,
|
||||||
"svn_root": "packages",
|
"svn_root": "packages",
|
||||||
"testing": false
|
"testing": false
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"bugs_category": 0,
|
"bugs_category": 0,
|
||||||
"staging": false,
|
"staging": false,
|
||||||
"name": "World",
|
"name": "world",
|
||||||
"bugs_project": 0,
|
"bugs_project": 0,
|
||||||
"svn_root": "packages",
|
"svn_root": "packages",
|
||||||
"testing": false
|
"testing": false
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"bugs_category": 0,
|
"bugs_category": 0,
|
||||||
"staging": false,
|
"staging": false,
|
||||||
"name": "Galaxy",
|
"name": "galaxy",
|
||||||
"bugs_project": 0,
|
"bugs_project": 0,
|
||||||
"svn_root": "packages",
|
"svn_root": "packages",
|
||||||
"testing": false
|
"testing": false
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"bugs_category": 0,
|
"bugs_category": 0,
|
||||||
"staging": false,
|
"staging": false,
|
||||||
"name": "Lib32",
|
"name": "lib32",
|
||||||
"bugs_project": 0,
|
"bugs_project": 0,
|
||||||
"svn_root": "packages",
|
"svn_root": "packages",
|
||||||
"testing": false
|
"testing": false
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"bugs_category": 0,
|
"bugs_category": 0,
|
||||||
"staging": false,
|
"staging": false,
|
||||||
"name": "Lib32-Gremlins",
|
"name": "lib32-gremlins",
|
||||||
"bugs_project": 0,
|
"bugs_project": 0,
|
||||||
"svn_root": "packages",
|
"svn_root": "packages",
|
||||||
"testing": true
|
"testing": true
|
||||||
@@ -89,10 +89,58 @@
|
|||||||
"fields": {
|
"fields": {
|
||||||
"bugs_category": 0,
|
"bugs_category": 0,
|
||||||
"staging": false,
|
"staging": false,
|
||||||
"name": "System-Gremlins",
|
"name": "system-gremlins",
|
||||||
"bugs_project": 0,
|
"bugs_project": 0,
|
||||||
"svn_root": "packages",
|
"svn_root": "packages",
|
||||||
"testing": true
|
"testing": true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pk": 9,
|
||||||
|
"model": "main.repo",
|
||||||
|
"fields": {
|
||||||
|
"bugs_category": 0,
|
||||||
|
"staging": true,
|
||||||
|
"name": "system-goblins",
|
||||||
|
"bugs_project": 0,
|
||||||
|
"svn_root": "packages",
|
||||||
|
"testing": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pk": 10,
|
||||||
|
"model": "main.repo",
|
||||||
|
"fields": {
|
||||||
|
"bugs_category": 0,
|
||||||
|
"staging": true,
|
||||||
|
"name": "world-goblins",
|
||||||
|
"bugs_project": 0,
|
||||||
|
"svn_root": "packages",
|
||||||
|
"testing": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pk": 11,
|
||||||
|
"model": "main.repo",
|
||||||
|
"fields": {
|
||||||
|
"bugs_category": 0,
|
||||||
|
"staging": true,
|
||||||
|
"name": "galaxy-goblins",
|
||||||
|
"bugs_project": 0,
|
||||||
|
"svn_root": "packages",
|
||||||
|
"testing": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pk": 12,
|
||||||
|
"model": "main.repo",
|
||||||
|
"fields": {
|
||||||
|
"bugs_category": 0,
|
||||||
|
"staging": true,
|
||||||
|
"name": "lib32-goblins",
|
||||||
|
"bugs_project": 0,
|
||||||
|
"svn_root": "packages",
|
||||||
|
"testing": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@@ -52,7 +52,7 @@ def create_specification(package, log, finder):
|
|||||||
return spec
|
return spec
|
||||||
|
|
||||||
|
|
||||||
def get_last_log(repo, pkgbase):
|
def get_tag_info(repo, pkgbase, version):
|
||||||
# Gitlab requires the path to the gitlab repo to be html encoded and project name encoded in a different special way
|
# Gitlab requires the path to the gitlab repo to be html encoded and project name encoded in a different special way
|
||||||
pkgrepo = urllib.parse.quote_plus(f'{settings.GITLAB_PACKAGE_REPO}/') + gitlab_project_name_to_path(pkgbase)
|
pkgrepo = urllib.parse.quote_plus(f'{settings.GITLAB_PACKAGE_REPO}/') + gitlab_project_name_to_path(pkgbase)
|
||||||
url = f'https://{settings.GITLAB_INSTANCE}/api/v4/projects/{pkgrepo}/repository/tags'
|
url = f'https://{settings.GITLAB_INSTANCE}/api/v4/projects/{pkgrepo}/repository/tags'
|
||||||
@@ -65,8 +65,12 @@ def get_last_log(repo, pkgbase):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
tags = r.json()
|
tags = r.json()
|
||||||
|
|
||||||
|
# filter out unrelated tags
|
||||||
|
tags = [tag for tag in tags if tag["name"] == version]
|
||||||
|
|
||||||
if len(tags) == 0:
|
if len(tags) == 0:
|
||||||
logger.error("No tags found for pkgbase %s (%s)", pkgbase, repo)
|
logger.error("No tags found for pkgbase %s (%s) version %s", pkgbase, repo, version)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
tag = tags[0]
|
tag = tags[0]
|
||||||
@@ -89,7 +93,7 @@ def add_signoff_comments():
|
|||||||
if not group.default_spec:
|
if not group.default_spec:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
log = get_last_log(group.repo, group.pkgbase)
|
log = get_tag_info(group.repo, group.pkgbase, group.version)
|
||||||
if log is None:
|
if log is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
@@ -26,9 +26,9 @@ class RematchDeveloperTest(TransactionTestCase):
|
|||||||
self.package.delete()
|
self.package.delete()
|
||||||
|
|
||||||
def test_basic(self):
|
def test_basic(self):
|
||||||
with mock.patch('packages.management.commands.populate_signoffs.get_last_log') as get_last_log:
|
with mock.patch('packages.management.commands.populate_signoffs.get_tag_info') as get_tag_info:
|
||||||
comment = 'upgpkg: 0.1-1: rebuild'
|
comment = 'upgpkg: 0.1-1: rebuild'
|
||||||
get_last_log.return_value = {'message': f'{comment}\n', 'author': 'foo@archlinux.org'}
|
get_tag_info.return_value = {'message': f'{comment}\n', 'author': 'foo@archlinux.org'}
|
||||||
call_command('populate_signoffs')
|
call_command('populate_signoffs')
|
||||||
|
|
||||||
signoff_spec = SignoffSpecification.objects.first()
|
signoff_spec = SignoffSpecification.objects.first()
|
||||||
@@ -36,8 +36,8 @@ class RematchDeveloperTest(TransactionTestCase):
|
|||||||
assert signoff_spec.pkgbase == self.package.pkgbase
|
assert signoff_spec.pkgbase == self.package.pkgbase
|
||||||
|
|
||||||
def test_invalid(self):
|
def test_invalid(self):
|
||||||
with mock.patch('packages.management.commands.populate_signoffs.get_last_log') as get_last_log:
|
with mock.patch('packages.management.commands.populate_signoffs.get_tag_info') as get_tag_info:
|
||||||
get_last_log.return_value = None
|
get_tag_info.return_value = None
|
||||||
call_command('populate_signoffs')
|
call_command('populate_signoffs')
|
||||||
|
|
||||||
assert SignoffSpecification.objects.count() == 0
|
assert SignoffSpecification.objects.count() == 0
|
||||||
|
@@ -21,7 +21,7 @@ from ..utils import get_wrong_permissions, multilib_differences
|
|||||||
@require_safe
|
@require_safe
|
||||||
@cache_control(public=True, max_age=86400)
|
@cache_control(public=True, max_age=86400)
|
||||||
def opensearch(request):
|
def opensearch(request):
|
||||||
domain = "%s://%s" % (request.scheme, request.META.get('HTTP_HOST'))
|
domain = "%s://%s" % ('https', request.META.get('HTTP_HOST'))
|
||||||
|
|
||||||
return render(request, 'packages/opensearch.xml',
|
return render(request, 'packages/opensearch.xml',
|
||||||
{'domain': domain},
|
{'domain': domain},
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
from django.conf.urls import include
|
from django.conf.urls import include
|
||||||
from django.urls import path, re_path
|
from django.urls import path, re_path
|
||||||
|
from django.views.decorators.cache import cache_page
|
||||||
|
|
||||||
from releng import views
|
from releng import views
|
||||||
|
|
||||||
@@ -8,8 +9,8 @@ from .views import ReleaseDetailView, ReleaseListView
|
|||||||
releases_patterns = [
|
releases_patterns = [
|
||||||
path('', ReleaseListView.as_view(), name='releng-release-list'),
|
path('', ReleaseListView.as_view(), name='releng-release-list'),
|
||||||
path('json/', views.releases_json, name='releng-release-list-json'),
|
path('json/', views.releases_json, name='releng-release-list-json'),
|
||||||
re_path(r'^(?P<version>[-.\w]+)/$', ReleaseDetailView.as_view(), name='releng-release-detail'),
|
re_path(r'^(?P<version>[-.\w]+)/$', cache_page(311)(ReleaseDetailView.as_view()), name='releng-release-detail'),
|
||||||
re_path(r'^(?P<version>[-.\w]+)/torrent/$', views.release_torrent, name='releng-release-torrent'),
|
re_path(r'^(?P<version>[-.\w]+)/torrent/$', cache_page(311)(views.release_torrent), name='releng-release-torrent'),
|
||||||
]
|
]
|
||||||
|
|
||||||
netboot_patterns = [
|
netboot_patterns = [
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
-e git+https://github.com/fredj/cssmin.git@master#egg=cssmin
|
-e git+https://github.com/fredj/cssmin.git@master#egg=cssmin
|
||||||
Django==5.0.7
|
Django==5.0.10
|
||||||
IPy==1.1
|
IPy==1.1
|
||||||
Markdown==3.3.7
|
Markdown==3.3.7
|
||||||
bencode.py==4.0.0
|
bencode.py==4.0.0
|
||||||
@@ -7,14 +7,14 @@ django-countries==7.6.1
|
|||||||
django-extensions==3.2.3
|
django-extensions==3.2.3
|
||||||
jsmin==3.0.1
|
jsmin==3.0.1
|
||||||
pgpdump==1.5
|
pgpdump==1.5
|
||||||
parse==1.19.0
|
parse==1.20.2
|
||||||
sqlparse==0.5.0
|
sqlparse==0.5.0
|
||||||
django-csp==3.7
|
django-csp==3.8
|
||||||
ptpython==2.0.4
|
ptpython==2.0.4
|
||||||
feedparser==6.0.10
|
feedparser==6.0.11
|
||||||
bleach==6.0.0
|
bleach==6.0.0
|
||||||
requests==2.32.0
|
requests==2.32.3
|
||||||
xtarfile==0.1.0
|
xtarfile==0.2.1
|
||||||
zstandard==0.17.0
|
zstandard==0.23.0
|
||||||
whitenoise==6.7.0
|
whitenoise==6.8.2
|
||||||
django-prometheus==2.3.1
|
django-prometheus==2.3.1
|
||||||
|
@@ -41,9 +41,6 @@ SITE_ID = 1
|
|||||||
DATE_FORMAT = 'Y-m-d'
|
DATE_FORMAT = 'Y-m-d'
|
||||||
DATETIME_FORMAT = 'Y-m-d H:i'
|
DATETIME_FORMAT = 'Y-m-d H:i'
|
||||||
|
|
||||||
# Disable so our own DATE_FORMAT/DATETIME_FORMAT is used.
|
|
||||||
USE_L10N = False
|
|
||||||
|
|
||||||
# Login URL configuration
|
# Login URL configuration
|
||||||
LOGIN_URL = '/login/'
|
LOGIN_URL = '/login/'
|
||||||
LOGIN_REDIRECT_URL = '/'
|
LOGIN_REDIRECT_URL = '/'
|
||||||
|
@@ -754,6 +754,10 @@ table.results {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.results [hidden] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* pkglist: layout */
|
/* pkglist: layout */
|
||||||
#pkglist-about {
|
#pkglist-about {
|
||||||
margin-top: 1.5em;
|
margin-top: 1.5em;
|
||||||
@@ -1056,12 +1060,12 @@ table td.country {
|
|||||||
background: #ffd;
|
background: #ffd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.results tr:nth-child(even),
|
.results tr:nth-child(even of :not([hidden])),
|
||||||
#article-list tr:nth-child(even) {
|
#article-list tr:nth-child(even) {
|
||||||
background: #e4eeff;
|
background: #e4eeff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.results tr:nth-child(odd),
|
.results tr:nth-child(odd of :not([hidden])),
|
||||||
#article-list tr:nth-child(odd) {
|
#article-list tr:nth-child(odd) {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
@@ -1197,3 +1201,24 @@ ul.signoff-list {
|
|||||||
.pgp-key-ids {
|
.pgp-key-ids {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.logout-form {
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
/* style input as a normal anchor */
|
||||||
|
input {
|
||||||
|
background: none!important;
|
||||||
|
border: none;
|
||||||
|
padding: 0!important;
|
||||||
|
/*optional*/
|
||||||
|
font-family: arial, sans-serif;
|
||||||
|
font-size: 0.9em;
|
||||||
|
/*input has OS specific font-family*/
|
||||||
|
color: #07b;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -212,8 +212,14 @@ function filter_pkgs_list(filter_ele, tbody_ele) {
|
|||||||
rows = rows.has('.incomplete');
|
rows = rows.has('.incomplete');
|
||||||
}
|
}
|
||||||
/* hide all rows, then show the set we care about */
|
/* hide all rows, then show the set we care about */
|
||||||
all_rows.hide();
|
// note that we don't use .hide() from jQuery because it adds display:none
|
||||||
rows.show();
|
// which is very expensive to query in CSS ([style*="display: none"])
|
||||||
|
all_rows.each(function() {
|
||||||
|
$(this).attr('hidden', true);
|
||||||
|
});
|
||||||
|
rows.each(function() {
|
||||||
|
$(this).removeAttr('hidden');
|
||||||
|
});
|
||||||
$('#filter-count').text(rows.length);
|
$('#filter-count').text(rows.length);
|
||||||
/* make sure we update the odd/even styling from sorting */
|
/* make sure we update the odd/even styling from sorting */
|
||||||
$('.results').trigger('applyWidgets', [false]);
|
$('.results').trigger('applyWidgets', [false]);
|
||||||
@@ -330,8 +336,14 @@ function filter_signoffs() {
|
|||||||
rows = rows.has('td.signoff-no');
|
rows = rows.has('td.signoff-no');
|
||||||
}
|
}
|
||||||
/* hide all rows, then show the set we care about */
|
/* hide all rows, then show the set we care about */
|
||||||
all_rows.hide();
|
// note that we don't use .hide() from jQuery because it adds display:none
|
||||||
rows.show();
|
// which is very expensive to query in CSS ([style*="display: none"])
|
||||||
|
all_rows.each(function() {
|
||||||
|
$(this).attr('hidden', true);
|
||||||
|
});
|
||||||
|
rows.each(function() {
|
||||||
|
$(this).removeAttr('hidden');
|
||||||
|
});
|
||||||
$('#filter-count').text(rows.length);
|
$('#filter-count').text(rows.length);
|
||||||
/* make sure we update the odd/even styling from sorting */
|
/* make sure we update the odd/even styling from sorting */
|
||||||
$('.results').trigger('applyWidgets', [false]);
|
$('.results').trigger('applyWidgets', [false]);
|
||||||
|
@@ -1,7 +1,17 @@
|
|||||||
html body {
|
html body {
|
||||||
min-width: 100px;
|
min-width: 100px;
|
||||||
background: #1a1a1a;
|
}
|
||||||
color: #d9d9d9;
|
|
||||||
|
a:link,
|
||||||
|
a:visited,
|
||||||
|
th a:visited {
|
||||||
|
color: #0a6682;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover,
|
||||||
|
a:focus,
|
||||||
|
a:visited:hover {
|
||||||
|
color: #1696bd;
|
||||||
}
|
}
|
||||||
|
|
||||||
#archnavbarlogo {
|
#archnavbarlogo {
|
||||||
@@ -10,45 +20,9 @@ html body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#archnavbar#archnavbar {
|
#archnavbar#archnavbar {
|
||||||
|
|
||||||
border-bottom: 5px #0a6682 solid !important;
|
border-bottom: 5px #0a6682 solid !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
a:link,
|
|
||||||
a:visited,
|
|
||||||
th a:visited {
|
|
||||||
color: #53bffc;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover,
|
|
||||||
a:focus,
|
|
||||||
a:visited:hover {
|
|
||||||
color: #92D7FC;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pkgdetails #pkginfo .recent {
|
|
||||||
color: #B39DDB;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.box.box {
|
|
||||||
background-color: #2a2a2a;
|
|
||||||
border: 1px solid #858585;
|
|
||||||
}
|
|
||||||
|
|
||||||
table th.tablesorter-header {
|
|
||||||
background-image: url(data:image/gif;base64,R0lGODlhFQAJAPABAOTu/wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAgABACwAAAAAFQAJAAACF4yPgMsJ2mJ4VDKKrd4GVz5lYPeMiVUAADs=);
|
|
||||||
}
|
|
||||||
|
|
||||||
table thead th.tablesorter-headerAsc {
|
|
||||||
background-color: #173f59;
|
|
||||||
background-image: url(data:image/gif;base64,R0lGODlhFQAEAPABAOTu/wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAgABACwAAAAAFQAEAAACDYyPAcmtsJyDVDKKWQEAOw==);
|
|
||||||
}
|
|
||||||
|
|
||||||
table thead th.tablesorter-headerDesc {
|
|
||||||
background-color: #173f59;
|
|
||||||
background-image: url(data:image/gif;base64,R0lGODlhFQAEAPABAOTu/wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAgABACwAAAAAFQAEAAACDYwfoAvoz9qbZ9FrJC0AOw==);
|
|
||||||
}
|
|
||||||
|
|
||||||
th,
|
th,
|
||||||
td {
|
td {
|
||||||
white-space: initial;
|
white-space: initial;
|
||||||
@@ -60,54 +34,26 @@ table.results.results {
|
|||||||
|
|
||||||
.results.results td,
|
.results.results td,
|
||||||
.results.results th {
|
.results.results th {
|
||||||
border: 1px solid #858585;
|
|
||||||
text-align: left;
|
text-align: left;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
overflow-wrap: anywhere;
|
overflow-wrap: anywhere;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.results.results tr:nth-child(2n+1) {
|
|
||||||
background-color: #1a1a1a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.results.results tr:nth-child(even) {
|
|
||||||
background-color: #111;
|
|
||||||
}
|
|
||||||
|
|
||||||
.results th {
|
.results th {
|
||||||
color: #fff;
|
|
||||||
background-color: #0f3147;
|
|
||||||
border: 1px solid #0A6682;
|
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pkglist-results .results tr:hover {
|
|
||||||
background: #0d0d0d;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pkgdetails #detailslinks>div {
|
|
||||||
background-color: rgba(255, 255, 255, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
input,
|
input,
|
||||||
select {
|
select {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
background: #1a1a1a;
|
|
||||||
color: #bbb;
|
|
||||||
border: 1px solid #858585;
|
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
border: 1px solid #858585;
|
||||||
padding: .25em;
|
padding: .25em;
|
||||||
max-width: 85vw;
|
max-width: 85vw;
|
||||||
max-width: calc(92vw - 16px);
|
max-width: calc(92vw - 16px);
|
||||||
}
|
}
|
||||||
|
|
||||||
select option:checked {
|
|
||||||
background: linear-gradient(#0A6682, #0A6682);
|
|
||||||
background-color: #0A6682;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pkglist-results-form {
|
#pkglist-results-form {
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
}
|
}
|
||||||
@@ -116,10 +62,6 @@ tr :nth-child(7) {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pkgfilelist li.d {
|
|
||||||
color: #92929a;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 750px) {
|
@media screen and (max-width: 750px) {
|
||||||
tr :nth-child(5) {
|
tr :nth-child(5) {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -161,3 +103,88 @@ tr :nth-child(7) {
|
|||||||
width: initial;
|
width: initial;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media not all and (prefers-color-scheme: light) {
|
||||||
|
html body {
|
||||||
|
background: #1a1a1a;
|
||||||
|
color: #d9d9d9;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:link,
|
||||||
|
a:visited,
|
||||||
|
th a:visited {
|
||||||
|
color: #53bffc;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover,
|
||||||
|
a:focus,
|
||||||
|
a:visited:hover {
|
||||||
|
color: #92D7FC;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pkgdetails #pkginfo .recent {
|
||||||
|
color: #B39DDB;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.box.box {
|
||||||
|
background-color: #2a2a2a;
|
||||||
|
border: 1px solid #858585;
|
||||||
|
}
|
||||||
|
|
||||||
|
table th.tablesorter-header {
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhFQAJAPABAOTu/wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAgABACwAAAAAFQAJAAACF4yPgMsJ2mJ4VDKKrd4GVz5lYPeMiVUAADs=);
|
||||||
|
}
|
||||||
|
|
||||||
|
table thead th.tablesorter-headerAsc {
|
||||||
|
background-color: #173f59;
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhFQAEAPABAOTu/wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAgABACwAAAAAFQAEAAACDYyPAcmtsJyDVDKKWQEAOw==);
|
||||||
|
}
|
||||||
|
|
||||||
|
table thead th.tablesorter-headerDesc {
|
||||||
|
background-color: #173f59;
|
||||||
|
background-image: url(data:image/gif;base64,R0lGODlhFQAEAPABAOTu/wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAgABACwAAAAAFQAEAAACDYwfoAvoz9qbZ9FrJC0AOw==);
|
||||||
|
}
|
||||||
|
|
||||||
|
.results.results td,
|
||||||
|
.results.results th {
|
||||||
|
border: 1px solid #858585;
|
||||||
|
}
|
||||||
|
|
||||||
|
.results.results tr:nth-child(2n+1) {
|
||||||
|
background-color: #1a1a1a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.results.results tr:nth-child(even) {
|
||||||
|
background-color: #111;
|
||||||
|
}
|
||||||
|
|
||||||
|
.results th {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #0f3147;
|
||||||
|
border: 1px solid #0A6682;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pkglist-results .results tr:hover {
|
||||||
|
background: #0d0d0d;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pkgdetails #detailslinks>div {
|
||||||
|
background-color: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
input,
|
||||||
|
select {
|
||||||
|
background: #1a1a1a;
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
select option:checked {
|
||||||
|
background: linear-gradient(#0A6682, #0A6682);
|
||||||
|
background-color: #0A6682;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pkgfilelist li.d {
|
||||||
|
color: #92929a;
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
@@ -59,7 +59,11 @@
|
|||||||
{% if user|in_groups:'Developers:Package Maintainers:Support Staff' %}
|
{% if user|in_groups:'Developers:Package Maintainers:Support Staff' %}
|
||||||
<li><a href="/devel/tier0mirror/" title="Your Tier 0 Mirror information">Tier0 mirror</a></li>
|
<li><a href="/devel/tier0mirror/" title="Your Tier 0 Mirror information">Tier0 mirror</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<li><a href="/logout/" title="Logout of the developer interface">Logout</a></li>
|
<li>
|
||||||
|
<form class="logout-form" method="post" action="/logout/">{% csrf_token %}
|
||||||
|
<input type="submit" title="Logout of the developer interface" value="Logout"/>
|
||||||
|
</form>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{% for entry in admin_log %}
|
{% for entry in admin_log %}
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">{{ entry.action_time|date:"DATETIME_FORMAT" }}</th>
|
<th scope="row">{{ entry.action_time|date:"Y-m-d H:i" }}</th>
|
||||||
{% if log_user %}
|
{% if log_user %}
|
||||||
<td>{{ entry.user.username }}{% if entry.user.get_full_name %} ({{ entry.user.get_full_name }}){% endif %}</td>
|
<td>{{ entry.user.username }}{% if entry.user.get_full_name %} ({{ entry.user.get_full_name }}){% endif %}</td>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@@ -36,8 +36,8 @@
|
|||||||
{% endif %}{% endwith %}</td>
|
{% endif %}{% endwith %}</td>
|
||||||
<td>{{ pkg.repo.name }}</td>
|
<td>{{ pkg.repo.name }}</td>
|
||||||
<td>{{ pkg.arch.name }}</td>
|
<td>{{ pkg.arch.name }}</td>
|
||||||
<td>{{ pkg.flag_date|date }}</td>
|
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
|
||||||
<td>{{ pkg.last_update|date }}</td>
|
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<tr class="empty"><td colspan="7"><em>No flagged packages to display</em></td></tr>
|
<tr class="empty"><td colspan="7"><em>No flagged packages to display</em></td></tr>
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
<td>{{ group.version }}</td>
|
<td>{{ group.version }}</td>
|
||||||
<td>{{ group.arch.name }}</td>
|
<td>{{ group.arch.name }}</td>
|
||||||
<td>{{ group.target_repo }}</td>
|
<td>{{ group.target_repo }}</td>
|
||||||
<td>{{ group.last_update|date }}</td>
|
<td>{{ group.last_update|date:"Y-m-d" }}</td>
|
||||||
{% if group.specification.known_bad %}
|
{% if group.specification.known_bad %}
|
||||||
<td class="approval signoff-bad">Bad</td>
|
<td class="approval signoff-bad">Bad</td>
|
||||||
{% else %}
|
{% else %}
|
||||||
@@ -138,7 +138,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="wrap"><a href="{{ todo.get_absolute_url }}"
|
<td class="wrap"><a href="{{ todo.get_absolute_url }}"
|
||||||
title="View todo list: {{ todo.name }}">{{ todo.name }}</a></td>
|
title="View todo list: {{ todo.name }}">{{ todo.name }}</a></td>
|
||||||
<td>{{ todo.created|date }}</td>
|
<td>{{ todo.created|date:"Y-m-d" }}</td>
|
||||||
<td>{{ todo.creator.get_full_name }}</td>
|
<td>{{ todo.creator.get_full_name }}</td>
|
||||||
<td>{{ todo.pkg_count }}</td>
|
<td>{{ todo.pkg_count }}</td>
|
||||||
<td>{{ todo.incomplete_count }}</td>
|
<td>{{ todo.incomplete_count }}</td>
|
||||||
|
@@ -60,9 +60,9 @@
|
|||||||
{% else %}
|
{% else %}
|
||||||
<td>{{ pkg.full_version }}</td>
|
<td>{{ pkg.full_version }}</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td>{{ pkg.last_update|date }}</td>
|
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
|
||||||
<td>{{ pkg.build_date|date }}</td>
|
<td>{{ pkg.build_date|date:"Y-m-d" }}</td>
|
||||||
<td>{{ pkg.flag_date|date }}</td>
|
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
|
||||||
{% for attr in column_attrs %}
|
{% for attr in column_attrs %}
|
||||||
<td>{{ pkg|attribute:attr }}</td>
|
<td>{{ pkg|attribute:attr }}</td>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
{% for item in news_list %}
|
{% for item in news_list %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ item.postdate|date }}</td>
|
<td>{{ item.postdate|date:"Y-m-d" }}</td>
|
||||||
<td class="wrap"><a href="{{ item.get_absolute_url }}"
|
<td class="wrap"><a href="{{ item.get_absolute_url }}"
|
||||||
title="View: {{ item.title }}">{{ item.title }}</a></td>
|
title="View: {{ item.title }}">{{ item.title }}</a></td>
|
||||||
<td>{{ item.author.get_full_name }}</td>
|
<td>{{ item.author.get_full_name }}</td>
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<p class="article-info">{{ news.postdate|date }} - {{ news.author.get_full_name }}</p>
|
<p class="article-info">{{ news.postdate|date:"Y-m-d" }} - {{ news.author.get_full_name }}</p>
|
||||||
|
|
||||||
<div class="article-content" itemprop="articleBody">{{ news.html }}</div>
|
<div class="article-content" itemprop="articleBody">{{ news.html }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -85,6 +85,9 @@ function collapseDependsList(list) {
|
|||||||
// enough items, or the link already exists.
|
// enough items, or the link already exists.
|
||||||
const limit = 20;
|
const limit = 20;
|
||||||
const elem = document.querySelector(list);
|
const elem = document.querySelector(list);
|
||||||
|
if (!elem)
|
||||||
|
return;
|
||||||
|
|
||||||
const linkid = elem.getAttribute('id') + 'link';
|
const linkid = elem.getAttribute('id') + 'link';
|
||||||
const items = Array.from(elem.querySelectorAll('li')).slice(limit);
|
const items = Array.from(elem.querySelectorAll('li')).slice(limit);
|
||||||
|
|
||||||
|
@@ -29,8 +29,8 @@
|
|||||||
<td><span{% if pkg2.flag_date %} class="flagged"{% endif %}>{{ pkg2.full_version }}</span></td>
|
<td><span{% if pkg2.flag_date %} class="flagged"{% endif %}>{{ pkg2.full_version }}</span></td>
|
||||||
<td>{% pkg_details_link pkg2 %}</td>
|
<td>{% pkg_details_link pkg2 %}</td>
|
||||||
<td>{{ pkg2.repo }}</td>
|
<td>{{ pkg2.repo }}</td>
|
||||||
<td>{{ pkg1.last_update|date }}</td>
|
<td>{{ pkg1.last_update|date:"Y-m-d" }}</td>
|
||||||
<td>{{ pkg2.last_update|date }}</td>
|
<td>{{ pkg2.last_update|date:"Y-m-d" }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% load package_extras %}
|
{% load package_extras %}
|
||||||
{% load humanize %}
|
{% load humanize %}
|
||||||
|
{% load details_link %}
|
||||||
|
|
||||||
{% block title %}Arch Linux - Flag Package - {{ package.pkgname }} {{ package.full_version }} ({{ package.arch.name }}){% endblock %}
|
{% block title %}Arch Linux - Flag Package - {{ package.pkgname }} {{ package.full_version }} ({{ package.arch.name }}){% endblock %}
|
||||||
{% block head %}<meta name="robots" content="noindex"/>{% endblock %}
|
{% block head %}<meta name="robots" content="noindex"/>{% endblock %}
|
||||||
@@ -29,9 +30,9 @@
|
|||||||
with your additional text.</p>
|
with your additional text.</p>
|
||||||
|
|
||||||
<p><strong>Note:</strong> Do <em>not</em> use this facility if the
|
<p><strong>Note:</strong> Do <em>not</em> use this facility if the
|
||||||
package is broken! The package will be unflagged and the report will be ignored!
|
package is broken! The package will be unflagged and the report will be ignored! File an issue on
|
||||||
<a href="https://bugs.archlinux.org/" title="Arch Linux Bugtracker">Use the
|
<a href="{% bugs_list package %}" title="Bug tickets for {{ package }}">the package's GitLab repository</a>
|
||||||
bugtracker to file a bug</a> instead.</p>
|
instead.</p>
|
||||||
|
|
||||||
<p>Please confirm your flag request for {{package.pkgname}}:</p>
|
<p>Please confirm your flag request for {{package.pkgname}}:</p>
|
||||||
|
|
||||||
|
@@ -23,7 +23,7 @@
|
|||||||
<td><a href="/groups/{{ grp.arch }}/{{ grp.name }}/"
|
<td><a href="/groups/{{ grp.arch }}/{{ grp.name }}/"
|
||||||
title="Group details for {{ grp.name }}">{{ grp.name }}</a></td>
|
title="Group details for {{ grp.name }}">{{ grp.name }}</a></td>
|
||||||
<td>{{ grp.count }}</td>
|
<td>{{ grp.count }}</td>
|
||||||
<td>{{ grp.last_update|date }}</td>
|
<td>{{ grp.last_update|date:"Y-m-d" }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
{% load static %}<?xml version="1.0" encoding="UTF-8"?>
|
{% load static %}<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
|
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
|
||||||
<ShortName>Arch Packages</ShortName>
|
<ShortName>Artix Packages</ShortName>
|
||||||
<LongName>Arch Linux Package Repository Search</LongName>
|
<LongName>Artix Linux Package Repository Search</LongName>
|
||||||
<Description>Search the Arch Linux package repositories by keyword in package names and descriptions.</Description>
|
<Description>Search the Artix Linux package repositories by keyword in package names and descriptions.</Description>
|
||||||
<Tags>linux archlinux package software</Tags>
|
<Tags>linux artixlinux package software</Tags>
|
||||||
<Image height="16" width="16" type="image/png">{{ domain }}{% static "favicon.png" %}</Image>
|
<Image height="16" width="16" type="image/png">{{ domain }}{% static "favicon.png" %}</Image>
|
||||||
<Image height="64" width="64" type="image/png">{{ domain }}{% static "logos/icon-transparent-64x64.png" %}</Image>
|
<Image height="64" width="64" type="image/png">{{ domain }}{% static "logos/icon-transparent-64x64.png" %}</Image>
|
||||||
<Language>en-us</Language>
|
<Language>en-us</Language>
|
||||||
|
@@ -30,7 +30,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if pkg.flag_date %}
|
{% if pkg.flag_date %}
|
||||||
<li><span class="flagged">Flagged out-of-date on {{ pkg.flag_date|date }}</span></li>
|
<li><span class="flagged">Flagged out-of-date on {{ pkg.flag_date|date:"Y-m-d" }}</span></li>
|
||||||
{% with tp=pkg.in_testing %}{% if tp %}
|
{% with tp=pkg.in_testing %}{% if tp %}
|
||||||
<li><span class="flagged">Version
|
<li><span class="flagged">Version
|
||||||
<a href="{{ tp.get_absolute_url }}"
|
<a href="{{ tp.get_absolute_url }}"
|
||||||
@@ -98,8 +98,8 @@
|
|||||||
title="Browse packages for {{ pkg.arch.name }} architecture">{{ pkg.arch.name }}</a></td>
|
title="Browse packages for {{ pkg.arch.name }} architecture">{{ pkg.arch.name }}</a></td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<th>Repository:</th>
|
<th>Repository:</th>
|
||||||
<td><a href="/packages/?repo={{ pkg.repo.name|capfirst }}"
|
<td><a href="/packages/?repo={{ pkg.repo.name }}"
|
||||||
title="Browse the {{ pkg.repo.name|capfirst }} repository">{{ pkg.repo.name|capfirst }}</a></td>
|
title="Browse the {{ pkg.repo.name }} repository">{{ pkg.repo.name }}</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
{% if pkg.pkgname == pkg.pkgbase %}
|
{% if pkg.pkgname == pkg.pkgbase %}
|
||||||
{% with splits=pkg.split_packages %}{% if splits %}
|
{% with splits=pkg.split_packages %}{% if splits %}
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
<th>Description:</th>
|
<th>Description:</th>
|
||||||
<td class="wrap" itemprop="description">{{ pkg.pkgdesc|default:"" }}</td>
|
<td class="wrap" itemprop="description">{{ pkg.pkgdesc|default:"" }}</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<th>Upstream URL:</th>
|
<th>Homepage:</th>
|
||||||
<td>{% if pkg.url %}<a itemprop="url" href="{{ pkg.url }}"
|
<td>{% if pkg.url %}<a itemprop="url" href="{{ pkg.url }}"
|
||||||
title="Visit the website for {{ pkg.pkgname }}">{{ pkg.url|url_unquote }}</a>{% endif %}</td>
|
title="Visit the website for {{ pkg.pkgname }}">{{ pkg.url|url_unquote }}</a>{% endif %}</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
@@ -188,19 +188,19 @@
|
|||||||
{% else %}{{ pkg.packager_str }}{% endif %}{% endwith %}</td>
|
{% else %}{{ pkg.packager_str }}{% endif %}{% endwith %}</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<th>Build Date:</th>
|
<th>Build Date:</th>
|
||||||
<td>{{ pkg.build_date|date:"DATETIME_FORMAT" }} UTC</td>
|
<td>{{ pkg.build_date|date:"Y-m-d H:i" }} UTC</td>
|
||||||
</tr>{% if pkg.signature %}<tr>
|
</tr>{% if pkg.signature %}<tr>
|
||||||
<th>Signed By:</th>
|
<th>Signed By:</th>
|
||||||
<td>{% with signer=pkg.signer %}{% if signer %}{% pgp_key_link pkg.signature.key_id signer.get_full_name|safe %}{% else %}Unknown ({% pgp_key_link pkg.signature.key_id|safe %}){% endif %}{% endwith %}</td>
|
<td>{% with signer=pkg.signer %}{% if signer %}{% pgp_key_link pkg.signature.key_id signer.get_full_name|safe %}{% else %}Unknown ({% pgp_key_link pkg.signature.key_id|safe %}){% endif %}{% endwith %}</td>
|
||||||
</tr><tr>
|
</tr><tr>
|
||||||
<th>Signature Date:</th>
|
<th>Signature Date:</th>
|
||||||
<td>{{ pkg.signature.creation_time|date:"DATETIME_FORMAT" }} UTC</td>
|
<td>{{ pkg.signature.creation_time|date:"Y-m-d H:i" }} UTC</td>
|
||||||
</tr>{% else %}<tr>
|
</tr>{% else %}<tr>
|
||||||
<th>Signed By:</th>
|
<th>Signed By:</th>
|
||||||
<td>Unsigned</td>
|
<td>Unsigned</td>
|
||||||
</tr>{% endif %}<tr>
|
</tr>{% endif %}<tr>
|
||||||
<th>Last Updated:</th>
|
<th>Last Updated:</th>
|
||||||
<td>{{ pkg.last_update|date:"DATETIME_FORMAT" }} UTC{% if pkg.is_recent %} <span class="recent" title="Your mirror may not yet have this package version">({{ pkg.last_update|naturaltime }})</span>{% endif %}</td>
|
<td>{{ pkg.last_update|date:"Y-m-d H:i" }} UTC{% if pkg.is_recent %} <span class="recent" title="Your mirror may not yet have this package version">({{ pkg.last_update|naturaltime }})</span>{% endif %}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% if user.is_authenticated %}<tr>
|
{% if user.is_authenticated %}<tr>
|
||||||
<th>Reproducible Status:</th>
|
<th>Reproducible Status:</th>
|
||||||
@@ -213,7 +213,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if user.is_authenticated %}{% with flag_request=pkg.flag_request %}{% if flag_request %}<tr>
|
{% if user.is_authenticated %}{% with flag_request=pkg.flag_request %}{% if flag_request %}<tr>
|
||||||
<th>Last Flag Request:</th>
|
<th>Last Flag Request:</th>
|
||||||
<td class="wrap">From {{ flag_request.who }} on {{ flag_request.created|date }}:<br/>
|
<td class="wrap">From {{ flag_request.who }} on {{ flag_request.created|date:"Y-m-d" }}:<br/>
|
||||||
<div class="userdata">{{ flag_request.message|linebreaksbr|default:"{no message}" }}</div></td>
|
<div class="userdata">{{ flag_request.message|linebreaksbr|default:"{no message}" }}</div></td>
|
||||||
</tr>{% endif %}{% endwith %}{% endif %}
|
</tr>{% endif %}{% endwith %}{% endif %}
|
||||||
</table>
|
</table>
|
||||||
|
@@ -33,8 +33,8 @@
|
|||||||
<td>{{ pkg.full_version }}</td>
|
<td>{{ pkg.full_version }}</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td class="wrap">{{ pkg.pkgdesc }}</td>
|
<td class="wrap">{{ pkg.pkgdesc }}</td>
|
||||||
<td>{{ pkg.last_update|date }}</td>
|
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
|
||||||
<td>{{ pkg.flag_date|date }}</td>
|
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
@@ -62,7 +62,7 @@
|
|||||||
{% for pkg in exact_matches %}
|
{% for pkg in exact_matches %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ pkg.arch.name }}</td>
|
<td>{{ pkg.arch.name }}</td>
|
||||||
<td>{{ pkg.repo.name|capfirst }}</td>
|
<td>{{ pkg.repo.name }}</td>
|
||||||
<td>{% pkg_details_link pkg %}</td>
|
<td>{% pkg_details_link pkg %}</td>
|
||||||
{% if pkg.flag_date %}
|
{% if pkg.flag_date %}
|
||||||
<td><span class="flagged" title="Flagged out-of-date">{{ pkg.full_version }}</span></td>
|
<td><span class="flagged" title="Flagged out-of-date">{{ pkg.full_version }}</span></td>
|
||||||
@@ -70,8 +70,8 @@
|
|||||||
<td>{{ pkg.full_version }}</td>
|
<td>{{ pkg.full_version }}</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td class="wrap">{{ pkg.pkgdesc }}</td>
|
<td class="wrap">{{ pkg.pkgdesc }}</td>
|
||||||
<td>{{ pkg.last_update|date }}</td>
|
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
|
||||||
<td>{{ pkg.flag_date|date }}</td>
|
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
<td><input type="checkbox" name="pkgid" value="{{ pkg.id }}" /></td>
|
<td><input type="checkbox" name="pkgid" value="{{ pkg.id }}" /></td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td>{{ pkg.arch.name }}</td>
|
<td>{{ pkg.arch.name }}</td>
|
||||||
<td>{{ pkg.repo.name|capfirst }}</td>
|
<td>{{ pkg.repo.name }}</td>
|
||||||
<td>{% pkg_details_link pkg %}</td>
|
<td>{% pkg_details_link pkg %}</td>
|
||||||
{% if pkg.flag_date %}
|
{% if pkg.flag_date %}
|
||||||
<td><span class="flagged" title="Flagged out-of-date">{{ pkg.full_version }}</span></td>
|
<td><span class="flagged" title="Flagged out-of-date">{{ pkg.full_version }}</span></td>
|
||||||
@@ -117,8 +117,8 @@
|
|||||||
<td>{{ pkg.full_version }}</td>
|
<td>{{ pkg.full_version }}</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<td class="wrap">{{ pkg.pkgdesc }}</td>
|
<td class="wrap">{{ pkg.pkgdesc }}</td>
|
||||||
<td>{{ pkg.last_update|date }}</td>
|
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
|
||||||
<td>{{ pkg.flag_date|date }}</td>
|
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<tr class="empty"><td colspan="{% if perms.main.change_package %}8{% else %}7{% endif %}"><em>No matching packages found</em></td></tr>
|
<tr class="empty"><td colspan="{% if perms.main.change_package %}8{% else %}7{% endif %}"><em>No matching packages found</em></td></tr>
|
||||||
|
@@ -56,7 +56,7 @@
|
|||||||
<td>{{ group.target_repo }}</td>
|
<td>{{ group.target_repo }}</td>
|
||||||
<td>{{ group.packager|default:"Unknown" }}</td>
|
<td>{{ group.packager|default:"Unknown" }}</td>
|
||||||
<td>{{ group.packages|length }}</td>
|
<td>{{ group.packages|length }}</td>
|
||||||
<td class="epoch-{{ group.last_update|date:'U' }}">{{ group.last_update|date }}</td>
|
<td class="epoch-{{ group.last_update|date:'U' }}">{{ group.last_update|date:"Y-m-d" }}</td>
|
||||||
{% if group.specification.known_bad %}
|
{% if group.specification.known_bad %}
|
||||||
<td class="approval signoff-bad">Bad</td>
|
<td class="approval signoff-bad">Bad</td>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
<a href="{{ entry.url }}"
|
<a href="{{ entry.url }}"
|
||||||
title="View full article: {{ entry.title }}">{{ entry.title }}</a>
|
title="View full article: {{ entry.title }}">{{ entry.title }}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<p class="timestamp">{{ entry.publishdate|date }}</p>
|
<p class="timestamp">{{ entry.publishdate|date:"Y-m-d" }}</p>
|
||||||
<div class="article-content">
|
<div class="article-content">
|
||||||
{{ entry.summary |safe }}
|
{{ entry.summary |safe }}
|
||||||
</div>
|
</div>
|
||||||
|
@@ -25,6 +25,8 @@
|
|||||||
It is intended for new installations only; an existing Arch Linux system
|
It is intended for new installations only; an existing Arch Linux system
|
||||||
can always be updated with <code>pacman -Syu</code>.</p>
|
can always be updated with <code>pacman -Syu</code>.</p>
|
||||||
|
|
||||||
|
<p>Images for installing Arch can be downloaded via <a href="#bittorrent-download">BitTorrent</a> or right here in your browser from one of the <a href="#http-downloads">Arch HTTP(S) mirrors down below</a>.</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
{% if release.version %}<li><strong>Current Release:</strong> {{ release.version }}</li>{% endif %}
|
{% if release.version %}<li><strong>Current Release:</strong> {{ release.version }}</li>{% endif %}
|
||||||
{% if release.kernel_version %}<li><strong>Included Kernel:</strong> {{ release.kernel_version }}</li>{% endif %}
|
{% if release.kernel_version %}<li><strong>Included Kernel:</strong> {{ release.kernel_version }}</li>{% endif %}
|
||||||
@@ -52,7 +54,7 @@
|
|||||||
to update your existing system. You may be looking for
|
to update your existing system. You may be looking for
|
||||||
<a href="{% url 'mirrorlist' %}">an updated mirrorlist</a> instead.</p>
|
<a href="{% url 'mirrorlist' %}">an updated mirrorlist</a> instead.</p>
|
||||||
|
|
||||||
<h3>BitTorrent Download (recommended)</h3>
|
<h3 id="bittorrent-download">BitTorrent Download (recommended)</h3>
|
||||||
|
|
||||||
<p>If you can spare the bytes, please leave the client open after your
|
<p>If you can spare the bytes, please leave the client open after your
|
||||||
download is finished, so you can seed it back to others.
|
download is finished, so you can seed it back to others.
|
||||||
@@ -91,10 +93,10 @@
|
|||||||
|
|
||||||
<p>Official virtual machine images are available for download on our <a href="https://gitlab.archlinux.org/archlinux/arch-boxes/-/packages">GitLab instance</a>, more information is available in the <a href="https://gitlab.archlinux.org/archlinux/arch-boxes/">README</a>.</p>
|
<p>Official virtual machine images are available for download on our <a href="https://gitlab.archlinux.org/archlinux/arch-boxes/-/packages">GitLab instance</a>, more information is available in the <a href="https://gitlab.archlinux.org/archlinux/arch-boxes/">README</a>.</p>
|
||||||
|
|
||||||
<h3>HTTP Direct Downloads</h3>
|
<h3 id="http-downloads">HTTP Direct Downloads</h3>
|
||||||
|
|
||||||
<p>In addition to the BitTorrent links above, install images can also be
|
<p>In addition to the BitTorrent links above, install images can also be
|
||||||
downloaded via HTTP from the mirror sites listed below. Please
|
downloaded via HTTP from the <a href="#download-mirrors">mirror sites listed below</a>. Please
|
||||||
ensure the download image matches the checksum from the <code>sha256sums.txt</code> or <code>b2sums.txt</code> file linked below.</p>
|
ensure the download image matches the checksum from the <code>sha256sums.txt</code> or <code>b2sums.txt</code> file linked below.</p>
|
||||||
|
|
||||||
<h4 id="checksums">Checksums and signatures</h4>
|
<h4 id="checksums">Checksums and signatures</h4>
|
||||||
|
@@ -50,7 +50,7 @@
|
|||||||
<a href="{{ news.get_absolute_url }}"
|
<a href="{{ news.get_absolute_url }}"
|
||||||
title="View full article: {{ news.title }}">{{ news.title }}</a>
|
title="View full article: {{ news.title }}">{{ news.title }}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<p class="timestamp">{{ news.postdate|date }}</p>
|
<p class="timestamp">{{ news.postdate|date:"Y-m-d" }}</p>
|
||||||
<div class="article-content">
|
<div class="article-content">
|
||||||
{% if forloop.counter0 == 0 %}{{ news.html|truncatewords_html:300 }}
|
{% if forloop.counter0 == 0 %}{{ news.html|truncatewords_html:300 }}
|
||||||
{% else %}{{ news.html|truncatewords_html:100 }}{% endif %}
|
{% else %}{{ news.html|truncatewords_html:100 }}{% endif %}
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
</h3>
|
</h3>
|
||||||
<dl class="newslist">
|
<dl class="newslist">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<dt>{{ news.postdate|date }}</dt>
|
<dt>{{ news.postdate|date:"Y-m-d" }}</dt>
|
||||||
<dd>
|
<dd>
|
||||||
<a href="{{ news.get_absolute_url }}"
|
<a href="{{ news.get_absolute_url }}"
|
||||||
title="View full article: {{ news.title }}">{{ news.title }}</a>
|
title="View full article: {{ news.title }}">{{ news.title }}</a>
|
||||||
@@ -203,7 +203,7 @@
|
|||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="https://www.privateinternetaccess.com/" title="Private Internet Access">
|
<a href="https://www.privateinternetaccess.com/" title="Private Internet Access">
|
||||||
<img src="{% static "pia_button.png" %}"
|
<img src="{% static "pia_logo.png" %}"
|
||||||
 title="" alt="Private Internet Access logo"/>
|
 title="" alt="Private Internet Access logo"/>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
<h2>{{ release.version }}</h2>
|
<h2>{{ release.version }}</h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Release Date:</strong> {{ release.release_date|date }}</li>
|
<li><strong>Release Date:</strong> {{ release.release_date|date:"Y-m-d" }}</li>
|
||||||
{% if release.kernel_version %}<li><strong>Kernel Version:</strong> {{ release.kernel_version }}</li>{% endif %}
|
{% if release.kernel_version %}<li><strong>Kernel Version:</strong> {{ release.kernel_version }}</li>{% endif %}
|
||||||
<li><strong>Available:</strong> {{ release.available|yesno|capfirst }}</li>
|
<li><strong>Available:</strong> {{ release.available|yesno|capfirst }}</li>
|
||||||
{% if release.torrent_data %}
|
{% if release.torrent_data %}
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong>Comment:</strong> {{ torrent.comment }}</li>
|
<li><strong>Comment:</strong> {{ torrent.comment }}</li>
|
||||||
<li><strong>Creation Date:</strong> {{ torrent.creation_date|date:"DATETIME_FORMAT" }} UTC</li>
|
<li><strong>Creation Date:</strong> {{ torrent.creation_date|date:"Y-m-d H:i" }} UTC</li>
|
||||||
<li><strong>Created By:</strong> {{ torrent.created_by }}</li>
|
<li><strong>Created By:</strong> {{ torrent.created_by }}</li>
|
||||||
<li><strong>Announce URL:</strong> {{ torrent.announce }}</li>
|
<li><strong>Announce URL:</strong> {{ torrent.announce }}</li>
|
||||||
<li><strong>File Name:</strong> {{ torrent.file_name }}</li>
|
<li><strong>File Name:</strong> {{ torrent.file_name }}</li>
|
||||||
|
@@ -42,7 +42,7 @@
|
|||||||
<a href="{{ item.magnet_uri }}"
|
<a href="{{ item.magnet_uri }}"
|
||||||
title="Get magnet link for {{ item.version }}"><img width="12" height="12" src="{% static "magnet.png" %}" alt="Magnet"/></a>
|
title="Get magnet link for {{ item.version }}"><img width="12" height="12" src="{% static "magnet.png" %}" alt="Magnet"/></a>
|
||||||
{% endif %}</td>
|
{% endif %}</td>
|
||||||
<td>{{ item.release_date|date }}</td>
|
<td>{{ item.release_date|date:"Y-m-d" }}</td>
|
||||||
<td><a href="{{ item.get_absolute_url }}" title="Release details for {{ item.version }}">{{ item.version }}</a></td>
|
<td><a href="{{ item.get_absolute_url }}" title="Release details for {{ item.version }}">{{ item.version }}</a></td>
|
||||||
<td>{{ item.kernel_version|default:"" }}</td>
|
<td>{{ item.kernel_version|default:"" }}</td>
|
||||||
<td class="available-{{ item.available|yesno }}">{{ item.available|yesno|capfirst }}</td>
|
<td class="available-{{ item.available|yesno }}">{{ item.available|yesno|capfirst }}</td>
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td class="wrap"><a href="{{ list.get_absolute_url }}"
|
<td class="wrap"><a href="{{ list.get_absolute_url }}"
|
||||||
title="View todo list: {{ list.name }}">{{ list.name }}</a></td>
|
title="View todo list: {{ list.name }}">{{ list.name }}</a></td>
|
||||||
<td>{{ list.created|date }}</td>
|
<td>{{ list.created|date:"Y-m-d" }}</td>
|
||||||
<td>{{ list.creator.get_full_name }}</td>
|
<td>{{ list.creator.get_full_name }}</td>
|
||||||
<td>{{ list.pkg_count }}</td>
|
<td>{{ list.pkg_count }}</td>
|
||||||
<td>{{ list.incomplete_count }}</td>
|
<td>{{ list.incomplete_count }}</td>
|
||||||
|
@@ -23,7 +23,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="todo-info">{{ list.created|date }} - {{ list.creator.get_full_name }}</div>
|
<div class="todo-info">{{ list.created|date:"Y-m-d" }} - {{ list.creator.get_full_name }}</div>
|
||||||
|
|
||||||
<div class="todo-description">
|
<div class="todo-description">
|
||||||
{{list.stripped_description|default:'(no description)'|urlize|linebreaks}}
|
{{list.stripped_description|default:'(no description)'|urlize|linebreaks}}
|
||||||
|