Merge branch 'main' into device-migration-3.0-sync

This commit is contained in:
Mike Conley 2023-11-09 12:34:03 -05:00
Родитель 1c88b4ea54 bd659b32d6
Коммит 7923d0d368
15 изменённых файлов: 245 добавлений и 97 удалений

16
.vscode/settings.json поставляемый
Просмотреть файл

@ -1,19 +1,5 @@
{ {
"python.defaultInterpreterPath": "/venv/bin/python", "python.defaultInterpreterPath": "/venv/bin/python",
"python.formatting.provider": "none",
"python.formatting.blackPath": "/venv/bin/black",
"python.formatting.blackArgs": [
"--config=/app/pyproject.toml"
],
"python.linting.enabled": true,
"python.linting.flake8Enabled": false,
"python.linting.pylintEnabled": true,
"python.linting.pylintArgs": [
"--disable=C0111",
"--enable=W0614",
"--load-plugins=pylint_django",
"--django-settings-module=kitsune.settings"
],
"python.autoComplete.extraPaths": [ "python.autoComplete.extraPaths": [
"/vendor" "/vendor"
], ],
@ -35,7 +21,7 @@
] ]
}, },
"[jinja-html]": { "[jinja-html]": {
"editor.formatOnSave": true, "editor.formatOnSave": false,
"editor.defaultFormatter": "HookyQR.beautify" "editor.defaultFormatter": "HookyQR.beautify"
}, },
"[jsonc]": { "[jsonc]": {

Просмотреть файл

@ -10,8 +10,8 @@
<p> <p>
{% trans %} {% trans %}
Mozilla support is fully powered by our volunteer community that is Mozilla support forum is fully powered by our volunteer community that helps
helping hundreds of users everyday. This community is formed by hundreds of users every day. This community is formed by
passionate Firefox and Thunderbird users who take some of their passionate Firefox and Thunderbird users who take some of their
spare time to help others. We couldn't do it without your passion spare time to help others. We couldn't do it without your passion
and enthusiasm. Your contribution, as minor as it might seem, has and enthusiasm. Your contribution, as minor as it might seem, has
@ -23,30 +23,23 @@
<p><strong>{{ _('Tell us about yourself!') }}</strong></p> <p><strong>{{ _('Tell us about yourself!') }}</strong></p>
<p> <p>
{% trans intro_url='/forums/contributors', irc_url='https://client01.chat.mibbit.com/?server=irc.mozilla.org&channel=#sumo' %} {% trans intro_url='/forums/contributors', matrix_url='https://chat.mozilla.org/#/room/#SUMO:mozilla.org' %}
We are always very happy to hear from new people who like helping We are always very happy to hear from new people who like helping
on the forums so if you havent met our community yet on the forums so if you havent met our community yet,
<a href="{{ intro_url }}"> <a href="{{ intro_url }}">please take a minute to introduce yourself</a>.
please take a minute to introduce yourself
</a>.
If you want to stay low-profile, thats also ok :). You can also If you want to stay low-profile, thats also ok :). You can also
find us all hanging out on IRC, on the find us all hanging out on Matrix, on the <a href="{{ matrix_url }}">#sumo channel</a>.
<a href="{{ irc_url }}">
#sumo channel
</a>.
{% endtrans %} {% endtrans %}
</p> </p>
<p><strong>{{ _('Learn new things') }}</strong></p> <p><strong>{{ _('Learn new things') }}</strong></p>
<p> <p>
{% trans training_url='/kb/introduction-contributor-quality-training?utm_source=training&utm_medium=1intro&utm_term=cqt&utm_campaign=Contributorqualitytraining' %} {% trans onboarding_url='/kb/how-contribute-support-forum?utm_source=onboardingemail&utm_medium=1intro&utm_term=cqt&utm_campaign=ContribOnboarding' %}
If you are interested in learning more about how this whole support If you are interested in learning more about how this whole support
thing works, check out our thing works, check out our
<a href="{{ training_url }}"> <a href="{{ onboarding_url }}">contributor guidelines</a>.
contributor training This includes some cool troubleshooting info, how-to
</a>.
This includes some cool troubleshooting info, guidelines, how-to
questions, and info about where to find more help if stuck. questions, and info about where to find more help if stuck.
{% endtrans %} {% endtrans %}
</p> </p>
@ -54,16 +47,14 @@
<p><strong>{{ _('Stay in touch') }}</strong></p> <p><strong>{{ _('Stay in touch') }}</strong></p>
<p> <p>
{% trans forums_url='/forums/contributors', blog_url='https://blog.mozilla.org/sumo/', twitter_url='https://twitter.com/sumo_mozilla', meetings_url='https://wiki.mozilla.org/Support/Weekly_Meetings' %} {% trans forums_url='/forums/contributors', blog_url='https://blog.mozilla.org/sumo/', twitter_url='https://twitter.com/sumo_mozilla', meetings_url='https://wiki.mozilla.org/Support/Weekly_Meetings', participate_url='/kb/how-participate-sumo-contributor-meetings' %}
Finally, if you want to follow all news related to SUMO, dont Finally, if you want to follow all news related to SUMO, dont
forget about our forget about our
<a href="{{ forums_url }}">community forums</a>, <a href="{{ forums_url }}">community forums</a>,
<a href="{{ blog_url }}">official blog</a> and <a href="{{ blog_url }}">official blog</a> and
<a href="{{ twitter_url }}">Twitter account</a>. <a href="{{ twitter_url }}">Twitter account</a>.
We also We also
<a href="{{ meetings_url }}"> <a href="{{ meetings_url }}">meet every month</a> - and you can <a href="{{ participate_url }}">join us</a>.
meet almost every Monday
</a> - and you can join us.
{% endtrans %} {% endtrans %}
</p> </p>

