コード例 #1
0
def _get_unlock_link(self, obj, request):
    """
    Generate an unlock link for the Versioning Admin
    """
    # If the version is not draft no action should be present
    if obj.state != constants.DRAFT or not version_is_locked(obj):
        return ""

    disabled = True
    # Check whether the lock can be removed
    # Check that the user has unlock permission
    if version_is_locked(obj) and request.user.has_perm(
            'djangocms_version_locking.delete_versionlock'):
        disabled = False

    unlock_url = reverse('admin:{app}_{model}_unlock'.format(
        app=obj._meta.app_label,
        model=self.model._meta.model_name,
    ),
                         args=(obj.pk, ))

    return render_to_string('djangocms_version_locking/admin/unlock_icon.html',
                            {
                                'unlock_url': unlock_url,
                                'disabled': disabled
                            })
コード例 #2
0
def locked(self, version):
    """
    Generate an locked field for Versioning Admin
    """
    if version.state == constants.DRAFT and version_is_locked(version):
        return render_to_string(
            'djangocms_version_locking/admin/locked_icon.html')
    return ""
コード例 #3
0
def add_alias_version_lock(obj, field):
    version = obj.versions.all()[0]
    lock_icon = ""
    if version.state == DRAFT and version_is_locked(version):
        lock_icon = render_to_string("djangocms_version_locking/admin/locked_mixin_icon.html")
    return format_html(
        "{is_locked}{field_value}",
        is_locked=lock_icon,
        field_value=getattr(obj, field),
    )
コード例 #4
0
 def inner(version, **kwargs):
     old_save(version, **kwargs)
     # A draft version is locked by default
     if version.state == constants.DRAFT:
         if not version_is_locked(version):
             # create a lock
             create_version_lock(version, version.created_by)
     # A any other state than draft has no lock, an existing lock should be removed
     else:
         remove_version_lock(version)
     return version
コード例 #5
0
 def inner(version, user):
     try:
         # if there's a prepoluated field on version object
         # representing a draft lock, use it
         cached_draft_version_user_id = getattr(version,
                                                "_draft_version_user_id")
         if cached_draft_version_user_id and cached_draft_version_user_id != user.pk:
             raise ConditionFailed(
                 message.format(
                     user="******".format(cached_draft_version_user_id)))
     except AttributeError:
         draft_version = get_latest_draft_version(version)
         lock = version_is_locked(draft_version)
         if lock and lock.created_by != user:
             raise ConditionFailed(message.format(user=lock.created_by))
コード例 #6
0
    def test_version_is_unlocked_for_archived(self):
        """
        A version lock is not present when a content version is in an archived state
        """
        poll_version = factories.PollVersionFactory(state=constants.DRAFT)
        archive_url = self.get_admin_url(self.versionable.version_model_proxy, 'archive', poll_version.pk)
        version_lock = version_is_locked(poll_version)
        user = self.get_superuser()
        version_lock.created_by = user
        version_lock.save()

        with self.login_user_context(user):
            self.client.post(archive_url)

        updated_poll_version = Version.objects.get(pk=poll_version.pk)

        # The state is now ARCHIVED
        self.assertEqual(updated_poll_version.state, constants.ARCHIVED)
        # Version lock does not exist
        self.assertFalse(hasattr(updated_poll_version, 'versionlock'))
コード例 #7
0
 def is_locked(self, obj):
     version = self.get_version(obj)
     if version.state == DRAFT and version_is_locked(version):
         return render_to_string(
             "djangocms_version_locking/admin/locked_icon.html")
     return ""
コード例 #8
0
 def inner(version, user):
     draft_version = get_latest_draft_version(version)
     lock = version_is_locked(draft_version)
     if lock and lock.created_by != user:
         raise ConditionFailed(message.format(user=lock.created_by))
コード例 #9
0
 def inner(version, user):
     lock = version_is_locked(version)
     if lock and lock.created_by != user:
         raise ConditionFailed(message.format(user=lock.created_by))