зеркало из https://github.com/mozilla/kitsune.git
Merge branch 'main' into device-migration-3.0-sync
This commit is contained in:
Коммит
7923d0d368
|
@ -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 haven’t met our community yet
|
on the forums so if you haven’t 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, that’s also ok :). You can also
|
If you want to stay low-profile, that’s 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, don’t
|
Finally, if you want to follow all news related to SUMO, don’t
|
||||||
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 haven’t met our community yet please take a minute to introduce
|
so if you haven’t met our community yet, please take a minute to introduce
|
||||||
yourself. If you want to stay low-profile, that’s also ok :). You can also find
|
yourself. If you want to stay low-profile, that’s 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, don’t 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, don’t forget about
|
Finally, if you want to follow all news related to SUMO, don’t 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, don’t 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') }}>
|
||||||
|
|
|
@ -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"]}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче