swh.web 0.14.2__py3-none-any.whl → 0.15.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. swh/web/alter/forms.py +16 -16
  2. swh/web/alter/templates/admin_alteration.html +5 -5
  3. swh/web/alter/templates/alteration_details.html +2 -2
  4. swh/web/alter/templates/assistant_category.html +21 -19
  5. swh/web/alter/templates/assistant_email.html +3 -4
  6. swh/web/alter/templates/assistant_origins.html +1 -2
  7. swh/web/alter/templates/assistant_reasons.html +1 -2
  8. swh/web/alter/templates/assistant_summary.html +3 -4
  9. swh/web/alter/templates/content_policies.html +8 -15
  10. swh/web/alter/templates/includes/swh_legal.html +1 -1
  11. swh/web/alter/tests/test_views.py +2 -2
  12. swh/web/alter/urls.py +1 -1
  13. swh/web/alter/views.py +2 -2
  14. swh/web/browse/assets/browse/browse.css +10 -0
  15. swh/web/browse/assets/browse/sidetabs.js +22 -2
  16. swh/web/browse/templates/includes/sidetabs.html +20 -16
  17. swh/web/browse/templates/includes/snapshot-context.html +3 -1
  18. swh/web/save_code_now/templates/includes/take-new-snapshot.html +1 -1
  19. swh/web/static/css/browse.0a250d3b07ce628588a5.css +2 -0
  20. swh/web/static/css/browse.0a250d3b07ce628588a5.css.map +1 -0
  21. swh/web/static/js/add_forge_now.f8fa8235350a7875b4b2.js.map +1 -1
  22. swh/web/static/js/archive_coverage.71f6961fbdc0d76c313b.js +3 -0
  23. swh/web/static/js/{archive_coverage.b37e2158e800bc69180b.js.LICENSE.txt → archive_coverage.71f6961fbdc0d76c313b.js.LICENSE.txt} +1 -1
  24. swh/web/static/js/archive_coverage.71f6961fbdc0d76c313b.js.map +1 -0
  25. swh/web/static/js/auth.971392ebe3f22c222189.js.map +1 -1
  26. swh/web/static/js/{browse.b150f8992236375f2e9b.js → browse.d5014e5cae44a2cd3e6e.js} +3 -3
  27. swh/web/static/js/browse.d5014e5cae44a2cd3e6e.js.map +1 -0
  28. swh/web/static/js/deposit.060ba94288f399dfe89e.js.map +1 -1
  29. swh/web/static/js/guided_tour.3a7a41181c43663f866b.js.map +1 -1
  30. swh/web/static/js/highlightjs.19cb5fa8879fdc8357d7.js.map +1 -1
  31. swh/web/static/js/mailmap.5dc62b52b8eb18e2e8b0.js.map +1 -1
  32. swh/web/static/js/origin_visits.679992a2a951f67a08bc.js.map +1 -1
  33. swh/web/static/js/pdf.worker.min.js +1 -1
  34. swh/web/static/js/pdfjs.97ecbde9d93314dba75a.js +3 -0
  35. swh/web/static/js/pdfjs.97ecbde9d93314dba75a.js.map +1 -0
  36. swh/web/static/js/revision.c5f4750ef7caee355fd9.js.map +1 -1
  37. swh/web/static/js/save_code_now.3db9c75765eb44fe774a.js.map +1 -1
  38. swh/web/static/js/showdown.8be01722fe56f5a7c2db.js.map +1 -1
  39. swh/web/static/js/vault.8c6e8e445d128eb30488.js.map +1 -1
  40. swh/web/static/js/{vendors.076b42bbe0326fc632ae.js → vendors.532425b092b95d43a1d6.js} +3 -3
  41. swh/web/static/js/vendors.532425b092b95d43a1d6.js.map +1 -0
  42. swh/web/static/js/webapp.5427bd8b32cec7de0951.js +3 -0
  43. swh/web/static/js/{webapp.ec7025df24c9f358f1cc.js.LICENSE.txt → webapp.5427bd8b32cec7de0951.js.LICENSE.txt} +1 -1
  44. swh/web/static/js/webapp.5427bd8b32cec7de0951.js.map +1 -0
  45. swh/web/static/jssources/@iframe-resizer/child/index.umd.js +2 -2
  46. swh/web/static/jssources/@iframe-resizer/parent/index.umd.js +2 -2
  47. swh/web/static/jssources/core-js/internals/array-to-reversed.js +2 -2
  48. swh/web/static/jssources/core-js/internals/array-with.js +2 -2
  49. swh/web/static/jssources/core-js/internals/async-iterator-iteration.js +6 -1
  50. swh/web/static/jssources/core-js/internals/flatten-into-array.js +1 -1
  51. swh/web/static/jssources/core-js/internals/get-iterator-direct.js +1 -1
  52. swh/web/static/jssources/core-js/internals/install-error-cause.js +1 -1
  53. swh/web/static/jssources/core-js/internals/iterator-create-proxy.js +1 -1
  54. swh/web/static/jssources/core-js/internals/set-difference.js +1 -1
  55. swh/web/static/jssources/core-js/internals/set-intersection.js +1 -1
  56. swh/web/static/jssources/core-js/internals/set-is-disjoint-from.js +1 -1
  57. swh/web/static/jssources/core-js/internals/set-is-subset-of.js +1 -1
  58. swh/web/static/jssources/core-js/internals/set-is-superset-of.js +1 -1
  59. swh/web/static/jssources/core-js/internals/set-method-get-keys-before-cloning-detection.js +1 -1
  60. swh/web/static/jssources/core-js/internals/set-symmetric-difference.js +1 -1
  61. swh/web/static/jssources/core-js/internals/set-union.js +1 -1
  62. swh/web/static/jssources/core-js/internals/shared-store.js +2 -2
  63. swh/web/static/jssources/core-js/internals/string-pad.js +0 -1
  64. swh/web/static/jssources/core-js/modules/es.array-buffer.transfer-to-fixed-length.js +1 -1
  65. swh/web/static/jssources/core-js/modules/es.array-buffer.transfer.js +1 -1
  66. swh/web/static/jssources/core-js/modules/es.error.is-error.js +1 -1
  67. swh/web/static/jssources/core-js/modules/es.symbol.constructor.js +1 -1
  68. swh/web/static/jssources/jslicenses.json +1 -1
  69. swh/web/static/jssources/pdfjs-dist/build/pdf.worker.mjs +299 -13
  70. swh/web/static/jssources/pdfjs-dist/legacy/build/pdf.mjs +492 -113
  71. swh/web/static/jssources/swh/web/browse/assets/browse/sidetabs.js +22 -2
  72. swh/web/static/jssources/swh/web/webapp/assets/webapp/webapp-utils.js +10 -0
  73. swh/web/static/webpack-stats.json +73 -73
  74. swh/web/utils/archive.py +12 -0
  75. swh/web/utils/tests/test_archive.py +32 -15
  76. swh/web/vault/templates/includes/vault-common.html +1 -1
  77. swh/web/vault/templates/includes/vault-create-tasks.html +5 -5
  78. swh/web/webapp/assets/webapp/webapp-utils.js +10 -0
  79. swh/web/webapp/templates/includes/footer.html +1 -1
  80. swh/web/webapp/templates/includes/global-modals.html +3 -3
  81. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/METADATA +1 -1
  82. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/RECORD +89 -89
  83. swh/web/static/css/browse.5775e0a313f4ccb8aef5.css +0 -2
  84. swh/web/static/css/browse.5775e0a313f4ccb8aef5.css.map +0 -1
  85. swh/web/static/js/archive_coverage.b37e2158e800bc69180b.js +0 -3
  86. swh/web/static/js/archive_coverage.b37e2158e800bc69180b.js.map +0 -1
  87. swh/web/static/js/browse.b150f8992236375f2e9b.js.map +0 -1
  88. swh/web/static/js/pdfjs.ca88359f90430972e38c.js +0 -3
  89. swh/web/static/js/pdfjs.ca88359f90430972e38c.js.map +0 -1
  90. swh/web/static/js/vendors.076b42bbe0326fc632ae.js.map +0 -1
  91. swh/web/static/js/webapp.ec7025df24c9f358f1cc.js +0 -3
  92. swh/web/static/js/webapp.ec7025df24c9f358f1cc.js.map +0 -1
  93. /swh/web/static/js/{browse.b150f8992236375f2e9b.js.LICENSE.txt → browse.d5014e5cae44a2cd3e6e.js.LICENSE.txt} +0 -0
  94. /swh/web/static/js/{pdfjs.ca88359f90430972e38c.js.LICENSE.txt → pdfjs.97ecbde9d93314dba75a.js.LICENSE.txt} +0 -0
  95. /swh/web/static/js/{vendors.076b42bbe0326fc632ae.js.LICENSE.txt → vendors.532425b092b95d43a1d6.js.LICENSE.txt} +0 -0
  96. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/WHEEL +0 -0
  97. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/licenses/AUTHORS +0 -0
  98. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/licenses/LICENSE +0 -0
  99. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/top_level.txt +0 -0
