zhongrj
2025-11-25 b89962006164a462404b79a738bee8cbb6d7fe7e
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
import json
import requests
 
from django import forms
from django.contrib import messages
from django.http import HttpResponse
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
 
from .globals import ION_API_URL
 
 
class TokenForm(forms.Form):
    token = forms.CharField(
        label="",
        required=False,
        max_length=1024,
        widget=forms.TextInput(attrs={"placeholder": "Token"}),
    )
 
 
def JsonResponse(dictionary):
    return HttpResponse(json.dumps(dictionary), content_type="application/json")
 
 
def HomeView(plugin):
    @login_required
    def view(request):
        ds = plugin.get_user_data_store(request.user)
 
        # if this is a POST request we need to process the form data
        if request.method == "POST":
            form = TokenForm(request.POST)
            if form.is_valid():
                token = form.cleaned_data["token"].strip()
                if len(token) > 0:
                    messages.success(request, "Updated Cesium ion Token!")
                else:
                    messages.info(request, "Reset Cesium ion Token")
                ds.set_string("token", token)
 
        form = TokenForm(initial={"token": ds.get_string("token", default="")})
 
        return render(
            request,
            plugin.template_path("app.html"),
            {"title": "Cesium Ion", "form": form},
        )
 
    return view
 
 
def LoadButtonView(plugin):
    @login_required
    def view(request):
        ds = plugin.get_user_data_store(request.user)
        token = ds.get_string("token")
 
        return render(
            request,
            plugin.template_path("load_buttons.js"),
            {
                "token": token,
                "app_name": plugin.get_name(),
                "api_url": plugin.public_url("").rstrip("/"),
                "ion_url": ION_API_URL,
            },
            content_type="text/javascript",
        )
 
    return view