Skip to content

Commit 6f77a1c

Browse files
committed
Initial implementation of GitLab statistics
Issue: #12789 Signed-off-by: Yuri Konotopov <[email protected]>
1 parent 128272a commit 6f77a1c

File tree

7 files changed

+251
-56
lines changed

7 files changed

+251
-56
lines changed

warehouse/csp.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ def _connect_src_settings(config) -> list:
9595
SELF,
9696
"https://github.com/api/repos/",
9797
"https://github.com/api/search/issues",
98+
"https://gitlab.com",
9899
"https://*.google-analytics.com",
99100
"https://*.analytics.google.com",
100101
"https://*.googletagmanager.com",

warehouse/locale/messages.pot

Lines changed: 67 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,7 @@ msgstr ""
776776
#: warehouse/templates/includes/accounts/profile-actions.html:30
777777
#: warehouse/templates/includes/accounts/profile-callout.html:18
778778
#: warehouse/templates/includes/hash-modal.html:23
779-
#: warehouse/templates/includes/packaging/project-data.html:106
779+
#: warehouse/templates/includes/packaging/project-data.html:146
780780
#: warehouse/templates/index.html:100 warehouse/templates/index.html:104
781781
#: warehouse/templates/manage/account.html:228
782782
#: warehouse/templates/manage/account.html:234
@@ -790,8 +790,8 @@ msgstr ""
790790
#: warehouse/templates/manage/project/release.html:200
791791
#: warehouse/templates/manage/project/releases.html:140
792792
#: warehouse/templates/manage/project/releases.html:179
793-
#: warehouse/templates/packaging/detail.html:376
794-
#: warehouse/templates/packaging/detail.html:395
793+
#: warehouse/templates/packaging/detail.html:383
794+
#: warehouse/templates/packaging/detail.html:402
795795
#: warehouse/templates/pages/classifiers.html:25
796796
#: warehouse/templates/pages/help.html:20
797797
#: warehouse/templates/pages/help.html:218
@@ -2771,7 +2771,7 @@ msgstr ""
27712771
#: warehouse/templates/manage/account/recovery_codes-provision.html:58
27722772
#: warehouse/templates/manage/account/totp-provision.html:57
27732773
#: warehouse/templates/manage/unverified-account.html:179
2774-
#: warehouse/templates/packaging/detail.html:158
2774+
#: warehouse/templates/packaging/detail.html:165
27752775
#: warehouse/templates/pages/classifiers.html:38
27762776
msgid "Copy to clipboard"
27772777
msgstr ""
@@ -2971,22 +2971,33 @@ msgid "GitHub Statistics"
29712971
msgstr ""
29722972

29732973
#: warehouse/templates/includes/packaging/project-data.html:74
2974+
#: warehouse/templates/includes/packaging/project-data.html:114
29742975
msgid "Stars:"
29752976
msgstr ""
29762977

29772978
#: warehouse/templates/includes/packaging/project-data.html:82
2979+
#: warehouse/templates/includes/packaging/project-data.html:122
29782980
msgid "Forks:"
29792981
msgstr ""
29802982

29812983
#: warehouse/templates/includes/packaging/project-data.html:90
2984+
#: warehouse/templates/includes/packaging/project-data.html:130
29822985
msgid "Open issues:"
29832986
msgstr ""
29842987

29852988
#: warehouse/templates/includes/packaging/project-data.html:98
29862989
msgid "Open PRs:"
29872990
msgstr ""
29882991

2989-
#: warehouse/templates/includes/packaging/project-data.html:106
2992+
#: warehouse/templates/includes/packaging/project-data.html:107
2993+
msgid "GitLab Statistics"
2994+
msgstr ""
2995+
2996+
#: warehouse/templates/includes/packaging/project-data.html:138
2997+
msgid "Open MRs:"
2998+
msgstr ""
2999+
3000+
#: warehouse/templates/includes/packaging/project-data.html:146
29903001
#, python-format
29913002
msgid ""
29923003
"View statistics for this project via <a href=\"%(libs_io_href)s\" "
@@ -2995,38 +3006,38 @@ msgid ""
29953006
"rel=\"noopener\">our public dataset on Google BigQuery</a>"
29963007
msgstr ""
29973008

