def has_edit_permission(self, request):

        if self.privacidade == STATUS_TA_PRIVATE:
            if request.user not in self.owners.all():
                raise Http404()

            if not self.can_use_dynamic_editing(request.user):
                messages.error(request, _(
                    'Usuário sem permissão para edição.'))
                return False
            else:
                return True

        if self.privacidade == STATUS_TA_IMMUTABLE_RESTRICT:
            messages.error(request, _(
                'A edição deste Texto Articulado está bloqueada. '
                'Este documento é imutável e de acesso é restrito.'))
            return False

        if self.privacidade == STATUS_TA_IMMUTABLE_PUBLIC:
            messages.error(request, _(
                'A edição deste Texto Articulado está bloqueada. '
                'Este documento é imutável.'))
            return False

        if self.editing_locked and\
            self.privacidade in (STATUS_TA_PUBLIC, STATUS_TA_EDITION) and\
                not request.user.has_perm(
                    'compilacao.lock_unlock_textoarticulado'):
            messages.error(request, _(
                'A edição deste Texto Articulado está bloqueada. '
                'É necessário acessar com usuário que possui '
                'permissão de desbloqueio.'))
            return False

        if not request.user.has_perm(
                'compilacao.change_dispositivo_edicao_dinamica'):
            messages.error(request, _(
                'Usuário sem permissão para edição.'))
            return False

        if self.editable_only_by_owners and\
                request.user not in self.owners.all():
            messages.error(request, _(
                'Apenas usuários donos do Texto Articulado podem editá-lo.'))
            return False

        return True