16 Commits

Author SHA1 Message Date
7accacd5fd Merge pull request 'sync staging repos' (#8) from staging into master
All checks were successful
Github-Actions / build (push) Successful in 49s
Docker Image CI / build (push) Successful in 3m15s
Reviewed-on: #8
2025-01-14 22:26:44 +01:00
10fecc63e9 sync staging repos
All checks were successful
Github-Actions / build (push) Successful in 49s
Github-Actions / build (pull_request) Successful in 48s
Docker Image CI / build (pull_request) Successful in 2m35s
2025-01-14 16:21:04 -05:00
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
29 changed files with 162 additions and 73 deletions

View File

@@ -22,7 +22,7 @@ jobs:
REGISTRY: gitea.artixlinux.org
DH_REGISTRY: docker.io
REPO_ORG: ${{ gitea.repository_owner }}
DH_ORG: corysanin
DH_ORG: artixlinux
IMAGE_NAME: archweb
DH_IMAGE_NAME: archweb
ABSOLUTE_IMAGE: ${{ env.REGISTRY }}/${{ env.REPO_ORG }}/${{ env.IMAGE_NAME }}

View File

@@ -42,4 +42,4 @@ services:
ports:
- "8080:80"
volumes:
- ./nginx.conf:/config/nginx/site-confs/default.conf:ro
- ./nginx.conf:/config/nginx/site-confs/default.conf

View File

@@ -8,7 +8,7 @@ fi
printf "downloadpackages.sh\nusing %s/\$repo/os/\$arch for mirror.\n" "$mirror"
repos="system world galaxy lib32 system-gremlins world-gremlins galaxy-gremlins lib32-gremlins"
repos="system world galaxy lib32 system-gremlins world-gremlins galaxy-gremlins lib32-gremlins system-goblins world-goblins galaxy-goblins lib32-goblins"
mkdir -p ./archives

View File

@@ -11,6 +11,18 @@
"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,
"model": "main.repo",
@@ -118,5 +130,17 @@
"svn_root": "packages",
"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": {
"bugs_category": 0,
"staging": false,
"name": "World-Gremlins",
"name": "world-gremlins",
"bugs_project": 0,
"svn_root": "packages",
"testing": true
@@ -17,7 +17,7 @@
"fields": {
"bugs_category": 0,
"staging": false,
"name": "Galaxy-Gremlins",
"name": "galaxy-gremlins",
"bugs_project": 0,
"svn_root": "packages",
"testing": true
@@ -29,7 +29,7 @@
"fields": {
"bugs_category": 0,
"staging": false,
"name": "System",
"name": "system",
"bugs_project": 0,
"svn_root": "packages",
"testing": false
@@ -41,7 +41,7 @@
"fields": {
"bugs_category": 0,
"staging": false,
"name": "World",
"name": "world",
"bugs_project": 0,
"svn_root": "packages",
"testing": false
@@ -53,7 +53,7 @@
"fields": {
"bugs_category": 0,
"staging": false,
"name": "Galaxy",
"name": "galaxy",
"bugs_project": 0,
"svn_root": "packages",
"testing": false
@@ -65,7 +65,7 @@
"fields": {
"bugs_category": 0,
"staging": false,
"name": "Lib32",
"name": "lib32",
"bugs_project": 0,
"svn_root": "packages",
"testing": false
@@ -77,7 +77,7 @@
"fields": {
"bugs_category": 0,
"staging": false,
"name": "Lib32-Gremlins",
"name": "lib32-gremlins",
"bugs_project": 0,
"svn_root": "packages",
"testing": true
@@ -89,10 +89,58 @@
"fields": {
"bugs_category": 0,
"staging": false,
"name": "System-Gremlins",
"name": "system-gremlins",
"bugs_project": 0,
"svn_root": "packages",
"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
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
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'
@@ -65,8 +65,12 @@ def get_last_log(repo, pkgbase):
return None
tags = r.json()
# filter out unrelated tags
tags = [tag for tag in tags if tag["name"] == version]
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
tag = tags[0]
@@ -89,7 +93,7 @@ def add_signoff_comments():
if not group.default_spec:
continue
log = get_last_log(group.repo, group.pkgbase)
log = get_tag_info(group.repo, group.pkgbase, group.version)
if log is None:
continue

View File

@@ -26,9 +26,9 @@ class RematchDeveloperTest(TransactionTestCase):
self.package.delete()
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'
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')
signoff_spec = SignoffSpecification.objects.first()
@@ -36,8 +36,8 @@ class RematchDeveloperTest(TransactionTestCase):
assert signoff_spec.pkgbase == self.package.pkgbase
def test_invalid(self):
with mock.patch('packages.management.commands.populate_signoffs.get_last_log') as get_last_log:
get_last_log.return_value = None
with mock.patch('packages.management.commands.populate_signoffs.get_tag_info') as get_tag_info:
get_tag_info.return_value = None
call_command('populate_signoffs')
assert SignoffSpecification.objects.count() == 0

View File

@@ -8,7 +8,7 @@ fi
printf "populatepackages.sh\nretrieving package files from %s\n" "$path"
repos="system world galaxy lib32 system-gremlins world-gremlins galaxy-gremlins lib32-gremlins"
repos="system world galaxy lib32 system-gremlins world-gremlins galaxy-gremlins lib32-gremlins system-goblins world-goblins galaxy-goblins lib32-goblins"
for repo in $repos
do

View File

@@ -1,5 +1,5 @@
-e git+https://github.com/fredj/cssmin.git@master#egg=cssmin
Django==5.0.8
Django==5.0.10
IPy==1.1
Markdown==3.3.7
bencode.py==4.0.0
@@ -7,14 +7,14 @@ django-countries==7.6.1
django-extensions==3.2.3
jsmin==3.0.1
pgpdump==1.5
parse==1.19.0
parse==1.20.2
sqlparse==0.5.0
django-csp==3.7
django-csp==3.8
ptpython==2.0.4
feedparser==6.0.10
feedparser==6.0.11
bleach==6.0.0
requests==2.32.0
xtarfile==0.1.0
zstandard==0.17.0
whitenoise==6.7.0
requests==2.32.3
xtarfile==0.2.1
zstandard==0.23.0
whitenoise==6.8.2
django-prometheus==2.3.1

View File

@@ -41,9 +41,6 @@ SITE_ID = 1
DATE_FORMAT = 'Y-m-d'
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 = '/login/'
LOGIN_REDIRECT_URL = '/'

View File

@@ -754,6 +754,10 @@ table.results {
text-align: center;
}
.results [hidden] {
display: none;
}
/* pkglist: layout */
#pkglist-about {
margin-top: 1.5em;
@@ -1056,12 +1060,12 @@ table td.country {
background: #ffd;
}
.results tr:nth-child(even),
.results tr:nth-child(even of :not([hidden])),
#article-list tr:nth-child(even) {
background: #e4eeff;
}
.results tr:nth-child(odd),
.results tr:nth-child(odd of :not([hidden])),
#article-list tr:nth-child(odd) {
background: #fff;
}

View File

@@ -212,8 +212,14 @@ function filter_pkgs_list(filter_ele, tbody_ele) {
rows = rows.has('.incomplete');
}
/* hide all rows, then show the set we care about */
all_rows.hide();
rows.show();
// note that we don't use .hide() from jQuery because it adds display:none
// 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);
/* make sure we update the odd/even styling from sorting */
$('.results').trigger('applyWidgets', [false]);
@@ -330,8 +336,14 @@ function filter_signoffs() {
rows = rows.has('td.signoff-no');
}
/* hide all rows, then show the set we care about */
all_rows.hide();
rows.show();
// note that we don't use .hide() from jQuery because it adds display:none
// 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);
/* make sure we update the odd/even styling from sorting */
$('.results').trigger('applyWidgets', [false]);

View File

@@ -30,7 +30,7 @@
<tbody>
{% for entry in admin_log %}
<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 %}
<td>{{ entry.user.username }}{% if entry.user.get_full_name %} ({{ entry.user.get_full_name }}){% endif %}</td>
{% else %}

View File

@@ -36,8 +36,8 @@
{% endif %}{% endwith %}</td>
<td>{{ pkg.repo.name }}</td>
<td>{{ pkg.arch.name }}</td>
<td>{{ pkg.flag_date|date }}</td>
<td>{{ pkg.last_update|date }}</td>
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
</tr>
{% empty %}
<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.arch.name }}</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 %}
<td class="approval signoff-bad">Bad</td>
{% else %}
@@ -138,7 +138,7 @@
<tr>
<td class="wrap"><a href="{{ todo.get_absolute_url }}"
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.pkg_count }}</td>
<td>{{ todo.incomplete_count }}</td>

View File

@@ -60,9 +60,9 @@
{% else %}
<td>{{ pkg.full_version }}</td>
{% endif %}
<td>{{ pkg.last_update|date }}</td>
<td>{{ pkg.build_date|date }}</td>
<td>{{ pkg.flag_date|date }}</td>
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
<td>{{ pkg.build_date|date:"Y-m-d" }}</td>
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
{% for attr in column_attrs %}
<td>{{ pkg|attribute:attr }}</td>
{% endfor %}

View File

@@ -33,7 +33,7 @@
<tbody>
{% for item in news_list %}
<tr>
<td>{{ item.postdate|date }}</td>
<td>{{ item.postdate|date:"Y-m-d" }}</td>
<td class="wrap"><a href="{{ item.get_absolute_url }}"
title="View: {{ item.title }}">{{ item.title }}</a></td>
<td>{{ item.author.get_full_name }}</td>

View File

@@ -25,7 +25,7 @@
</ul>
{% 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>

View File

@@ -29,8 +29,8 @@
<td><span{% if pkg2.flag_date %} class="flagged"{% endif %}>{{ pkg2.full_version }}</span></td>
<td>{% pkg_details_link pkg2 %}</td>
<td>{{ pkg2.repo }}</td>
<td>{{ pkg1.last_update|date }}</td>
<td>{{ pkg2.last_update|date }}</td>
<td>{{ pkg1.last_update|date:"Y-m-d" }}</td>
<td>{{ pkg2.last_update|date:"Y-m-d" }}</td>
</tr>
{% endfor %}
</tbody>

View File

@@ -23,7 +23,7 @@
<td><a href="/groups/{{ grp.arch }}/{{ grp.name }}/"
title="Group details for {{ grp.name }}">{{ grp.name }}</a></td>
<td>{{ grp.count }}</td>
<td>{{ grp.last_update|date }}</td>
<td>{{ grp.last_update|date:"Y-m-d" }}</td>
</tr>
{% endfor %}
</tbody>

View File

@@ -30,7 +30,7 @@
</li>
{% endif %}
{% 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 %}
<li><span class="flagged">Version
<a href="{{ tp.get_absolute_url }}"
@@ -98,8 +98,8 @@
title="Browse packages for {{ pkg.arch.name }} architecture">{{ pkg.arch.name }}</a></td>
</tr><tr>
<th>Repository:</th>
<td><a href="/packages/?repo={{ pkg.repo.name|capfirst }}"
title="Browse the {{ pkg.repo.name|capfirst }} repository">{{ pkg.repo.name|capfirst }}</a></td>
<td><a href="/packages/?repo={{ pkg.repo.name }}"
title="Browse the {{ pkg.repo.name }} repository">{{ pkg.repo.name }}</a></td>
</tr>
{% if pkg.pkgname == pkg.pkgbase %}
{% with splits=pkg.split_packages %}{% if splits %}
@@ -188,19 +188,19 @@
{% else %}{{ pkg.packager_str }}{% endif %}{% endwith %}</td>
</tr><tr>
<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>
<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>
</tr><tr>
<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>
<th>Signed By:</th>
<td>Unsigned</td>
</tr>{% endif %}<tr>
<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>
{% if user.is_authenticated %}<tr>
<th>Reproducible Status:</th>
@@ -213,7 +213,7 @@
{% endif %}
{% if user.is_authenticated %}{% with flag_request=pkg.flag_request %}{% if flag_request %}<tr>
<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>
</tr>{% endif %}{% endwith %}{% endif %}
</table>

View File

@@ -33,8 +33,8 @@
<td>{{ pkg.full_version }}</td>
{% endif %}
<td class="wrap">{{ pkg.pkgdesc }}</td>
<td>{{ pkg.last_update|date }}</td>
<td>{{ pkg.flag_date|date }}</td>
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
</tr>
{% endfor %}
</tbody>

View File

@@ -62,7 +62,7 @@
{% for pkg in exact_matches %}
<tr>
<td>{{ pkg.arch.name }}</td>
<td>{{ pkg.repo.name|capfirst }}</td>
<td>{{ pkg.repo.name }}</td>
<td>{% pkg_details_link pkg %}</td>
{% if pkg.flag_date %}
<td><span class="flagged" title="Flagged out-of-date">{{ pkg.full_version }}</span></td>
@@ -70,8 +70,8 @@
<td>{{ pkg.full_version }}</td>
{% endif %}
<td class="wrap">{{ pkg.pkgdesc }}</td>
<td>{{ pkg.last_update|date }}</td>
<td>{{ pkg.flag_date|date }}</td>
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
</tr>
{% endfor %}
</tbody>
@@ -109,7 +109,7 @@
<td><input type="checkbox" name="pkgid" value="{{ pkg.id }}" /></td>
{% endif %}
<td>{{ pkg.arch.name }}</td>
<td>{{ pkg.repo.name|capfirst }}</td>
<td>{{ pkg.repo.name }}</td>
<td>{% pkg_details_link pkg %}</td>
{% if pkg.flag_date %}
<td><span class="flagged" title="Flagged out-of-date">{{ pkg.full_version }}</span></td>
@@ -117,8 +117,8 @@
<td>{{ pkg.full_version }}</td>
{% endif %}
<td class="wrap">{{ pkg.pkgdesc }}</td>
<td>{{ pkg.last_update|date }}</td>
<td>{{ pkg.flag_date|date }}</td>
<td>{{ pkg.last_update|date:"Y-m-d" }}</td>
<td>{{ pkg.flag_date|date:"Y-m-d" }}</td>
</tr>
{% empty %}
<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.packager|default:"Unknown" }}</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 %}
<td class="approval signoff-bad">Bad</td>
{% else %}

