11import structlog
22from django .contrib .admin .views .decorators import staff_member_required
33from django .db .models .query import QuerySet
4+ from enum import Enum
45from itertools import groupby
56from operator import attrgetter
67
@@ -152,16 +153,28 @@ def get_release_notes(self, obj):
152153 except RenderedContent .DoesNotExist :
153154 return
154155
156+ class VersionHeadingEnum (Enum ):
157+ NEWEST_RELEASE = "Newest Release"
158+ LATEST_RELEASE = "Latest Release"
159+ BETA_RELEASE = "Beta Release"
160+ PRIOR_RELEASE = "Prior Release"
161+ DEVELOPMENT_BRANCH = "Development Branch"
162+
155163 def get_version_heading (self , obj , is_current_release , v3 = False ):
156164 """Returns the heading of the versions template"""
157165 if is_current_release :
158- return "Latest Release" if v3 else "Newest Release"
166+ heading = (
167+ self .VersionHeadingEnum .LATEST_RELEASE
168+ if v3
169+ else self .VersionHeadingEnum .NEWEST_RELEASE
170+ )
159171 elif all ([not is_current_release , obj .beta ]):
160- return "Beta Release"
172+ heading = self . VersionHeadingEnum . BETA_RELEASE
161173 elif all ([obj .full_release , not is_current_release ]):
162- return "Prior Release"
174+ heading = self . VersionHeadingEnum . PRIOR_RELEASE
163175 else :
164- return "Development Branch"
176+ heading = self .VersionHeadingEnum .DEVELOPMENT_BRANCH
177+ return heading .value
165178
166179 def get_v3_contributors (self , version ):
167180 """Shape the release's top contributors for the v3 contributors card."""
@@ -174,7 +187,9 @@ def get_v3_context_data(self, **kwargs):
174187 obj = self .object
175188 is_current_release = self .extra_context ["current_version" ] == obj
176189 heading = self .get_version_heading (obj , is_current_release , v3 = True )
177- is_development_branch = heading == "Development Branch"
190+ is_development_branch = (
191+ heading == self .VersionHeadingEnum .DEVELOPMENT_BRANCH .value
192+ )
178193
179194 ctx = {
180195 "hero_title" : f"{ heading } ({ obj .display_name } )" ,
0 commit comments