Просмотреть файл

@ -6,12 +6,13 @@ made somebody's day!
{% endtrans %} {% endtrans %}
{% trans %} {% trans %}
Mozilla support is fully powered by our volunteer community that is helping Mozilla support forum is fully powered by our volunteer community that helps
hundreds of users everyday. This community is formed by passionate Firefox and hundreds of users every day. This community is formed by
Thunderbird users who take some of their spare time to help others. We couldn't passionate Firefox and Thunderbird users who take some of their
do it without your passion and enthusiasm. Your contribution, as minor as it spare time to help others. We couldn't do it without your passion
might seem, has tremendous value. Solving one issue in the support forums can and enthusiasm. Your contribution, as minor as it might seem, has
help up to 1000 users a day! tremendous value. Solving one issue in the support forums can help
up to 1000 users a day!
{% endtrans %} {% endtrans %}
--- ---
@ -19,16 +20,16 @@ help up to 1000 users a day!
{% trans %} {% trans %}
We are always very happy to hear from new people who like helping on the forums We are always very happy to hear from new people who like helping on the forums
so if you havent met our community yet please take a minute to introduce so if you havent met our community yet, please take a minute to introduce
yourself. If you want to stay low-profile, thats also ok :). You can also find yourself. If you want to stay low-profile, thats also ok :). You can also find
us all hanging out on IRC, on the #sumo channel on irc.mozilla.org. us all hanging out on Matrix, on the #sumo channel.
{% endtrans %} {% endtrans %}
* Introductions - https://{{ host }}/forums/contributors * Introductions - https://{{ host }}/forums/contributors
* IRC - https://www.mibbit.com/?server=irc.mozilla.org&channel=#sumo * Matrix - https://chat.mozilla.org/#/room/#SUMO:mozilla.org
{% trans url='https://' + host + '/forums/contributors' %} {% trans url='https://' + host + '/forums/contributors' %}
The community forum is at {{ url }} . The community forum is at {{ url }}.
{% endtrans %} {% endtrans %}
--- ---
@ -36,11 +37,11 @@ The community forum is at {{ url }} .
{% trans %} {% trans %}
If you are interested in learning more about how this whole support thing If you are interested in learning more about how this whole support thing
works, check out our contributor training. This includes some cool works, check out our contributor guidelines. This includes some cool
troubleshooting info, guidelines, how-to questions, and info about where to troubleshooting info, how-to questions, and info about where to
find more help if stuck. find more help if stuck.
{% endtrans %} {% endtrans %}
https://{{ host }}/kb/introduction-contributor-quality-training https://{{ host }}/kb/how-contribute-support-forum?utm_source=onboardingemail&utm_medium=1intro&utm_term=cqt&utm_campaign=ContribOnboarding
--- ---
{{ _('Stay in touch') }} {{ _('Stay in touch') }}
@ -54,8 +55,13 @@ Finally, if you want to follow all news related to SUMO, dont forget about ou
* {{ _('Twitter account') }} - https://twitter.com/sumo_mozilla * {{ _('Twitter account') }} - https://twitter.com/sumo_mozilla
* {{ _('Weekly meetings') }} - https://wiki.mozilla.org/Support/Weekly_Meetings * {{ _('Weekly meetings') }} - https://wiki.mozilla.org/Support/Weekly_Meetings
{% trans %}
We also meet every month and you can join us.
{% endtrans %}
* {{ _('Contributor meetings') }} - https://{{ host }}/kb/how-participate-sumo-contributor-meetings
{% trans %} {% trans %}
Thank you once more. We are looking forward to seeing you more often around Thank you once more. We are looking forward to seeing you more often around
SUMO! Keep rocking! SUMO! Keep rocking!
{% endtrans %} {% endtrans %}
{% endautoescape %} {% endautoescape %}

