admin: Add button to switch from WIP to PROD

This commit is contained in:
nemunaire 2022-07-11 11:11:35 +02:00
parent c34fe51641
commit c7968fb256
3 changed files with 29 additions and 4 deletions

View File

@ -47,6 +47,19 @@ func declareSettingsRoutes(router *gin.RouterGroup) {
apiNextSettingsRoutes.DELETE("", deleteNextSettings)
router.POST("/reset", reset)
router.GET("/prod", func(c *gin.Context) {
c.JSON(http.StatusOK, IsProductionEnv)
})
router.PUT("/prod", func(c *gin.Context) {
err := c.ShouldBindJSON(&IsProductionEnv)
if err != nil {
c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"errmsg": err.Error()})
return
}
c.JSON(http.StatusOK, IsProductionEnv)
})
}
func NextSettingsHandler(c *gin.Context) {

View File

@ -455,7 +455,7 @@ angular.module("FICApp")
$rootScope.Utils = {
keys : Object.keys
};
function refresh() {
$rootScope.refreshSettings = function() {
$http.get("api/settings.json").then(function(response) {
response.data.start = new Date(response.data.start);
response.data.end = new Date(response.data.end);
@ -464,8 +464,8 @@ angular.module("FICApp")
$rootScope.recvTime(response);
})
}
refresh();
$interval(refresh, 10000);
$rootScope.refreshSettings();
$interval($rootScope.refreshSettings, 10000);
$rootScope.toasts = [];
$rootScope.addToast = function(kind, title, msg, yesFunc, noFunc, tmout) {
@ -655,6 +655,17 @@ angular.module("FICApp")
}
});
};
$scope.switchToProd = function() {
$scope.addToast('warning', "Activer le mode challenge ?", "L'activation du mode challenge est temporaire (vous devriez plutôt relancer le daemon avec l'option `-4real`). Ce mode permet d'éviter les mauvaises manipulations et désactive le hook git de synchronisation automatique. Êtes-vous sûr de vouloir continuer ?",
function() {
$http.put("api/prod", true).then(function(time) {
$rootScope.refreshSettings()
$scope.addToast('success', 'Mode challenge activé');
}, function(response) {
$scope.addToast('danger', 'An error occurs when activating challenge mode:', response.data.errmsg);
});
});
};
})
.controller("SyncController", function($scope, $rootScope, ROSettings, $location, $http, $interval) {

View File

@ -359,6 +359,7 @@
<div>
<div class="d-flex flex-column">
<button ng-click="regenerate()" class="btn btn-info my-1" type="button"><span class="glyphicon glyphicon-share" aria-hidden="true"></span> Regénérer les fichiers statiques</button>
<button ng-if="settings.wip" ng-click="switchToProd()" class="btn btn-danger my-1" type="button"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span> Activer le mode challenge</button>
</div>
<hr>
<h4>Changements anticipés</h4>
@ -402,7 +403,7 @@
<div class="row mb-2" ng-show="settings.wip || !timeProgression || displayDangerousActions">
<div class="d-flex flex-column">
<a href="sync" class="btn btn-secondary my-1" type="button"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Paramètres de synchronisation</a>
<a href="sync" class="btn btn-primary my-1" type="button"><span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Paramètres de synchronisation</a>
<button ng-click="reset('settings');" class="btn btn-secondary mt-2 mb-1" type="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Revenir aux paramètres par défaut</button>
<button ng-click="reset('challenges')" class="btn btn-secondary mt-2 mb-1" type="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Effacer les challenges et les thèmes</button>
<button ng-click="reset('teams');" class="btn btn-secondary mt-1 mb-1" type="button"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span> Effacer les équipes</button>