7 Commits

Author SHA1 Message Date
52e9a1ae0e Merge branch 'upstream', tag release_2025-08-03
All checks were successful
Github-Actions / build (push) Successful in -44s
Docker Image CI / build (push) Successful in 2m17s
2025-08-03 17:05:23 -05:00
b386d89d6c prep for mirror pages go-live
All checks were successful
Docker Image CI / build (push) Successful in -14s
Github-Actions / build (push) Successful in -31s
2025-08-01 01:06:11 -05:00
Sven-Hendrik Haase
59229f280b Add link to new Dev Blog in Development section
All checks were successful
Github-Actions / build (push) Successful in 3m5s
2025-07-24 16:14:44 +02:00
Jelle van der Waa
4c57725862 treewide: port away from deprecated datetime.utcnow() 2025-07-22 18:32:21 +02:00
Jelle van der Waa
8ded12a7cf Update Django to 5.1.10 2025-07-22 18:32:21 +02:00
Daniel M. Capella
0180242d2a todolists: include last_modified in template
Closes https://github.com/archlinux/archweb/issues/551
2025-07-13 10:21:59 +02:00
Daniel M. Capella
bf29716008 signoffs: remove superfluous conditional
The page is only accessible if you're logged in.
2025-07-13 10:21:59 +02:00
10 changed files with 37 additions and 12 deletions

View File

@@ -2,6 +2,7 @@ version: '2'
# Run the following once:
# docker compose run --rm archweb_web python manage.py migrate
# docker compose run --rm archweb_web python manage.py loaddata mirrors/fixtures/mirrorprotocols.json
# docker compose run --rm archweb_web python manage.py loaddata main/fixtures/arches.json
# docker compose run --rm archweb_web python manage.py loaddata main/fixtures/repos.json
# docker compose run --rm archweb_web python manage.py createsuperuser --username=admin --email=admin@artixweb.local
@@ -11,6 +12,8 @@ version: '2'
# docker compose run --rm archweb_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/sites/site/1/change/ and set the domain
## clone the mirrors repo
# docker compose run --rm archweb_web python manage.py loaddata /mirrors/mirrors.fixture.json
services:

View File

@@ -25,5 +25,14 @@
"default": false,
"protocol": "https"
}
},
{
"pk": 9,
"model": "mirrors.mirrorprotocol",
"fields": {
"is_download": false,
"default": false,
"protocol": "ftp"
}
}
]

View File

@@ -33,7 +33,7 @@ server {
try_files "" @proxy;
}
location ~ ^/(packages|groups|opensearch|feeds) {
location ~ ^/(packages|groups|opensearch|feeds|mirrors|mirrorlist) {
try_files "" @proxy;
}
@@ -65,4 +65,4 @@ server {
}
error_page 500 501 502 503 504 /500.html;
}
}

View File

@@ -1,5 +1,5 @@
import json
from datetime import datetime
from datetime import datetime, timezone
from operator import attrgetter
from django.contrib.auth.models import User
@@ -99,7 +99,7 @@ def keys(request):
user_key_ids = frozenset(user.userprofile.pgp_key[-16:] for user in users
if user.userprofile.pgp_key)
not_expired = Q(expires__gt=datetime.utcnow()) | Q(expires__isnull=True)
not_expired = Q(expires__gt=datetime.now(timezone.utc)) | Q(expires__isnull=True)
master_keys = MasterKey.objects.select_related('owner', 'revoker',
'owner__userprofile', 'revoker__userprofile').filter(
revoked__isnull=True)
@@ -155,7 +155,7 @@ def keys_json(request):
'group': 'master'
} for key in master_keys)
not_expired = Q(expires__gt=datetime.utcnow()) | Q(expires__isnull=True)
not_expired = Q(expires__gt=datetime.now(timezone.utc)) | Q(expires__isnull=True)
signatures = PGPSignature.objects.filter(not_expired, revoked__isnull=True)
edge_list = [{ 'signee': sig.signee, 'signer': sig.signer }
for sig in signatures]

View File

@@ -1,5 +1,5 @@
from base64 import b64encode
from datetime import datetime
from datetime import datetime, timezone
import pytest
from bencode import bencode
@@ -24,7 +24,7 @@ def torrent_data():
data = {
'comment': 'comment',
'created_by': 'Arch Linux',
'creation date': int(datetime.utcnow().timestamp()),
'creation date': int(datetime.now(timezone.utc).timestamp()),
'info': {
'name': 'arch.iso',
'length': 1,

View File

@@ -1,5 +1,5 @@
-e git+https://github.com/fredj/cssmin.git@master#egg=cssmin
Django==5.1.9
Django==5.1.10
IPy==1.1
Markdown==3.3.7
bencode.py==4.0.0

View File

@@ -145,6 +145,10 @@ tr :nth-child(7) {
background-image: url(data:image/gif;base64,R0lGODlhFQAEAPABAOTu/wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAgABACwAAAAAFQAEAAACDYwfoAvoz9qbZ9FrJC0AOw==);
}
code {
background: #334450;
}
.results.results td,
.results.results th {
border: 1px solid #858585;
@@ -158,7 +162,7 @@ tr :nth-child(7) {
background-color: #111;
}
.results th {
.results th, #pkgsearch {
color: #fff;
background-color: #0f3147;
border: 1px solid #0A6682;

View File

@@ -26,10 +26,8 @@
<div><label for="id_repo_{{ repo_name|lower }}" title="Target Repository {{ repo_name }}">[{{ repo_name|lower }}]</label>
<input type="checkbox" name="repo_{{ repo_name|lower }}" id="id_repo_{{ repo_name|lower }}" class="repo_filter" value="{{ repo_name|lower }}" checked="checked"/></div>
{% endfor %}
{% if user.is_authenticated %}
<div><label for="id_mine_only" title="Show only packages packaged by me">Only Mine</label>
<input type="checkbox" name="mine_only" id="id_mine_only" value="mine_only"/></div>
{% endif %}
<div><label for="id_pending" title="Packages with not enough signoffs">Only Pending Approval</label>
<input type="checkbox" name="pending" id="id_pending" value="pending"/></div>
<div><label>&nbsp;</label><input title="Reset search criteria" type="button" id="criteria_reset" value="Reset"/></div>

View File

@@ -153,6 +153,7 @@
<ul>
<li><a href="https://wiki.archlinux.org/title/Getting_involved"
title="Getting involved">Getting involved</a></li>
<li><a href="https://devblog.archlinux.page" title="Dev Blog">Dev Blog</a></li>
<li><a href="https://gitlab.archlinux.org/archlinux/"
title="Official Arch projects (git)">Projects in Git</a></li>
<li><a href="https://wiki.archlinux.org/title/DeveloperWiki"

View File

@@ -2,6 +2,8 @@
{% load static %}
{% load package_extras %}
{% load todolists %}
{% load tz %}
{% load humanize %}
{% block title %}Arch Linux - Todo: {{ list.name }}{% endblock %}
@@ -103,7 +105,15 @@
<span class="{{ pkg.status_css_class }}">{{ pkg.get_status_display }}</span>
{% endif %}
</td>
<td>{{ pkg.user|default:"" }}</td>
<td>
{% if pkg.user %}
{% if user.is_authenticated %}
{{ pkg.user }} <span title="{{ pkg.last_modified|timezone:user.userprofile.time_zone|date:"Y-m-d H:i T" }}">({{ pkg.last_modified|naturaltime }})</span>
{% else %}
{{ pkg.user }} <span title="{{ pkg.last_modified|date:"Y-m-d H:i T" }}">({{ pkg.last_modified|naturaltime }})</span>
{% endif %}
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>