Marketplace Add-Ons

Nuxeo Drive

This page is about Nuxeo Drive 2. For versions 1.x see the page Nuxeo Drive 1.x Dev Documentation.

Installation

The Nuxeo Drive package requires no specific installation steps. It can be installed like any other package from the Marketplace or from the Admin Center.

After Nuxeo Drive has been installed on the server, users have a Nuxeo Drive tab on their Home.

Configuration

Coding Style Guide

We tend to follow the PEP8, that's all.

To help with this requirement, you can automate checks and formatting using pre-commit: it will call predefined hooks and black for you to ensure there is no regression and to keep the code clean.

For core developers, the whole mecanism is installed with the developer environment. But if you are a contributor, you can easily use it:

pip install pre-commit
pre-commit install

Note: on Windows you will need to have Git installed.

Nuxeo Drive Contributor Guide

This guide is for developers willing to work on the Nuxeo Drive codebase itself.

Note that many behaviors of Nuxeo Drive can be customized without actually changing the code of Nuxeo Drive but by contributing to the server side extension points instead.

The projects comes into two parts: the addon deployed on the Nuxeo server, written in Java and the client written in Python.

Nuxeo Drive Client is a Python daemon that looks for changes on the local machine filesystem in a specific folder and on a remote workspace on the Nuxeo server using the Content Automation HTTP API and propagates those changes one way or the other.

Building the Server Addon

To build the nuxeo-drive addon see the related nuxeo-drive-server GitHub repository.

To build the Marketplace package see the related marketplace-drive GitHub repository.

Building the Nuxeo Drive Client

See docs/deployment.md.

Client Architecture

Nuxeo Drive architecture

CommandLine

Handle the basic commandline arguments, create the Manager, and depending on the argument create a ConsoleApplication or Application.

Manager

Handle all the generic behavior of Nuxeo Drive: auto-updates, bind of an engine, declaration of differents engine types, tracker.

Engine

Handle one server synchronization, can be extend to customize the behavior, it creates all the synchronization structure: QueueManager, LocalWatcher, RemoteWatcher, DAO.

DAO

Abstraction for accessing the SQLite database, each Engine has its own DAO and so database

LocalWatcher

Handle the local scan on startup and then the FS events, updating the States stored in DAO, and if needed queueing the State to be processed

RemoteWatcher

Handle the remote scan for the first synchronization and then the incremental polling from the server

QueueManager

Handle the different types of Processor to process any remote or local modification

RemoteFileProcessor

Specialized thread in uploading document

RemoteFolderProcessor

Specialized thread in create remote folder

LocalFileProcessor

Specialized thread in download document

LocalFolderProcessor

Specialized thread in create local folder

AdditionalProcessor

If the queue is big, some additional Processor will be launch by the QueueManager to either download or upload document

AppUpdater

Handle the auto-update polling and the update download process

Tracker

Use for Analytics, anonymous report of usage

ConsoleApplication

Console behavior implementation

Application

OperatingSystem GUI handles the creation of windows, systray and message

Translator

Load labels translation and offer the translation service as static method

WebDialog

Base of all Nuxeo Drive window, it is basically a WebKit view with a Drive JavaScript object mapped by the JavaScript API

QT is heavily used in the new client. Here is a diagram of the signals/slots connections:

Signals/slots connections

RemoteWatcher logic schemas: https://www.lucidchart.com/documents/view/3081771a-786b-486e-bfaa-ee7ae77a3807

LocalWatcher logic schemas: https://www.lucidchart.com/documents/view/21ec315b-3917-44aa-b9bd-5ccedfcfb02f

" target="_blank


