Re: [yocto-patches] [layerindex-web][PATCH 1/1] layerindex: Use settings.DEFAULT_BRANCH instead of hardcoded branch name
Tim Orling <[email protected]> Wed, 24 Jun 2026 11:18:56 -0700
| Newsgroups | org.yoctoproject.lists.yocto-patches |
|---|---|
| Message-ID | <CAOyo-856-P7s20Zwu70u5jniEbH65NdfDiJDeOuwKH=JLiAiSQ@mail.gmail.com> |
Hi Sandeep, It would also be nice to include a use case in the git commit explaining what is driving this change? Also, see comments below regarding the opportunity to rename the 'master_branch' variable to 'default_branch' for better code consistency. On Wed, Jun 24, 2026 at 11:08 AM Piotr Bulinski <[email protected]> wrote: > Hi Sandeep, > > Thank you for the patch. > > In the layerindex/update_layer.py you are updating the default value of `--branch` > to an empty string, > which is inconsistent with the rest of the changes in this patch. > > In the same file, system settings are already imported at line 298, so > perhaps that import should be moved above the parser logic > to allow you to use `settings.DEFAULT_BRANCH` as a default value for the > `--branch` option instead of an empty string. > > Best regards, > Piotr Buliński > > On Fri, Jun 19, 2026 at 11:52 PM Sandeep Gundlupet Raju < > [email protected]> wrote: > >> Replace all hardcoded branch name references with settings.DEFAULT_BRANCH >> so the default branch can be changed from a single location in settings.py >> without modifying individual source files. DEFAULT_BRANCH defaults to >> 'master'. >> >> - settings.py: add DEFAULT_BRANCH = 'master' >> - docker/settings.py: add DEFAULT_BRANCH = 'master' >> - layerindex/urls.py: use _DEFAULT_BRANCH from settings >> - layerindex/views.py: use settings.DEFAULT_BRANCH (10 occurrences) >> - layerindex/models.py: add import settings; use settings.DEFAULT_BRANCH >> - layerindex/update.py: use settings.DEFAULT_BRANCH >> - layerindex/update_layer.py: resolve branch from settings.DEFAULT_BRANCH >> - layerindex/bulkchange.py: use settings.DEFAULT_BRANCH >> - layerindex/tools/import_layer.py: use settings.DEFAULT_BRANCH >> - layerindex/tools/import_wiki_layers.py: add import settings; use >> DEFAULT_BRANCH >> - layerindex/tools/import_classic_wiki.py: add import settings; use >> DEFAULT_BRANCH >> - layerindex/tools/update_classic_status.py: add import settings; use >> DEFAULT_BRANCH >> - rrs/tools/historytool.py: use settings.DEFAULT_BRANCH >> >> AI-Generated: GitHub Copilot (Claude Sonnet 4.6) >> >> Signed-off-by: Sandeep Gundlupet Raju <[email protected]> >> --- >> docker/settings.py | 2 ++ >> layerindex/bulkchange.py | 2 +- >> layerindex/models.py | 5 +++-- >> layerindex/tools/import_classic_wiki.py | 3 ++- >> layerindex/tools/import_layer.py | 4 ++-- >> layerindex/tools/import_wiki_layers.py | 3 ++- >> layerindex/tools/update_classic_status.py | 7 ++++--- >> layerindex/update.py | 2 +- >> layerindex/update_layer.py | 4 +++- >> layerindex/urls.py | 16 +++++++++------- >> layerindex/views.py | 20 ++++++++++---------- >> rrs/tools/historytool.py | 4 ++-- >> settings.py | 3 +++ >> 13 files changed, 44 insertions(+), 31 deletions(-) >> >> diff --git a/docker/settings.py b/docker/settings.py >> index e3ae0fd..85b7efd 100644 >> --- a/docker/settings.py >> +++ b/docker/settings.py >> @@ -315,3 +315,5 @@ SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', >> 'https') >> SECURE_BROWSER_XSS_FILTER = True >> SECURE_CONTENT_TYPE_NOSNIFF = True >> >> +# Default branch name used across the layer index >> +DEFAULT_BRANCH = 'master' >> diff --git a/layerindex/bulkchange.py b/layerindex/bulkchange.py >> index 0ec4058..11cd7a6 100644 >> --- a/layerindex/bulkchange.py >> +++ b/layerindex/bulkchange.py >> @@ -98,7 +98,7 @@ def main(): >> utils.setup_django() >> import settings >> >> - branch = utils.get_branch('master') >> + branch = utils.get_branch(settings.DEFAULT_BRANCH) >> fetchdir = settings.LAYER_FETCH_DIR >> >> import layerindex.models import LayerItem >> diff --git a/layerindex/models.py b/layerindex/models.py >> index 864264b..7a09962 100644 >> --- a/layerindex/models.py >> +++ b/layerindex/models.py >> @@ -18,6 +18,7 @@ import os.path >> import re >> import posixpath >> import codecs >> +import settings >> >> from . import utils >> >> @@ -190,7 +191,7 @@ class LayerItem(models.Model): >> return fetch_dir >> >> def get_absolute_url(self): >> - return reverse('layer_item', args=('master',self.name)); >> + return reverse('layer_item', args=(settings.DEFAULT_BRANCH, >> self.name)); >> >> def __str__(self): >> return self.name >> @@ -672,7 +673,7 @@ class ClassicRecipe(Recipe): >> ('E', 'Equivalent functionality'), >> ('D', 'Direct match'), >> ] >> - cover_layerbranch = models.ForeignKey(LayerBranch, >> verbose_name='Covering layer', blank=True, null=True, limit_choices_to = >> {'branch__name': 'master'}, on_delete=models.SET_NULL) >> + cover_layerbranch = models.ForeignKey(LayerBranch, >> verbose_name='Covering layer', blank=True, null=True, limit_choices_to = >> {'branch__name': settings.DEFAULT_BRANCH}, on_delete=models.SET_NULL) >> cover_pn = models.CharField('Covering recipe', max_length=100, >> blank=True) >> cover_status = models.CharField(max_length=1, >> choices=COVER_STATUS_CHOICES, default='U') >> cover_verified = models.BooleanField(default=False) >> diff --git a/layerindex/tools/import_classic_wiki.py >> b/layerindex/tools/import_classic_wiki.py >> index bd7ab9a..e8c4c8c 100755 >> --- a/layerindex/tools/import_classic_wiki.py >> +++ b/layerindex/tools/import_classic_wiki.py >> @@ -84,6 +84,7 @@ def main(): >> options, args = parser.parse_args(sys.argv) >> >> utils.setup_django() >> + import settings >> from layerindex.models import LayerItem, LayerBranch, Recipe, >> ClassicRecipe >> from django.db import transaction >> >> @@ -178,7 +179,7 @@ def main(): >> res = >> list(LayerItem.objects.filter(name=newlayer)[:1]) >> if res: >> newlayeritem = res[0] >> - recipe.cover_layerbranch = >> newlayeritem.get_layerbranch('master') >> + recipe.cover_layerbranch = >> newlayeritem.get_layerbranch(settings.DEFAULT_BRANCH) >> else: >> logger.info('Replacement layer "%s" for >> %s could not be found' % (newlayer, pn)) >> recipe.cover_pn = newpn >> diff --git a/layerindex/tools/import_layer.py >> b/layerindex/tools/import_layer.py >> index 79c679e..cdbd40d 100755 >> --- a/layerindex/tools/import_layer.py >> +++ b/layerindex/tools/import_layer.py >> @@ -284,7 +284,7 @@ def main(): >> if not os.path.exists(fetchdir): >> os.makedirs(fetchdir) >> >> - master_branch = utils.get_branch('master') >> + master_branch = utils.get_branch(settings.DEFAULT_BRANCH) >> > We have an opportunity here to rename master_branch variable to default_branch to align better with the new direction. > core_layer = None >> try: >> with transaction.atomic(): >> @@ -311,7 +311,7 @@ def main(): >> logger.error("Fetch failed: %s" % str(e)) >> sys.exit(1) >> >> - actual_branch = 'master' >> + actual_branch = settings.DEFAULT_BRANCH >> if (options.actual_branch): >> actual_branch = options.actual_branch >> try: >> diff --git a/layerindex/tools/import_wiki_layers.py >> b/layerindex/tools/import_wiki_layers.py >> index 061f6df..f287bf6 100755 >> --- a/layerindex/tools/import_wiki_layers.py >> +++ b/layerindex/tools/import_wiki_layers.py >> @@ -35,6 +35,7 @@ def main(): >> options, args = parser.parse_args(sys.argv) >> >> utils.setup_django() >> + import settings >> from layerindex.models import LayerItem, LayerBranch, LayerDependency >> from django.db import transaction >> >> @@ -49,7 +50,7 @@ def main(): >> nowiki_re = re.compile(r'</?nowiki>') >> link_re = re.compile(r'\[(http.*) +link\]') >> readme_re = re.compile(r';f=[a-zA-Z0-9/-]*README;') >> - master_branch = utils.get_branch('master') >> + master_branch = utils.get_branch(settings.DEFAULT_BRANCH) > > Same comment here about 'master_branch' to 'default_branch' opportunity. > > > core_layer = None >> with transaction.atomic(): >> for line in data.splitlines(): >> diff --git a/layerindex/tools/update_classic_status.py >> b/layerindex/tools/update_classic_status.py >> index aa5d2ef..c8c373b 100755 >> --- a/layerindex/tools/update_classic_status.py >> +++ b/layerindex/tools/update_classic_status.py >> @@ -83,6 +83,7 @@ def main(): >> args = parser.parse_args() >> >> utils.setup_django() >> + import settings >> from layerindex.models import LayerItem, LayerBranch, Recipe, >> ClassicRecipe, Update, ComparisonRecipeUpdate >> from django.db import transaction >> >> @@ -121,7 +122,7 @@ def main(): >> try: >> with transaction.atomic(): >> def recipe_pn_query(pn): >> - return >> Recipe.objects.filter(layerbranch__branch__name='master').filter(pn=pn).order_by('-layerbranch__layer__index_preference') >> + return >> Recipe.objects.filter(layerbranch__branch__name=settings.DEFAULT_BRANCH).filter(pn=pn).order_by('-layerbranch__layer__index_preference') >> >> if args.import_data: >> recipequery = >> ClassicRecipe.objects.filter(layerbranch=layerbranch) >> @@ -141,9 +142,9 @@ def main(): >> orig_layerbranch = recipe.cover_layerbranch >> recipe.cover_layerbranch = >> layerbranches.get(cover_layer, None) >> if recipe.cover_layerbranch is None: >> - recipe.cover_layerbranch = >> LayerBranch.objects.filter(branch__name='master', >> layer__name=cover_layer).first() >> + recipe.cover_layerbranch = >> LayerBranch.objects.filter(branch__name=settings.DEFAULT_BRANCH, >> layer__name=cover_layer).first() >> if recipe.cover_layerbranch is None: >> - logger.warning('Could not find cover >> layer %s in master branch' % cover_layer) >> + logger.warning('Could not find cover >> layer %s in %s branch' % (cover_layer, settings.DEFAULT_BRANCH)) >> else: >> layerbranches[cover_layer] = >> recipe.cover_layerbranch >> if orig_layerbranch != recipe.cover_layerbranch: >> diff --git a/layerindex/update.py b/layerindex/update.py >> index df3939f..788daee 100755 >> --- a/layerindex/update.py >> +++ b/layerindex/update.py >> @@ -333,7 +333,7 @@ def main(): >> >> # Get a safe bitbake branch to call into from this script >> (used later on) >> safe_bitbake_branch = 'origin/master' >> - master_branch = Branch.objects.filter(name='master').first() >> + master_branch = >> Branch.objects.filter(name=settings.DEFAULT_BRANCH).first() >> if master_branch and master_branch.bitbake_branch: >> safe_bitbake_branch = 'origin/' + >> master_branch.bitbake_branch >> > Same pattern here for 'master_branch' to 'default_branch' name change opportunity. > >> diff --git a/layerindex/update_layer.py b/layerindex/update_layer.py >> index 33c5cfb..6248f78 100644 >> --- a/layerindex/update_layer.py >> +++ b/layerindex/update_layer.py >> @@ -250,7 +250,7 @@ def main(): >> >> parser.add_option("-b", "--branch", >> help = "Specify branch to update", >> - action="store", dest="branch", default='master') >> + action="store", dest="branch", default='') >> parser.add_option("-l", "--layer", >> help = "Layer to update", >> action="store", dest="layer") >> @@ -304,6 +304,8 @@ def main(): >> >> logger.setLevel(options.loglevel) >> >> + if not options.branch: >> + options.branch = settings.DEFAULT_BRANCH >> branch = utils.get_branch(options.branch) >> if not branch: >> logger.error("Specified branch %s is not valid" % options.branch) >> diff --git a/layerindex/urls.py b/layerindex/urls.py >> index 51a832d..e7b0531 100644 >> --- a/layerindex/urls.py >> +++ b/layerindex/urls.py >> @@ -20,6 +20,8 @@ from layerindex.views import LayerListView, >> LayerReviewListView, LayerReviewDeta >> from layerindex.models import LayerItem, Recipe, RecipeChangeset >> from rest_framework import routers >> from . import restviews >> +import settings as _settings >> +_DEFAULT_BRANCH = getattr(_settings, 'DEFAULT_BRANCH', 'master') >> >> router = routers.DefaultRouter() >> router.register(r'branches', restviews.BranchViewSet) >> @@ -39,23 +41,23 @@ router.register(r'incFiles', restviews.IncFileViewSet) >> >> urlpatterns = [ >> re_path(r'^$', >> - RedirectView.as_view(url=reverse_lazy('layer_list', >> args=('master',)), permanent=False), >> + RedirectView.as_view(url=reverse_lazy('layer_list', >> args=(_DEFAULT_BRANCH,)), permanent=False), >> name='frontpage'), >> >> re_path(r'^api/', include(router.urls)), >> >> re_path(r'^layers/$', >> - RedirectView.as_view(url=reverse_lazy('layer_list', >> args=('master',)), permanent=False)), >> + RedirectView.as_view(url=reverse_lazy('layer_list', >> args=(_DEFAULT_BRANCH,)), permanent=False)), >> re_path(r'^layer/(?P<slug>[-\.\w]+)/$', >> - RedirectParamsView.as_view(permanent=False), {'redirect_name': >> 'layer_item', 'branch': 'master'}), >> + RedirectParamsView.as_view(permanent=False), {'redirect_name': >> 'layer_item', 'branch': _DEFAULT_BRANCH}), >> re_path(r'^recipes/$', >> - RedirectView.as_view(url=reverse_lazy('recipe_search', >> args=('master',)), permanent=False)), >> + RedirectView.as_view(url=reverse_lazy('recipe_search', >> args=(_DEFAULT_BRANCH,)), permanent=False)), >> re_path(r'^machines/$', >> - RedirectView.as_view(url=reverse_lazy('machine_search', >> args=('master',)), permanent=False)), >> + RedirectView.as_view(url=reverse_lazy('machine_search', >> args=(_DEFAULT_BRANCH,)), permanent=False)), >> re_path(r'^distros/$', >> - RedirectView.as_view(url=reverse_lazy('distro_search', >> args=('master',)), permanent=False)), >> + RedirectView.as_view(url=reverse_lazy('distro_search', >> args=(_DEFAULT_BRANCH,)), permanent=False)), >> re_path(r'^classes/$', >> - RedirectView.as_view(url=reverse_lazy('class_search', >> args=('master',)), permanent=False)), >> + RedirectView.as_view(url=reverse_lazy('class_search', >> args=(_DEFAULT_BRANCH,)), permanent=False)), >> re_path(r'^submit/$', edit_layer_view, {'template_name': >> 'layerindex/submitlayer.html'}, name="submit_layer"), >> re_path(r'^submit/thanks/$', >> TemplateView.as_view( >> diff --git a/layerindex/views.py b/layerindex/views.py >> index 84750f7..d3d8181 100644 >> --- a/layerindex/views.py >> +++ b/layerindex/views.py >> @@ -114,7 +114,7 @@ def delete_layer_view(request, template_name, slug): >> raise PermissionDenied >> if request.method == 'POST': >> layeritem.delete() >> - return HttpResponseRedirect(reverse('layer_list', >> args=('master',))) >> + return HttpResponseRedirect(reverse('layer_list', >> args=(settings.DEFAULT_BRANCH,))) >> else: >> return render(request, template_name, { >> 'object': layeritem, >> @@ -122,7 +122,7 @@ def delete_layer_view(request, template_name, slug): >> 'cancel_url': layeritem.get_absolute_url() >> }) >> >> -def update_layer_view(request, template_name, branch='master', >> slug=None): >> +def update_layer_view(request, template_name, >> branch=settings.DEFAULT_BRANCH, slug=None): >> if not (request.user.is_authenticated and request.user.is_staff): >> raise PermissionDenied >> return_url = None >> @@ -157,7 +157,7 @@ def update_layer_view(request, template_name, >> branch='master', slug=None): >> >> return HttpResponseRedirect(reverse_lazy('task_status', >> kwargs={'task_id': task_id})) >> >> -def edit_layer_view(request, template_name, branch='master', slug=None): >> +def edit_layer_view(request, template_name, >> branch=settings.DEFAULT_BRANCH, slug=None): >> return_url = None >> branchobj = Branch.objects.filter(name=branch)[:1].get() >> if slug: >> @@ -444,7 +444,7 @@ class LayerReviewListView(ListView): >> return super(LayerReviewListView, self).dispatch(request, *args, >> **kwargs) >> >> def get_queryset(self): >> - return >> LayerBranch.objects.filter(branch__name='master').filter(layer__status='N').order_by('layer__name') >> + return >> LayerBranch.objects.filter(branch__name=settings.DEFAULT_BRANCH).filter(layer__status='N').order_by('layer__name') >> >> class LayerDetailView(DetailView): >> model = LayerItem >> @@ -492,7 +492,7 @@ class LayerReviewDetailView(LayerDetailView): >> return super(LayerReviewDetailView, self).dispatch(request, >> *args, **kwargs) >> >> def get_context_data(self, **kwargs): >> - self.kwargs['branch'] = 'master' >> + self.kwargs['branch'] = settings.DEFAULT_BRANCH >> context = super(LayerReviewDetailView, >> self).get_context_data(**kwargs) >> return context >> >> @@ -738,7 +738,7 @@ class AdvancedRecipeSearchView(ListView): >> query = Q(**{"%s__icontains" % field: value}) >> else: >> query = Q(**{"%s" % field: value}) >> - queryset = >> Recipe.objects.filter(layerbranch__branch__name='master') >> + queryset = >> Recipe.objects.filter(layerbranch__branch__name=settings.DEFAULT_BRANCH) >> layer = self.request.GET.get('layer', '') >> if layer: >> queryset = queryset.filter(layerbranch__layer=layer) >> @@ -825,7 +825,7 @@ class BulkChangeSearchView(AdvancedRecipeSearchView): >> def get_context_data(self, **kwargs): >> context = super(BulkChangeSearchView, >> self).get_context_data(**kwargs) >> context['changeset'] = self.changeset >> - context['current_branch'] = 'master' >> + context['current_branch'] = settings.DEFAULT_BRANCH >> return context >> >> >> @@ -1341,7 +1341,7 @@ class ClassicRecipeSearchView(RecipeSearchView): >> filtered = True >> qs, filtered = self.search_recipe_query(init_qs, query_string, >> preferred=False) >> if qreversed: >> - init_rqs = >> Recipe.objects.filter(layerbranch__branch__name='master') >> + init_rqs = >> Recipe.objects.filter(layerbranch__branch__name=settings.DEFAULT_BRANCH) >> if layer_ids: >> init_rqs = >> init_rqs.filter(layerbranch__layer__id__in=layer_ids) >> excludeclasses_param = >> self.request.GET.get('excludeclasses', '') >> @@ -1735,7 +1735,7 @@ class >> ComparisonRecipeSelectView(ClassicRecipeSearchView): >> return True >> >> def get_context_data(self, **kwargs): >> - self.kwargs['branch'] = 'master' >> + self.kwargs['branch'] = settings.DEFAULT_BRANCH >> context = super(ComparisonRecipeSelectView, >> self).get_context_data(**kwargs) >> recipe = get_object_or_404(ClassicRecipe, pk=self.kwargs['pk']) >> context['select_for'] = recipe >> @@ -1761,7 +1761,7 @@ class >> ComparisonRecipeSelectView(ClassicRecipeSearchView): >> layer_ids = [int(i) for i in selectedlayers_param.split(',')] >> else: >> layer_ids = [] >> - init_qs = >> Recipe.objects.filter(layerbranch__branch__name='master') >> + init_qs = >> Recipe.objects.filter(layerbranch__branch__name=settings.DEFAULT_BRANCH) >> if layer_ids: >> init_qs = init_qs.filter(layerbranch__layer__in=layer_ids) >> qs, _ = self.search_recipe_query(init_qs, query_string, >> preferred=False) >> diff --git a/rrs/tools/historytool.py b/rrs/tools/historytool.py >> index 9f03ade..92e4b04 100755 >> --- a/rrs/tools/historytool.py >> +++ b/rrs/tools/historytool.py >> @@ -77,7 +77,7 @@ def rrs_import(args): >> if not core_layer: >> logger.error('Unable to find core layer %s' % >> settings.CORE_LAYER_NAME) >> return 1 >> - core_layerbranch = core_layer.get_layerbranch('master') >> + core_layerbranch = >> core_layer.get_layerbranch(settings.DEFAULT_BRANCH) >> if not core_layerbranch: >> logger.error('Unable to find branch master of layer %s' % >> core_layerbranch.name) >> return 1 >> @@ -130,7 +130,7 @@ def rrs_remove_duplicates(args): >> if not core_layer: >> logger.error('Unable to find core layer %s' % >> settings.CORE_LAYER_NAME) >> return 1 >> - core_layerbranch = core_layer.get_layerbranch('master') >> + core_layerbranch = >> core_layer.get_layerbranch(settings.DEFAULT_BRANCH) >> if not core_layerbranch: >> logger.error('Unable to find branch master of layer %s' % >> core_layerbranch.name) >> return 1 >> diff --git a/settings.py b/settings.py >> index 94b3dd1..08004cb 100644 >> --- a/settings.py >> +++ b/settings.py >> @@ -299,3 +299,6 @@ TASK_LOG_DIR = "/tmp/layerindex-task-logs" >> >> # Full path to directory where rrs tools stores logs >> TOOLS_LOG_DIR = "" >> + >> +# Default branch name used across the layer index >> +DEFAULT_BRANCH = 'master' >> -- >> 2.43.0 >> >>