Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sesatheque
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Jobs
Commits
Open sidebar
Sesamath
sesatheque
Commits
8883a9d1
Commit
8883a9d1
authored
Sep 02, 2019
by
Daniel Caillibaud
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix lint
parent
c79ca697
Changes
30
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
107 additions
and
88 deletions
+107
-88
app/client-react/utils/listesFromConfig.js
app/client-react/utils/listesFromConfig.js
+3
-1
app/client-react/utils/validate.js
app/client-react/utils/validate.js
+3
-1
app/client/display/index.js
app/client/display/index.js
+7
-7
app/client/editors/mqEditor/index.js
app/client/editors/mqEditor/index.js
+2
-2
app/client/plugins/mental/display.js
app/client/plugins/mental/display.js
+5
-5
app/constructors/Feedback.js
app/constructors/Feedback.js
+2
-1
app/constructors/FormField.js
app/constructors/FormField.js
+4
-3
app/server/addMiddlewares.js
app/server/addMiddlewares.js
+2
-1
app/server/lib/CounterMulti.js
app/server/lib/CounterMulti.js
+5
-4
app/server/lib/tools.js
app/server/lib/tools.js
+2
-1
app/server/lib/url.js
app/server/lib/url.js
+4
-2
app/server/personne/controllerApiGroupe.js
app/server/personne/controllerApiGroupe.js
+4
-3
app/server/personne/serviceAccessControl.js
app/server/personne/serviceAccessControl.js
+2
-1
app/server/personne/servicePersonneRepository.js
app/server/personne/servicePersonneRepository.js
+3
-1
app/server/ressource/EntityArchive.js
app/server/ressource/EntityArchive.js
+3
-2
app/server/ressource/EntityRessource.js
app/server/ressource/EntityRessource.js
+3
-3
app/server/ressource/serviceRoutes.js
app/server/ressource/serviceRoutes.js
+3
-1
app/server/update/updates/28.js
app/server/update/updates/28.js
+4
-3
app/server/update/updates/35.js
app/server/update/updates/35.js
+2
-1
pnpm-lock.yaml
pnpm-lock.yaml
+1
-4
scripts-mongo/fixUniqueRessource.js
scripts-mongo/fixUniqueRessource.js
+1
-1
scripts-mongo/listEc2.js
scripts-mongo/listEc2.js
+1
-1
tasks/checkArbres.js
tasks/checkArbres.js
+1
-1
tasks/checkUniques.js
tasks/checkUniques.js
+1
-1
tasks/importJ3pViaXml.js
tasks/importJ3pViaXml.js
+4
-4
tasks/importMEPS.js
tasks/importMEPS.js
+10
-10
tasks/importProfils.js
tasks/importProfils.js
+10
-10
tasks/modules/common.js
tasks/modules/common.js
+9
-10
test/others/sesatheque-client/client.test.js
test/others/sesatheque-client/client.test.js
+5
-2
webpackThrowLoader.js
webpackThrowLoader.js
+1
-1
No files found.
app/client-react/utils/listesFromConfig.js
View file @
8883a9d1
import
sjt
from
'
sesajstools
'
import
{
editable
,
listes
,
listesOrdonnees
,
typePerso
}
from
'
../../server/ressource/config
'
const
{
hasProp
}
=
sjt
/**
* Les listes sous forme de tableaux ordonnés avec label & value
...
...
@@ -8,7 +10,7 @@ import {editable, listes, listesOrdonnees, typePerso} from '../../server/ressour
const
formattedLists
=
{}
Object
.
entries
(
listes
).
forEach
(([
key
,
values
])
=>
{
if
(
listesOrdonnees
.
hasOwnProperty
(
key
))
{
if
(
hasProp
(
listesOrdonnees
,
key
))
{
formattedLists
[
key
]
=
listesOrdonnees
[
key
].
map
(
n
=>
({
label
:
values
[
n
],
value
:
n
...
...
app/client-react/utils/validate.js
View file @
8883a9d1
import
{
isEmpty
}
from
'
lodash
'
import
sjt
from
'
sesajstools
'
const
{
hasProp
}
=
sjt
const
requiredText
=
'
Ce champ est obligatoire
'
...
...
@@ -14,7 +16,7 @@ const validate = ({
})
jsonFields
.
forEach
(
key
=>
{
if
(
values
.
hasOwnProperty
(
key
))
{
if
(
hasProp
(
values
,
key
))
{
const
value
=
values
[
key
]
if
(
typeof
value
===
'
string
'
)
{
try
{
...
...
app/client/display/index.js
View file @
8883a9d1
...
...
@@ -39,9 +39,9 @@
require
(
'
client-react/styles/display.scss
'
)
const
{
hasProp
,
isFunction
,
isString
,
isUrlAbsolute
,
stringify
}
=
require
(
'
sesajstools
'
)
const
dom
=
require
(
'
sesajstools/dom
'
)
const
log
=
require
(
'
sesajstools/utils/log
'
)
const
sjt
=
require
(
'
sesajstools
'
)
const
sjtUrl
=
require
(
'
sesajstools/http/url
'
)
const
xhr
=
require
(
'
sesajstools/http/xhr
'
)
const
{
addSesatheques
,
getBaseUrl
}
=
require
(
'
sesatheque-client/src/sesatheques
'
)
...
...
@@ -91,9 +91,9 @@ function addResultatCallback (ressource, options) {
// pour envoyer les résultats, on regarde si on nous fourni une url ou une fct ou un nom de message
// on prend en callback par ordre de priorité resultatCallback, urlResultatCallback, resultatMessageAction+
if
(
options
.
resultatCallback
&&
sjt
.
isFunction
(
options
.
resultatCallback
))
{
if
(
options
.
resultatCallback
&&
isFunction
(
options
.
resultatCallback
))
{
resultatListener
=
options
.
resultatCallback
}
else
if
(
options
.
urlResultatCallback
&&
sjt
.
isUrlAbsolute
(
options
.
urlResultatCallback
))
{
}
else
if
(
options
.
urlResultatCallback
&&
isUrlAbsolute
(
options
.
urlResultatCallback
))
{
// callback ajax
resultatListener
=
(
resultat
)
=>
{
const
url
=
options
.
urlResultatCallback
...
...
@@ -111,7 +111,7 @@ function addResultatCallback (ressource, options) {
})
}
}
}
else
if
(
options
&&
options
.
resultatMessageAction
&&
sjt
.
isString
(
options
.
resultatMessageAction
))
{
}
else
if
(
options
&&
options
.
resultatMessageAction
&&
isString
(
options
.
resultatMessageAction
))
{
// callback message
resultatListener
=
(
resultat
)
=>
sendResultatMessage
(
options
,
resultat
)
}
else
if
(
isDebugMode
)
{
...
...
@@ -156,7 +156,7 @@ function feedback (retour, divFeedback) {
page
.
addError
(
retour
.
error
)
}
else
if
((
retour
&&
(
retour
.
ok
&&
retour
.
ok
===
true
))
||
(
retour
.
success
&&
retour
.
success
===
true
))
{
feedbackOk
(
divFeedback
)
}
else
if
(
retour
&&
(
retour
.
hasOwnProperty
(
'
ok
'
)
||
retour
.
hasOwnProperty
(
'
success
'
)))
{
}
else
if
(
retour
&&
(
hasProp
(
retour
,
'
ok
'
)
||
hasProp
(
retour
,
'
success
'
)))
{
feedbackKo
(
divFeedback
)
page
.
addError
(
"
Une erreur est survenue dans l'enregistrement du résultat
"
)
}
else
{
...
...
@@ -187,7 +187,7 @@ function feedbackKo (divFeedback) {
*/
function
getResultat
(
result
,
ressource
,
options
)
{
// on reçoit parfois des refs circulaires, faut nettoyer… ça clone au passage
result
=
JSON
.
parse
(
s
jt
.
s
tringify
(
result
))
result
=
JSON
.
parse
(
stringify
(
result
))
const
resultat
=
new
Resultat
(
result
)
// pour l'envoi au unload on ajoute ça
if
(
options
.
urlResultatCallback
&&
result
.
deferSync
)
resultat
.
deferSync
=
result
.
deferSync
...
...
@@ -231,7 +231,7 @@ function load (ressource, options, next) {
// On vire le titre si on nous le demande via les options ou un param dans l'url
if
(
(
options
.
hasOwnProperty
(
'
showTitle
'
)
&&
!
options
.
showTitle
)
||
(
hasProp
(
options
,
'
showTitle
'
)
&&
!
options
.
showTitle
)
||
/
\?
.*showTitle=0/
.
test
(
wd
.
URL
)
||
/
\/
apercevoir
\/
/
.
test
(
wd
.
URL
)
||
/
\?(
.+&
)?
layout=iframe/
.
test
(
wd
.
URL
)
...
...
app/client/editors/mqEditor/index.js
View file @
8883a9d1
...
...
@@ -29,7 +29,7 @@
* pour une explication en français)
*/
'
use strict
'
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
var
dom
=
require
(
'
sesajstools/dom
'
)
var
log
=
require
(
'
sesajstools/utils/log
'
)
...
...
@@ -220,7 +220,7 @@ try {
else
if
(
config
===
'
full
'
)
config
=
fullConfig
// on ajoute ces boutons
for
(
var
btn
in
config
)
{
if
(
config
.
hasOwnProperty
(
btn
)
&&
config
[
btn
])
{
if
(
hasProp
(
config
,
btn
)
&&
config
[
btn
])
{
addButton
(
mqButtons
,
btn
)
}
}
...
...
app/client/plugins/mental/display.js
View file @
8883a9d1
...
...
@@ -33,7 +33,7 @@
/* eslint-disable camelcase */
var
dom
=
require
(
'
sesajstools/dom
'
)
var
sjt
=
require
(
'
sesajstools
'
)
const
{
hasProp
,
isArray
,
isString
}
=
require
(
'
sesajstools
'
)
var
log
=
require
(
'
sesajstools/utils/log
'
)
var
page
=
require
(
'
../../page/index
'
)
...
...
@@ -46,7 +46,7 @@ var swf = require('../../display/swf')
* @param params le contenu de ressource.parametres.xml, qui est du json !!
*/
function
getXmlParam
(
params
)
{
if
(
!
sjt
.
isArray
(
params
.
series
))
{
if
(
!
isArray
(
params
.
series
))
{
throw
new
Error
(
'
Aucune série à traiter
'
)
}
...
...
@@ -296,7 +296,7 @@ function getOperations (serie) {
// determination du résultat de l'opération
// - attention, dans le cas d'un quotient, c'est la partie entière du quotient qui constitue le résultat
if
(
!
nombres_generes
[
0
].
hasOwnProperty
(
'
valeur
'
))
{
if
(
!
hasProp
(
nombres_generes
[
0
],
'
valeur
'
))
{
throw
new
Error
(
"
Le premier nombre généré n'a pas de valeur
"
)
}
...
...
@@ -417,7 +417,7 @@ function xmlGenerate (o) {
* @returns {number}
*/
function
nettoie_nombre
(
nb
)
{
if
(
sjt
.
isString
(
nb
))
return
Number
(
nb
.
replace
(
/,/g
,
'
.
'
).
replace
(
/
\s
/g
,
''
))
if
(
isString
(
nb
))
return
Number
(
nb
.
replace
(
/,/g
,
'
.
'
).
replace
(
/
\s
/g
,
''
))
else
return
Number
(
nb
)
}
...
...
@@ -491,7 +491,7 @@ function genere_position_liste_liee (nombre) {
* @return {Integer} Le nombre généré dans
*/
function
genere_intervalle
(
nombre
)
{
if
(
!
nombre
.
hasOwnProperty
(
'
debut
'
)
||
!
nombre
.
hasOwnProperty
(
'
fin
'
)
||
nombre
.
fin
<
nombre
.
debut
)
{
if
(
!
hasProp
(
nombre
,
'
debut
'
)
||
!
hasProp
(
nombre
,
'
fin
'
)
||
nombre
.
fin
<
nombre
.
debut
)
{
throw
new
Error
(
"
Paramètres d'intervalle incorrects
"
)
}
return
rand
(
nombre
.
debut
,
nombre
.
fin
)
...
...
app/constructors/Feedback.js
View file @
8883a9d1
...
...
@@ -30,6 +30,7 @@
*/
'
use strict
'
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
/**
* Un retour d'une api http qui enregistre des Resultat (surtout pour documenter le format utilisé dans sesatheque|sesalab)
...
...
@@ -43,7 +44,7 @@ function Feedback (values) {
* @type {boolean}
*/
this
.
ok
=
!!
values
.
ok
if
(
values
.
hasOwnProperty
(
'
success
'
))
{
if
(
hasProp
(
values
,
'
success
'
))
{
/**
* Alternative à la propriété ok
* @type {boolean}
...
...
app/constructors/FormField.js
View file @
8883a9d1
...
...
@@ -30,9 +30,10 @@
*/
'
use strict
'
const
_
=
require
(
'
lodash
'
)
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
var
FormChoice
=
require
(
'
./FormChoice
'
)
var
_
=
require
(
'
lodash
'
)
const
FormChoice
=
require
(
'
./FormChoice
'
)
/**
* Un champ de FormGroup
...
...
@@ -179,7 +180,7 @@ FormField.prototype.addChoice = function addChoice (choice) {
if
(
this
.
id
&&
!
choice
.
id
)
choice
.
id
=
this
.
id
+
i
// et on ajoute les selected s'il y en a (comparaison avec cast en string)
if
(
choice
.
hasOwnProperty
(
'
value
'
)
&&
hasProp
(
choice
,
'
value
'
)
&&
this
.
selectedValues
&&
this
.
selectedValues
.
length
&&
_
.
includes
(
this
.
selectedValues
,
String
(
choice
.
value
))
...
...
app/server/addMiddlewares.js
View file @
8883a9d1
...
...
@@ -36,6 +36,7 @@
const
bodyParser
=
require
(
'
body-parser
'
)
const
express
=
require
(
'
express
'
)
const
moment
=
require
(
'
moment
'
)
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
const
tools
=
require
(
'
./lib/tools
'
)
const
config
=
require
(
'
./config
'
)
...
...
@@ -57,7 +58,7 @@ function addBodyParsers (rail) {
if
(
!
bodyParserSettings
.
limit
)
bodyParserSettings
.
limit
=
'
10mb
'
// ça c'est juste pour urlencoded, à priori on devrait pouvoir avoir des tableaux avec false
// mais ça plante par ex sur un post de form avec `categories[2]: true`
if
(
!
bodyParserSettings
.
hasOwnProperty
(
'
extended
'
))
bodyParserSettings
.
extended
=
true
if
(
!
hasProp
(
bodyParserSettings
,
'
extended
'
))
bodyParserSettings
.
extended
=
true
const
jsonMiddleware
=
express
.
json
(
bodyParserSettings
)
const
urlencodedMiddleware
=
express
.
urlencoded
(
bodyParserSettings
)
const
textMiddleware
=
bodyParser
.
text
(
bodyParserSettings
)
...
...
app/server/lib/CounterMulti.js
View file @
8883a9d1
...
...
@@ -30,6 +30,7 @@
*/
'
use strict
'
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
/**
* Une série de compteurs, chaque clé étant un compteur pouvant être incrémenté, décrémenté ou supprimé
...
...
@@ -48,7 +49,7 @@ function CounterMulti () {
* @param key
*/
CounterMulti
.
prototype
.
inc
=
function
(
key
)
{
if
(
this
.
hasOwnProperty
(
key
))
this
[
key
]
++
if
(
hasProp
(
this
,
key
))
this
[
key
]
++
else
{
this
[
key
]
=
1
this
.
length
++
...
...
@@ -60,7 +61,7 @@ CounterMulti.prototype.inc = function (key) {
* @param key
*/
CounterMulti
.
prototype
.
dec
=
function
(
key
)
{
if
(
this
.
hasOwnProperty
(
key
))
this
[
key
]
--
if
(
hasProp
(
this
,
key
))
this
[
key
]
--
else
{
this
[
key
]
=
-
1
this
.
length
++
...
...
@@ -72,7 +73,7 @@ CounterMulti.prototype.dec = function (key) {
* @param key
*/
CounterMulti
.
prototype
.
delete
=
function
(
key
)
{
if
(
this
.
hasOwnProperty
(
key
))
delete
this
[
key
]
if
(
hasProp
(
this
,
key
))
delete
this
[
key
]
this
.
length
--
}
...
...
@@ -83,7 +84,7 @@ CounterMulti.prototype.delete = function (key) {
CounterMulti
.
prototype
.
total
=
function
()
{
var
total
=
0
for
(
var
key
in
this
)
{
if
(
this
.
hasOwnProperty
(
key
)
&&
key
!==
'
length
'
)
total
+=
this
[
key
]
if
(
hasProp
(
this
,
key
)
&&
key
!==
'
length
'
)
total
+=
this
[
key
]
}
return
total
}
...
...
app/server/lib/tools.js
View file @
8883a9d1
...
...
@@ -32,6 +32,7 @@
'
use strict
'
const
moment
=
require
(
'
moment
'
)
const
util
=
require
(
'
util
'
)
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
/**
* Vérifie qu'une valeur est entière dans l'intervalle donné et recadre sinon (avec un message dans le log d'erreur)
...
...
@@ -193,7 +194,7 @@ function linkQs (path, texte, args) {
if
(
args
)
{
var
paires
=
[]
for
(
var
p
in
args
)
{
if
(
args
.
hasOwnProperty
(
p
))
paires
.
push
(
p
+
'
=
'
+
encodeURIComponent
(
args
[
p
]))
if
(
hasProp
(
args
,
p
))
paires
.
push
(
p
+
'
=
'
+
encodeURIComponent
(
args
[
p
]))
}
if
(
paires
.
length
)
path
+=
'
?
'
+
paires
.
join
(
'
&
'
)
}
...
...
app/server/lib/url.js
View file @
8883a9d1
...
...
@@ -35,6 +35,8 @@
// (et on préfère son comportement sur les params multiples)
const
querystring
=
require
(
'
querystring
'
)
const
{
getNormalizedGrabOptions
}
=
require
(
'
./normalize
'
)
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
const
{
baseUrl
}
=
require
(
'
./config
'
)
// fonctions privées
...
...
@@ -51,7 +53,7 @@ const {baseUrl} = require('./config')
*/
function
errorHandler
(
errorMessage
,
isStrict
,
value
=
''
)
{
if
(
typeof
isStrict
===
'
object
'
)
{
isStrict
=
isStrict
.
hasOwnProperty
(
'
strict
'
)
?
!!
isStrict
.
strict
:
true
isStrict
=
hasProp
(
isStrict
,
'
strict
'
)
?
!!
isStrict
.
strict
:
true
}
if
(
isStrict
)
throw
new
Error
(
errorMessage
)
console
.
error
(
new
Error
(
errorMessage
))
...
...
@@ -185,7 +187,7 @@ function split (url) {
*/
function
update
(
url
,
args
,
options
)
{
if
(
typeof
options
!==
'
object
'
)
options
=
{}
const
isStrict
=
options
.
hasOwnProperty
(
'
strict
'
)
?
options
.
strict
:
true
const
isStrict
=
hasProp
(
options
,
'
strict
'
)
?
options
.
strict
:
true
// checks
if
(
!
url
)
return
errorHandler
(
'
Pas d’url fournie
'
,
isStrict
)
if
(
typeof
url
!==
'
string
'
)
return
errorHandler
(
'
Url fournie invalide
'
,
isStrict
)
...
...
app/server/personne/controllerApiGroupe.js
View file @
8883a9d1
...
...
@@ -32,6 +32,7 @@
'
use strict
'
const
flow
=
require
(
'
an-flow
'
)
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
/**
* Répond sur certaines requetes OPTIONS
...
...
@@ -112,10 +113,10 @@ module.exports = function (component) {
// on peut passer aux autres propriétés du groupe
}).
seq
(
function
(
groupe
)
{
// les booléens
if
(
data
.
hasOwnProperty
(
'
ouvert
'
))
groupe
.
ouvert
=
Boolean
(
data
.
ouvert
)
if
(
data
.
hasOwnProperty
(
'
public
'
))
groupe
.
public
=
Boolean
(
data
.
public
)
if
(
hasProp
(
data
,
'
ouvert
'
))
groupe
.
ouvert
=
Boolean
(
data
.
ouvert
)
if
(
hasProp
(
data
,
'
public
'
))
groupe
.
public
=
Boolean
(
data
.
public
)
// description
if
(
data
.
hasOwnProperty
(
'
description
'
))
groupe
.
description
=
data
.
description
if
(
hasProp
(
data
,
'
description
'
))
groupe
.
description
=
data
.
description
// et les gestionnaires à ajouter éventuellement, on shunt si les deux champs sont vides
// (si seul l'un des deux est vide ça tentera le chargement et renverra une erreur)
if
(
!
data
.
newGestionnairePid
&&
!
data
.
newGestionnaireNom
)
return
this
(
null
,
groupe
)
...
...
app/server/personne/serviceAccessControl.js
View file @
8883a9d1
...
...
@@ -32,6 +32,7 @@
'
use strict
'
const
dns
=
require
(
'
dns
'
)
const
ip
=
require
(
'
ip
'
)
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
const
sjtObj
=
require
(
'
sesajstools/utils/object
'
)
const
config
=
require
(
'
../config
'
)
...
...
@@ -458,7 +459,7 @@ module.exports = function (component) {
*/
function
getTokenValue
(
context
,
token
)
{
let
value
if
(
context
&&
token
&&
context
.
session
.
tokens
&&
context
.
session
.
tokens
.
hasOwnProperty
(
token
))
{
if
(
context
&&
token
&&
context
.
session
.
tokens
&&
hasProp
(
context
.
session
.
tokens
,
token
))
{
value
=
context
.
session
.
tokens
[
token
]
delete
context
.
session
.
tokens
[
token
]
}
...
...
app/server/personne/servicePersonneRepository.js
View file @
8883a9d1
...
...
@@ -34,6 +34,7 @@
const
_
=
require
(
'
lodash
'
)
const
flow
=
require
(
'
an-flow
'
)
const
{
merge
}
=
require
(
'
sesajstools/utils/object
'
)
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
const
{
userError
}
=
require
(
'
../../utils
'
)
const
{
looksLikePid
}
=
require
(
'
../../utils/validators
'
)
...
...
@@ -279,8 +280,9 @@ module.exports = function (component) {
function
updateOrCreate
(
personne
,
next
)
{
function
checkUpdate
(
personne
,
personneNew
,
next
)
{
let
needUpdate
=
false
// eslint-disable-next-line no-unused-vars
for
(
const
prop
in
personneNew
)
{
if
(
personneNew
.
hasOwnProperty
(
prop
)
&&
!
_
.
isEqual
(
personne
[
prop
],
personneNew
[
prop
]))
{
if
(
hasProp
(
personneNew
,
prop
)
&&
!
_
.
isEqual
(
personne
[
prop
],
personneNew
[
prop
]))
{
needUpdate
=
true
// pour groupesMembre on fusionne, histoire de pas écraser les groupes locaux
// par des groupes donnés par l'authentification
...
...
app/server/ressource/EntityArchive.js
View file @
8883a9d1
...
...
@@ -30,10 +30,11 @@
*/
'
use strict
'
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
const
Ressource
=
require
(
'
../../constructors/Ressource
'
)
const
ressourceSchema
=
require
(
'
./EntityRessource.schema
'
)
const
properties
=
{...
ressourceSchema
.
properties
,
dateArchivage
:
{
instanceof
:
'
Date
'
}}
const
required
=
[...
ressourceSchema
.
required
,
'
dateArchivage
'
]
const
archiveSchema
=
{...
ressourceSchema
,
properties
,
required
}
...
...
@@ -50,7 +51,7 @@ module.exports = function (component) {
*/
EntityArchive
.
construct
(
function
(
data
)
{
if
(
!
data
)
throw
Error
(
'
constructeur d’archive appelé sans ressource ni archive
'
)
if
(
!
data
.
rid
||
!
data
.
hasOwnProperty
(
'
version
'
))
throw
Error
(
'
rid et version sont obligatoires pour archiver une ressource
'
)
if
(
!
data
.
rid
||
!
hasProp
(
data
,
'
version
'
))
throw
Error
(
'
rid et version sont obligatoires pour archiver une ressource
'
)
const
ressource
=
new
Ressource
(
data
)
Object
.
assign
(
this
,
ressource
)
...
...
app/server/ressource/EntityRessource.js
View file @
8883a9d1
...
...
@@ -31,7 +31,7 @@
'
use strict
'
const
uuid
=
require
(
'
an-uuid
'
)
const
{
exists
,
getRidComponents
}
=
require
(
'
sesatheque-client/dist/server/sesatheques
'
)
const
{
stringify
}
=
require
(
'
sesajstools
'
)
const
{
hasProp
,
stringify
}
=
require
(
'
sesajstools
'
)
const
htmlToText
=
require
(
'
html-to-text
'
)
const
tools
=
require
(
'
../lib/tools
'
)
...
...
@@ -66,7 +66,7 @@ module.exports = function (component) {
// mais après on ne peut plus ajouter de propriété dans afterStore, pas trouvé pourquoi…
// => TypeError: Cannot assign to read only property 'rid' of object '#<Entity>'
if
(
!
this
.
hasOwnProperty
(
'
rid
'
))
{
if
(
!
hasProp
(
this
,
'
rid
'
))
{
Object
.
defineProperty
(
this
,
'
rid
'
,
{
writable
:
true
,
enumerable
:
true
,
...
...
@@ -252,7 +252,7 @@ module.exports = function (component) {
// on génère la clé de lecture si elle manque, on la vire si elle n'est plus nécessaire
if
(
this
.
publie
&&
!
this
.
restriction
)
{
// public
if
(
this
.
hasOwnProperty
(
'
cle
'
))
delete
this
.
cle
if
(
hasProp
(
this
,
'
cle
'
))
delete
this
.
cle
}
else
{
// prive
if
(
!
this
.
cle
)
this
.
cle
=
uuid
()
...
...
app/server/ressource/serviceRoutes.js
View file @
8883a9d1
...
...
@@ -31,8 +31,10 @@
'
use strict
'
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
const
{
getBaseUrl
,
getComponents
}
=
require
(
'
sesatheque-client/dist/server/sesatheques
'
)
const
appConfig
=
require
(
'
../config
'
)
const
myBaseId
=
appConfig
.
application
.
baseId
const
routes
=
appConfig
.
components
.
ressource
.
constantes
.
routes
...
...
@@ -84,7 +86,7 @@ module.exports = function (component) {
*/
$routes
.
getAbs
=
function
(
action
,
ressource
,
context
)
{
let
route
if
(
routes
.
hasOwnProperty
(
action
))
{
if
(
hasProp
(
routes
,
action
))
{
route
=
'
/
'
let
id
let
isPublic
=
true
...
...
app/server/update/updates/28.js
View file @
8883a9d1
...
...
@@ -31,6 +31,7 @@
'
use strict
'
const
flow
=
require
(
'
an-flow
'
)
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
const
{
getRidComponents
}
=
require
(
'
sesatheque-client/dist/server/sesatheques
'
)
const
config
=
require
(
'
../../config
'
)
...
...
@@ -164,20 +165,20 @@ module.exports = {
*/
function
cleanItem
(
item
)
{
let
hasChanged
=
false
if
(
item
.
hasOwnProperty
(
'
restriction
'
))
{
if
(
hasProp
(
item
,
'
restriction
'
))
{
if
(
item
.
restriction
)
{
log
.
dataError
(
`item restreint dans l’arbre
${
currentArbre
}
`
,
item
)
hasChanged
=
true
item
.
restriction
=
0
}
}
else
if
(
item
.
hasOwnProperty
(
'
public
'
))
{
}
else
if
(
hasProp
(
item
,
'
public
'
))
{
if
(
!
item
.
public
)
{
log
.
dataError
(
`item privé dans l’arbre
${
currentArbre
}
`
,
item
)
hasChanged
=
true
item
.
public
=
true
}
}
if
(
item
.
hasOwnProperty
(
'
publie
'
)
&&
!
item
.
publie
)
{
if
(
hasProp
(
item
,
'
publie
'
)
&&
!
item
.
publie
)
{
log
.
dataError
(
`item privé dans l’arbre
${
currentArbre
}
`
,
item
)
hasChanged
=
true
item
.
publie
=
true
...
...
app/server/update/updates/35.js
View file @
8883a9d1
...
...
@@ -32,6 +32,7 @@
const
flow
=
require
(
'
an-flow
'
)
const
uuid
=
require
(
'
an-uuid
'
)
const
{
hasProp
}
=
require
(
'
sesajstools
'
)
const
updateNum
=
__filename
.
substring
(
__dirname
.
length
+
1
,
__filename
.
length
-
3
)
const
updateLog
=
require
(
'
an-log
'
)(
'
update
'
+
updateNum
)
...
...
@@ -184,7 +185,7 @@ module.exports = {
}).
seqEach
(
function
(
ressource
)
{
let
needStore
=
false
const
cleanExo
=
(
exo
)
=>
{
if
(
exo
.
hasOwnProperty
(
'
$droits
'
))
{
if
(
hasProp
(
exo
,
'
$droits
'
))
{
delete
exo
.
$droits
needStore
=
true
}
...
...
pnpm-lock.yaml
View file @
8883a9d1
...
...
@@ -10,6 +10,7 @@ dependencies:
an-uuid
:
src.sesamath.net/an-uuid/ed6af31c2d6f526d1108c0a7cfebfdcb9868ff29
body-parser
:
1.19.0
connected-react-router
:
5.0.1_670e3f5990800090610dd2dbdc34c8ec
core-js
:
3.2.1
elementtree
:
0.1.7
express
:
4.17.1
glob
:
7.1.4
...
...
@@ -39,7 +40,6 @@ dependencies:
redux
:
4.0.1
redux-form
:
7.4.2_f114d899b0c931a12c8e6145cdc60cd3
redux-thunk
:
2.3.0
regenerator-runtime
:
0.13.3
request
:
2.88.0
roboto-fontface
:
0.10.0
sesajstools
:
framagit.org/Sesamath/sesajstools/ac6283ba39b63def7e316a1f1c813915656c401e
...
...
@@ -65,7 +65,6 @@ devDependencies:
chai-as-promised
:
7.1.1_chai@4.2.0
clean-webpack-plugin
:
3.0.0_webpack@4.39.2
copy-webpack-plugin
:
5.0.4_webpack@4.39.2
core-js
:
3.2.1
css-loader
:
3.2.0_webpack@4.39.2
enzyme
:
3.10.0
enzyme-adapter-react-16
:
1.14.0_b543d0f872e4d79795800943b57d0a25
...
...
@@ -2903,7 +2902,6 @@ packages:
resolution
:
integrity
:
sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
/core-js/3.2.1
:
dev
:
true
requiresBuild
:
true
resolution
:
integrity
:
sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==
...
...
@@ -11377,7 +11375,6 @@ specifiers:
redux
:
4.0.1
redux-form
:
7.4.2
redux-thunk
:
2.3.0
regenerator-runtime
:
^0.13.2
request
:
^2.88.0
roboto-fontface
:
^0.10.0
sass-loader
:
^7.1.0
...
...
scripts-mongo/fixUniqueRessource.js
View file @
8883a9d1
...
...
@@ -42,7 +42,7 @@ if (nb === 0) print('Aucun doublon de clé')
// il faut aller remplir tous les rid vides…
// on doit récupérer notre baseId, mais on a pas de require… on va regarder en base
le
t
cursor
=
db
.
EntityRessource
.
find
()
cons
t
cursor
=
db
.
EntityRessource
.
find
()
let
baseId
while
(
cursor
.
hasNext
()
&&
!
baseId
)
{
const
r
=
cursor
.
next
()
...
...
scripts-mongo/listEc2.js
View file @
8883a9d1
...
...
@@ -7,7 +7,7 @@ db.EntityRessource.find({type: 'ec2'}).sort({dateCreation: 1}).forEach(r => {
else
if
(
data
.
parametres
.
swf
)
msg
=
`swf
${
data
.
parametres
.
swf
}
`
else
msg
=
'
none
'
+
JSON
.
stringify
(
data
.
parametres
)
}
else
{
msg
=
`noParameters`
msg
=
'
noParameters
'
}
print
(
r
.
_id
,
msg
,
r
.
dateCreation
,
r
.
titre
)
})
tasks/checkArbres.js
View file @
8883a9d1
...
...
@@ -110,7 +110,7 @@ var argv = process.argv.slice(2)
if
(
argv
[
0
]
===
'
--log
'
)
{
logfile
=
argv
[
1
]
}
var
writeStream
=
fs
.
createWriteStream
(
logfile
,
{
'
flags
'
:
'
a
'
})
var
writeStream
=
fs
.
createWriteStream
(
logfile
,
{
flags
:
'
a
'
})
var
nb
=
25
var
lastArbre
...
...
tasks/checkUniques.js
View file @
8883a9d1
...
...
@@ -79,7 +79,7 @@ function dumpDup (next) {
var
id
=
0
kdb
.
raw
(
query
).
exec
(
function
(
error
,
rows
)
{
if
(
error
)
log
.
error
(
error
)
var
results
=
rows
[
0
]
var
results
=
rows
[
0
]
if
(
results
.
length
===
maxDumps
)
log
(
'
Les résultats ont été limités à
'
+
maxDumps
)
results
.
forEach
(
function
(
row
)
{
if
(
row
.
id
!==
id
)
{
...
...
tasks/importJ3pViaXml.js
View file @
8883a9d1
...
...
@@ -93,8 +93,8 @@ function parseIds (idsFound) {
kLabomep
.
raw
(
query
+
'
WHERE bib_id =
'
+
id
).
exec
(
function
(
error
,
rows
)
{
try
{
if
(
error
)
throw
error
if
(
rows
[
0
]
&&
rows
[
0
][
0
])
{
row
=
rows
[
0
][
0
]
if
(
rows
[
0
]
&&
rows
[
0
][
0
])
{
row
=
rows
[
0
][
0
]
// faut voir si on complète avec les infos de oldBibli
if
(
checkOldBibli
)
{
if
(
!
row
.
bib_descriptif
||
!
row
.
bib_commentaire
)
{
...
...
@@ -102,8 +102,8 @@ function parseIds (idsFound) {
rows
)
{
var
result
if
(
error
)
throw
error
if
(
rows
[
0
])
{
result
=
rows
[
0
][
0
]
if
(
rows
[
0
])
{
result
=
rows
[
0
][
0
]
if
(
result
&&
!
row
.
descriptif
&&
result
.
description
)
row
.
descriptif
=
result
.
description
if
(
result
&&
!
row
.
commentaire
&&
result
.
commentaires
)
row
.
commentaire
=
result
.
commentaires
}
else
{
...
...
tasks/importMEPS.js
View file @
8883a9d1
...
...
@@ -62,16 +62,16 @@ function getMepModele (mepRow) {
*/
function
getLangue
(
langueId
)
{
var
corres
=
{
'
ar
'
:
'
ara
'
,
'
br
'
:
'
bre
'
,
'
ca
'
:
'
cat
'
,
'
de
'
:
'
deu
'
,
'
en
'
:
'
eng
'
,
'
es
'
:
'
spa
'
,
'
eu
'
:
'
eus
'
,
'
fr
'
:
'
fra
'
,
'
it
'
:
'
ita
'
,
'
pt
'
:
'
por
'
ar
:
'
ara
'
,
br
:
'
bre
'
,
ca
:
'
cat
'
,
de
:
'
deu
'
,
en
:
'
eng
'
,
es
:
'
spa
'
,
eu
:
'
eus
'
,
fr
:
'
fra
'
,
it
:
'
ita
'
,
pt
:
'
por
'
}
if
(
corres
[
langueId
])
{
return
corres
[
langueId
]
...
...
tasks/importProfils.js
View file @
8883a9d1
...
...
@@ -67,16 +67,16 @@ fluxFile.seqEach(function (file) {
}).
seq
(
function
()
{
log
(
'
tout semble terminé, on peut poster labomep_all
'
)
var
labomepAll
=
{
'
titre
'
:
'
Ressources Sésamath
'
,
'
resume
'
:
'
Liste des arbres affichables dans le panneau « Ressources Sésamath » de Labomep
'
,
'
type
'
:
'
arbre
'
,
'
categories
'
:
[
8
],
'
publie
'
:
true
,
'
restriction
'
:
0
,
'
indexable
'
:
true
,
'
origine
'
:
'
sesamath
'
,
'
idOrigine
'
:
'
labomep_all
'
,
'
enfants
'
:
allEnfants
titre
:
'
Ressources Sésamath
'
,
resume
:
'
Liste des arbres affichables dans le panneau « Ressources Sésamath » de Labomep
'
,
type
:
'
arbre
'
,
categories
:
[
8
],
publie
:
true
,
restriction
:
0
,
indexable
:
true
,
origine
:
'
sesamath
'
,
idOrigine
:
'
labomep_all
'
,
enfants
:
allEnfants
}
// on écrit le fichier
fs
.
writeFileSync
(
path
.
join
(
jsonDir
,
'
sesamath-labomep_all.json
'
),
JSON
.
stringify
(
labomepAll
,
null
,
2
))
...
...
tasks/modules/common.js
View file @
8883a9d1
...
...
@@ -9,9 +9,8 @@ var _ = require('lodash')
var
request
=
require
(
'
request
'
)
var
moment
=
require
(
'
moment
'
)
var
flow
=
require
(
'
an-flow
'
)
var
sjtObj
=
require
(
'
sesajstools/utils/object
'
)
var
sjt
=
require
(
'
sesajstools
'
)
const
{
hasProp
,
stringify
}
=
require
(
'
sesajstools
'
)
const
{
merge
,
update
}
=
require
(
'
sesajstools/utils/object
'
)
var
CounterMulti
=
require
(
'
../../app/server/lib/CounterMulti
'
)
// conf de l'appli
...
...
@@ -110,7 +109,7 @@ common.addPersonne = function (personne, next) {
var
errorString
=
'
erreur sur le post
'
+
options
.
url
+
'
:
'
if
(
error
)
errorString
+=
error
.
toString
()
else
if
(
body
.
error
)
errorString
+=
body
.
error
else
errorString
+=
s
jt
.
s
tringify
(
body
)
else
errorString
+=
stringify
(
body
)
next
(
new
Error
(
errorString
))
}
else
if
(
body
.
oid
)
{
personne
.
oid
=
body
.
oid
...
...
@@ -146,7 +145,7 @@ function addRessource (ressource, next) {
var
errorString
=
'
erreur sur le post
'
+
options
.
url
+
'
:
'
if
(
error
)
errorString
+=
error
.
toString
()
else
if
(
body
.
error
)
errorString
+=
body
.
error
else
errorString
+=
s
jt
.
s
tringify
(
body
)
else
errorString
+=
stringify
(
body
)
addError
(
idComb
,
errorString
)
if
(
opt
.
logApiCalls
)
log
(
idComb
+
'
KO :
'
+
errorString
)
}
else
{
...
...
@@ -263,13 +262,13 @@ common.displayResult = function (next) {
log
(
'
sur
'
+
idsToRec
.
length
+
'
à enregistrer (reste
'
+
idsToRec
.
total
()
+
'
appels à faire)
'
)
if
(
errors
.
length
)
{
var
logfile
=
path
.
resolve
(
__dirname
,
'
../../logs/import.error.log
'
)
var
writeStream
=
fs
.
createWriteStream
(
logfile
,
{
'
flags
'
:
'
a
'
})
var
writeStream
=
fs
.
createWriteStream
(
logfile
,
{
flags
:
'
a
'
})
log
(
'
erreurs vers
'
+
logfile
)
log
(
errors
.
length
+
'
ressources avec erreurs :
'
)
writeStream
.
write
(
"
Erreurs d'importation de
"
+
__filename
+
'
à
'
+
moment
().
format
(
'
YYYY-MM-DD HH:mm:ss
'
))
// eslint-disable-line no-path-concat
var
id
,
msg
for
(
id
in
errors
)
{
if
(
errors
.
hasOwnProperty
(
id
)
&&
id
!==
'
length
'
)
{
if
(
hasProp
(
errors
,
id
)
&&
id
!==
'
length
'
)
{
msg
=
id
+
'
:
'
+
errors
[
id
]
log
(
msg
)
writeStream
.
write
(
msg
)
...
...
@@ -366,7 +365,7 @@ common.flushPendingRelations = function (next) {
}).
seq
(
function
()
{
if
(
opt
.
logRelations
)
log
(
'
on va merger dans
'
+
ressource
.
oid
,
newRelations
)
var
mergedRelations
=
ressource
.
relations
||
[]
sjtObj
.
merge
(
mergedRelations
,
newRelations
)
merge
(
mergedRelations
,
newRelations
)
common
.
mergeRessource
({
oid
:
ressource
.
oid
,
relations
:
mergedRelations
},
this
)
}).
seq
(
function
()
{
// fin de subFlow
...
...
@@ -510,7 +509,7 @@ common.getRessource = function (origine, idOrigine, next) {
}
else
if
(
ressource
.
oid
)
{
next
(
ressource
)
}
else
{
next
(
new
Error
(
'
La ressource récupérée avec
'
+
idComb
+
"
n'a pas d'oid
"
+
s
jt
.
s
tringify
(
ressource
)))
next
(
new
Error
(
'
La ressource récupérée avec
'
+
idComb
+
"
n'a pas d'oid
"
+
stringify
(
ressource
)))
}
})
}
...
...
@@ -599,7 +598,7 @@ common.setPreviousAfterAllCb = function () {
* @param options
*/
common
.
setOptions
=
function
(
options