Skip to content

Commit

Permalink
[AdminTL#79] Doc Generator: Show error when missing configuration file
Browse files Browse the repository at this point in the history
  • Loading branch information
mathben committed Apr 5, 2018
1 parent 3873f3c commit e5e9824
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 34 deletions.
73 changes: 40 additions & 33 deletions src/web/partials/admin/editor.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,42 +9,49 @@ <h2>Générateur de documentation à partir de Google Drive Spreadsheet</h2>
Cet outil permet d'ouvrir un fichier sur Google Drive Spreadsheet, d'itérer dans le document pour extraire les données, valider le formatage du document et générer la base de donnée du manuel du
joueur.
<hr/>
<div ng-show="model_editor.info.sh_config && model_editor.info.sh_config.file_key">
Identifiant du document : {{! model_editor.info.sh_config.file_key }}
</div>
<div ng-show="model_editor.info.sh_config && model_editor.info.sh_config.file_name">
Nom du document : {{! model_editor.info.sh_config.file_name }}
</div>
<div ng-show="model_editor.info.sh_config && model_editor.info.sh_config.file_url">
Lien du document : <a href="{{! model_editor.info.sh_config.file_url }}" style="text-decoration: underline">{{! model_editor.info.sh_config.file_url }}</a>
</div>
<div>
Mettre à jour le lien : <input type="text" ng-model="model_editor.update_file_info.url" placeholder="URL du fichier"/>
<a ng-click="update_file_info()" class="btn btn-lg btn-success" ng-class="model_editor.is_updating_file_info ? 'disabled' : ''" role="button">
<span class="fa fa-spinner fa-spin" ng-show="model_editor.is_updating_file_info"></span> Mise à jour du fichier.
</a><br/>
<a ng-show="model_editor.update_file_info.status.enabled" ng-style="model_editor.update_file_info.status.is_error ? {'color': 'red'} : {'color': 'green'}">
{{! model_editor.update_file_info.status.text }}
</a>
</div>
<div ng-show="!model_editor.info.user_has_writer_perm && model_editor.info.sh_has_access_perm">
Vous n'avez pas les permissions d'écriture.
<a ng-click="send_writing_sh_permission()" class="btn btn-lg btn-danger" role="button">Recevoir les permissions d'écriture par courriel.</a>
</div>
<div ng-show="!model_editor.info.sh_has_access_perm">
<div ng-show="model_editor.module_sh_state.has_error">
<a style="color:red">
Le logiciel n'a pas les permissions nécessaire pour accéder au fichier. Donner les droits au courriel {{! model_editor.info.email_soft }}<br/>
Veuillez rafraichir la page une fois que l'invitation a été envoyé.
{{! model_editor.module_sh_state.error }}
</a>
</div>
<hr/>
<div>
<a ng-click="generate_doc()" class="btn btn-lg btn-success" ng-class="model_editor.is_generating_doc ? 'disabled' : ''" role="button">
<span class="fa fa-spinner fa-spin" ng-show="model_editor.is_generating_doc"></span>Générer le document.
</a><br/>
<a ng-show="model_editor.generated_doc.status.enabled" ng-style="model_editor.generated_doc.status.is_error ? {'color': 'red'} : {'color': 'green'}">
{{! model_editor.generated_doc.status.text }}
</a>
<div ng-hide="model_editor.module_sh_state.has_error">
<div ng-show="model_editor.info.sh_config && model_editor.info.sh_config.file_key">
Identifiant du document : {{! model_editor.info.sh_config.file_key }}
</div>
<div ng-show="model_editor.info.sh_config && model_editor.info.sh_config.file_name">
Nom du document : {{! model_editor.info.sh_config.file_name }}
</div>
<div ng-show="model_editor.info.sh_config && model_editor.info.sh_config.file_url">
Lien du document : <a href="{{! model_editor.info.sh_config.file_url }}" style="text-decoration: underline">{{! model_editor.info.sh_config.file_url }}</a>
</div>
<div>
Mettre à jour le lien : <input type="text" ng-model="model_editor.update_file_info.url" placeholder="URL du fichier"/>
<a ng-click="update_file_info()" class="btn btn-lg btn-success" ng-class="model_editor.is_updating_file_info ? 'disabled' : ''" role="button">
<span class="fa fa-spinner fa-spin" ng-show="model_editor.is_updating_file_info"></span> Mise à jour du fichier.
</a><br/>
<a ng-show="model_editor.update_file_info.status.enabled" ng-style="model_editor.update_file_info.status.is_error ? {'color': 'red'} : {'color': 'green'}">
{{! model_editor.update_file_info.status.text }}
</a>
</div>
<div ng-show="!model_editor.info.user_has_writer_perm && model_editor.info.sh_has_access_perm">
Vous n'avez pas les permissions d'écriture.
<a ng-click="send_writing_sh_permission()" class="btn btn-lg btn-danger" role="button">Recevoir les permissions d'écriture par courriel.</a>
</div>
<div ng-show="!model_editor.info.sh_has_access_perm">
<a style="color:red">
Le logiciel n'a pas les permissions nécessaire pour accéder au fichier. Donner les droits au courriel {{! model_editor.info.email_soft }}<br/>
Veuillez rafraichir la page une fois que l'invitation a été envoyé.
</a>
</div>
<hr/>
<div>
<a ng-click="generate_doc()" class="btn btn-lg btn-success" ng-class="model_editor.is_generating_doc ? 'disabled' : ''" role="button">
<span class="fa fa-spinner fa-spin" ng-show="model_editor.is_generating_doc"></span>Générer le document.
</a><br/>
<a ng-show="model_editor.generated_doc.status.enabled" ng-style="model_editor.generated_doc.status.is_error ? {'color': 'red'} : {'color': 'green'}">
{{! model_editor.generated_doc.status.text }}
</a>
</div>
</div>
</div>
</div>
Expand Down
6 changes: 5 additions & 1 deletion src/web/py_class/doc_generator_google_drive_spreadsheet.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,11 @@ def connect(self, url=None, stop_if_open=True):
return {"error": msg}

scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(self._parser.db_google_API_path, scope)
try:
credentials = ServiceAccountCredentials.from_json_keyfile_name(self._parser.db_google_API_path, scope)
except FileNotFoundError:
msg = "Missing file %s to configure Google Drive Spreadsheets." % self._parser.db_google_API_path
return {"error": msg}
self._email_soft = credentials.service_account_email

self._gc = gspread.authorize(credentials)
Expand Down
13 changes: 13 additions & 0 deletions src/web/resources/js/tl_module/editor_ctrl/editor_ctrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
characterApp.controller("editor_ctrl", ["$scope", "$q", "$http", "$window", /*"$timeout",*/ function ($scope, $q, $http, $window) {
$scope.model_editor = {
is_ctrl_ready: false,

module_sh_state: {
has_error: false,
error: ""
},

info: {
sh_config: {
file_url: ""
Expand All @@ -12,6 +18,7 @@ characterApp.controller("editor_ctrl", ["$scope", "$q", "$http", "$window", /*"$
sh_has_access_perm: false,
email_soft: ""
},

update_file_info: {
status: {
enabled: false,
Expand All @@ -20,6 +27,7 @@ characterApp.controller("editor_ctrl", ["$scope", "$q", "$http", "$window", /*"$
},
url: ""
},

is_updating_file_info: false,
is_generating_doc: false,
generated_doc: {
Expand All @@ -41,6 +49,11 @@ characterApp.controller("editor_ctrl", ["$scope", "$q", "$http", "$window", /*"$
}).then(function (response/*, status, headers, config*/) {
$scope.model_editor.info = response.data;
$scope.model_editor.is_ctrl_ready = true;

if ("error" in $scope.model_editor.info) {
$scope.model_editor.module_sh_state.has_error = true;
$scope.model_editor.module_sh_state.error = $scope.model_editor.info.error;
}
}, function errorCallback(response) {
console.error(response);

Expand Down

0 comments on commit e5e9824

Please sign in to comment.