4 months ago manonlumeau Relocated assets to fit new URL structure for 710 - fix
3 years ago Solen Guitter 134 | pdate configuration sectio
3 years ago Manon Lumeau 133
3 years ago Manon Lumeau 132
3 years ago Manon Lumeau 131 | Merge ADMINDOC with NXDOC
4 years ago Solen Guitter 130
4 years ago Solen Guitter 129
4 years ago Solen Guitter 128
4 years ago Solen Guitter 127
4 years ago Solen Guitter 126
4 years ago Solen Guitter 124
4 years ago Solen Guitter 125
4 years ago Antoine Taillefer 123
4 years ago Antoine Taillefer 121
4 years ago Antoine Taillefer 122
5 years ago Solen Guitter 120 | replacing links to Jenkins by latest release
5 years ago Solen Guitter 119 | fix broken links
5 years ago Antoine Taillefer 118
5 years ago Antoine Taillefer 117
5 years ago Antoine Taillefer 116
5 years ago Manon Lumeau 115
5 years ago Manon Lumeau 114
5 years ago Antoine Taillefer 113
5 years ago Antoine Taillefer 112
5 years ago Solen Guitter 111
5 years ago Solen Guitter 110
5 years ago Antoine Taillefer 109
5 years ago Antoine Taillefer 108
5 years ago Antoine Taillefer 107
5 years ago Antoine Taillefer 106
5 years ago Antoine Taillefer 105
5 years ago Antoine Taillefer 104
5 years ago Antoine Taillefer 103
5 years ago Antoine Taillefer 102
5 years ago Antoine Taillefer 101
6 years ago Antoine Taillefer 100
6 years ago Solen Guitter 99 | Fixed broken link
6 years ago Solen Guitter 98
6 years ago Solen Guitter 97 | Removed related topics from TOC
6 years ago Solen Guitter 96 | Moved other"
6 years ago Solen Guitter 94 | Fixed typo
6 years ago Solen Guitter 95 | JIRA Issue macro params updated with additional server info
6 years ago Antoine Taillefer 93
6 years ago Antoine Taillefer 92
6 years ago Antoine Taillefer 91
6 years ago Antoine Taillefer 90
6 years ago Antoine Taillefer 89
6 years ago Antoine Taillefer 87
6 years ago Antoine Taillefer 88
6 years ago Antoine Taillefer 86
6 years ago Antoine Taillefer 85
6 years ago Florent Guillaume 84
6 years ago Solen Guitter 83
6 years ago Solen Guitter 82 | Added TOC and fixed typos
6 years ago Antoine Taillefer 81
6 years ago Antoine Taillefer 80
6 years ago Antoine Taillefer 79
6 years ago Antoine Taillefer 78
6 years ago Antoine Taillefer 77
6 years ago Antoine Taillefer 76
6 years ago Antoine Taillefer 75
6 years ago Antoine Taillefer 74
6 years ago Antoine Taillefer 73
6 years ago Antoine Taillefer 72
6 years ago Antoine Taillefer 71
6 years ago Antoine Taillefer 70
6 years ago Antoine Taillefer 69
6 years ago Antoine Taillefer 68
6 years ago Antoine Taillefer 67
6 years ago Antoine Taillefer 66
6 years ago Antoine Taillefer 65
6 years ago Antoine Taillefer 64
6 years ago Antoine Taillefer 63
6 years ago Antoine Taillefer 62
6 years ago Antoine Taillefer 61
6 years ago Antoine Taillefer 60
6 years ago Antoine Taillefer 59
6 years ago Antoine Taillefer 58
6 years ago Antoine Taillefer 57
6 years ago Antoine Taillefer 56
6 years ago Antoine Taillefer 55
6 years ago Antoine Taillefer 54
6 years ago Antoine Taillefer 53
6 years ago Antoine Taillefer 52
6 years ago Antoine Taillefer 51
6 years ago Antoine Taillefer 50
6 years ago Antoine Taillefer 49
6 years ago Antoine Taillefer 48
6 years ago Antoine Taillefer 47
6 years ago Antoine Taillefer 46
6 years ago Antoine Taillefer 45
6 years ago Antoine Taillefer 44
6 years ago Antoine Taillefer 43
6 years ago Antoine Taillefer 42
6 years ago Antoine Taillefer 41
6 years ago Antoine Taillefer 40
6 years ago Antoine Taillefer 39
6 years ago Antoine Taillefer 38
6 years ago Antoine Taillefer 37
6 years ago Antoine Taillefer 36
6 years ago Antoine Taillefer 35
6 years ago Antoine Taillefer 34
6 years ago Antoine Taillefer 33
6 years ago Antoine Taillefer 32
6 years ago Antoine Taillefer 31
6 years ago Antoine Taillefer 30
6 years ago Antoine Taillefer 29
6 years ago Antoine Taillefer 28
6 years ago Antoine Taillefer 27
6 years ago Antoine Taillefer 26
6 years ago Antoine Taillefer 25
6 years ago Antoine Taillefer 24
6 years ago Antoine Taillefer 23
6 years ago Antoine Taillefer 22
6 years ago Antoine Taillefer 21
6 years ago Antoine Taillefer 20
6 years ago Antoine Taillefer 19
6 years ago Antoine Taillefer 18
6 years ago Antoine Taillefer 17
6 years ago Antoine Taillefer 16
6 years ago Antoine Taillefer 15
6 years ago Antoine Taillefer 14
6 years ago Antoine Taillefer 13
6 years ago Antoine Taillefer 12
6 years ago Antoine Taillefer 11
6 years ago Antoine Taillefer 10
6 years ago Antoine Taillefer 9
6 years ago Antoine Taillefer 8
6 years ago Antoine Taillefer 7
6 years ago Antoine Taillefer 6
6 years ago Antoine Taillefer 5
6 years ago Antoine Taillefer 4
6 years ago Antoine Taillefer 3
6 years ago Antoine Taillefer 2
6 years ago Antoine Taillefer 1
History: Created by Antoine Taillefer

We'd love to hear your thoughts!

All fields required