diff options
Diffstat (limited to 'grumpy/models.py')
-rw-r--r-- | grumpy/models.py | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/grumpy/models.py b/grumpy/models.py index 49b58ee..31127a0 100644 --- a/grumpy/models.py +++ b/grumpy/models.py @@ -85,6 +85,11 @@ class Ebuild(db.Model): """Update ebuild values from ebuild_src.""" self.__init__(ebuild_src) + def rename(self, key): + self.cpv = "%s-%s" % (self.package.key, self.version) + if self.revision > 0: + self.cpv = "%s-r%d" % (self.cpv, self.revision) + def _parse_iuse(self, ebuild_src): """Returns list of USE flags from ebuild_src.""" return ','.join([f for f in ebuild_src.iuse if f[0] not in ('+','-')]) @@ -213,19 +218,22 @@ class Package(db.Model): out.append(Herd(herd)) return out + def rename(self, key): + """Rename a package and all its ebuilds""" + # Look up or create new category + cat = key.split('/')[0] + c = Category.query.filter_by(name=cat).first() + if not c: + c = Category(cat) + self.key = key + self.category = c + for ebuild in self.ebuilds.values(): + ebuild.rename(key) + def sync(self, ebuild_src, mtime=time.time()): """Update package values from ebuild_src.""" self.__init__(ebuild_src, mtime) -# def rename(self, newcat, newpkg): -# """Rename package and its ebuilds""" -# cp = "%s/%s" % (newpkg, newcat) -# self.cat = newcat -# self.pkg = newpkg -# self.cp = cp -# for ebuild in self.ebuilds: -# ebuild.cpv = "%s-%s" % (cp, ebuild.version) - class Category(db.Model): """Represents portage categories""" |