Skip to content

Commit d24f7f8

Browse files
committed
Purge user when projects or releases change
1 parent ceda2dc commit d24f7f8

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

tests/unit/packaging/test_init.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
from warehouse import packaging
1919
from warehouse.packaging.interfaces import IDownloadStatService, IFileStorage
20-
from warehouse.packaging.models import Project, Release
20+
from warehouse.packaging.models import Project, Release, User
2121
from warehouse.packaging.tasks import compute_trending
2222

2323

@@ -34,7 +34,7 @@ def test_includme(monkeypatch, with_trending):
3434
)
3535

3636
def key_factory(keystring, iterate_on=None):
37-
return pretend.call(keystring, iterate_on=None)
37+
return pretend.call(keystring, iterate_on=iterate_on)
3838

3939
monkeypatch.setattr(packaging, 'key_factory', key_factory)
4040

@@ -78,22 +78,35 @@ def key_factory(keystring, iterate_on=None):
7878
Project,
7979
cache_keys=[
8080
key_factory("project/{obj.normalized_name}"),
81+
key_factory("user/{itr.username}", iterate_on='users'),
8182
],
8283
purge_keys=[
8384
key_factory("project/{obj.normalized_name}"),
85+
key_factory("user/{itr.username}", iterate_on='users'),
8486
key_factory("all-projects"),
8587
],
8688
),
8789
pretend.call(
8890
Release,
8991
cache_keys=[
9092
key_factory("project/{obj.project.normalized_name}"),
93+
key_factory("user/{itr.username}", iterate_on='project.users'),
9194
],
9295
purge_keys=[
9396
key_factory("project/{obj.project.normalized_name}"),
97+
key_factory("user/{itr.username}", iterate_on='project.users'),
9498
key_factory("all-projects"),
9599
],
96100
),
101+
pretend.call(
102+
User,
103+
cache_keys=[
104+
key_factory("user/{obj.username}"),
105+
],
106+
purge_keys=[
107+
key_factory("user/{obj.username}"),
108+
],
109+
),
97110
]
98111

99112
if with_trending:

warehouse/packaging/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
from celery.schedules import crontab
1414

15+
from warehouse.accounts.models import User
1516
from warehouse.cache.origin import key_factory
1617
from warehouse.packaging.interfaces import IDownloadStatService, IFileStorage
1718
from warehouse.packaging.services import RedisDownloadStatService
@@ -45,6 +46,7 @@ def includeme(config):
4546
],
4647
purge_keys=[
4748
key_factory("project/{obj.normalized_name}"),
49+
key_factory("user/{itr.username}", iterate_on='users'),
4850
key_factory("all-projects"),
4951
],
5052
)
@@ -56,9 +58,19 @@ def includeme(config):
5658
],
5759
purge_keys=[
5860
key_factory("project/{obj.project.normalized_name}"),
61+
key_factory("user/{itr.username}", iterate_on='project.users'),
5962
key_factory("all-projects"),
6063
],
6164
)
65+
config.register_origin_cache_keys(
66+
User,
67+
cache_keys=[
68+
key_factory("user/{obj.username}"),
69+
],
70+
purge_keys=[
71+
key_factory("user/{obj.username}"),
72+
],
73+
)
6274

6375
# Add a periodic task to compute trending once a day, assuming we have
6476
# been configured to be able to access BigQuery.

0 commit comments

Comments
 (0)