dispatch/modules/content/models.py
def save(self, revision=True, *args, **kwargs):
        """
        Handles the saving/updating of a Publishable instance.

        Arguments:
        revision - if True, a new version of this Publishable will be created.
        """

        if revision:
            # If this is a revision, set it to be the head of the list and increment the revision id
            self.head = True
            self.revision_id += 1

            previous_revision = self.get_previous_revision()

            if not self.is_parent():
                # If this is a revision, delete the old head of the list.
                type(self).objects \
                    .filter(parent=self.parent, head=True) \
                    .update(head=None)

                # Clear the instance id to force Django to save a new instance.
                # Both fields (pk, id) required for this to work -- something to do with model inheritance
                self.pk = None
                self.id = None

                # New version is unpublished by default
                self.is_published = None

        # Set created_at to current time, but only for first version
        if not self.created_at:
            self.created_at = timezone.now()
            self.updated_at = timezone.now()

        if revision:
            self.updated_at = timezone.now()

        super(Publishable, self).save(*args, **kwargs)

        # Update the parent foreign key
        if not self.parent:
            self.parent = self
            super(Publishable, self).save(update_fields=['parent'])

        if revision:
            # Set latest version for all articles
            type(self).objects \
                .filter(parent=self.parent) \
                .update(latest_version=self.revision_id)
                
            self.latest_version = self.revision_id

        return self
def save(self, revision=True, *args, **kwargs):
        """
        Handles the saving/updating of a Publishable instance.

        Arguments:
        revision - if True, a new version of this Publishable will be created.
        """

        if revision:
            # If this is a revision, set it to be the head of the list and increment the revision id
            self.head = True
            self.revision_id += 1

            previous_revision = self.get_previous_revision()

            if not self.is_parent():
                # If this is a revision, delete the old head of the list.
                type(self).objects \
                    .filter(parent=self.parent, head=True) \
                    .update(head=None)

                # Clear the instance id to force Django to save a new instance.
                # Both fields (pk, id) required for this to work -- something to do with model inheritance
                self.pk = None
                self.id = None

                # New version is unpublished by default
                self.is_published = None

        # Set created_at to current time, but only for first version
        if not self.created_at:
            self.created_at = timezone.now()
            self.updated_at = timezone.now()

        if revision:
            self.updated_at = timezone.now()

        super(Publishable, self).save(*args, **kwargs)

        # Update the parent foreign key
        if not self.parent:
            self.parent = self
            super(Publishable, self).save(update_fields=['parent'])

        if revision:
            # Set latest version for all articles
            type(self).objects \
                .filter(parent=self.parent) \
                .update(latest_version=self.revision_id)
                
            self.latest_version = self.revision_id

        return self
def save ( self , revision = True , * args , * * kwargs ) : if revision : # If this is a revision, set it to be the head of the list and increment the revision id self . head = True self . revision_id += 1 previous_revision = self . get_previous_revision ( ) if not self . is_parent ( ) : # If this is a revision, delete the old head of the list. type ( self ) . objects . filter ( parent = self . parent , head = True ) . update ( head = None ) # Clear the instance id to force Django to save a new instance. # Both fields (pk, id) required for this to work -- something to do with model inheritance self . pk = None self . id = None # New version is unpublished by default self . is_published = None # Set created_at to current time, but only for first version if not self . created_at : self . created_at = timezone . now ( ) self . updated_at = timezone . now ( ) if revision : self . updated_at = timezone . now ( ) super ( Publishable , self ) . save ( * args , * * kwargs ) # Update the parent foreign key if not self . parent : self . parent = self super ( Publishable , self ) . save ( update_fields = [ 'parent' ] ) if revision : # Set latest version for all articles type ( self ) . objects . filter ( parent = self . parent ) . update ( latest_version = self . revision_id ) self . latest_version = self . revision_id return self
Handles the saving/updating of a Publishable instance.

        Arguments:
        revision - if True, a new version of this Publishable will be created.
Handles the saving / updating of a Publishable instance .