21 Commits

Author SHA1 Message Date
368e248efc Merge pull request 'fix(#6): lowercase repo names' (#7) from lowercase-repos into master
All checks were successful
Github-Actions / build (push) Successful in 48s
Docker Image CI / build (push) Successful in 2m38s
Reviewed-on: #7
2025-01-14 22:19:37 +01:00
a71b1f783e fix(#6): lowercase repo names
All checks were successful
Github-Actions / build (push) Successful in 50s
Github-Actions / build (pull_request) Successful in 48s
Docker Image CI / build (pull_request) Successful in 2m46s
closes #6
2025-01-14 16:08:51 -05:00
77531b1948 pull upstream
All checks were successful
Github-Actions / build (push) Successful in 47s
Docker Image CI / build (push) Successful in 3m24s
2025-01-11 17:44:36 -05:00
Jelle van der Waa
2bf2fa235f Update Python dependencies
Some checks failed
Github-Actions / build (push) Failing after 54s
2025-01-11 17:44:02 +01:00
Jakub Klinkovský
87a0d37953 Populate signoffs with a commit message of the tag in extra-testing, not the latest commit
Fixes #533
2025-01-11 17:35:32 +01:00
Jakub Klinkovský
4210a46f9a Add staging repos to fixtures
Without this we cannot populate the database with real staging packages,
which might be useful for testing something.
2025-01-11 17:35:32 +01:00
Jakub Klinkovský
bd4d50b84e Improve the "zebra" style of dynamic tables where rows can be dynamically hidden 2025-01-11 17:31:27 +01:00
nl6720
fcd473608c Use ISO 8601 date format
Use the `Y-m-d` format everywhere.

Fixes https://github.com/archlinux/archweb/issues/520
2025-01-11 17:21:05 +01:00
74bfaed558 Merge branch 'upstream'
Some checks failed
Github-Actions / build (push) Successful in 8m46s
Docker Image CI / build (push) Failing after 3m38s
2024-12-08 16:42:52 -05:00
dependabot[bot]
4e25b014e4 build(deps): bump django from 5.0.9 to 5.0.10
Bumps [django](https://github.com/django/django) from 5.0.9 to 5.0.10.
- [Commits](https://github.com/django/django/compare/5.0.9...5.0.10)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-07 11:32:14 +01:00
1a1d963ca4 use Artix org in Docker Hub
Some checks failed
Github-Actions / build (push) Successful in 8m11s
Docker Image CI / build (push) Failing after 1m51s
2024-10-22 22:09:19 -05:00
f8d5473c25 Merge branch 'upstream'
All checks were successful
Docker Image CI / build (push) Successful in 3m31s
Github-Actions / build (push) Successful in 9m0s
2024-10-09 10:56:22 -05:00
dependabot[bot]
c15b22203a build(deps): bump django from 5.0.8 to 5.0.9
Some checks failed
Github-Actions / build (push) Failing after 8s
Bumps [django](https://github.com/django/django) from 5.0.8 to 5.0.9.
- [Commits](https://github.com/django/django/compare/5.0.8...5.0.9)

---
updated-dependencies:
- dependency-name: django
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-09 09:32:10 +02:00
nl6720
b39c4c9385 Use ISO 8601 date format
Explicitly specify the ISO 8601 format `Y-m-d H:i` in the date template.

Django 5.0.5 removed the USE_L10N setting making the locale-specific
formats override DATE_FORMAT and DATETIME_FORMAT. See
https://forum.djangoproject.com/t/datetime-format/30811/10 for details.

Fixes https://github.com/archlinux/archweb/issues/520
2024-10-01 12:07:28 +02:00
43c333727d Merge branch 'upstream'
All checks were successful
Github-Actions / build (push) Successful in 1m14s
Docker Image CI / build (push) Successful in 4m22s
2024-09-30 16:48:13 -05:00
nl6720
3da96a4007 Update package issue tracker link in "Flag Package" page
Some checks failed
Github-Actions / build (push) Failing after 10s
Link to the package's issue tracker on gitlab.archlinux.org instead of
the old bug tracker.
2024-09-26 14:53:40 +02:00
eda6dd9f3f Merge branch 'upstream'
All checks were successful
Docker Image CI / build (push) Successful in 4m11s
Github-Actions / build (push) Successful in 8m2s
2024-09-16 17:49:26 -05:00
Christian Heusel
fc191bbe84 enhancement: add transparent background to sponsor images 2024-09-14 11:22:27 +02:00
Jelle van der Waa
c68204d6bb public: make bittorrent and iso downloads from mirrors more visible 2024-09-14 11:14:52 +02:00
004064c15c This page is only big enough for one upstream link, and it's going to be me
All checks were successful
Github-Actions / build (push) Successful in 56s
Docker Image CI / build (push) Successful in 4m29s
2024-08-27 13:36:59 -05:00
305cbdc3d8 different take on the dark theme media query
All checks were successful
Github-Actions / build (push) Successful in 47s
Docker Image CI / build (push) Successful in 4m34s
2024-08-08 19:14:06 -05:00
34 changed files with 171 additions and 80 deletions

View File

@@ -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 }}

View File

@@ -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
}
} }
] ]

View File

@@ -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
}
} }
] ]

View File

@@ -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

View File

@@ -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

View File

@@ -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.8 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

View File

@@ -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 = '/'

View File

@@ -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;
} }

View File

@@ -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]);

View File

@@ -104,8 +104,7 @@ tr :nth-child(7) {
} }
} }
@media (prefers-color-scheme: dark), @media not all and (prefers-color-scheme: light) {
(prefers-color-scheme: no-preference) {
html body { html body {
background: #1a1a1a; background: #1a1a1a;
color: #d9d9d9; color: #d9d9d9;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -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 %}

View File

@@ -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>

View File

@@ -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 %}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 %}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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}}