swh/web/alter/forms.py CHANGED
@@ -114,12 +114,12 @@ class OriginSelectForm(forms.Form):
114
114
  INITIALS_REASONS = {
115
115
  "copyright": {
116
116
  "reasons": _(
117
- "The code available in the repos in under the xxx license which does "
117
+ "The code available in the repos is under the xxx license which does "
118
118
  "not allow..."
119
119
  ),
120
120
  "expected_outcome": _(
121
- "Please remove archived content for repos ... and block them from being "
122
- "archived again"
121
+ "Example: Please remove archived content for repos ... and prevent future "
122
+ "archiving."
123
123
  ),
124
124
  },
125
125
  "pii": {
@@ -128,8 +128,8 @@ INITIALS_REASONS = {
128
128
  "shows the old content and I need you to delete it."
129
129
  ),
130
130
  "expected_outcome": _(
131
- "Please remove archived content for repos ... and re-archive the current "
132
- "version."
131
+ "Example: Please remove archived content for repos ... and re-archive the "
132
+ "current version."
133
133
  ),
134
134
  },
135
135
  "legal": {
@@ -138,9 +138,9 @@ INITIALS_REASONS = {
138
138
  "kind of content]"
139
139
  ),
140
140
  "expected_outcome": _(
141
- "I've submitted a takedown request to the legal authorities but meanwhile"
142
- "please mask the origins so the content is not publicly available on SWH "
143
- "anymore"
141
+ "Example: I've submitted a takedown request to the legal authorities but "
142
+ "meanwhile please mask the origins so the content is not publicly "
143
+ "available on SWH anymore"
144
144
  ),
145
145
  },
146
146
  }
@@ -150,18 +150,18 @@ class ReasonsForm(forms.Form):
150
150
  """Alteration request's reasons and expected outcome."""
151
151
 
152
152
  reasons = forms.CharField(
153
- label=_("Reasons why the archive content should be altered"),
153
+ label=_("Reasons why Archive content should be changed"),
154
154
  help_text=_(
155
- "Please describe as clearly as possible the reasons for your request"
155
+ "Please describe as clearly as possible the reasons for your request."
156
156
  ),
157
157
  widget=forms.Textarea,
158
158
  required=True,
159
159
  )
