'Persist me, and return the saved Revision.
Take several other necessary pieces of data that aren\'t from the
form.'

def save(self, creator, document, based_on_id=None, base_rev=None, **kwargs):

    new_rev = super(RevisionForm, self).save(commit=False, **kwargs)
    new_rev.document = document
    new_rev.creator = creator
    if based_on_id:
        new_rev.based_on_id = based_on_id
    if (base_rev and (not document.allows(creator, 'edit_keywords'))):
        new_rev.keywords = base_rev.keywords
    new_rev.save()
    return new_rev
