Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions backend/apps/github/models/managers/release.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"""GitHub app release managers."""

from django.db import models


class ActiveReleaseManager(models.Manager):
"""Active releases manager."""

def get_queryset(self):
"""Get queryset of active releases.

Filters out draft and pre-releases, and ensures repository exists.
"""
return (
super()
.get_queryset()
.select_related("repository")
.filter(
is_draft=False,
is_pre_release=False,
repository__is_empty=False,
)
)
4 changes: 4 additions & 0 deletions backend/apps/github/models/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,16 @@

from apps.common.models import BulkSaveModel, TimestampedModel
from apps.github.models.common import NodeModel
from apps.github.models.managers.release import ActiveReleaseManager
from apps.github.models.mixins.release import ReleaseIndexMixin


class Release(BulkSaveModel, NodeModel, ReleaseIndexMixin, TimestampedModel):
"""Release model."""

objects = models.Manager()
active_releases = ActiveReleaseManager()

class Meta:
db_table = "github_releases"
indexes = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,32 +66,22 @@ def process_snapshot(self, snapshot: Snapshot) -> None:

try:
# Fetch new data for each model type
new_chapters = self.get_new_items(
Chapter,
snapshot.start_at,
snapshot.end_at,
).filter(
is_active=True,
new_chapters = Chapter.active_chapters.filter(
created_at__gte=snapshot.start_at,
created_at__lte=snapshot.end_at,
)
new_issues = self.get_new_items(
Issue,
snapshot.start_at,
snapshot.end_at,
)
new_projects = self.get_new_items(
Project,
snapshot.start_at,
snapshot.end_at,
).filter(
is_active=True,
new_projects = Project.active_projects.filter(
created_at__gte=snapshot.start_at,
created_at__lte=snapshot.end_at,
)
new_releases = self.get_new_items(
Release,
snapshot.start_at,
snapshot.end_at,
).filter(
is_draft=False,
is_pre_release=False,
new_releases = Release.active_releases.filter(
created_at__gte=snapshot.start_at,
created_at__lte=snapshot.end_at,
)
new_users = self.get_new_items(
User,
Expand Down