View File

@@ -24,7 +24,7 @@
<a href="{{ entry.url }}"
title="View full article: {{ entry.title }}">{{ entry.title }}</a>
</h4>
<p class="timestamp">{{ entry.publishdate|date }}</p>
<p class="timestamp">{{ entry.publishdate|date:"Y-m-d" }}</p>
<div class="article-content">
{{ entry.summary |safe }}
</div>

View File

@@ -50,7 +50,7 @@
<a href="{{ news.get_absolute_url }}"
title="View full article: {{ news.title }}">{{ news.title }}</a>
</h4>
<p class="timestamp">{{ news.postdate|date }}</p>
<p class="timestamp">{{ news.postdate|date:"Y-m-d" }}</p>
<div class="article-content">
{% if forloop.counter0 == 0 %}{{ news.html|truncatewords_html:300 }}
{% else %}{{ news.html|truncatewords_html:100 }}{% endif %}
@@ -63,7 +63,7 @@
</h3>
<dl class="newslist">
{% endif %}
<dt>{{ news.postdate|date }}</dt>
<dt>{{ news.postdate|date:"Y-m-d" }}</dt>
<dd>
<a href="{{ news.get_absolute_url }}"
title="View full article: {{ news.title }}">{{ news.title }}</a>

View File

@@ -9,7 +9,7 @@
<h2>{{ release.version }}</h2>
<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 %}
<li><strong>Available:</strong> {{ release.available|yesno|capfirst }}</li>
{% if release.torrent_data %}
@@ -38,7 +38,7 @@
<ul>
<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>Announce URL:</strong> {{ torrent.announce }}</li>
<li><strong>File Name:</strong> {{ torrent.file_name }}</li>

View File

@@ -42,7 +42,7 @@
<a href="{{ item.magnet_uri }}"
title="Get magnet link for {{ item.version }}"><img width="12" height="12" src="{% static "magnet.png" %}" alt="Magnet"/></a>
{% 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>{{ item.kernel_version|default:"" }}</td>
<td class="available-{{ item.available|yesno }}">{{ item.available|yesno|capfirst }}</td>

View File

@@ -37,7 +37,7 @@
<tr>
<td class="wrap"><a href="{{ list.get_absolute_url }}"
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.pkg_count }}</td>
<td>{{ list.incomplete_count }}</td>

View File

@@ -23,7 +23,7 @@
{% endif %}
</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">
{{list.stripped_description|default:'(no description)'|urlize|linebreaks}}