+ def ordered_patches(self):
+ return self.patches.order_by('bundlepatch__order');
+
+ def append_patch(self, patch):
+ # todo: use the aggregate queries in django 1.1
+ orders = BundlePatch.objects.filter(bundle = self).order_by('-order') \
+ .values('order')
+
+ if len(orders) > 0:
+ max_order = orders[0]['order']
+ else:
+ max_order = 0
+
+ # see if the patch is already in this bundle
+ if BundlePatch.objects.filter(bundle = self, patch = patch).count():
+ raise Exception("patch is already in bundle")
+
+ bp = BundlePatch.objects.create(bundle = self, patch = patch,
+ order = max_order + 1)
+ bp.save()
+