From 306d0f48842a62e278c22a563ad0d9a268b350bc Mon Sep 17 00:00:00 2001 From: philippe lhardy Date: Sat, 26 Mar 2022 00:08:06 +0100 Subject: [PATCH] Grails 3 some fixes ( including issue #6 ) - Fix create of a user from an administrator - https://github.com/consometers/consoherozh/issues/6 - create applicationKey on server side on the fly in UserService - When slecting device and deviceType some icons are missing - linky & manual counter icon ( to improve ) - Creating a House within USer profile - display profile without error if house is missing - Workaround a stackoverflow infinite recursion when saving a profile with a house. - cleanup some unused imports --- grails-app/assets/images/deviceType/linky.png | Bin 0 -> 23535 bytes .../images/deviceType/manualCounter.png | Bin 0 -> 38735 bytes .../smarthome/automation/ChartService.groovy | 31 +++-------- .../smarthome/automation/HouseService.groovy | 6 ++- .../smarthome/security/UserService.groovy | 4 ++ .../views/deviceType/linky/_linkyForm.gsp | 49 ++++++++++++++++++ .../manualCounter/_manualCounterForm.gsp | 35 +++++++++++++ grails-app/views/house/_form.gsp | 3 ++ 8 files changed, 103 insertions(+), 25 deletions(-) create mode 100644 grails-app/assets/images/deviceType/linky.png create mode 100644 grails-app/assets/images/deviceType/manualCounter.png create mode 100644 grails-app/views/deviceType/linky/_linkyForm.gsp create mode 100644 grails-app/views/deviceType/manualCounter/_manualCounterForm.gsp diff --git a/grails-app/assets/images/deviceType/linky.png b/grails-app/assets/images/deviceType/linky.png new file mode 100644 index 0000000000000000000000000000000000000000..724e07a0fee2c0e1be8b43bc60d5b17cf9ad03bf GIT binary patch literal 23535 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

6>-ua7$4Lz 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

    KlM=JS4^kkSG*xS>L0Q(q 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 FV1g1;7~}u| literal 0 HcmV?d00001 diff --git a/grails-app/services/smarthome/automation/ChartService.groovy b/grails-app/services/smarthome/automation/ChartService.groovy index 5a0ea939..8b6013cc 100644 --- a/grails-app/services/smarthome/automation/ChartService.groovy +++ b/grails-app/services/smarthome/automation/ChartService.groovy @@ -1,28 +1,13 @@ package smarthome.automation -import java.util.Date; -import java.util.List; - -import grails.converters.JSON; -import grails.plugin.cache.CachePut; -import grails.plugin.cache.Cacheable; - -import org.apache.commons.lang.StringUtils; -import grails.web.mapping.LinkGenerator; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.transaction.annotation.Propagation; -import grails.gorm.transactions.Transactional; - -import smarthome.core.AbstractService; -import smarthome.core.AsynchronousMessage; -import smarthome.core.ClassUtils; -import smarthome.core.QueryUtils; -import smarthome.automation.Chart; -import smarthome.core.ExchangeType; -import smarthome.core.SmartHomeException; -import smarthome.core.chart.ChartTransformer; -import smarthome.security.User; - +import grails.gorm.transactions.Transactional +import org.apache.commons.lang.StringUtils +import org.springframework.security.access.prepost.PreAuthorize +import smarthome.automation.Chart +import smarthome.core.AbstractService +import smarthome.core.ClassUtils +import smarthome.core.SmartHomeException +import smarthome.core.chart.ChartTransformer class ChartService extends AbstractService { diff --git a/grails-app/services/smarthome/automation/HouseService.groovy b/grails-app/services/smarthome/automation/HouseService.groovy index a82f5f2d..b594afc7 100644 --- a/grails-app/services/smarthome/automation/HouseService.groovy +++ b/grails-app/services/smarthome/automation/HouseService.groovy @@ -127,8 +127,10 @@ group by chauffage.libelle house.defaut = true house.name = "Maison principale" } - - return super.save(house) + + house.save(); + // grails 3, StackOverflow infinite recursion loop with super AbstractService + // return super.save(house) } diff --git a/grails-app/services/smarthome/security/UserService.groovy b/grails-app/services/smarthome/security/UserService.groovy index 952b8449..0b4c512c 100644 --- a/grails-app/services/smarthome/security/UserService.groovy +++ b/grails-app/services/smarthome/security/UserService.groovy @@ -104,6 +104,10 @@ class UserService extends AbstractService { user.lastActivation = new Date() user.passwordExpired = true user.password = UUID.randomUUID() // création d'un password fictif en attente du déblocage par l'utilisateur + // never save a User without an applicationKey and generate it only on server side. + if ( user.applicationKey == null ) { + user.applicationKey = UUID.randomUUID() + } } diff --git a/grails-app/views/deviceType/linky/_linkyForm.gsp b/grails-app/views/deviceType/linky/_linkyForm.gsp new file mode 100644 index 00000000..80d12ddd --- /dev/null +++ b/grails-app/views/deviceType/linky/_linkyForm.gsp @@ -0,0 +1,49 @@ + + + + + + + + +
    + + +
    + + + + + + + + + + +
    + + +
    + + + + + + + + + + +
    + + +
    Ce coefficient sera appliqué sur la consommation intermédiaire et non pas sur l'index total qui lui ne change pas
    +
    \ No newline at end of file diff --git a/grails-app/views/deviceType/manualCounter/_manualCounterForm.gsp b/grails-app/views/deviceType/manualCounter/_manualCounterForm.gsp new file mode 100644 index 00000000..30fbd555 --- /dev/null +++ b/grails-app/views/deviceType/manualCounter/_manualCounterForm.gsp @@ -0,0 +1,35 @@ + + + + + + + + +
    + + +
    + + + + + + + + + + +
    + + +
    + + +

    Configuration périphérique

    + \ No newline at end of file diff --git a/grails-app/views/house/_form.gsp b/grails-app/views/house/_form.gsp index 05a805ef..83808a67 100644 --- a/grails-app/views/house/_form.gsp +++ b/grails-app/views/house/_form.gsp @@ -7,10 +7,13 @@
    Utilisé pour les prévisions météo sous la forme "ville et/ou code postal, pays". Ex : Lorient, France. Calculé tous les jours à minuit. + Calcul manuel +
    +