banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Thu 16 November 2023 17:08

Liline38
Participant occasionnel
Date d'inscription: 7 Apr 2023
Messages: 13

QGIS: Projet deja ouvert par un autre utilisateur

Bonjour,

Existe t'il un moyen de savoir si un projet QGIS est déjà ouvert par un autre utilisateur ?

Est il possible par exemple de générer un fichier lock ou d'avoir une alerte à l'ouverture du projet qui indique que le projet est déjà ouvert ?

Merci d'avance.

Hors ligne

 

#2 Mon 20 November 2023 09:16

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 288

Re: QGIS: Projet deja ouvert par un autre utilisateur

Bonjour

De mémoire, il existe un plugin qui fait cela, mais à condition de le mettre sur tous les postes concernés, et avec une stabilité sans plus.

Cordialement

Hors ligne

 

#3 Mon 20 November 2023 11:45

Liline38
Participant occasionnel
Date d'inscription: 7 Apr 2023
Messages: 13

Re: QGIS: Projet deja ouvert par un autre utilisateur

Bonjour,
Merci pour votre retour. Après recherche, je n'ai pas trouvé de plugin qui ferait ce job. Par contre, j'ai trouvé une macro qui permet de notifier à l'utilisateur que le projet est déjà ouvert en générant un fichier lock et un message.
Ce script fonctionne pour moi et répond à mes attentes.
Voici le lien pour y accéder: 
https://gis.stackexchange.com/questions … ady-in-use
Cordialement.

Dernière modification par Liline38 (Mon 20 November 2023 11:45)

Hors ligne

 

#4 Mon 20 November 2023 13:50

GlaDal
Participant assidu
Date d'inscription: 30 Aug 2013
Messages: 1052

Re: QGIS: Projet deja ouvert par un autre utilisateur

Bonjour,

Vous est-il possible de corriger le lien, il renvoie sur une page 404. Merci

Hors ligne

 

#5 Mon 20 November 2023 14:05

Liline38
Participant occasionnel
Date d'inscription: 7 Apr 2023
Messages: 13

Re: QGIS: Projet deja ouvert par un autre utilisateur

Bonjour, si le lien ne fonctionne pas pour vous, voici l'adresse complète :
https://gis.stackexchange.com/questions … ady-in-use

Hors ligne

 

#6 Mon 20 November 2023 17:01

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 288

Re: QGIS: Projet deja ouvert par un autre utilisateur

Re

Je rebondis sur le sujet, car la macro et top, mais je voudrais savoir s'il est possible en changeant le paramètre "copyfile" par un autre, que je ne trouve pas, de fermer le projet au lieu de faire une copie.

je joins le code pour les amateurs de défis

Code:

def openProject():
    pass

def saveProject():
    pass

def closeProject():
    pass
import os
import socket
from qgis.core import QgsProject
from PyQt5.QtWidgets import QMessageBox


### utility functions ###

# get the executing machine and process id #
def _getId():
    return socket.getfqdn()+'.'+str(os.getpid())

# read machine and process id holding lock from lock file #  
def _getLockerId(file):
    try:
        with open(file) as _file:
            return _file.readline()
    except:
        return

# create lock file path #
def _getLockFile():
    _path, _file = __getProjectPath()
    return os.path.join(_path,'.'+_file+'.lock')
    
# create current project file path root and name #
def __getProjectPath():
    return os.path.split(QgsProject.instance().absoluteFilePath())  


### QGIS macros ###

def openProject():
    lockfile = _getLockFile()
    
    try:
        with open(lockfile, "x") as _file:
            _file.write(_getId())
    except OSError:
        _path, _file = __getProjectPath()
        copyfile = os.path.join(_path, _getId() + "__" + _file)
        
        QMessageBox.warning(
            None,
            "Project déja ouvert",
            "Impossible d'ouvrir le projet, il est en cours d'utilisation par: "+
              "\n\n"+_getLockerId(lockfile)+
              "\nUne copie automatique va être généré\n\n"+copyfile
        )

        QgsProject.instance().write(copyfile)
        QgsProject.instance().read()
        QgsProject.instance().setDirty()

def saveProject():
    pass

def closeProject():
    lockfile = _getLockFile()
    
    if _getId() == _getLockerId(lockfile):
        os.remove(lockfile)

Par avance merci

Hors ligne

 

#7 Tue 28 November 2023 09:27

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 288

Re: QGIS: Projet deja ouvert par un autre utilisateur

Bonjour

Je relance le sujet, car je ne trouve pas du tout.
Y aurait-il une personne qui aurait une idée.

Merci

Hors ligne

 

#8 Tue 28 November 2023 09:28

Vincent Vauchey
Participant assidu
Lieu: saint jean de braye
Date d'inscription: 24 Jan 2006
Messages: 288

Re: QGIS: Projet deja ouvert par un autre utilisateur

ou alors mettre un bouton annule

Dernière modification par Vincent Vauchey (Tue 28 November 2023 09:29)

Hors ligne

 

Pied de page des forums

Powered by FluxBB