Просмотреть файл

@ -29,25 +29,19 @@
<p> <p>
If you want to get in touch with other people localizing SUMO in your If you want to get in touch with other people localizing SUMO in your
language, language, go to our
<a href="/forums/l10n-forum/711196?last=64679"> <a href="/forums/l10n-forum/">
go to our l10n forums l10n forum
</a>. </a>.
You can also find people hanging out on IRC at You can also find people hanging out on Matrix at
<a href="https://www.mibbit.com/?server=irc.mozilla.org&channel=%23sumo-l10ns"> <a href="https://chat.mozilla.org/#/room/#SUMO:mozilla.org">#sumo channel</a>.
#sumo-l10ns
</a>
and
<a href="https://www.mibbit.com/?server=irc.mozilla.org&channel=%23sumo">
#sumo.
</a>
</p> </p>
<p><strong>Stay in touch</strong></p> <p><strong>Stay in touch</strong></p>
<p> <p>
Finally, if you want to follow all news related to SUMO, dont forget about Finally, if you want to follow all news related to SUMO, dont forget about our
<a href="/forums/contributors"> <a href="/forums/contributors">
our community forums community forums
</a>, </a>,
<a href="https://blog.mozilla.org/sumo/"> <a href="https://blog.mozilla.org/sumo/">
official blog official blog
@ -58,9 +52,9 @@
</a>. </a>.
We also We also
<a href="https://wiki.mozilla.org/Support/Weekly_Meetings"> <a href="https://wiki.mozilla.org/Support/Weekly_Meetings">
meet almost every Monday meet every month
</a> </a>
- and you can join us. - and you can <a href="/kb/how-participate-sumo-contributor-meetings">join us</a>.
</p> </p>
<p><strong>Keep rocking</strong></p> <p><strong>Keep rocking</strong></p>

Просмотреть файл

