summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/orm/models.py
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2014-10-20 16:26:14 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-10-30 13:39:51 +0000
commit24dab21567eae1b993f21e9ba8a5e7d4d31bfa13 (patch)
tree98abce80aeb44f17510ee8ab1bfe11114b7648da /bitbake/lib/toaster/orm/models.py
parent298c3d52bab5cf38c37438c54853d6803ca194bd (diff)
downloadpoky-24dab21567eae1b993f21e9ba8a5e7d4d31bfa13.tar.gz
bitbake: toaster: update web vcs fields for layers
We update the layer vcs web fields to record extra URLs for directory and file viewing. Updating the layers view to show this data. (Bitbake rev: 14762e182c8af22fd0fa96f0ba0db1ecd2495fbc) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/orm/models.py')
-rw-r--r--bitbake/lib/toaster/orm/models.py53
1 files changed, 49 insertions, 4 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 2fd504cb5b..503b43c5db 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -609,6 +609,8 @@ class LayerIndexLayerSource(LayerSource):
609 l.up_date = li['updated'] 609 l.up_date = li['updated']
610 l.name = li['name'] 610 l.name = li['name']
611 l.vcs_url = li['vcs_url'] 611 l.vcs_url = li['vcs_url']
612 l.vcs_web_url = li['vcs_web_url']
613 l.vcs_web_tree_base_url = li['vcs_web_tree_base_url']
612 l.vcs_web_file_base_url = li['vcs_web_file_base_url'] 614 l.vcs_web_file_base_url = li['vcs_web_file_base_url']
613 l.summary = li['summary'] 615 l.summary = li['summary']
614 l.description = li['description'] 616 l.description = li['description']
@@ -738,6 +740,8 @@ class Layer(models.Model):
738 local_path = models.FilePathField(max_length=255, null = True, default = None) 740 local_path = models.FilePathField(max_length=255, null = True, default = None)
739 layer_index_url = models.URLField() 741 layer_index_url = models.URLField()
740 vcs_url = GitURLField(default = None, null = True) 742 vcs_url = GitURLField(default = None, null = True)
743 vcs_web_url = models.URLField(null = True, default = None)
744 vcs_web_tree_base_url = models.URLField(null = True, default = None)
741 vcs_web_file_base_url = models.URLField(null = True, default = None) 745 vcs_web_file_base_url = models.URLField(null = True, default = None)
742 746
743 summary = models.TextField(help_text='One-line description of the layer', null = True, default = None) 747 summary = models.TextField(help_text='One-line description of the layer', null = True, default = None)
@@ -766,13 +770,54 @@ class Layer_Version(models.Model):
766 dirpath = models.CharField(max_length=255, null = True, default = None) # LayerBranch.vcs_subdir 770 dirpath = models.CharField(max_length=255, null = True, default = None) # LayerBranch.vcs_subdir
767 priority = models.IntegerField(default = 0) # if -1, this is a default layer 771 priority = models.IntegerField(default = 0) # if -1, this is a default layer
768 772
769 def get_vcs_link_url(self, file_path="/"): 773 # code lifted, with adaptations, from the layerindex-web application https://git.yoctoproject.org/cgit/cgit.cgi/layerindex-web/
774 def _handle_url_path(self, base_url, path):
775 import re
776 if base_url:
777 if self.dirpath:
778 if path:
779 extra_path = self.dirpath + '/' + path
780 # Normalise out ../ in path for usage URL
781 extra_path = posixpath.normpath(extra_path)
782 # Minor workaround to handle case where subdirectory has been added between branches
783 # (should probably support usage URL per branch to handle this... sigh...)
784 if extra_path.startswith('../'):
785 extra_path = extra_path[3:]
786 else:
787 extra_path = self.dirpath
788 else:
789 extra_path = path
790 branchname = self.up_branch.name
791 url = base_url.replace('%branch%', branchname)
792
793 # If there's a % in the path (e.g. a wildcard bbappend) we need to encode it
794 if extra_path:
795 extra_path = extra_path.replace('%', '%25')
796
797 if '%path%' in base_url:
798 if extra_path:
799 url = re.sub(r'\[([^\]]*%path%[^\]]*)\]', '\\1', url)
800 else:
801 url = re.sub(r'\[([^\]]*%path%[^\]]*)\]', '', url)
802 return url.replace('%path%', extra_path)
803 else:
804 return url + extra_path
805 return None
806
807 def get_vcs_link_url(self):
808 if self.layer.vcs_web_url is None:
809 return None
810 return self.layer.vcs_web_url
811
812 def get_vcs_file_link_url(self, file_path=""):
770 if self.layer.vcs_web_file_base_url is None: 813 if self.layer.vcs_web_file_base_url is None:
771 return None 814 return None
772 return self.layer.vcs_web_file_base_url.replace('%path%', file_path).replace('%branch%', self.up_branch.name) 815 return self._handle_url_path(self.layer.vcs_web_file_base_url, file_path)
773 816
774 def get_vcs_link_url_dirpath(self): 817 def get_vcs_dirpath_link_url(self):
775 return self.get_vcs_link_url(self.dirpath) 818 if self.layer.vcs_web_tree_base_url is None:
819 return None
820 return self._handle_url_path(self.layer.vcs_web_tree_base_url, '')
776 821
777 822
778 def __unicode__(self): 823 def __unicode__(self):