Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F9345336
D7798.id28171.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Subscribers
None
D7798.id28171.diff
View Options
diff --git a/assets/src/bundles/add_forge/request-dashboard.js b/assets/src/bundles/add_forge/request-dashboard.js
--- a/assets/src/bundles/add_forge/request-dashboard.js
+++ b/assets/src/bundles/add_forge/request-dashboard.js
@@ -57,7 +57,7 @@
// Setting data for the email, now adding static data
$('#contactForgeAdmin').attr('emailTo', forgeRequest.forge_contact_email);
- $('#contactForgeAdmin').attr('emailSubject', `[swh-add_forge_now] Request ${forgeRequest.id}`);
+ $('#contactForgeAdmin').attr('emailSubject', `Software Heritage archival request for ${forgeRequest.forge_domain}`);
populateRequestHistory(data.history);
populateDecisionSelectOption(forgeRequest.status);
} catch (response) {
diff --git a/cypress/integration/add-forge-now-request-dashboard.spec.js b/cypress/integration/add-forge-now-request-dashboard.spec.js
--- a/cypress/integration/add-forge-now-request-dashboard.spec.js
+++ b/cypress/integration/add-forge-now-request-dashboard.spec.js
@@ -5,7 +5,7 @@
* See top-level LICENSE file for more information
*/
-let requestId;
+let requestId, forgeDomain;
function createDummyRequest(urls) {
cy.task('db:add_forge_now:delete');
@@ -27,8 +27,9 @@
'X-CSRFToken': token
}
}).then((response) => {
- // setting requestId from response
+ // setting requestId and forgeDomain from response
requestId = response.body.id;
+ forgeDomain = response.body.forge_domain;
// logout the user
cy.visit(urls.swh_web_homepage());
cy.contains('a', 'logout').click();
@@ -87,7 +88,7 @@
cy.get('#contactForgeAdmin')
.should('have.attr', 'emailsubject')
- .and('include', `[swh-add_forge_now] Request ${requestId}`);
+ .and('include', `Software Heritage archival request for ${forgeDomain}`);
});
it('should not show any error message', function() {
diff --git a/swh/web/add_forge_now/models.py b/swh/web/add_forge_now/models.py
--- a/swh/web/add_forge_now/models.py
+++ b/swh/web/add_forge_now/models.py
@@ -7,6 +7,7 @@
import enum
from typing import List
+from urllib.parse import urlparse
from django.db import models
@@ -118,3 +119,18 @@
"""Generate an email address for correspondence related to this request."""
base_address = get_config()["add_forge_now"]["email_address"]
return get_address_for_pk(salt=APP_LABEL, base_address=base_address, pk=self.pk)
+
+ @property
+ def forge_domain(self) -> str:
+ """Get the domain/netloc out of the forge_url.
+
+ Fallback to using the first part of the url path, if the netloc can't be found
+ (for instance, if the url scheme hasn't been set).
+ """
+
+ parsed_url = urlparse(self.forge_url)
+ domain = parsed_url.netloc
+ if not domain:
+ domain = parsed_url.path.split("/", 1)[0]
+
+ return domain
diff --git a/swh/web/api/views/add_forge_now.py b/swh/web/api/views/add_forge_now.py
--- a/swh/web/api/views/add_forge_now.py
+++ b/swh/web/api/views/add_forge_now.py
@@ -64,6 +64,7 @@
class AddForgeNowRequestSerializer(serializers.ModelSerializer):
inbound_email_address = serializers.CharField()
+ forge_domain = serializers.CharField()
last_moderator = serializers.SerializerMethodField()
last_modified_date = serializers.SerializerMethodField()
diff --git a/swh/web/tests/add_forge_now/test_models.py b/swh/web/tests/add_forge_now/test_models.py
--- a/swh/web/tests/add_forge_now/test_models.py
+++ b/swh/web/tests/add_forge_now/test_models.py
@@ -5,7 +5,7 @@
import pytest
-from swh.web.add_forge_now.models import RequestStatus
+from swh.web.add_forge_now.models import Request, RequestStatus
@pytest.mark.parametrize(
@@ -24,3 +24,15 @@
)
def test_allowed_next_statuses(current_status, allowed_next_statuses):
assert current_status.allowed_next_statuses() == allowed_next_statuses
+
+
+@pytest.mark.parametrize(
+ "forge_url, expected_domain",
+ [
+ ("https://gitlab.example.com/foo/bar", "gitlab.example.com"),
+ ("gitlab.example.com", "gitlab.example.com"),
+ ("gitlab.example.com/foo/bar", "gitlab.example.com"),
+ ],
+)
+def test_request_forge_domain(forge_url, expected_domain):
+ assert Request(forge_url=forge_url).forge_domain == expected_domain
diff --git a/swh/web/tests/api/views/test_add_forge_now.py b/swh/web/tests/api/views/test_add_forge_now.py
--- a/swh/web/tests/api/views/test_add_forge_now.py
+++ b/swh/web/tests/api/views/test_add_forge_now.py
@@ -7,7 +7,7 @@
import threading
import time
from typing import Dict
-from urllib.parse import urlencode
+from urllib.parse import urlencode, urlparse
import iso8601
import pytest
@@ -128,6 +128,7 @@
"last_moderator": resp.data["last_moderator"],
"last_modified_date": resp.data["last_modified_date"],
"inbound_email_address": inbound_email_for_pk(resp.data["id"]),
+ "forge_domain": urlparse(add_forge_data["forge_url"]).netloc,
}
assert date_before < iso8601.parse_date(resp.data["submission_date"]) < date_after
@@ -165,6 +166,7 @@
"last_moderator": resp.data["last_moderator"],
"last_modified_date": resp.data["last_modified_date"],
"inbound_email_address": inbound_email_for_pk(1),
+ "forge_domain": urlparse(ADD_FORGE_DATA_FORGE1["forge_url"]).netloc,
}
assert date_before < iso8601.parse_date(resp.data["submission_date"]) < date_after
@@ -389,6 +391,7 @@
"last_modified_date": resp.data[1]["last_modified_date"],
"id": resp.data[1]["id"],
"inbound_email_address": inbound_email_for_pk(resp.data[1]["id"]),
+ "forge_domain": urlparse(ADD_FORGE_DATA_FORGE1["forge_url"]).netloc,
}
other_forge_request = {
@@ -401,6 +404,7 @@
"last_modified_date": resp.data[0]["last_modified_date"],
"id": resp.data[0]["id"],
"inbound_email_address": inbound_email_for_pk(resp.data[0]["id"]),
+ "forge_domain": urlparse(ADD_FORGE_DATA_FORGE2["forge_url"]).netloc,
}
assert resp.data == [other_forge_request, add_forge_request]
@@ -536,6 +540,7 @@
"last_moderator": add_forge_moderator.username,
"last_modified_date": resp.data["history"][1]["date"],
"inbound_email_address": inbound_email_for_pk(1),
+ "forge_domain": urlparse(ADD_FORGE_DATA_FORGE1["forge_url"]).netloc,
},
"history": [
{
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jul 3, 3:18 PM (5 d, 22 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3219250
Attached To
D7798: Add Forge Now: add a forge_domain property for use in templates
Event Timeline
Log In to Comment