cubicweb issueshttps://forge.extranet.logilab.fr/groups/cubicweb/-/issues2024-03-26T13:35:27Zhttps://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1012Publish March activity report2024-03-26T13:35:27ZNicola SpantiPublish March activity report0. Précédent : https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1011
1. Actuel : [branche](https://forge.extranet.logilab.fr/cubicweb/cubicweb.org/-/tree/topic/default/report-2024-03), demande de fusion *à faire*
2. Suite : h...0. Précédent : https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1011
1. Actuel : [branche](https://forge.extranet.logilab.fr/cubicweb/cubicweb.org/-/tree/topic/default/report-2024-03), demande de fusion *à faire*
2. Suite : https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1013Nicola SpantiNicola Spanti2024-04-02https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1011Publish February activity report2024-03-26T13:34:27ZNicola SpantiPublish February activity report0. Précédent : https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/970
1. RMO : https://hedgedoc.logilab.fr/AvfBQeKYQ2mkQMHf_55f3g
2. Actuel : [branche](https://forge.extranet.logilab.fr/cubicweb/cubicweb.org/-/tree/topic/defaul...0. Précédent : https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/970
1. RMO : https://hedgedoc.logilab.fr/AvfBQeKYQ2mkQMHf_55f3g
2. Actuel : [branche](https://forge.extranet.logilab.fr/cubicweb/cubicweb.org/-/tree/topic/default/report-2024-02), [demande de fusion](https://forge.extranet.logilab.fr/cubicweb/cubicweb.org/-/merge_requests/44)
3. Suite : https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1012Nicola SpantiNicola Spanti2024-03-05https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1035Définir le format de billet de blog publique du mois2024-03-26T10:26:41ZNicola SpantiDéfinir le format de billet de blog publique du mois## Contexte
Chaque mois est fait un récapitulatif publique sur ce qui s'est passé dans l'écosystème CubicWeb :
- résultat : https://www.cubicweb.org/blogentry
- code : https://forge.extranet.logilab.fr/cubicweb/cubicweb.org/-/tree/branc...## Contexte
Chaque mois est fait un récapitulatif publique sur ce qui s'est passé dans l'écosystème CubicWeb :
- résultat : https://www.cubicweb.org/blogentry
- code : https://forge.extranet.logilab.fr/cubicweb/cubicweb.org/-/tree/branch/default/blogentries
## Propositions
Elles sont contradictoires.
### Proposition chacun fait comme ille veut mais avec consistance
#### Motion
Chaque responsable CubicWeb peut faire son propre format. Cependant, dans le cadre d'une mandature, il doit se tenir au même format.
#### Argumentaire
##### Pour
C'est moins contraignant et donc plus facile pour chacun de faire à sa manière. Et si besoin d'un cadre, il y a les billets de blogue précédents.
##### Contre
Ce n'est pas uniforme, donc c'est chiant pour les lecteurs et lectrices.
### Proposition à la Arnaud
Exemple : https://www.cubicweb.org/blogentry/rh-240213
#### Motion
1. Faire un bref résumé récapitulatif
2. Aller vite fait dans les détails des sujets via une partie dédiée pour chaque macro-sujet
3. Lister les nouvelles versions publiées
4. Rappeler que ce n'est qu'un résumé non-exhaustif et comment venir contribuer
#### Argumentaire
##### Pour
C'est simple et rapide, donc efficace, et ce autant du point de vue rédaction que lecture.
##### Contre
On peut trouver que c'est trop bref.
### Proposition à la Spanti
Exemple : https://forge.extranet.logilab.fr/cubicweb/cubicweb.org/-/commit/0b1036a4c058b315e4a85631f728d294d77d18e1
#### Motion
Faire une liste détaillée de ce qui a été publié avec les sources via des liens.
#### Argumentaire
##### Pour
C'est exhaustif. Tout est concentré au même endroit, avec les liens pour les détails. De plus, le journal des changements des dépôts est généralement généré automatique et s'avère donc souvent insuffisant. Du coup, il n'y a pas besoin de chercher une information dans les multiples lieux de la forge et ailleurs (différents dépôts, information parfois dans un ticket et pas dans un commit ou vice-versa, versions effectivement publiées sur PyPi ou npm). Et la navigation peut être simple avec une table des matières générée automatiquement.
##### Contre
C'est trop long, autant pour la rédaction et relecture que pour la lecture post-publication.https://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/40Définir un type de DataService pour lequel on peut uploader un fichier source2024-03-22T10:03:39ZFabien Amargerfabien.amarger@logilab.frDéfinir un type de DataService pour lequel on peut uploader un fichier sourceOn peut appeler ça un `DataSet`
Permettre la mise à jour du fichierOn peut appeler ça un `DataSet`
Permettre la mise à jour du fichierhttps://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/45Supprimer le vocabulary de `process_type`2024-03-22T08:00:26ZFabien Amargerfabien.amarger@logilab.frSupprimer le vocabulary de `process_type`Il nen faudrait pas que `process_type` soit contraint par `Vocabulary` mais que l'interface front récupère la liste des `process_type` dans le registre dynamiquement pour permettre leur extension facilement (en ajoutant dans le registre)Il nen faudrait pas que `process_type` soit contraint par `Vocabulary` mais que l'interface front récupère la liste des `process_type` dans le registre dynamiquement pour permettre leur extension facilement (en ajoutant dans le registre)Alexandre RichardsonAlexandre Richardsonhttps://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/46Affichage du contenu des fichiers ne fonctionne pas dans firefox2024-03-21T16:36:20ZFabien Amargerfabien.amarger@logilab.frAffichage du contenu des fichiers ne fonctionne pas dans firefoxSur Firefox le fichier se télécharge lorsque l'on clique sur le bouton pour le voir
c.f. ![image](/uploads/11673ea90b58a22f756bdaa8345fd5f0/image.png)
Le bouton d'affichage des logs ne permet pas d'afficher les logs sous chromium non p...Sur Firefox le fichier se télécharge lorsque l'on clique sur le bouton pour le voir
c.f. ![image](/uploads/11673ea90b58a22f756bdaa8345fd5f0/image.png)
Le bouton d'affichage des logs ne permet pas d'afficher les logs sous chromium non plus (ça télécharge le fichier). Peut être peut on garder le fonctionnement uniquement de téléchargement pour avoir quelque chose d'homogène ?Arnaud VergnetArnaud Vergnethttps://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1037Transaction fails when having a reference to a previous request without result2024-03-21T13:16:16ZArnaud VergnetTransaction fails when having a reference to a previous request without resultWhen chaining requests in a transaction, if the first query does not return a result but the second query refers to the first, then the whole request fails with a 400 error. Do we want this behavior or do we want to return an empty datas...When chaining requests in a transaction, if the first query does not return a result but the second query refers to the first, then the whole request fails with a 400 error. Do we want this behavior or do we want to return an empty dataset instead?https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1034Plusieurs PostgreSQL pour une même instance ?2024-03-19T13:19:46ZNicola SpantiPlusieurs PostgreSQL pour une même instance ?François a fait remonter pour Katia la potentielle envie d'utiliser plusieurs PostgreSQL pour une même instance. Ce serait pour gérer beaucoup de données et répartir la charge, ainsi que pour pouvoir ne garder que l'essentiel (virer Elas...François a fait remonter pour Katia la potentielle envie d'utiliser plusieurs PostgreSQL pour une même instance. Ce serait pour gérer beaucoup de données et répartir la charge, ainsi que pour pouvoir ne garder que l'essentiel (virer ElasticSearch par exemple) s'il y a une volonté de réduire les coûts. À priori CubicWeb ne fait pas ça, mais PostgreSQL ne propose t'il pas déjà ce qu'il faut (par exemple : https://www.crunchydata.com/blog/an-overview-of-distributed-postgresql-architectures) ?https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/992Investigate readthedoc deprecation of mercurial2024-03-19T10:04:00ZArnaud VergnetInvestigate readthedoc deprecation of mercurialEmail from read the docs:
> Hello,
>
> You are receving this email because your Read the Docs project is impacted by an upcoming deprecation.
>
> We are discussing dropping of support for Bazaar, Mercurial and Subversion version syste...Email from read the docs:
> Hello,
>
> You are receving this email because your Read the Docs project is impacted by an upcoming deprecation.
>
> We are discussing dropping of support for Bazaar, Mercurial and Subversion version system controls. This means we will only support Git to do the initial clone and build your project's documentation. We would like your feedback on this change, to better understand if you can use Git for your project.
>
> We've made this decision because 99% of our users use Git and we can't cover the maintainance cost we were spending on Bazaar, Mercurial and SVN. Over time, these VCS tools have not gotten new features, and add confusion to users because not all our features work for them.
>
> Unfortunately, there is no workaround on the Read the Docs side that you can follow to keep building your documentation using these VCSs, but you could probably import your Subversion or Mercurial repository into GitHub or similar services to keep building on Read the Docs.
>
> The projects that are impacted by this change are:
>
> - `cubicweb`
> - `logilab-common`
> - `logilab-database`
> - `rql`
> - `yams`
>
> Please contact us or reply to this email if you have any questions, or think there is a strong reason we should continue to offer basic support for other VCS tools.
>
> Thanks, Read the Docs
>
> Keep documenting,
> Read the Docs
> https://readthedocs.orghttps://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/50Déployer le rq-worker avec le CubicWeb2024-03-18T16:44:15ZFabien Amargerfabien.amarger@logilab.frDéployer le rq-worker avec le CubicWebhttps://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/49Ajouter le déploiement dans le gitlab-ci2024-03-18T16:43:55ZFabien Amargerfabien.amarger@logilab.frAjouter le déploiement dans le gitlab-cihttps://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/48Déployer un Redis en parralèle du CubicWeb (il y a déjà de quoi dans le helm ...2024-03-18T16:43:34ZFabien Amargerfabien.amarger@logilab.frDéployer un Redis en parralèle du CubicWeb (il y a déjà de quoi dans le helm chart)https://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/47Configurer le MINIO avec les bonnes variables d'environnement2024-03-18T16:43:10ZFabien Amargerfabien.amarger@logilab.frConfigurer le MINIO avec les bonnes variables d'environnementhttps://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/38Afficher un bouton "compte" en haut a droite a la place du bouton "déconnexion"2024-03-18T13:24:42ZArnaud VergnetAfficher un bouton "compte" en haut a droite a la place du bouton "déconnexion"utiliser la route `/current-user` pour récupérer les infos de l'utilisateur
mettre ces infos dans une popup au clique du bouton compte et ajouter le bouton deconnexion dans cette popup.utiliser la route `/current-user` pour récupérer les infos de l'utilisateur
mettre ces infos dans une popup au clique du bouton compte et ajouter le bouton deconnexion dans cette popup.Olivier GiorgisOlivier Giorgishttps://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/44Déploiement Rodolf pour la ROF2024-03-18T09:57:48ZFabien Amargerfabien.amarger@logilab.frDéploiement Rodolf pour la ROFfaire un cube qui se base sur Rodolf pour définir les besoins pour la ROF et le déployer pour que Eudes puisse le testerfaire un cube qui se base sur Rodolf pour définir les besoins pour la ROF et le déployer pour que Eudes puisse le testerFabien Amargerfabien.amarger@logilab.frFabien Amargerfabien.amarger@logilab.frhttps://forge.extranet.logilab.fr/cubicweb/cubes/rodolf/-/issues/13Pouvoir éxécuter des tâches après la mise à jour des données2024-03-18T09:51:53ZFabien Amargerfabien.amarger@logilab.frPouvoir éxécuter des tâches après la mise à jour des donnéesUne fois qu'on est sûr que les données sont à jour (création et exécution des importprocess nécessaire), pouvoir exécuter des tâches spécifiques, par exemple aligner 2 sources.Une fois qu'on est sûr que les données sont à jour (création et exécution des importprocess nécessaire), pouvoir exécuter des tâches spécifiques, par exemple aligner 2 sources.https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/985Update @cubicweb/transaction-builder to better match CubicWeb2024-03-12T08:38:30ZArnaud VergnetUpdate @cubicweb/transaction-builder to better match CubicWebWaiting for https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1026
**Proposed API**
```typescript
// -------------- Delete --------------
function pushDeleteEntity(
transaction: Transaction,
entityType: string,
eid: En...Waiting for https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1026
**Proposed API**
```typescript
// -------------- Delete --------------
function pushDeleteEntity(
transaction: Transaction,
entityType: string,
eid: EntityId | TransactionQueryScalarRef
) // ✅ Implemented 🧪 Tested
function pushDeleteEntities(
transaction: Transaction,
entityType: string,
eidList: (EntityId | TransactionQueryScalarRef)[]
) // ✅ Implemented 🧪 Tested
// -------------- Create --------------
function pushCreateEntity(
transaction: Transaction,
schema: Schema,
entityType: string,
entityData?: EntityData
) // ✅ Implemented 🧪 Tested
// -------------- Get --------------
function pushFindEntity(
transaction: Transaction,
schema: Schema,
entityType: string,
{ where, resolve }: RqlQueryOptions
) // ✅ Implemented 🧪 Tested
function pushFindEntities(
transaction: Transaction,
schema: Schema,
entityType: string,
{ pagination, sort, where, resolve }: RqlQueryListOptions
) // ✅ Implemented 🧪 Tested
function pushFindLastCreatedEntity(
transaction: Transaction,
schema: Schema,
entityType: string,
filter?: Filter,
relationsToResolve?: Array<string>
) // ❓ Maybe later
function pushFindLastEditedEntity(
transaction: Transaction,
schema: Schema,
entityType: string,
filter?: Filter,
relationsToResolve?: Array<string>
) // ❓ Maybe later
// -------------- Update --------------
function pushSetAttributes(
transaction: Transaction,
schema: Schema,
entityType: string,
eid: EntityId | TransactionQueryScalarRef,
attributesData: Record<string, AttributeValue>
) // ✅ Implemented 🧪 Tested
function pushSetRelation(
transaction: Transaction,
subjectEidList: (EntityId | TransactionQueryScalarRef)[],
relationType: string,
objectEidList: (EntityId | TransactionQueryScalarRef)[]
) // ✅ Implemented 🧪 Tested
function pushDeleteRelation(
transaction: Transaction,
subjectEidList: (EntityId | TransactionQueryScalarRef)[],
relationType: string,
objectEidList: (EntityId | TransactionQueryScalarRef)[]
) // ✅ Implemented 🧪 Tested
function pushUpdateEntity(
transaction: Transaction,
schema: Schema,
entityType: string,
eid: EntityId | TransactionQueryScalarRef,
newData: EntityData,
initialData: EntityData
) // ✅ Implemented
// -------------- Other helpers --------------
function pushCountEntities(
transaction: Transaction,
schema: Schema,
entityType: string,
filter?: Filter
) // ✅ Implemented 🧪 Tested
function pushGetPossibleTargets(?) // ❓ Maybe later, see https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/831
function pushExistEntity(
transaction: Transaction,
schema: Schema,
entityType: string,
filter?: Filter,
) // ❓ Maybe later
// -------------- Workflow --------------
- fireTransition() // ❓ Maybe later
- getState() // ❓ Maybe later
```
**Types**
```typescript
type EntityId = number;
type AttributeValue = string | number | boolean | null;
interface SortPayload {
relationName: string;
order: string;
}
interface PaginationPayload {
page: number;
perPage: number;
}
type Filter =
| {
type: "rql";
rql: RQLQuery;
}
| {
type: "values";
values: EntityData;
};
export type RqlQueryOptions = {
where?: Filter;
resolve?: Array<string>;
};
export type RqlQueryListOptions = RqlQueryOptions & {
pagination?: PaginationPayload;
sort?: SortPayload;
};
```
For examples and implementation, see https://forge.extranet.logilab.fr/cubicweb/cubicwebjs/-/merge_requests/92 and https://forge.extranet.logilab.fr/cubicweb/cubicwebjs/-/merge_requests/90
Must still be able to create react-admin data-provider methods:
```js
- getList: (resource, params) => Promise, // get a list of records based on sort, filter, and pagination
- getOne: (resource, params) => Promise, // get a single record by id
- getMany: (resource, params) => Promise, // get a list of records based on an array of ids
- getManyReference: (resource, params) => Promise, // get the records referenced to another record, e.g. comments for a post
- create: (resource, params) => Promise, // create a record
- update: (resource, params) => Promise, // update a record based on a patch
- updateMany: (resource, params) => Promise, // update a list of records based on an array of ids and a common patch
- delete: (resource, params) => Promise, // delete a record by id
- deleteMany: (resource, params) => Promise, // delete a list of records based on an array of ids
```Arnaud VergnetArnaud Vergnethttps://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1029Automatically convert Date and (TZ)DateTime and Time from/to api format2024-03-05T16:08:51ZArnaud VergnetAutomatically convert Date and (TZ)DateTime and Time from/to api formathttps://forge.extranet.logilab.fr/cubicweb/cubicwebjs/-/issues/32https://forge.extranet.logilab.fr/cubicweb/cubicwebjs/-/issues/32https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1030Raise an error when try to access a non-existing member through RQL2024-03-05T15:27:01ZNicola SpantiRaise an error when try to access a non-existing member through RQL```
Any X, X.i_dont_exist WHERE X is CWUser
```
Cette requête RQL devrait renvoyer une erreur et pas renvoyer l'eid pour la 2e colonne.```
Any X, X.i_dont_exist WHERE X is CWUser
```
Cette requête RQL devrait renvoyer une erreur et pas renvoyer l'eid pour la 2e colonne.https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1031Fix column_types for added properties through a RQL adapter2024-03-05T15:26:54ZNicola SpantiFix column_types for added properties through a RQL adapter```
rset = cnx.execute('Any X, X.dc_title() WHERE X is CWUser')
print(rset.column_types(1))
```
The result must be `'str'` or `'string'` and not `'CWUser'`.```
rset = cnx.execute('Any X, X.dc_title() WHERE X is CWUser')
print(rset.column_types(1))
```
The result must be `'str'` or `'string'` and not `'CWUser'`.