2998-
#: warehouse/templates/includes/packaging/project-data.html:113
3009+
#: warehouse/templates/includes/packaging/project-data.html:153
29993010
msgid "Meta"
30003011
msgstr ""
30013012

3002-
#: warehouse/templates/includes/packaging/project-data.html:115
3013+
#: warehouse/templates/includes/packaging/project-data.html:155
30033014
msgid "License:"
30043015
msgstr ""
30053016

3006-
#: warehouse/templates/includes/packaging/project-data.html:118
3007-
#: warehouse/templates/includes/packaging/project-data.html:120
3017+
#: warehouse/templates/includes/packaging/project-data.html:158
3018+
#: warehouse/templates/includes/packaging/project-data.html:160
30083019
msgid "Author:"
30093020
msgstr ""
30103021

3011-
#: warehouse/templates/includes/packaging/project-data.html:123
3012-
#: warehouse/templates/includes/packaging/project-data.html:125
3022+
#: warehouse/templates/includes/packaging/project-data.html:163
3023+
#: warehouse/templates/includes/packaging/project-data.html:165
30133024
#: warehouse/templates/pages/help.html:610
30143025
msgid "Maintainer:"
30153026
msgstr ""
30163027

3017-
#: warehouse/templates/includes/packaging/project-data.html:130
3028+
#: warehouse/templates/includes/packaging/project-data.html:170
30183029
msgid "Tags"
30193030
msgstr ""
30203031

3021-
#: warehouse/templates/includes/packaging/project-data.html:140
3032+
#: warehouse/templates/includes/packaging/project-data.html:180
30223033
msgid "Requires:"
30233034
msgstr ""
30243035

3025-
#: warehouse/templates/includes/packaging/project-data.html:145
3036+
#: warehouse/templates/includes/packaging/project-data.html:185
30263037
msgid "Provides-Extra:"
30273038
msgstr ""
30283039

3029-
#: warehouse/templates/includes/packaging/project-data.html:153
3040+
#: warehouse/templates/includes/packaging/project-data.html:193
30303041
#: warehouse/templates/pages/classifiers.html:16
30313042
#: warehouse/templates/pages/classifiers.html:21
30323043
#: warehouse/templates/pages/sitemap.html:39
@@ -6721,144 +6732,144 @@ msgstr ""
67216732
msgid "RSS: latest releases for %(project_name)s"
67226733
msgstr ""
67236734

6724-
#: warehouse/templates/packaging/detail.html:160
6735+
#: warehouse/templates/packaging/detail.html:167
67256736
msgid "Copy PIP instructions"
67266737
msgstr ""
67276738

6728-
#: warehouse/templates/packaging/detail.html:171
6739+
#: warehouse/templates/packaging/detail.html:178
67296740
msgid "This release has been yanked"
67306741
msgstr ""
67316742

6732-
#: warehouse/templates/packaging/detail.html:177
6743+
#: warehouse/templates/packaging/detail.html:184
67336744
#, python-format
67346745
msgid "Stable version available (%(version)s)"
67356746
msgstr ""
67366747

6737-
#: warehouse/templates/packaging/detail.html:181
6748+
#: warehouse/templates/packaging/detail.html:188
67386749
#, python-format
67396750
msgid "Newer version available (%(version)s)"
67406751
msgstr ""
67416752

6742-
#: warehouse/templates/packaging/detail.html:185
6753+
#: warehouse/templates/packaging/detail.html:192
67436754
msgid "Latest version"
67446755
msgstr ""
67456756

6746-
#: warehouse/templates/packaging/detail.html:190
6757+
#: warehouse/templates/packaging/detail.html:197
67476758
#, python-format
67486759
msgid "Released: %(release_date)s"
67496760
msgstr ""
67506761

6751-
#: warehouse/templates/packaging/detail.html:204
6762+
#: warehouse/templates/packaging/detail.html:211
67526763
msgid "No project description provided"
67536764
msgstr ""
67546765

6755-
#: warehouse/templates/packaging/detail.html:217
6766+
#: warehouse/templates/packaging/detail.html:224
67566767
msgid "Navigation"
67576768
msgstr ""
67586769

