Skip to content

Commit 25f793f

Browse files
committed
changes to make it work with master
1 parent 5e00122 commit 25f793f

File tree

3 files changed

+56
-33
lines changed

3 files changed

+56
-33
lines changed

Mergin/plugin.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
create_mergin_client,
7272
MissingAuthConfigError,
7373
AuthTokenExpiredError,
74-
get_stored_mergin_server_url,
74+
set_qgsexpressionscontext,
7575
)
7676
from .mergin.utils import int_version, is_versioned_file
7777
from .mergin.merginproject import MerginProject
@@ -319,17 +319,12 @@ def configure(self):
319319
if dlg.exec():
320320
try:
321321
self.mc = create_mergin_client()
322+
set_qgsexpressionscontext(dlg.server_url(), mc=self.mc)
322323
except (MissingAuthConfigError, AuthTokenExpiredError, ClientError, ValueError) as e:
323324
QMessageBox.critical(None, "Login failed", f"Could not login: {str(e)}")
324-
QgsExpressionContextUtils.removeGlobalVariable("mergin_username")
325+
set_qgsexpressionscontext(dlg.server_url(), mc=None)
325326
return
326327

327-
QgsExpressionContextUtils.setGlobalVariable("mergin_url", get_stored_mergin_server_url())
328-
if self.mc:
329-
QgsExpressionContextUtils.setGlobalVariable("mergin_username", self.mc.username())
330-
else:
331-
QgsExpressionContextUtils.removeGlobalVariable("mergin_username")
332-
333328
self.on_config_changed()
334329
self.show_browser_panel()
335330

Mergin/utils.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,28 +1139,6 @@ def get_primary_keys(layer):
11391139
return cols
11401140

11411141

1142-
def test_server_connection(url, username, password):
1143-
"""
1144-
Test connection to Mergin Maps server. This includes check for valid server URL
1145-
and user credentials correctness.
1146-
"""
1147-
err_msg = validate_mergin_url(url)
1148-
if err_msg:
1149-
msg = f"<font color=red>{err_msg}</font>"
1150-
QgsApplication.messageLog().logMessage(f"Mergin Maps plugin: {err_msg}")
1151-
return False, msg
1152-
1153-
result = True, "<font color=green> OK </font>"
1154-
proxy_config = get_qgis_proxy_config(url)
1155-
try:
1156-
MerginClient(url, None, username, password, get_plugin_version(), proxy_config)
1157-
except (LoginError, ClientError) as e:
1158-
QgsApplication.messageLog().logMessage(f"Mergin Maps plugin: {str(e)}")
1159-
result = False, f"<font color=red> Connection failed, {str(e)} </font>"
1160-
1161-
return result
1162-
1163-
11641142
def is_dark_theme():
11651143
"""
11661144
Checks whether dark theme is used:

Mergin/utils_auth.py

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@
55
from urllib.error import URLError
66
import requests
77

8-
from qgis.core import QgsApplication, QgsAuthMethodConfig, QgsBlockingNetworkRequest, QgsNetworkAccessManager
8+
from qgis.core import (
9+
QgsApplication,
10+
QgsAuthMethodConfig,
11+
QgsBlockingNetworkRequest,
12+
QgsNetworkAccessManager,
13+
QgsExpressionContextUtils,
14+
)
915
from qgis.PyQt.QtCore import QSettings, QUrl
1016
from qgis.PyQt.QtNetwork import QNetworkRequest
1117

12-
from .mergin.client import LoginType, MerginClient, AuthTokenExpiredError
18+
from .mergin.client import LoginType, MerginClient, AuthTokenExpiredError, ServerType
1319
from .mergin.common import ClientError, LoginError
1420

1521
from .utils import MERGIN_URL, get_qgis_proxy_config, get_plugin_version
@@ -325,7 +331,7 @@ def test_server_connection(
325331
password: typing.Optional[str] = None,
326332
use_sso: bool = False,
327333
sso_email: typing.Optional[str] = None,
328-
):
334+
) -> typing.Tuple[bool, str]:
329335
"""
330336
Test connection to Mergin Maps server. This includes check for valid server URL
331337
and user credentials correctness.
@@ -423,3 +429,47 @@ def sso_ask_for_email(url: str) -> typing.Tuple[bool, typing.Optional[str]]:
423429
return True, None
424430

425431
return False, None
432+
433+
434+
def set_qgsexpressionscontext(url: str, mc: typing.Optional[MerginClient] = None):
435+
QgsExpressionContextUtils.setGlobalVariable("mergin_url", url)
436+
QgsExpressionContextUtils.setGlobalVariable("mm_url", url)
437+
if mc:
438+
# username can be username or email, so we fetch it from api
439+
user_info = mc.user_info()
440+
username = user_info["username"]
441+
user_email = user_info["email"]
442+
user_full_name = user_info["name"]
443+
settings = QSettings()
444+
settings.setValue("Mergin/username", username)
445+
settings.setValue("Mergin/user_email", user_email)
446+
settings.setValue("Mergin/full_name", user_full_name)
447+
QgsExpressionContextUtils.setGlobalVariable("mergin_username", username)
448+
QgsExpressionContextUtils.setGlobalVariable("mergin_user_email", user_email)
449+
QgsExpressionContextUtils.setGlobalVariable("mergin_full_name", user_full_name)
450+
QgsExpressionContextUtils.setGlobalVariable("mm_username", username)
451+
QgsExpressionContextUtils.setGlobalVariable("mm_user_email", user_email)
452+
QgsExpressionContextUtils.setGlobalVariable("mm_full_name", user_full_name)
453+
else:
454+
QgsExpressionContextUtils.removeGlobalVariable("mergin_username")
455+
QgsExpressionContextUtils.removeGlobalVariable("mergin_user_email")
456+
QgsExpressionContextUtils.removeGlobalVariable("mergin_full_name")
457+
QgsExpressionContextUtils.removeGlobalVariable("mm_username")
458+
QgsExpressionContextUtils.removeGlobalVariable("mm_user_email")
459+
QgsExpressionContextUtils.removeGlobalVariable("mm_full_name")
460+
461+
462+
def mergin_server_deprecated_version(url: str) -> bool:
463+
mc = MerginClient(
464+
url=url,
465+
auth_token=None,
466+
login=None,
467+
password=None,
468+
plugin_version=get_plugin_version(),
469+
proxy_config=get_qgis_proxy_config(url),
470+
)
471+
472+
if mc.server_type() == ServerType.OLD:
473+
return True
474+
475+
return False

0 commit comments

Comments
 (0)