aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2018-04-09 17:33:49 +1200
committerPaul Eggleton <paul.eggleton@linux.intel.com>2018-05-04 23:57:53 +1200
commit34466bac1d008c03635db7b639d0939303c566f0 (patch)
tree376a219a48e2f30dc8075a0f8f66507e7ad227b6
parent1f037470fb999f6799c2db1774bc00b4a205c17f (diff)
downloadopenembedded-core-contrib-34466bac1d008c03635db7b639d0939303c566f0.tar.gz
rrs: default python2/3 environments for new maintenance plan layer branches
It's a bit of a pain to have to set the two python environment fields on every record in order to have things set correctly, and it can easily get forgotten, so try to set them automatically by default (assuming reasonable naming). Note that this does introduce an annoying behaviour whereby if you click "Add another Maintenance plan layer branch" and then decide you don't want it, the admin form will insist you fill in the fields unless you clear out the python2/3 environment fields. I'm not sure how to fix that, so I'm leaving it as-is for now. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-rw-r--r--layerindex/models.py14
-rw-r--r--rrs/admin.py30
2 files changed, 44 insertions, 0 deletions
diff --git a/layerindex/models.py b/layerindex/models.py
index e9751f3b6a..ff164baaea 100644
--- a/layerindex/models.py
+++ b/layerindex/models.py
@@ -47,6 +47,20 @@ class PythonEnvironment(models.Model):
cmd = self.python_command
return cmd
+ @staticmethod
+ def get_default_python2_environment():
+ for env in PythonEnvironment.objects.all().order_by('id'):
+ if env.name.replace(' ', '').lower().startswith(('python2', 'py2')):
+ return env
+ return None
+
+ @staticmethod
+ def get_default_python3_environment():
+ for env in PythonEnvironment.objects.all().order_by('id'):
+ if env.name.replace(' ', '').lower().startswith(('python3', 'py3')):
+ return env
+ return None
+
def __str__(self):
return self.name
diff --git a/rrs/admin.py b/rrs/admin.py
index d00785f032..07e09f4f4a 100644
--- a/rrs/admin.py
+++ b/rrs/admin.py
@@ -4,16 +4,46 @@
#
# Licensed under the MIT license, see COPYING.MIT for details
+from django.utils.functional import curry
+
from django.contrib import admin
from django.contrib.admin import DateFieldListFilter
+from django.forms.models import BaseInlineFormSet
from rrs.models import Release, Milestone, Maintainer, RecipeMaintainerHistory, \
RecipeMaintainer, RecipeDistro, RecipeUpgrade, RecipeUpstream, \
RecipeUpstreamHistory, MaintenancePlan, MaintenancePlanLayerBranch, \
RecipeMaintenanceLink
+class MaintenancePlanLayerBranchFormSet(BaseInlineFormSet):
+ def __init__(self, *args, **kwargs):
+ from layerindex.models import PythonEnvironment
+ initialfields = {}
+ py2env = PythonEnvironment.get_default_python2_environment()
+ if py2env:
+ initialfields['python2_environment'] = py2env.id
+ py3env = PythonEnvironment.get_default_python3_environment()
+ if py3env:
+ initialfields['python3_environment'] = py3env.id
+ if initialfields:
+ kwargs['initial'] = [initialfields]
+ super(MaintenancePlanLayerBranchFormSet, self).__init__(*args, **kwargs)
+
+ @property
+ def empty_form(self):
+ from layerindex.models import PythonEnvironment
+ form = super(MaintenancePlanLayerBranchFormSet, self).empty_form
+ py2env = PythonEnvironment.get_default_python2_environment()
+ if py2env:
+ form.fields['python2_environment'].initial = py2env
+ py3env = PythonEnvironment.get_default_python3_environment()
+ if py3env:
+ form.fields['python3_environment'].initial = py3env
+ return form
+
class MaintenancePlanLayerBranchInline(admin.StackedInline):
model = MaintenancePlanLayerBranch
+ formset = MaintenancePlanLayerBranchFormSet
readonly_fields = ['upgrade_date', 'upgrade_rev']
min_num = 1
extra = 0