6759-
#: warehouse/templates/packaging/detail.html:218
6760-
#: warehouse/templates/packaging/detail.html:252
6770+
#: warehouse/templates/packaging/detail.html:225
6771+
#: warehouse/templates/packaging/detail.html:259
67616772
#, python-format
67626773
msgid "Navigation for %(project)s"
67636774
msgstr ""
67646775

6765-
#: warehouse/templates/packaging/detail.html:221
6766-
#: warehouse/templates/packaging/detail.html:255
6776+
#: warehouse/templates/packaging/detail.html:228
6777+
#: warehouse/templates/packaging/detail.html:262
67676778
msgid "Project description. Focus will be moved to the description."
67686779
msgstr ""
67696780

6770-
#: warehouse/templates/packaging/detail.html:223
6771-
#: warehouse/templates/packaging/detail.html:257
6772-
#: warehouse/templates/packaging/detail.html:291
6781+
#: warehouse/templates/packaging/detail.html:230
6782+
#: warehouse/templates/packaging/detail.html:264
6783+
#: warehouse/templates/packaging/detail.html:298
67736784
msgid "Project description"
67746785
msgstr ""
67756786

6776-
#: warehouse/templates/packaging/detail.html:227
6777-
#: warehouse/templates/packaging/detail.html:267
6787+
#: warehouse/templates/packaging/detail.html:234
6788+
#: warehouse/templates/packaging/detail.html:274
67786789
msgid "Release history. Focus will be moved to the history panel."
67796790
msgstr ""
67806791

6781-
#: warehouse/templates/packaging/detail.html:229
6782-
#: warehouse/templates/packaging/detail.html:269
6783-
#: warehouse/templates/packaging/detail.html:313
6792+
#: warehouse/templates/packaging/detail.html:236
6793+
#: warehouse/templates/packaging/detail.html:276
6794+
#: warehouse/templates/packaging/detail.html:320
67846795
msgid "Release history"
67856796
msgstr ""
67866797

6787-
#: warehouse/templates/packaging/detail.html:234
6788-
#: warehouse/templates/packaging/detail.html:274
6798+
#: warehouse/templates/packaging/detail.html:241
6799+
#: warehouse/templates/packaging/detail.html:281
67896800
msgid "Download files. Focus will be moved to the project files."
67906801
msgstr ""
67916802

6792-
#: warehouse/templates/packaging/detail.html:236
6793-
#: warehouse/templates/packaging/detail.html:276
6794-
#: warehouse/templates/packaging/detail.html:375
6803+
#: warehouse/templates/packaging/detail.html:243
6804+
#: warehouse/templates/packaging/detail.html:283
6805+
#: warehouse/templates/packaging/detail.html:382
67956806
msgid "Download files"
67966807
msgstr ""
67976808

6798-
#: warehouse/templates/packaging/detail.html:261
6809+
#: warehouse/templates/packaging/detail.html:268
67996810
msgid "Project details. Focus will be moved to the project details."
68006811
msgstr ""
68016812

6802-
#: warehouse/templates/packaging/detail.html:263
6803-
#: warehouse/templates/packaging/detail.html:305
6813+
#: warehouse/templates/packaging/detail.html:270
6814+
#: warehouse/templates/packaging/detail.html:312
68046815
msgid "Project details"
68056816
msgstr ""
68066817

6807-
#: warehouse/templates/packaging/detail.html:287
6808-
#: warehouse/templates/packaging/detail.html:362
6818+
#: warehouse/templates/packaging/detail.html:294
6819+
#: warehouse/templates/packaging/detail.html:369
68096820
msgid "Reason this release was yanked:"
68106821
msgstr ""
68116822

6812-
#: warehouse/templates/packaging/detail.html:298
6823+
#: warehouse/templates/packaging/detail.html:305
68136824
msgid "The author of this package has not provided a project description"
68146825
msgstr ""
68156826

6816-
#: warehouse/templates/packaging/detail.html:315
6827+
#: warehouse/templates/packaging/detail.html:322
68176828
msgid "Release notifications"
68186829
msgstr ""
68196830

6820-
#: warehouse/templates/packaging/detail.html:316
6831+
#: warehouse/templates/packaging/detail.html:323
68216832
msgid "RSS feed"
68226833
msgstr ""
68236834

