37 Commits

Author SHA1 Message Date
Manuel Raynaud
805ef77521 🔥(backend) remove mirroring feature
The mirroring feature was hard to maintain and not performant. We should
rely on external tools made for that like RClone.
2026-04-23 17:42:48 +02:00
Nathan Panchout
3731033f5b 🔧(project) add DJANGO_EMAIL_URL_APP environment variable
Share invitation emails embedded `Site.domain` directly, producing
schemeless links that mail clients failed to resolve. Introduce a
`DJANGO_EMAIL_URL_APP` environment variable holding the app's
absolute URL used when building invitation links, with a fallback
on the current Site domain when unset. Wire it in dev env, helm
dev values, the helm example and the env reference.
2026-04-23 12:05:26 +02:00
Nathan Vasse
352e19580e (backend) make invitation validity duration configurable via env
The invitation validity duration was hardcoded to 7 days. Expose it as
an INVITATION_VALIDITY_DURATION env var so operators can tune it per
deployment without patching settings. Default remains 7 days.
2026-04-22 10:09:31 +02:00
Nathan Panchout
3a730b87cf 📝(frontend) document explorer selection store architecture
Add an architecture doc covering the rationale behind the selection
store refactor: why React Context did not scale to 200+ rows during a
marquee drag, why useSyncExternalStore with per-id listeners enables
automatic bailout, and how global vs embedded scopes are wired.

Lives under docs/architecture/ for long-term reference.
2026-04-20 17:09:53 +02:00
Samuel Paccoud - DINUM
573499efc4 (backend) allow purging items after trashbin cutoff and grace period
An item is considered hard deleted in two cases:
- hard deletion was forced by the user while sitting in the trashbin
- the item was only soft deleted but the trashbin retention period
  has expired

Thus, a hard deleted item still exists in database with an associated
file in S3. What the asynchronous task is doing is another action:
permanently removing the item from database and its associated file
from S3. I propose to rename this action "purge".

We refactor the task to improve its resilience:
- don't recursively generate asynchronous tasks. We are already
  outside of a request cycle so we don't need to spawn new
  asynchronous tasks.
- purge the subtree from the bottom to the top: leaves first,
  root last.
- fail fast if something goes wrong and make sure the task will
  continue when we retry it.
2026-04-10 12:32:46 +02:00
Nathan Vasse
2a419c9523 📝(other) add local network setup documentation
Documents how to access the dev environment from other
devices on the local network, useful for mobile testing.
2026-03-30 10:54:06 +02:00
Hadrien Blanc
5e472506a6 📝(doc) fix various typos
Fix various typos in documentation and readme files.
2026-03-11 14:57:28 +01:00
Manuel Raynaud
d9f806920a (backend) reject uploaded file higher than DATA_UPLOAD_MAX_MEMORY_SIZE
check in the upload_ended action if the file size is higher than
DATA_UPLOAD_MAX_MEMORY_SIZE and reject it if it's the case.
2026-02-25 10:52:19 +01:00
Nathan Vasse
c89aa81d71 📝(doc) replace theming doc with customization guide
The new CSS and JS injection features needed documentation.
We merged the old theming doc into a broader customization
guide covering runtime CSS, JS injection, and footer config.
2026-02-23 16:35:07 +01:00
Nathan Panchout
9bf7fa7109 (backend) add FRONTEND_RELEASE_NOTE_ENABLED feature flag
Add new parameter the allow the display of releases notes or not.
2026-02-12 09:54:52 +01:00
Manuel Raynaud
2065ffbbb8 ♻️(helm) configure multiple celery workers
We want to configure multiple celery workers. Every worker can be scale
differently and configured differently
2026-02-10 10:11:20 +01:00
Manuel Raynaud
7817cda27c (backend) allow configuring celery task routes
Add a CELERY_TASK_ROUTES setting to enable routing specific tasks
to dedicated queues, such as routing mirror_file to its own queue.
2026-02-10 10:11:19 +01:00
Manuel Raynaud
31d9be66b9 📝(doc) write documentation explaining how to migrate the bucket
Write a documentation explaining how to migrate a bucket from one cloud
provider to another one
2026-02-10 10:11:19 +01:00
Manuel Raynaud
1a2aebddcd 📝(docs) write documentation to setup mirror feature
Write the documentation needed to setup the mirror feature.
2026-02-10 10:07:57 +01:00
Manuel Raynaud
5a30a9840f (backend) implement mirror_file task
The mirror_file task is reponsible to copy an object from a bucket to an
other one. The buckets can be in different location, in different cloud
providers so we have to download it to reupload it. The `copy` method on
the s3 client only work when the bucket are in the cloud provider infra,
like for AWS.
2026-02-10 10:07:56 +01:00
Nathan Vasse
b1ce2b110d (backend) add FRONTEND_EXTERNAL_HOME_URL setting
Add a new configuration option to define an external home URL. When set,
the frontend will redirect users to this URL instead of displaying the
default home page. This allows deployments to use a custom landing page.
2026-02-04 10:23:05 +01:00
Manuel Raynaud
46d61a9c76 🐛(backend) correctly configure celery beat to run wopi configuration
The celery beat configuration was not working correctly, we installed
the database scheduler but we didn't configure it correctly. We prefer
removing this scheduler to use the default one. Instead, the crontab
part can be configured using environment variable. By default it will be
run every night at 3AM.
2026-02-02 08:05:18 +01:00
Manuel Raynaud
ca6cbacff3 🏗️(ds_proxy) introduce how to use ds_proxy with Drive
We want to add documentation showing how to use DS_Proxy with Drive.
With proxy is fully optionnal and is here if you want to an encryption
layer between Drive and the object storage.
2026-01-23 09:18:03 +01:00
Manuel Raynaud
3901e57cab (backend) add an allowed file mimetype list
Allong the allowed extension list we added an allowed mimetype list. We
combine both to ensure that the user is allowed to make the upload. If
the mimetype is not allowed, then the file and the item are deleted.
2026-01-09 10:43:56 +01:00
Manuel Raynaud
d7eccd766f (backend) add an allowed file extension list
We want to limit what type of file can be uploaded. For this we use an
allowed list of file extension. This allowed list can be disabled using
a setting and this list is configurable using a setting. When enabled,
file with no extension and hidden file are also rejected.
2026-01-09 10:43:53 +01:00
Nathan Vasse
9f28cc61ac (back) add /users route to external api custom
We need to allow configuration of /users sub route via
the EXTERNAL_API configuration.
2025-12-18 16:13:07 +01:00
Fabre Florian
03124f4bf1 (backend) add indexed search feature flag
Add setting FEATURES_INDEXED_SEARCH that allows to disable the
search of indexed files while using the indexation tools.