@ -22,11 +22,10 @@ localizing skills!
* Locale Page - https://{{ host }}/kb/locales * Locale Page - https://{{ host }}/kb/locales
If you want to get in touch with other people localizing SUMO in your language If you want to get in touch with other people localizing SUMO in your language
you can check out the forums or our IRC channels. you can check out the forums or Matrix.
* L10n forums - https://{{ host }}/forums/l10n-forum/711196?last=64679 * L10n forums - https://{{ host }}/forums/l10n-forum/711196?last=64679
* L10n IRC channel - https://www.mibbit.com/?server=irc.mozilla.org&channel=%23sumo-l10ns * Matrix sumo channel - https://chat.mozilla.org/#/room/#SUMO:mozilla.org
* General SUMO IRC channel - https://www.mibbit.com/?server=irc.mozilla.org&channel=%23sumo
--- ---
Stay in touch Stay in touch
@ -37,6 +36,7 @@ Finally, if you want to follow all news related to SUMO, dont forget about ou
* Official blog - https://blog.mozilla.org/sumo/ * Official blog - https://blog.mozilla.org/sumo/
* Twitter account - https://twitter.com/sumo_mozilla * Twitter account - https://twitter.com/sumo_mozilla
* Weekly meetings - https://wiki.mozilla.org/Support/Weekly_Meetings * Weekly meetings - https://wiki.mozilla.org/Support/Weekly_Meetings
* Join contributor meetings - https://{{ host }}/kb/how-participate-sumo-contributor-meetings
--- ---
Keep rocking Keep rocking

Просмотреть файл

@ -49,7 +49,7 @@ class WelcomeEmailsTests(TestCase):
# Check that one link used the right host. # Check that one link used the right host.
assert "https://testserver/forums/contributors" in mail.outbox[0].body assert "https://testserver/forums/contributors" in mail.outbox[0].body
assert ( assert (
"The community forum is at https://testserver/forums/contributors ." "The community forum is at https://testserver/forums/contributors."
in mail.outbox[0].body in mail.outbox[0].body
) )
# Assumption: links will be done consistently, and so this is enough testing. # Assumption: links will be done consistently, and so this is enough testing.

Просмотреть файл

@ -18,7 +18,7 @@
<td> <td>
{{ number(row.num_visits) }} {{ number(row.num_visits) }}
{% if row.visits_ratio %} {% if row.visits_ratio %}
<div class="absolute-graph" data-absolute-graph={{ row.visits_ratio * 100 }}></div> <div class="absolute-graph" data-absolute-graph="{{ row.visits_ratio * 100 }}%"></div>
{% endif %} {% endif %}
</td> </td>
<td class="status {% if not row.latest_revision %}needs-review{% endif %}"> <td class="status {% if not row.latest_revision %}needs-review{% endif %}">

Просмотреть файл

