zhongrj
2025-11-24 276323dce9613867abb3f58a4cc2abbfb2fd0dea
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from django.contrib.auth.decorators import login_required, permission_required
from django import forms
from django.contrib import messages
from django.shortcuts import render
 
from app.plugins import PluginBase, Menu, MountPoint
from django.utils.translation import gettext as _
 
 
class ConfigurationForm(forms.Form):
    service_url = forms.CharField(
        label='Url service',
        max_length=100,
        required=True,
    )
    coverage_id = forms.CharField(
        label='Coverage Id',
        max_length=100,
        required=True,
    )
    token = forms.CharField(
        label='Token ',
        max_length=100,
        required=True,
    )
    task_id = forms.CharField(
        label='Task Id ',
        max_length=100,
        required=True,
    )
    buffer_size = forms.IntegerField(
        label='Buffer size in meters',
        required=True,
        min_value=0,
        max_value=1000,
    )
    bot_task_resizing_images = forms.BooleanField(
        label='Activate align generator',
        required=False,
        help_text='This will generate a file from service to align the images',
    )
 
    def save_settings(self):
        save(self.cleaned_data)
 
    def test_signal(self, request):
        from app.plugins.signals import task_resizing_images
        config_data = config()
        task_token = config_data.get("task_id")
        task_resizing_images.send(sender=self, task_id=task_token)
        messages.success(request, "Test ok")
 
 
class Plugin(PluginBase):
    def main_menu(self):
        return [Menu(_("Align Generator"), self.public_url(""), "fa fa-ruler-vertical fa-fw")]
 
    def app_mount_points(self):
        @login_required
        @permission_required('is_superuser', login_url='/dashboard')
        def index(request):
            if request.method == "POST":
 
                form = ConfigurationForm(request.POST)
                apply_configuration = request.POST.get("apply_configuration")
                signal_test = request.POST.get("test_signal")
                if form.is_valid() and signal_test:
                    form.test_signal(request)
                elif form.is_valid() and apply_configuration:
                    form.save_settings()
                    messages.success(request, "Settings applied successfully!")
            else:
                config_data = config()
                form = ConfigurationForm(initial=config_data)
 
            return render(request, self.template_path('index.html'), {'form': form, 'title': 'Align generator'})
 
        return [
            MountPoint('$', index),
        ]
 
 
def save(data: dict):
    from app.plugins.functions import get_current_plugin
    plugin = get_current_plugin(only_active=True)
    data_store = plugin.get_global_data_store()
 
    data_store.set_string('service_url', data.get('service_url')),
    data_store.set_string('coverage_id', data.get('coverage_id')),
    data_store.set_string('token', data.get('token')),
    data_store.set_string('task_id', data.get('task_id')),
    data_store.set_int('buffer_size', data.get('buffer_size')),
    data_store.set_bool('bot_task_resizing_images', data.get('bot_task_resizing_images')),
 
 
def config():
    from app.plugins.functions import get_current_plugin
    plugin = get_current_plugin(only_active=True)
    data_store = plugin.get_global_data_store()
 
    return {
        'service_url': data_store.get_string('service_url'),
        'coverage_id': data_store.get_string('coverage_id'),
        'task_id': data_store.get_string('task_id'),
        'token': data_store.get_string('token'),
        'buffer_size': data_store.get_int('buffer_size'),
        'bot_task_resizing_images': data_store.get_bool('bot_task_resizing_images'),
    }