class ProjectRelationship(models.Model): """ Project to project relationship. This is used for subprojects """ parent = models.ForeignKey('Project', verbose_name=_('Parent'), related_name='subprojects') child = models.ForeignKey('Project', verbose_name=_('Child'), related_name='superprojects') alias = models.SlugField(_('Alias'), max_length=255, null=True, blank=True, db_index=False) objects = ChildRelatedProjectQuerySet.as_manager() def __str__(self): return '%s -> %s' % (self.parent, self.child) def save(self, *args, **kwargs): # pylint: disable=arguments-differ if not self.alias: self.alias = self.child.slug super(ProjectRelationship, self).save(*args, **kwargs) # HACK def get_absolute_url(self): return resolve(self.child)
def test_subproject_queryset_as_manager_gets_correct_class(self): mgr = ChildRelatedProjectQuerySet.as_manager() self.assertEqual(mgr.__class__.__name__, 'ManagerFromChildRelatedProjectQuerySetBase') mgr = ParentRelatedProjectQuerySet.as_manager() self.assertEqual(mgr.__class__.__name__, 'ManagerFromParentRelatedProjectQuerySetBase')
def test_subproject_queryset_as_manager_gets_correct_class(self): mgr = ChildRelatedProjectQuerySet.as_manager() self.assertEqual( mgr.__class__.__name__, 'ManagerFromChildRelatedProjectQuerySetBase', ) mgr = ParentRelatedProjectQuerySet.as_manager() self.assertEqual( mgr.__class__.__name__, 'ManagerFromParentRelatedProjectQuerySetBase', )