diff --git a/source/gDriveOOo/OAuth2OOo.xcu b/source/gDriveOOo/OAuth2OOo.xcu index 35d11126..ec4243fc 100644 --- a/source/gDriveOOo/OAuth2OOo.xcu +++ b/source/gDriveOOo/OAuth2OOo.xcu @@ -42,7 +42,7 @@ Google - https://www.googleapis.com/auth/drive + https://www.googleapis.com/auth/drive.install https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.appfolder diff --git a/source/gDriveOOo/registration/gDriveConfirmation_en.md b/source/gDriveOOo/registration/gDriveConfirmation_en.md new file mode 100644 index 00000000..605e9012 --- /dev/null +++ b/source/gDriveOOo/registration/gDriveConfirmation_en.md @@ -0,0 +1,7 @@ +# gDriveOOo Confirmation + +**The submission of your Google Drive files has been taken into account.** + +They will be available as soon as the next replication of your data by gDriveOOo in LibreOffice. + +You can close this page. diff --git a/source/gDriveOOo/registration/gDriveConfirmation_fr.md b/source/gDriveOOo/registration/gDriveConfirmation_fr.md new file mode 100644 index 00000000..3b7ca9ac --- /dev/null +++ b/source/gDriveOOo/registration/gDriveConfirmation_fr.md @@ -0,0 +1,7 @@ +# Confirmation de gDriveOOo + +**La soumission de vos fichiers Google Drive a été prise en compte.** + +Ils seront disponibles dès la prochaine réplication de vos données par gDriveOOo dans LibreOffice. + +Vous pouvez fermer cette page. diff --git a/source/gDriveOOo/service/pythonpath/gdrive/provider.py b/source/gDriveOOo/service/pythonpath/gdrive/provider.py index e1f67c91..bffd8371 100644 --- a/source/gDriveOOo/service/pythonpath/gdrive/provider.py +++ b/source/gDriveOOo/service/pythonpath/gdrive/provider.py @@ -92,8 +92,8 @@ def initUser(self, database, user, token): user.setToken(token) def getUser(self, source, request, name): - user = self._getUser(source, request, name) - root = self._getRoot(source, request, name) + user = self._getUser(source, request) + root = self._getRoot(source, request) return user, root def initSharedDocuments(self, user, datetime): @@ -267,25 +267,26 @@ def parseNewIdentifiers(self, response): del events[:] parser.close() - def _getUser(self, source, request, name): + def _getUser(self, source, request): parameter = self.getRequestParameter(request, 'getUser') response = request.execute(parameter) if not response.Ok: - msg = self._logger.resolveString(403, name) + msg = self._logger.resolveString(561, parameter.Name, response.StatusCode, response.Text) raise IllegalIdentifierException(msg, source) user = self._parseUser(response) response.close() return user - def _getRoot(self, source, request, name): + def _getRoot(self, source, request): parameter = self.getRequestParameter(request, 'getRoot') response = request.execute(parameter) if not response.Ok: - msg = self._logger.resolveString(403, name) + msg = self._logger.resolveString(571, parameter.Name, response.StatusCode, response.Text) raise IllegalIdentifierException(msg, source) root = self._parseRoot(response) response.close() - return root + timestamp = currentUnoDateTime() + return root, timestamp, timestamp def _parseUser(self, response): userid = name = displayname = None @@ -306,24 +307,21 @@ def _parseUser(self, response): return userid, name, displayname def _parseRoot(self, response): - rootid = name = created = modified = mimetype = None - addchild = canrename = True - trashed = readonly = versionable = False + rootid = None events = ijson.sendable_list() parser = ijson.parse_coro(events) iterator = response.iterContent(g_chunk, False) while iterator.hasMoreElements(): parser.send(iterator.nextElement().value) for prefix, event, value in events: - if (prefix, event) == ('id', 'string'): + if (prefix, event) == ('files.item.parents.item', 'string'): rootid = value - elif (prefix, event) == ('createdTime', 'string'): - created = self.parseDateTime(value) - elif (prefix, event) == ('modifiedTime', 'string'): - modified = self.parseDateTime(value) + break del events[:] + if rootid: + break parser.close() - return rootid, created, modified + return rootid def parseItemId(self, response): return self._parseItemId(response) @@ -365,8 +363,10 @@ def getRequestParameter(self, request, method, data=None): parameter.setQuery('fields', g_userfields) elif method == 'getRoot' : - parameter.Url += '/files/root' - parameter.setQuery('fields', g_itemfields) + parameter.Url += '/files' + parameter.setQuery('fields', 'files(parents)') + parameter.setQuery('pageSize', g_pages) + parameter.setQuery('q', "'root' in parents") elif method == 'getSharedFolderContent': parameter.Url += '/drives' diff --git a/uno/lib/uno/ucb/ucp/provider.py b/uno/lib/uno/ucb/ucp/provider.py index f446236d..64ea9c86 100644 --- a/uno/lib/uno/ucb/ucp/provider.py +++ b/uno/lib/uno/ucb/ucp/provider.py @@ -30,6 +30,7 @@ import uno import unohelper +from com.sun.star.logging.LogLevel import INFO from com.sun.star.logging.LogLevel import SEVERE from com.sun.star.ucb.ConnectionMode import OFFLINE @@ -74,6 +75,7 @@ def __init__(self, ctx, logger): self.SourceURL = getResourceLocation(ctx, g_identifier, g_scheme) self._folders = [] self._config = getConfiguration(ctx, g_identifier, False) + self._logger.logprb(INFO, 'Provider', '__init__()', 551) # Must be implemented properties @property diff --git a/uno/resource/ucb/ContentProvider_en_US.properties b/uno/resource/ucb/ContentProvider_en_US.properties index 634551de..7be4c50f 100644 --- a/uno/resource/ucb/ContentProvider_en_US.properties +++ b/uno/resource/ucb/ContentProvider_en_US.properties @@ -87,6 +87,16 @@ 511=Error: {} - {} +550=Provider.__init__() +551=Provider loading completed + +560=Provider._getUser() +561=Error on request <{}> which returned code <{}> and response <{}> + +570=Provider._getRoot() +571=Error on request <{}> which returned code <{}> and response <{}> + + 600=Content.__init__() 601=Content loading completed @@ -114,6 +124,7 @@ 660=Content.createNewContent() 661=Create new content from folder: {} + 710=PropertySetInfo.getPropertyByName() 711=The content gives the property: {} diff --git a/uno/resource/ucb/ContentProvider_fr_FR.properties b/uno/resource/ucb/ContentProvider_fr_FR.properties index ce7a598a..76dc2111 100644 --- a/uno/resource/ucb/ContentProvider_fr_FR.properties +++ b/uno/resource/ucb/ContentProvider_fr_FR.properties @@ -1,5 +1,5 @@ 100=ContentProvider.__init__() -101=ContentProvider: {} Chargement termin\u00e9 +101=ContentProvider: {} Chargement terminé 140=OptionsHandler.callHandlerMethod() @@ -16,7 +16,7 @@ 200=ContentProvider.__init__() -201=ParameterizedProvider{} Chargement termin\u00e9 +201=ParameterizedProvider{} Chargement terminé 210=ContentProvider.createContentIdentifier() 211=Identifier: {} -> {} @@ -32,7 +32,7 @@ 228=La version {} du pilote HsqlDB est obsolète. Vous devez mettre à jour ce pilote vers une version {} ou supérieure. 230=ContentProvider.queryContent() -231=Identitifer: {} ... Termin\u00e9 +231=Identitifer: {} ... Terminé 232=IllegalIdentifierException: {} 233=Exception python inattendue avec le traceback: {} @@ -42,7 +42,7 @@ 300=DataSource.__init__() -301=DataSource: Chargement termin\u00e9 +301=DataSource: Chargement terminé 310=DataSource.queryContent() 311=Erreur: Impossible de charger le contenu avec un Identifier incomplet: {} @@ -50,7 +50,7 @@ 320=DataSource._getUser() 321=Erreur: Impossible de charger de contenu avec un Identifier invalide: {} 322={} - Erreur d'identificateur -323=Impossible de r\u00e9cup\u00e9rer l'utilisateur à partir de l'Identifier: {}!!! +323=Impossible de récupérer l'utilisateur à partir de l'Identifier: {}!!! 324={} - Erreur d'authentification 325=L'assistant OAuth2 a été abandonné par l'utilisateur: {}. La connexion ne peut pas être établie!!! @@ -59,11 +59,11 @@ 332=Impossible de charger de contenu sans Utilisateur: {}!!! 340=DataSource.queryClosing() -341=La base de donn\u00e9e: {} a \u00e9t\u00e9 ferm\u00e9e +341=La base de donnée: {} a été fermée 400=DataBase.__init__() -401=DataBase: Chargement termin\u00e9 +401=DataBase: Chargement terminé 402=DataBase._mergeItem() size {} os name {} 410=DataBase.createDataBase() @@ -76,23 +76,33 @@ 501={} - Erreur d'authentification 502=L'assistant OAuth2 a été abandonné par l'utilisateur: {}. La connexion ne peut pas être établie!!! 503={} - Erreur de réseau -504=Impossible de retrouver l'utilisateur: {} chez le fournisseur: le r\u00e9seau est hors ligne!!! +504=Impossible de retrouver l'utilisateur: {} chez le fournisseur: le réseau est hors ligne!!! 505={} - Erreur d'authentification 506=L'utilisateur: {} est inconnu chez ce fournisseur!!! 507={} - Erreur de base de données -508=Impossible d'inserer l'utilisateur: {} dans la base de donn\u00e9es -509=User chargement termin\u00e9 +508=Impossible d'inserer l'utilisateur: {} dans la base de données +509=User chargement terminé 510=User.getDocumentContent() 511=Erreur: {} - {} +550=Provider.__init__() +551=Provider chargement terminé + +560=Provider._getUser() +561=Erreur sur la requête <{}> qui a renvoyé le code <{}> et la réponse <{}> + +570=Provider._getRoot() +571=Erreur sur la requête <{}> qui a renvoyé le code <{}> et la réponse <{}> + + 600=Content.__init__() -601=Content chargement termin\u00e9 +601=Content chargement terminé 610=Content._getMetaData() 611=Erreur: Impossible de charger le contenu avec un Identifier incomplet: {} -612=Erreur: Impossible de r\u00e9cup\u00e9rer les m\u00e9tadonn\u00e9es pour l'ID: {} et l'Uri: {} +612=Erreur: Impossible de récupérer les métadonnées pour l'ID: {} et l'Uri: {} 620=Content._updateFolderContent() 621=Le contenu du dossier: {} est obtenu avec Request!!! @@ -114,6 +124,7 @@ 660=Content.createNewContent() 661=Creation d'un nouveau contenu dans le dossier: {} + 710=PropertySetInfo.getPropertyByName() 711=Le contenu donne la propriété: {}