Exemplo n.º 1
0
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',
     )