@ -20,7 +20,7 @@
{{ number(row.visits) }} {{ number(row.visits) }}
</td> </td>
<td> <td>
<div class="absolute-graph" data-absolute-graph="{{ row.percent }}"></div> <div class="absolute-graph" data-absolute-graph="{{ row.percent }}%"></div>
</td> </td>
<td class="status"> <td class="status">
{% if row.updated is defined %} {% if row.updated is defined %}
@ -28,14 +28,14 @@
{% elif row.custom %} {% elif row.custom %}
<div class="custom">{{ row.column4_data }}</div> <div class="custom">{{ row.column4_data }}</div>
{% else %} {% else %}
{% if row.status %} {% if row.status and row.status_class != "ok" %}
<a href="{{ row.status_url }}"> <a href="{{ row.status_url }}">
{{ row.status }} {{ row.status }}
{% if row.status_class %}<span class="{{ row.status_class }}"></span>{% endif %} {% if row.status_class %}<span class="{{ row.status_class }}"></span>{% endif %}
</a> </a>
{% else %} {% else %}
{# For having a bullet char without a link #} {# For having a bullet char without a link #}
<span class="{{ row.status_class }}"></span> <span class="{{ row.status_class }}">{{ row.status }}</span>
{% endif %} {% endif %}
{% endif %} {% endif %}
</td> </td>

Просмотреть файл

@ -41,16 +41,15 @@
{{ row.title }} {{ row.title }}
<div>{{ row.description }}</div> <div>{{ row.description }}</div>
</td> </td>
<td colspan="2"> <td>
{% trans numerator=number(row.numerator), denominator=number(row.denominator) %} {% trans numerator=number(row.numerator), denominator=number(row.denominator) %}
{{ numerator }} of {{ denominator }} {{ numerator }}
<small>of {{ denominator }}</small>
{% endtrans %} {% endtrans %}
</td> </td>
</tr> <td>
<tr> {{ row.percent }}%
<td colspan="3">
<div class="percent-graph"> <div class="percent-graph">
<span>{{ row.percent }}%</span>
<div style="width: {{ row.percent }}%"{% if should_color %} class="{{ 'best' if row.percent == 100 else ('better' if row.percent >= 20 else 'bad') }}"{% endif %}></div> <div style="width: {{ row.percent }}%"{% if should_color %} class="{{ 'best' if row.percent == 100 else ('better' if row.percent >= 20 else 'bad') }}"{% endif %}></div>
</div> </div>
</td> </td>

Просмотреть файл

@ -74,7 +74,7 @@ most_visited_translation_from = (
REVIEW_STATUSES = { REVIEW_STATUSES = {
1: (_lazy("Review Needed"), "wiki.document_revisions", "review"), 1: (_lazy("Review Needed"), "wiki.document_revisions", "review"),
0: ("", "", "ok"), 0: ("Updated", "", "ok"),
} }
SIGNIFICANCE_STATUSES = { SIGNIFICANCE_STATUSES = {
MEDIUM_SIGNIFICANCE: (_lazy("Update Needed"), "wiki.edit_document", "update"), MEDIUM_SIGNIFICANCE: (_lazy("Update Needed"), "wiki.edit_document", "update"),
@ -710,7 +710,7 @@ class CategoryReadout(Readout):
def _format_row(self, row): def _format_row(self, row):
(slug, title, visits, needs_changes, needs_review, unready_for_l10n) = row (slug, title, visits, needs_changes, needs_review, unready_for_l10n) = row
if needs_review: if needs_review:
status, view_name, dummy = REVIEW_STATUSES[needs_review] status, view_name, _ = REVIEW_STATUSES[needs_review]
elif needs_changes: elif needs_changes:
status = _lazy("Changes Needed") status = _lazy("Changes Needed")
view_name = "wiki.document_revisions" view_name = "wiki.document_revisions"
@ -718,7 +718,7 @@ class CategoryReadout(Readout):
status = _lazy("Changes Not Ready For Localization") status = _lazy("Changes Not Ready For Localization")
view_name = "wiki.document_revisions" view_name = "wiki.document_revisions"
else: else:
status, view_name, dummy = REVIEW_STATUSES[0] status, view_name, _ = REVIEW_STATUSES[0]
return dict( return dict(
title=title, title=title,

Просмотреть файл

@ -395,7 +395,7 @@ class TemplateTests(ReadoutTestCase):
self.assertEqual(1, len(self.rows(locale=locale, product=p))) self.assertEqual(1, len(self.rows(locale=locale, product=p)))
self.assertEqual(t.title, self.row(locale=locale, product=p)["title"]) self.assertEqual(t.title, self.row(locale=locale, product=p)["title"])
self.assertEqual("", self.row(locale=locale, product=p)["status"]) self.assertEqual("Updated", self.row(locale=locale, product=p)["status"])
def test_needs_changes(self): def test_needs_changes(self):
"""Test status for article that needs changes""" """Test status for article that needs changes"""
@ -450,7 +450,7 @@ class HowToContributeTests(ReadoutTestCase):
self.assertEqual(1, len(self.rows(locale=locale, product=p))) self.assertEqual(1, len(self.rows(locale=locale, product=p)))
self.assertEqual(d2.title, self.row(locale=locale, product=p)["title"]) self.assertEqual(d2.title, self.row(locale=locale, product=p)["title"])
self.assertEqual("", self.row(locale=locale, product=p)["status"]) self.assertEqual("Updated", self.row(locale=locale, product=p)["status"])
class AdministrationTests(ReadoutTestCase): class AdministrationTests(ReadoutTestCase):
@ -469,7 +469,7 @@ class AdministrationTests(ReadoutTestCase):
self.assertEqual(1, len(self.rows(locale=locale, product=p))) self.assertEqual(1, len(self.rows(locale=locale, product=p)))
self.assertEqual(d2.title, self.row(locale=locale, product=p)["title"]) self.assertEqual(d2.title, self.row(locale=locale, product=p)["title"])
self.assertEqual("", self.row(locale=locale, product=p)["status"]) self.assertEqual("Updated", self.row(locale=locale, product=p)["status"])
class MostVisitedTranslationsTests(ReadoutTestCase): class MostVisitedTranslationsTests(ReadoutTestCase):
@ -533,7 +533,7 @@ class MostVisitedTranslationsTests(ReadoutTestCase):
translation = TranslatedRevisionFactory(document__locale="de", is_approved=True) translation = TranslatedRevisionFactory(document__locale="de", is_approved=True)
row = self.row() row = self.row()
self.assertEqual(row["title"], translation.document.title) self.assertEqual(row["title"], translation.document.title)
self.assertEqual(str(row["status"]), "") self.assertEqual(str(row["status"]), "Updated")
self.assertEqual(row["status_class"], "ok") self.assertEqual(row["status_class"], "ok")
def test_one_rejected_revision(self): def test_one_rejected_revision(self):

Просмотреть файл

@ -1,13 +1,185 @@
/* L10n and Contributor Dashboards */
@use '../config' as c; @use '../config' as c;
@use 'protocol/css/includes/lib' as p; @use 'protocol/css/includes/lib' as p;
.absolute-graph { .dashboards table {
border-collapse: collapse;
text-align: left;
}
.dashboards tr:nth-child(even) {
background-color: var(--color-shade-bg);
}
.dashboards td,
.dashboards th {
padding: p.$spacing-sm p.$spacing-xs;
}
.dashboards td {
vertical-align: middle;
}
.dashboards table.overview small {
font-size: 80%;
color: #999;
white-space: nowrap;
}
.dashboards div.percent-graph {
background-color: #f3f3f3;
height: 10px;
}
.dashboards div.percent-graph div {
background-color: #dfdfdf;
height: 10px;
}
.dashboards div.absolute-graph {
display: block; display: block;
background-color: p.$color-green-60; background-color: p.$color-green-60;
height: 1em; height: 1em;
} }
.dashboards #overview-options,
.dashboards .table-footer {
margin: 0;
padding: p.$spacing-md 0;
}
.dashboards #overview-options label {
font-weight: bold;
}
.dashboards .table-footer {
font-size: 90%;
}
.dashboards table.documents .users {
font-size: 90%;
color: #999;
}
.dashboards table.overview td:nth-child(2) {
text-align: right;
}
.dashboards table.overview td:nth-child(4) {
width: 50%;
}
.dashboards table.documents td:nth-child(1) {
width: p.$content-xs;
}
.dashboards table.documents td:nth-child(2) {
padding-right: p.$spacing-xs;
text-align: right;
width: p.$layout-xl;
}
.dashboards table.documents td:nth-child(3),
.dashboards table.documents th:nth-child(3) {
padding-left: 0;
width: p.$layout-2xl;
}
.dashboards table.documents td:nth-child(4),
.dashboards table.documents th:nth-child(4) {
text-align: center;
vertical-align: middle;
width: p.$content-xs;
}
.dashboards table.busy {
opacity: 0.5;
}
.dashboards ul.readout-modes {
padding: p.$spacing-xs 0px;
}
.dashboards ul.readout-modes li {
display: inline-block;
background: var(--color-marketing-gray-02);
border-radius: p.$border-radius-sm;
cursor: pointer;
list-style: none;
margin: p.$spacing-sm p.$spacing-xs;
padding: p.$spacing-xs;
width: calc(25% - p.$spacing-md);
text-align: center;
}
.dashboards ul.readout-modes li:hover {
background: var(--color-marketing-gray-01);
}
.dashboards ul.readout-modes li.active {
background: var(--color-click);
}
.dashboards ul.readout-modes li.active:hover {
background: #4978bc;
}
.dashboards ul.readout-modes li.active a {
color: #fff;
}
.dashboards-detail h1 {
display: inline-block;
}
.dashboards summary.with-mode-selectors {
display: inline;
}
.dashboards details table {
display: block; /* Makes collapse animation work */
}
/* Status badges */
.dashboards td.status:has(.review), .dashboards td.status:has(.review),
.dashboards td.status:has(.out-of-date) { .dashboards td.status:has(.out-of-date){
background-color: var(--color-warning); background-color: var(--color-warning);
}
.dashboards td.status {
.update:after {
content: '\25C6';
color: #f8e687;
}
.out-of-date:after {
content: '\25C6';
color: orange;
}
.untranslated:after {
content: '\25B2';
color: red;
}
.ok:after {
content: '\25CF';
color: #add575;
margin-left: p.$spacing-xs;
}
}
.dashboards td a {
text-decoration:none;
&:hover {
text-decoration:underline;
}
}
.dashboards td a:has(span.ok) {
&:hover {
text-decoration:none;
cursor: initial;
}
&:visited {
color: inherit;
}
} }

Просмотреть файл

@ -27,11 +27,11 @@
<li {{ active|class_selected('edit') }}> <li {{ active|class_selected('edit') }}>
<a href="{{ url('wiki.edit_document', document.slug) }}">{{ _('Edit Article') }}</a> <a href="{{ url('wiki.edit_document', document.slug) }}">{{ _('Edit Article') }}</a>
</li> </li>
{% if document.allows(user, 'edit') %} {% endif %}
<li {{ active|class_selected('edit_metadata') }}> {% if document and document.allows(user, 'edit') and document.allows(user, 'create_revision') %}
<a href="{{ url('wiki.edit_document_metadata', document.slug) }}">{{ _('Edit Article Metadata') }}</a> <li {{ active|class_selected('edit_metadata') }}>
</li> <a href="{{ url('wiki.edit_document_metadata', document.slug) }}">{{ _('Edit Article Metadata') }}</a>
{% endif %} </li>
{% endif %} {% endif %}
{% if document and not document.is_archived and document.is_localizable %} {% if document and not document.is_archived and document.is_localizable %}
<li {{ active|class_selected('localize') }}> <li {{ active|class_selected('localize') }}>

8
poetry.lock сгенерированный
Просмотреть файл

@ -851,13 +851,13 @@ Django = ">=3.2"
[[package]] [[package]]
name = "django" name = "django"
version = "4.1.12" version = "4.1.13"
description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design."
optional = false optional = false
python-versions = ">=3.8" python-versions = ">=3.8"
files = [ files = [
{file = "Django-4.1.12-py3-none-any.whl", hash = "sha256:e92ce8f240a856615e96d8b955707f824c29ea0f51dff4f76777caa5e113ec72"}, {file = "Django-4.1.13-py3-none-any.whl", hash = "sha256:04ab3f6f46d084a0bba5a2c9a93a3a2eb3fe81589512367a75f79ee8acf790ce"},
{file = "Django-4.1.12.tar.gz", hash = "sha256:d02483ad49872238fa59875c1269293fe4f17ecee13c121893607cc0b284696b"}, {file = "Django-4.1.13.tar.gz", hash = "sha256:94a3f471e833c8f124ee7a2de11e92f633991d975e3fa5bdd91e8abd66426318"},
] ]
[package.dependencies] [package.dependencies]
@ -4506,4 +4506,4 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "^3.11" python-versions = "^3.11"
content-hash = "6e78d397c9b65561674e927b2ee6b92753741d0cfa05cc943c3214544847f239" content-hash = "9704ab7a7599dee4b0f9a90ea5250680d4c2475f15c0e6a73f4e836be66faa45"

Просмотреть файл

@ -16,7 +16,7 @@ license = "BSD 3-Clause"
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.11" python = "^3.11"
APScheduler = "^3.10.0" APScheduler = "^3.10.0"
Django = "4.1.12" Django = "4.1.13"
babis = "^0.2.4" babis = "^0.2.4"
Pillow = "^9.4.0" Pillow = "^9.4.0"
bleach = {version = "^6.0.0", extras = ["css"]} bleach = {version = "^6.0.0", extras = ["css"]}