160
160
  expected_outcome = forms.CharField(
161
- label=_("Expected outcome of your request"),
161
+ label=_("What result are you looking for?"),
162
162
  help_text=_(
163
- "You can specify your expectations regarding the archive alteration "
164
- "mechanisms described in the content policies page."
163
+ "You can specify your expectations regarding the Archive change "
164
+ "mechanisms outlined in the content policy page."
165
165
  ),
166
166
  widget=forms.Textarea,
167
167
  required=True,
@@ -173,9 +173,9 @@ class ConfirmationForm(forms.Form):
173
173
 
174
174
  confirm = forms.BooleanField(
175
175
  label=_(
176
- "I hereby confirm that the information provided in this summary "
177
- "is accurate, correct and complete; I am not making this request "
178
- "with any unethical or fraudulent intent"
176
+ "I confirm that the information provided in this summary is accurate, "
177
+ "correct, and complete. I attest that this request is made without "
178
+ "unethical or fraudulent intent."
179
179
  ),
180
180
  required=True,
181
181
  )
@@ -56,7 +56,7 @@
56
56
  {% comment %}Origin edit modals{% endcomment %}
57
57
 
58
58
  {% for origin_form in origin_forms %}
59
- <div class="modal fade"
59
+ <div class="modal fade d-none"
60
60
  id="origin-{{ origin_form.instance.pk }}"
61
61
  tabindex="-1"
62
62
  aria-labelledby="origin-{{ origin_form.instance.pk }}-label"
@@ -97,7 +97,7 @@
97
97
  {% endfor %}
98
98
  {% comment %}Alteration edit modal{% endcomment %}
99
99
 
100
- <div class="modal fade"
100
+ <div class="modal fade d-none"
101
101
  id="alteration-modal"
102
102
  tabindex="-1"
103
103
  aria-labelledby="alteration-modal-label"
@@ -136,7 +136,7 @@
136
136
  {% blocktranslate asvar message_info trimmed %}
137
137
  A message will send an email notification to the recipient. Requesters will only get a link to check the request page, other roles will get the full content in the message.
138
138
  {% endblocktranslate %}
139
- <div class="modal fade"
139
+ <div class="modal fade d-none"
140
140
  id="message-modal"
141
141
  tabindex="-1"
142
142
  aria-labelledby="message-modal-label"
@@ -176,7 +176,7 @@
176
176
  </div>
177
177
  {% comment %}Create origin modal {% endcomment %}
178
178
 
179
- <div class="modal fade"
179
+ <div class="modal fade d-none"
180
180
  id="origin-create"
181
181
  tabindex="-1"
182
182
  aria-labelledby="origin-create-label"
@@ -217,7 +217,7 @@
217
217
  Event modification should be used sparingly: to fix a mistake, but not to rewrite the history of request processing. Note that this does not send another notification.
218
218
  {% endblocktranslate %}
219
219
  {% for event_form in event_forms %}
220
- <div class="modal fade"
220
+ <div class="modal fade d-none"
221
221
  id="event-{{ event_form.instance.pk }}-modal"
222
222
  tabindex="-1"
223
223
  aria-labelledby="event-{{ event_form.instance.pk }}-label"
@@ -90,7 +90,7 @@
90
90
  {% comment %}Alteration edit modal{% endcomment %}
91
91
 
92
92
  {% if not alteration.is_read_only %}
93
- <div class="modal fade"
93
+ <div class="modal fade d-none"
94
94
  id="alteration-modal"
95
95
  tabindex="-1"
96
96
  aria-labelledby="alteration-modal-label"
@@ -127,7 +127,7 @@
127
127
  {% endif %}
128
128
  {% comment %}Send a message modal{% endcomment %}
129
129
 
130
- <div class="modal fade"
130
+ <div class="modal fade d-none"
131
131
  id="message-modal"
132
132
  tabindex="-1"
133
133
  aria-labelledby="message-modal-label"
@@ -8,11 +8,11 @@
8
8
  {% endcomment %}
9
9
 
10
10
  {% block page_title %}
11
- {% translate "Choice of archive alteration request category" %}
11
+ {% translate "Choose request category" %}
12
12
  {% endblock page_title %}
13
13
 
14
14
  {% block navbar-content %}
15
- <h4>{% translate "Choice of archive alteration request category" %}</h4>
15
+ <h4>{% translate "Choose request category" %}</h4>
16
16
  {% endblock navbar-content %}
17
17
 
18
18
  {% block content %}
@@ -23,9 +23,7 @@
23
23
  {% include "includes/steps.html" %}
24
24
  <p>
25
25
  {% blocktranslate trimmed %}
26
- Please specify the reason for your request to alter the archive. This will help
27
- determine the necessary steps and the information we may need to collect from you
28
- to process your request.
26
+ Please tell us why you're requesting a change to the Archive. We'll use this to determine next steps and any information we may need.
29
27
  {% endblocktranslate %}
30
28
  </p>
31
29
  <form method="POST" class="accordion mt-3" id="categoryAccordion">
@@ -47,11 +45,10 @@
47
45
  <div class="accordion-body">
48
46
  <p>
49
47
  {% blocktranslate trimmed %}
50
- If you believe content in the archive may be subject to copyright
51
- infringement, you can submit a takedown request.
48
+ To report potential copyright infringement in the Archive, please submit a takedown request.
52
49
  {% endblocktranslate %}
53
50
  </p>
54
- {% bootstrap_button _("Copyright archive alteration request") button_type="submit" button_class="btn-primary" name="category" value="copyright" %}
51
+ {% bootstrap_button _("Submit copyright change request") button_type="submit" button_class="btn-primary" name="category" value="copyright" %}
55
52
  </div>
56
53
  </div>
57
54
  </div>
@@ -63,22 +60,27 @@
63
60
  data-bs-target="#categoryPii"
64
61
  aria-expanded="false"
65
62
  aria-controls="categoryPii">
66
- {% translate "Personally Identifiable Information (PII)" %}
63
+ {% translate "Personally identifiable information (PII)" %}
67
64
  </button>
68
65
  </h5>
69
66
  <div id="categoryPii"
70
67
  class="accordion-collapse collapse"
71
68
  data-bs-parent="#categoryAccordion">
72
69
  <div class="accordion-body">
73
- <p>
74
- {% blocktranslate trimmed %}
75
- Personal data was versioned by mistake in a repository, you changed your
76
- name or any other GPDR-related issues; you made a change to your
77
- repository and you want to apply it to the archived version: you wish to
78
- request a modification of the archive.
79
- {% endblocktranslate %}
80
- </p>
81
- {% bootstrap_button _("PII archive alteration request") button_type="submit" button_class="btn-primary" name="category" value="pii" %}
70
+ <p>{% translate "You can request a modification to the archive if:" %}</p>
71
+ <ul>
72
+ <li>
73
+ {% blocktranslate trimmed %}
74
+ Personal data was mistakenly versioned in a repository, or you have GDPR-related issues (like a name change).
75
+ {% endblocktranslate %}
76
+ </li>
77
+ <li>
78
+ {% blocktranslate trimmed %}
79
+ You've made a change to your repository and want to apply it to the archived version.
80
+ {% endblocktranslate %}
81
+ </li>
82
+ </ul>
83
+ {% bootstrap_button _("Request personal data change") button_type="submit" button_class="btn-primary" name="category" value="pii" %}
82
84
  </div>
83
85
  </div>
84
86
  </div>
@@ -89,7 +91,7 @@
89
91
  data-bs-toggle="collapse"
90
92
  data-bs-target="#categoryLegal"
91
93
  aria-expanded="false"
92
- aria-controls="categoryLegal">{% translate "Other Legal Matters" %}</button>
94
+ aria-controls="categoryLegal">{% translate "Other legal matters" %}</button>
93
95
  </h5>
94
96
  <div id="categoryLegal"
95
97
  class="accordion-collapse collapse"
@@ -10,11 +10,11 @@
10
10
  {% load alter_extras %}
11
11
 
12
12
  {% block page_title %}
13
- {% translate "Alteration request email verification form" %}
13
+ {% translate "Archive change request: email verification" %}
14
14
  {% endblock page_title %}
15
15
 
16
16
  {% block navbar-content %}
17
- <h4>{% translate "Alteration request email verification form" %}</h4>
17
+ <h4>{% translate "Archive change request: email verification" %}</h4>
18
18
  {% endblock navbar-content %}
19
19
 
20
20
  {% block content %}
@@ -26,8 +26,7 @@
26
26
  {% include "includes/steps.html" %}
27
27
  <p>
28
28
  {% blocktranslate trimmed %}
29
- Before accessing the alteration request assistant we need to make sure we will be
30
- able to contact you through your email address.
29
+ Verify your email to access the change request assistant.
31
30
  {% endblocktranslate %}
32
31
  </p>
33
32
  <form method="POST" class="form">
@@ -22,8 +22,7 @@
22
22
  {% include "includes/steps.html" %}
23
23
  <p>
24
24
  {% blocktranslate trimmed %}
25
- Use this search engine to find the repositories concerned by your request to
26
- alter the archive.
25
+ Use this search engine to find the repositories relevant to your Archive change request.
27
26
  {% endblocktranslate %}
28
27
  </p>
29
28
  <form method="GET" class="form mt-3" id="origins-search-form">
@@ -22,8 +22,7 @@
22
22
  {% endif %}
23
23
  {% include "includes/steps.html" %}
24
24
  {% blocktranslate trimmed %}
25
- Please describe the reasons that lead you to request an alteration of the archive.
26
- Be as precise as possible so that we can fully understand your request.
25
+ Please describe why you're requesting an Archive change. Be as precise as possible so we can fully understand and process your request.
27
26
  {% endblocktranslate %}
28
27
  <form method="post" class="form mt-3" id="reasons-form">
29
28
  {% csrf_token %}
@@ -8,11 +8,11 @@
8
8
  {% endcomment %}
9
9
 
10
10
  {% block page_title %}
11
- {% translate "Alteration request summary" %}
11
+ {% translate "Summary of your request" %}
12
12
  {% endblock page_title %}
13
13
 
14
14
  {% block navbar-content %}
15
- <h4>{% translate "Alteration request summary" %}</h4>
15
+ <h4>{% translate "Summary of your request" %}</h4>
16
16
  {% endblock navbar-content %}
17
17
 
18
18
  {% block content %}
@@ -23,8 +23,7 @@
23
23
  {% include "includes/steps.html" %}
24
24
  <p>
25
25
  {% blocktranslate trimmed %}
26
- Please take the time to review this summary and confirm your intent to send this
27
- request.
26
+ Please review this summary carefully and confirm you're ready to send this request.
28
27
  {% endblocktranslate %}
29
28
  </p>
30
29
  <form method="post" class="form mt-3" id="summary-form">
@@ -8,16 +8,16 @@
8
8
  {% endcomment %}
9
9
 
10
10
  {% block page_title %}
11
- {% translate "Archive Content Policies" %}
11
+ {% translate "Archive content policy" %}
12
12
  {% endblock page_title %}
13
13
 
14
14
  {% block navbar-content %}
15
- <h4>{% translate "Archive Content Policies" %}</h4>
15
+ <h4>{% translate "Archive content policy" %}</h4>
16
16
  {% endblock navbar-content %}
17
17
 
18
18
  {% block content %}
19
19
  {% blocktranslate asvar alter_msg trimmed %}
20
- Please read the entire archive content policy before requesting any alteration to the archive.
20
+ Please read the entire Archive content policy before asking for any changes to the Archive.
21
21
  {% endblocktranslate %}
22
22
  {% bootstrap_messages %}
23
23
  <div class="mt-3">
@@ -25,22 +25,15 @@
25
25
  <h4>{% translate "Our mission" %}</h4>
26
26
  {% blocktranslate with swhorg="https://www.softwareheritage.org" trimmed %}
27
27
  <p>
28
- <a href="{{ swhorg }}" target="_blank">Software Heritage</a>
28
+ <a href="{{ swhorg }}" target="_blank">Software Heritage</a>’s
29
29
  ambition is to <strong>collect</strong>, <strong>preserve</strong>, and
30
30
  <strong>share</strong> software:
31
31
  </p>
32
32
  <ul>
33
+ <li>We collect all publicly available software in source code form, without exception.</li>
34
+ <li>We preserve software because it's fragile and can easily disappear.</li>
33
35
  <li>
34
- we do not make distinctions and collect all software that is publicly
35
- available in source code form
36
- </li>
37
- <li>
38
- we preserve software because it is fragile and we are unfortunately
39
- starting to lose it
40
- </li>
41
- <li>
42
- we are building the largest archive of software source code ever assembled
43
- and making it accessible to everybody
36
+ We're building the largest Archive of software source code ever assembled, making it accessible to everyone.
44
37
  </li>
45
38
  </ul>
46
39
  <p>
@@ -53,7 +46,7 @@
53
46
  {% include "includes/swh_legal.html" %}
54
47
  {% endif %}
55
48
  <div class="my-3">
56
- <a class="btn btn-primary" href="{% url next_step %}" role="button">{% translate "Request an archive data alteration" %}</a>
49
+ <a class="btn btn-primary" href="{% url next_step %}" role="button">{% translate "Request an Archive change" %}</a>
57
50
  </div>
58
51
  </div>
59
52
  {% endblock content %}
@@ -62,6 +62,6 @@
62
62
  To mitigate these risks, we have implemented a rigorous process for reviewing and approving all requests for archive changes. This includes verifying the original licensing of the source code, confirming its online availability, and may involve reviewing personal information provided by the requester.
63
63
  </p>
64
64
  <p>
65
- We must therefore apply a strict process to handle requests for changes to the archive, by verifying the licenses used to publish the source code, the online availability of the repository and sometimes personal information of the requester to ensure that the request is indeed valid.
65
+ A strict process governs all Archive change requests; we verify licenses, repository availability, and, when necessary, the requester's personal information to confirm validity.
66
66
  </p>
67
67
  {% endblocktranslate %}
@@ -108,7 +108,7 @@ def model_to_dict(instance, fields=None, exclude=None):
108
108
  def test_content_policies_unverified_email(client):
109
109
  response = check_html_get_response(
110
110
  client,
111
- reverse("content-policies"),
111
+ reverse("content-policy"),
112
112
  status_code=200,
113
113
  template_used="content_policies.html",
114
114
  )
@@ -123,7 +123,7 @@ def test_content_policies_verified_email(client):
123
123
  session.save()
124
124
  response = check_html_get_response(
125
125
  client,
126
- reverse("content-policies"),
126
+ reverse("content-policy"),
127
127
  status_code=200,
128
128
  template_used="content_policies.html",
129
129
  )
swh/web/alter/urls.py CHANGED
@@ -25,7 +25,7 @@ from .views import (
25
25
  )
26
26
 
27
27
  urlpatterns = [
28
- path("content-policies/", content_policies, name="content-policies"),
28
+ path("content-policy/", content_policies, name="content-policy"),
29
29
  path("alteration/email/", assistant_email, name="alteration-email"),
30
30
  path(
31
31
  "alteration/email/verification/<str:value>/",
swh/web/alter/views.py CHANGED
@@ -144,8 +144,8 @@ def assistant_email_verification(request: HttpRequest, value: str) -> HttpRespon
144
144
  messages.success(
145
145
  request,
146
146
  _(
147
- "Thanks, your email address %(email)s has been verified, you now have "
148
- "access to the alteration request form."
147
+ "Thanks! Your email address %(email)s is verified, you can now "
148
+ "access the change request form."
149
149
  )
150
150
  % {"email": token.email},
151
151
  )
@@ -96,6 +96,16 @@
96
96
  color: black;
97
97
  }
98
98
 
99
+ #swh-identifiers .handle:hover {
100
+ background-color: #c30024 !important;
101
+ border: 1px solid #c30024 !important;
102
+ }
103
+
104
+ #swh-citations .handle:hover {
105
+ border: 1px solid #d25c1c !important;
106
+ background-color: #d25c1c !important;
107
+ }
108
+
99
109
  .swh-empty-snapshot {
100
110
  white-space: pre-line;
101
111
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (C) 2018-2024 The Software Heritage developers
2
+ * Copyright (C) 2018-2025 The Software Heritage developers
3
3
  * See the AUTHORS file at the top-level directory of this distribution
4
4
  * License: GNU Affero General Public License version 3, or any later version
5
5
  * See top-level LICENSE file for more information
@@ -92,7 +92,7 @@ function updateTabsSize() {
92
92
  const top = window.innerHeight >= 700 ? 250 : 35;
93
93
  $('.swh-side-tab').css('top', top + 'px');
94
94
  // move citations tab handle below the permalinks one
95
- $('#swh-citations .handle').css('top', '105px');
95
+ $('#swh-citations .handle').css('top', '128px');
96
96
 
97
97
  // backup current display states for tab contents
98
98
  const currentSWHIDsDisplay = $('#swh-identifiers-content').css('display');
@@ -244,6 +244,11 @@ export async function initSideTabs() {
244
244
  $('#swh-identifiers').data('opening', false);
245
245
  $('#swhids-handle').attr('aria-expanded', 'true');
246
246
  $('#swhids-handle').attr('aria-label', 'Collapse permalinks tab');
247
+ $('#swhids-handle').attr('title', 'Collapse permalinks tab');
248
+ $('#citations-handle').attr('aria-label', 'Display citations tab');
249
+ $('#citations-handle').attr('title', 'Display citations tab');
250
+ $('.tab-handle-arrow').removeClass('mdi-chevron-up');
251
+ $('.tab-handle-arrow').addClass('mdi-chevron-down');
247
252
  },
248
253
  onBeforeClose: function() {
249
254
  $('#swh-identifiers').data('closing', true);
@@ -257,6 +262,9 @@ export async function initSideTabs() {
257
262
  $('#swh-identifiers').data('closing', false);
258
263
  $('#swhids-handle').attr('aria-expanded', 'false');
259
264
  $('#swhids-handle').attr('aria-label', 'Expand permalinks tab');
265
+ $('#swhids-handle').attr('title', 'Expand permalinks tab');
266
+ $('.tab-handle-arrow').removeClass('mdi-chevron-down');
267
+ $('.tab-handle-arrow').addClass('mdi-chevron-up');
260
268
  $('#swhids-handle').css('padding-bottom', '0.1em');
261
269
  setTimeout(() => {
262
270
  // ensure elements in closed SWHIDs tab are not keyboard focusable
@@ -275,6 +283,10 @@ export async function initSideTabs() {
275
283
  // display SWHIDs tab content if not visible
276
284
  toggleTabContentDisplay('#swh-identifiers', true);
277
285
  toggleTabContentDisplay('#swh-citations', false);
286
+ $('#citations-handle').attr('aria-label', 'Display citations tab');
287
+ $('#citations-handle').attr('title', 'Display citations tab');
288
+ $('#swhids-handle').attr('aria-label', 'Collapse permalinks tab');
289
+ $('#swhids-handle').attr('title', 'Collapse permalinks tab');
278
290
  } else {
279
291
  $('#swh-identifiers').trigger('close');
280
292
  }
@@ -322,6 +334,9 @@ export async function initSideTabs() {
322
334
  $('#swh-citations').data('opening', false);
323
335
  $('#citations-handle').attr('aria-expanded', 'true');
324
336
  $('#citations-handle').attr('aria-label', 'Collapse citations tab');
337
+ $('#citations-handle').attr('title', 'Collapse citations tab');
338
+ $('#swhids-handle').attr('aria-label', 'Display permalinks tab');
339
+ $('#swhids-handle').attr('title', 'Display permalinks tab');
325
340
  },
326
341
  onBeforeClose: function() {
327
342
  $('#swh-citations').data('closing', true);
@@ -335,6 +350,7 @@ export async function initSideTabs() {
335
350
  $('#swh-citations').data('closing', false);
336
351
  $('#citations-handle').attr('aria-expanded', 'false');
337
352
  $('#citations-handle').attr('aria-label', 'Expand citations tab');
353
+ $('#citations-handle').attr('title', 'Expand citations tab');
338
354
  $('#citations-handle').css('padding-bottom', '0.1em');
339
355
  setTimeout(() => {
340
356
  // ensure elements in closed citations tab are not keyboard focusable
@@ -353,6 +369,10 @@ export async function initSideTabs() {
353
369
  // display citation tab content if not visible
354
370
  toggleTabContentDisplay('#swh-identifiers', false);
355
371
  toggleTabContentDisplay('#swh-citations', true);
372
+ $('#swhids-handle').attr('aria-label', 'Display permalinks tab');
373
+ $('#swhids-handle').attr('title', 'Display permalinks tab');
374
+ $('#citations-handle').attr('aria-label', 'Collapse citations tab');
375
+ $('#citations-handle').attr('title', 'Collapse citations tab');
356
376
  } else {
357
377
  $('#swh-citations').trigger('close');
358
378
  }
@@ -1,5 +1,5 @@
1
1
  {% comment %}
2
- Copyright (C) 2017-2024 The Software Heritage developers
2
+ Copyright (C) 2017-2025 The Software Heritage developers
3
3
  See the AUTHORS file at the top-level directory of this distribution
4
4
  License: GNU Affero General Public License version 3, or any later version
5
5
  See top-level LICENSE file for more information
@@ -10,19 +10,19 @@ See top-level LICENSE file for more information
10
10
  {{ activate_citations_ui|json_script:"activate_citations_ui" }}
11
11
  {% if swhids_info %}
12
12
  <div id="swh-identifiers" class="swh-side-tab">
13
- <a id="swhids-handle"
14
- class="handle ui-slideouttab-handle ui-slideouttab-handle-rounded"
15
- href="#"
16
- role="button"
17
- aria-expanded="false"
18
- aria-label="Expand permalinks tab">
13
+ <button id="swhids-handle"
14
+ class="btn btn-secondary handle ui-slideouttab-handle ui-slideouttab-handle-rounded"
15
+ aria-expanded="false"
16
+ aria-label="Expand permalinks tab"
17
+ title="Expand permalinks tab">
19
18
  <i class="mdi mdi-link-variant mdi-fw" aria-hidden="true"></i>
20
19
  {% if swhids_info|length > 1 %}
21
20
  Permalinks
22
21
  {% else %}
23
22
  Permalink
24
23
  {% endif %}
25
- </a>
24
+ <i class="tab-handle-arrow mdi mdi-chevron-up mdi-fw" aria-hidden="true"></i>
25
+ </button>
26
26
  <div id="swh-identifiers-content"
27
27
  class="swh-side-tab-content"
28
28
  style="display: none">
@@ -78,7 +78,11 @@ See top-level LICENSE file for more information
78
78
  {% if "swh.web.badges" in SWH_DJANGO_APPS %}
79
79
  <div class="swh-badges">
80
80
  {% if snapshot_context and snapshot_context.origin_info %}
81
- <img class="swh-badge swh-badge-origin" alt="origin badge" src="{% url 'swh-badge' 'origin' snapshot_context.origin_info.url %}" onclick="swh.badges.showBadgeInfoModal('origin', '{{ snapshot_context.origin_info.url|urlencode:"/?:@&" }}')" title="Click to display badge integration info" />
81
+ <img class="swh-badge swh-badge-origin"
82
+ alt="origin badge"
83
+ src="{% url 'swh-badge' 'origin' snapshot_context.origin_info.url %}"
84
+ onclick="swh.badges.showBadgeInfoModal('origin', '{{ snapshot_context.origin_info.url|urlencode:"/?:@&" }}')"
85
+ title="Click to display badge integration info" />
82
86
  {% endif %}
83
87
  {% if swhid_info.object_id %}
84
88
  <img class="swh-badge swh-badge-{{ swhid_info.object_type.name.lower }}"
@@ -144,15 +148,15 @@ See top-level LICENSE file for more information
144
148
  </div>
145
149
  {% if activate_citations_ui or request.user.is_staff or user_is_ambassador %}
146
150
  <div id="swh-citations" class="swh-side-tab d-none">
147
- <a id="citations-handle"
148
- class="handle ui-slideouttab-handle ui-slideouttab-handle-rounded"
149
- href="#"
150
- role="button"
151
- aria-expanded="false"
152
- aria-label="Expand citations tab">
151
+ <button id="citations-handle"
152
+ class="btn btn-secondary handle ui-slideouttab-handle ui-slideouttab-handle-rounded"
153
+ aria-expanded="false"
154
+ aria-label="Expand citations tab"
155
+ title="Expand citations tab">
153
156
  <i class="mdi mdi-book-open-variant-outline mdi-fw" aria-hidden="true"></i>
154
157
  Citations
155
- </a>
158
+ <i class="tab-handle-arrow mdi mdi-chevron-up mdi-fw" aria-hidden="true"></i>
159
+ </button>
156
160
  <div id="swh-citations-content"
157
161
  class="swh-side-tab-content"
158
162
  style="display: none">
@@ -30,7 +30,9 @@ See top-level LICENSE file for more information
30
30
  {% endif %}
31
31
  <h5>
32
32
  {% if snapshot_context.origin_info %}
33
- <a id="swh-origin-url" class="swh-heading-color" href="{% url 'browse-origin' %}?origin_url={{ snapshot_context.origin_info.url|urlencode:"/?:@&" }}">
33
+ <a id="swh-origin-url"
34
+ class="swh-heading-color"
35
+ href="{% url 'browse-origin' %}?origin_url={{ snapshot_context.origin_info.url|urlencode:"/?:@&" }}">
34
36
  <i class="{{ swh_object_icons.origin }} mdi-fw"
35
37
  aria-hidden="true"
36
38
  title="Origin"></i>
@@ -17,7 +17,7 @@ See top-level LICENSE file for more information
17
17
  <i class="mdi mdi-camera mdi-fw" aria-hidden="true"></i>
18
18
  Save again
19
19
  </button>
20
- <div class="modal fade"
20
+ <div class="modal fade d-none"
21
21
  id="swh-take-new-snapshot-modal"
22
22
  tabindex="-1"
23
23
  role="dialog"
@@ -0,0 +1,2 @@
1
+ .swh-browse-bread-crumbs{font-size:inherit;margin-bottom:1px;vertical-align:text-top}.swh-browse-bread-crumbs li:nth-child(n+2):before{content:"";display:inline-block;margin:0 2px}.swh-browse-nav li a{border-radius:4px}.scrollable-menu{max-height:180px;overflow-x:hidden}.swh-loading{display:none;margin-top:10px;text-align:center}.swh-loading.show{display:block}.swh-table-cell-text-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.swh-directory-table{margin-bottom:0}.swh-directory-table td{border-top:1px solid #ddd!important}.swh-title-color{color:#e20026}.swh-log-entry-message{max-width:440px;min-width:440px;width:440px}.swh-search-pagination{margin-top:5px}.ui-slideouttab-panel{z-index:30000}.swh-side-tab{top:0;width:70vw}.swh-side-tab .handle{color:#fff;padding-bottom:.1em;padding-top:.1em}.swh-side-tab-content{height:100%;min-height:300px;overflow:auto}.swh-side-tab i.mdi{pointer-events:none}#swh-identifiers{border:1px solid #e20026}#swh-identifiers .handle{background-color:#e20026!important;border:1px solid #e20026!important}#swh-citations{border:1px solid #f16d20}#swh-citations .handle{background-color:#f16d20!important;border:1px solid #f16d20!important;color:#000}#swh-identifiers .handle:hover{background-color:#c30024!important;border:1px solid #c30024!important}#swh-citations .handle:hover{background-color:#d25c1c!important;border:1px solid #d25c1c!important}.swh-empty-snapshot{white-space:pre-line}td.swh-branch-name{max-width:300px}td.swh-branch-message{max-width:500px;min-width:500px}td.swh-branch-date{min-width:250px}.chosen-container-active{-webkit-box-shadow:0 0 0 .2rem rgba(226,0,38,.25);box-shadow:0 0 0 .2rem rgba(226,0,38,.25);z-index:10}#swh-tab-branches ul,#swh-tab-releases ul{list-style-type:none;padding-left:0}#swh-go-to-origin{margin-left:5px;vertical-align:middle}.citation-format{max-width:200px}.swh-citation{max-height:400px;white-space:pre-wrap}.btn-citation-copy,.btn-swhid-copy,.btn-swhid-url-copy{height:32px;width:125px}.swh-content{background-color:#fff;background-image:none;padding:0}.swh-content pre,.swh-content pre code{margin:0;padding:0}.swh-content img,.swh-content svg{max-width:100%}.chosen-container{color:#444}.chosen-container .chosen-single div b{-webkit-filter:brightness(0);filter:brightness(0);margin-top:4px}.chosen-container .chosen-single{background-color:#f8f9fa!important;background-image:none;border-color:#ddd;border-radius:0;-webkit-box-shadow:none;box-shadow:none;font-size:14px;font-weight:400;height:100%;line-height:1.5;padding-bottom:4px;padding-top:5px}.chosen-container .chosen-single:hover{background-color:#e9ecef!important}.swh-browse-top-navigation{padding:4px 5px 7px}.swh-branches-releases{min-width:200px}.swh-branches-switch,.swh-releases-switch{padding:5px 15px!important}li.swh-branch:hover,li.swh-release:hover{background-color:#e8e8e8}.swh-branch a:hover,.swh-release a:hover{text-decoration:none}.swh-origin-visit-details,.swh-snapshot-details{text-align:center}.swh-origin-visit-details ul,.swh-snapshot-details ul{list-style:none;margin:0;padding:0}.swh-origin-visit-details li,.swh-snapshot-details li{display:inline-block;margin-left:10px;margin-right:10px;vertical-align:middle}.ui-slideouttab-handle,.ui-slideouttab-panel{background-color:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:.4em}.ui-slideouttab-panel{border:2px solid grey;display:block;position:fixed}.ui-slideouttab-ready{-webkit-transition:-webkit-transform .5s ease 0s;transition:-webkit-transform .5s ease 0s;-moz-transition:transform .5s ease 0s,-moz-transform .5s ease 0s;transition:transform .5s ease 0s;transition:transform .5s ease 0s,-webkit-transform .5s ease 0s,-moz-transform .5s ease 0s}@media print{.ui-slideouttab-panel{display:none}}.ui-slideouttab-handle{background-color:grey;color:#fff;cursor:pointer;display:block;position:absolute}.ui-slideouttab-handle-image{-webkit-transform:rotate(0);-moz-transform:rotate(0);transform:rotate(0)}.ui-slideouttab-right{border-right:none;right:0;-webkit-transform:translateX(100%);-moz-transform:translateX(100%);transform:translateX(100%)}.ui-slideouttab-right.ui-slideouttab-open{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}.ui-slideouttab-right .ui-slideouttab-handle{-webkit-transform:rotate(-90deg) translate(-100%,-100%);-moz-transform:rotate(-90deg) translate(-100%,-100%);transform:rotate(-90deg) translate(-100%,-100%);-webkit-transform-origin:0 0;-moz-transform-origin:0 0;transform-origin:0 0}.ui-slideouttab-right .ui-slideouttab-handle-reverse{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:0 100%;-moz-transform-origin:0 100%;transform-origin:0 100%}.ui-slideouttab-left{border-left:none;left:0;-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);transform:translateX(-100%)}.ui-slideouttab-left.ui-slideouttab-open{-webkit-transform:translateX(0);-moz-transform:translateX(0);transform:translateX(0)}.ui-slideouttab-left .ui-slideouttab-handle{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;transform-origin:100% 0}.ui-slideouttab-left .ui-slideouttab-handle-reverse{-webkit-transform:rotate(-90deg) translate(100%,100%);-moz-transform:rotate(-90deg) translate(100%,100%);transform:rotate(-90deg) translate(100%,100%);-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;transform-origin:100% 100%}.ui-slideouttab-top{border-top:none;top:0;-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);transform:translateY(-100%)}.ui-slideouttab-top.ui-slideouttab-open{-webkit-transform:translateY(0);-moz-transform:translateY(0);transform:translateY(0)}.ui-slideouttab-bottom{border-bottom:none;bottom:0;-webkit-transform:translateY(100%);-moz-transform:translateY(100%);transform:translateY(100%)}.ui-slideouttab-bottom.ui-slideouttab-open{-webkit-transform:translateY(0);-moz-transform:translateY(0);transform:translateY(0)}.ui-slideouttab-left .ui-slideouttab-handle>.fa-icon,.ui-slideouttab-right .ui-slideouttab-handle>.fa-icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);transform:rotate(90deg)}.ui-slideouttab-handle>.fa-icon{margin-left:.5em}.ui-slideouttab-left .ui-slideouttab-handle-rounded,.ui-slideouttab-top .ui-slideouttab-handle-rounded{border-radius:0 0 4px 4px}.ui-slideouttab-bottom .ui-slideouttab-handle-rounded,.ui-slideouttab-right .ui-slideouttab-handle-rounded{border-radius:4px 4px 0 0}code[class*=language-],pre[class*=language-]{background:none;color:#000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-break:normal;word-spacing:normal;word-wrap:normal;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}pre[class*=language-]{margin:.5em 0;overflow:visible;padding:1px;position:relative}pre[class*=language-]>code{background-attachment:local;background-color:#fdfdfd;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,transparent),color-stop(50%,rgba(69,142,209,.04)));background-image:-webkit-linear-gradient(transparent 50%,rgba(69,142,209,.04) 0);background-image:-moz-linear-gradient(transparent 50%,rgba(69,142,209,.04) 50%);background-image:linear-gradient(transparent 50%,rgba(69,142,209,.04) 0);background-origin:content-box;background-size:3em 3em;border-left:10px solid #358ccb;-webkit-box-shadow:-1px 0 0 0 #358ccb,0 0 0 1px #dfdfdf;box-shadow:-1px 0 0 0 #358ccb,0 0 0 1px #dfdfdf;position:relative;z-index:1}code[class*=language-]{display:block;height:inherit;max-height:inherit;overflow:auto;padding:0 1em}:not(pre)>code[class*=language-],pre[class*=language-]{background-color:#fdfdfd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:1em}:not(pre)>code[class*=language-]{border:1px solid rgba(0,0,0,.1);border-radius:.3em;color:#c92c2c;display:inline;padding:.2em;position:relative;white-space:normal}pre[class*=language-]:after,pre[class*=language-]:before{bottom:.75em;-webkit-box-shadow:0 13px 8px #979797;box-shadow:0 13px 8px #979797;content:"";display:block;height:20%;left:.18em;max-height:13em;position:absolute;-webkit-transform:rotate(-2deg);-moz-transform:rotate(-2deg);transform:rotate(-2deg);width:40%}pre[class*=language-]:after{left:auto;right:.75em;-webkit-transform:rotate(2deg);-moz-transform:rotate(2deg);transform:rotate(2deg)}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7d8b99}.token.punctuation{color:#5f6364}.token.boolean,.token.constant,.token.deleted,.token.function-name,.token.number,.token.property,.token.symbol,.token.tag{color:#c92c2c}.token.attr-name,.token.builtin,.token.char,.token.function,.token.inserted,.token.selector,.token.string{color:#2f9c0a}.token.entity,.token.operator,.token.url,.token.variable{background:hsla(0,0%,100%,.5);color:#a67f59}.token.atrule,.token.attr-value,.token.class-name,.token.keyword{color:#1990b8}.token.important,.token.regex{color:#e90}.language-css .token.string,.style .token.string{background:hsla(0,0%,100%,.5);color:#a67f59}.token.important{font-weight:400}.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.7}@media screen and (max-width:767px){pre[class*=language-]:after,pre[class*=language-]:before{bottom:14px;-webkit-box-shadow:none;box-shadow:none}}pre[class*=language-].line-numbers.line-numbers{padding-left:0}pre[class*=language-].line-numbers.line-numbers code{padding-left:3.8em}pre[class*=language-].line-numbers.line-numbers .line-numbers-rows{left:0}pre[class*=language-][data-line]{padding-bottom:0;padding-left:0;padding-top:0}pre[data-line] code{padding-left:4em;position:relative}pre .line-highlight{margin-top:0}
2
+ /*# sourceMappingURL=browse.0a250d3b07ce628588a5.css.map*/