File size: 1,729 Bytes
2b4b309
 
 
 
 
 
 
 
6fc91c7
2b4b309
fd936a6
2b4b309
 
 
 
 
 
 
 
 
fd936a6
 
 
2b4b309
 
 
 
 
 
fd936a6
 
 
 
6fc91c7
 
 
 
 
 
 
5fca25d
 
6fc91c7
5fca25d
fd936a6
5fca25d
 
 
 
 
 
 
6fc91c7
 
9ac3da0
 
6fc91c7
0d28c87
 
 
 
6fc91c7
40e000b
 
9ac3da0
 
 
0d28c87
 
9ac3da0
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import gradio as gr
from gradio.oauth import (
    OAUTH_CLIENT_ID,
    OAUTH_CLIENT_SECRET,
    OAUTH_SCOPES,
    OPENID_PROVIDER_URL,
    get_space,
)
from huggingface_hub import whoami

_CHECK_IF_SPACE_IS_SET = (
    all(
        [
            OAUTH_CLIENT_ID,
            OAUTH_CLIENT_SECRET,
            OAUTH_SCOPES,
            OPENID_PROVIDER_URL,
        ]
    )
    or get_space() is None
)

if _CHECK_IF_SPACE_IS_SET:
    from gradio.oauth import OAuthToken
else:
    OAuthToken = str


def get_login_button():
    return gr.LoginButton(
        value="Sign in with Hugging Face!",
        size="lg",
    )


def get_duplicate_button():
    if get_space() is not None:
        return gr.DuplicateButton(size="lg")


def list_orgs(oauth_token: OAuthToken = None):
    if oauth_token is None:
        return []
    data = whoami(oauth_token.token)
    print(data["auth"])
    organisations = [
        entry["entity"]["name"]
        for entry in data["auth"]["accessToken"]["fineGrained"]["scoped"]
        if "repo.write" in entry["permissions"]
    ]
    organisations.append(data["name"])
    return list(set(organisations))


def get_org_dropdown(oauth_token: OAuthToken = None):
    orgs = list_orgs(oauth_token)
    return gr.Dropdown(
        label="Organization",
        choices=orgs,
        value=orgs[0] if orgs else None,
        allow_custom_value=True,
    )


def get_token(oauth_token: OAuthToken = None):
    if oauth_token:
        return oauth_token.token
    else:
        return ""


def swap_visibilty(oauth_token: OAuthToken = None):
    if oauth_token is None:
        return gr.update(elem_classes=["main_ui_logged_out"])
    else:
        return gr.update(elem_classes=["main_ui_logged_in"])