Re: [yocto-patches] [layerindex-web][PATCH 1/1] layerindex: Use settings.DEFAULT_BRANCH instead of hardcoded branch name
Piotr Bulinski <[email protected]> Wed, 24 Jun 2026 20:07:53 +0200
| Newsgroups | org.yoctoproject.lists.yocto-patches |
|---|---|
| Message-ID | <CAGjhzsKyprtbc53Ra2MiP31bygMhmmzg5NHhgo3b_snZNjj3YA@mail.gmail.com> |
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) > 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) > 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 > > 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 > >