6824-
#: warehouse/templates/packaging/detail.html:328
6835+
#: warehouse/templates/packaging/detail.html:335
68256836
msgid "This version"
68266837
msgstr ""
68276838

6828-
#: warehouse/templates/packaging/detail.html:348
6839+
#: warehouse/templates/packaging/detail.html:355
68296840
msgid "pre-release"
68306841
msgstr ""
68316842

6832-
#: warehouse/templates/packaging/detail.html:353
6843+
#: warehouse/templates/packaging/detail.html:360
68336844
msgid "yanked"
68346845
msgstr ""
68356846

6836-
#: warehouse/templates/packaging/detail.html:376
6847+
#: warehouse/templates/packaging/detail.html:383
68376848
#, python-format
68386849
msgid ""
68396850
"Download the file for your platform. If you're not sure which to choose, "
68406851
"learn more about <a href=\"%(href)s\" title=\"%(title)s\" "
68416852
"target=\"_blank\" rel=\"noopener\">installing packages</a>."
68426853
msgstr ""
68436854

6844-
#: warehouse/templates/packaging/detail.html:378
6855+
#: warehouse/templates/packaging/detail.html:385
68456856
msgid "Source Distribution"
68466857
msgid_plural "Source Distributions"
68476858
msgstr[0] ""
68486859
msgstr[1] ""
68496860

6850-
#: warehouse/templates/packaging/detail.html:394
6861+
#: warehouse/templates/packaging/detail.html:401
68516862
msgid "No source distribution files available for this release."
68526863
msgstr ""
68536864

6854-
#: warehouse/templates/packaging/detail.html:395
6865+
#: warehouse/templates/packaging/detail.html:402
68556866
#, python-format
68566867
msgid ""
68576868
"See tutorial on <a href=\"%(href)s\" title=\"%(title)s\" "
68586869
"target=\"_blank\" rel=\"noopener\">generating distribution archives</a>."
68596870
msgstr ""
68606871

6861-
#: warehouse/templates/packaging/detail.html:402
6872+
#: warehouse/templates/packaging/detail.html:409
68626873
msgid "Built Distribution"
68636874
msgid_plural "Built Distributions"
68646875
msgstr[0] ""

warehouse/packaging/models.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,19 @@ def github_open_issue_info_url(self):
677677
"+type:issue+state:open&per_page=1"
678678
)
679679

680+
@property
681+
def gitlab_repository(self):
682+
for url in self.urls.values():
683+
try:
684+
parsed = parse_url(url)
685+
except LocationParseError:
686+
continue
687+
688+
if parsed.netloc in {"gitlab.com", "www.gitlab.com"}:
689+
return parsed.path.strip("/") if parsed.path else None
690+
691+
return None
692+
680693
@property
681694
def has_meta(self):
682695
return any(
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* Licensed under the Apache License, Version 2.0 (the "License");
3+
* you may not use this file except in compliance with the License.
4+
* You may obtain a copy of the License at
5+
*
6+
* http://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* Unless required by applicable law or agreed to in writing, software
9+
* distributed under the License is distributed on an "AS IS" BASIS,
10+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
* See the License for the specific language governing permissions and
12+
* limitations under the License.
13+
*/
14+
import { Controller } from "@hotwired/stimulus";
15+
16+
export default class extends Controller {
17+
static targets = [
18+
"forksCount",
19+
"forksUrl",
20+
"openIssuesCount",
21+
"openIssuesUrl",
22+
"stargazersCount",
23+
"stargazersUrl",
24+
"openMRsCount",
25+
"openMRsUrl",
26+
];
27+
28+
updateStats(stats) {
29+
this.forksCountTarget.textContent = stats.forks;
30+
this.forksUrlTarget.href = stats.forks_url;
31+
this.openIssuesCountTarget.textContent = stats.issues;
32+
this.openIssuesUrlTarget.href = stats.issues_url;
33+
this.openMRsCountTarget.textContent = stats.MRs;
34+
this.openMRsUrlTarget.href = stats.MRs_url;
35+
this.stargazersCountTarget.textContent = stats.followers;
36+
this.stargazersUrlTarget.href = stats.followers_url;
37+
38+
// unhide the container now that the data is populated
39+
this.element.classList.remove("hidden");
40+
}
41+
}

0 commit comments

Comments
 (0)