Signed-off-by: Fabre Florian <ffabre@hybird.org>
2025-12-16 22:50:25 +01:00
Fabre Florian
a4307907e1 (backend) refactor indexer service
Replace "drive" by a SERVICE_NAME constant.
Merge search() & search_query() methods.

Signed-off-by: Fabre Florian <ffabre@hybird.org>
2025-12-16 22:50:25 +01:00
Fabre Florian
5492a68a99 (backend) enable limit for the indexed content
Use SEARCH_INDEXER_CONTENT_MAX_SIZE as limit (in bytes) for the file content.
Fix default configuration of OIDC_STORE_ACCESS_TOKEN

Signed-off-by: Fabre Florian <ffabre@hybird.org>
2025-12-16 22:50:25 +01:00
Fabre Florian
63cfe37695 (backend) adapt to Find new search pagination & fixes
Use nb_results instead of page/page_size argument for /search API.
Add --batch-size argument to the index command.
Fix an issue in SearchIndexer.has_text when item.mimetype is empty.

Signed-off-by: Fabre Florian <ffabre@hybird.org>
2025-12-16 22:50:25 +01:00
Fabre Florian
cad05aa4ff 🔧(compose) disable indexer in default configuration
Set SEARCH_INDEXER_CLASS=None as default configuration for dev.
Add documentation for Find service setup.

Signed-off-by: Fabre Florian <ffabre@hybird.org>
2025-12-16 22:50:25 +01:00
Nathan Vasse
9a86a5f46f (backend) enable full customization of external api
We have some instances that requires more open resource server features.
This change adds a setting that allows to cherry-pick
which api routes needs to be available or not.
2025-12-15 13:46:59 +01:00
Nathan Vasse
46fb46017d 📝(doc) add entitlement and metrics doc
Let's provide some useful informations about those two new
features.
2025-12-01 11:12:43 +01:00
Nathan Vasse
ed9a0ada35 📝(docs) add some docs
Because we lack documentation, so let's add a bit.
2025-11-19 10:12:25 +01:00
Manuel Raynaud
248612178c 🔧(backend) use setting MAX_PAGE_SIZE to configure pagination
The pagination class Viewsets.Pagination has the max_page_size set to
200. We want to be able to configure this value using a setting. A new
one MAX_PAGE_SIZE is created for this. By default its value is 200 to
not change the current behavior.
2025-11-17 15:40:26 +01:00
Nathan Vasse
71bf56afd0 📝(doc) add resource server doc
Add some documentation and provide some examples of
requests.
2025-10-31 10:50:19 +01:00
Manuel Raynaud
9746ad519b 📝(doc) document how to install drive on k8s
We support installation on kubernets. This dopcumentation is here to
show how to deploy on a developement cluster in order to understand what
is needed to do it later in production.
2025-10-13 08:45:46 +02:00
Nathan Vasse
66eeac21f3 (back) add messages widget settings vars
We need those vars to allow customization for the feedback button
to opens the messages widget.
2025-09-29 16:27:33 +02:00
Manuel Raynaud
2cb5b715fd ♻️(front) use PUT method to upload files
We need to adapt the frontend code to use the PUT method to upload a
file instead of the POST method.
The headers used to sign the url must be added to the request sent. For
now the X-ams-acl header is used.
2025-09-24 09:31:17 +02:00
Manuel Raynaud
5866183724 📝(doc) list environment variable configurable
Create a documentation listing all environment variable that can be
configured in the project.
2025-06-27 16:34:21 +02:00
virgile-deville
922b1d1289 📝(doc) add image to showcase product in readme
So that people get a preview of the product's UI

Signed-off-by: virgile-deville <virgile.deville@beta.gouv.fr>
2025-05-23 08:47:55 +02:00
virgile-deville
56274655ee 📝(doc) improve readme
Added project description logo and screenshot

Signed-off-by: virgile-deville <virgile.deville@beta.gouv.fr>
2025-05-23 08:47:55 +02:00