Skip to content

Commit bf3fda3

Browse files
committed
Final mongodb edition.
1 parent 4f84609 commit bf3fda3

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

app/ch16_mongodb/final/pypi_org/services/package_service.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,11 @@ def get_package_by_id(package_id: str) -> Optional[Package]:
3535

3636
def all_packages(limit: int) -> List[Package]:
3737
return list(Package.objects().limit(limit))
38+
39+
40+
def get_packages_by_ids(package_ids: List[str]) -> List[Package]:
41+
return list(Package.objects(id__in=package_ids))
42+
43+
44+
def get_latest_release_for_package(package_id: str) -> Optional[Release]:
45+
return Release.objects(package_id=package_id).order_by('-created_date').first()

app/ch16_mongodb/final/pypi_org/templates/home/index.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ <h2>New releases</h2>
2828
</div>
2929

3030
{% for r in releases %}
31+
{% set package = package_lookup.get(r.package_id) %}
3132
<div class="project">
3233
<div class="title">
33-
<a href="/project/{{ r.package.id }}">{{ r.package.id }} {{ r.version_text }}</a>
34-
<div class="desc">{{ r.package.summary }}</div>
34+
<a href="/project/{{ package.id }}">{{ package.id }} {{ r.version_text }}</a>
35+
<div class="desc">{{ package.summary }}</div>
3536
</div>
3637
</div>
3738
{% endfor %}

app/ch16_mongodb/final/pypi_org/viewmodels/home/index_viewmodel.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,8 @@ def __init__(self):
1010
self.package_count = package_service.get_package_count()
1111
self.release_count = package_service.get_release_count()
1212
self.user_count = user_service.get_user_count()
13+
14+
package_ids = [r.package_id for r in self.releases]
15+
packages = package_service.get_packages_by_ids(package_ids)
16+
17+
self.package_lookup = {p.id: p for p in packages}

app/ch16_mongodb/final/pypi_org/viewmodels/packages/pagedetails_viewmodel.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@ def __init__(self, package_name: str):
1515
self.latest_release = None
1616
self.is_latest = True
1717

18-
if self.package and self.package.releases:
19-
self.latest_release = self.package.releases[0]
20-
self.latest_version = self.latest_release.version_text
18+
if self.package:
19+
self.latest_release = package_service.get_latest_release_for_package(
20+
self.package.id)
21+
22+
if self.latest_release:
23+
self.latest_version = self.latest_release.version_text
2124

2225
self.release_version = self.latest_release

0 commit comments

Comments
 (0)