DEV Community

Cover image for Python Betiği İle Eklenti Geliştirme
Mustafa AKBEL for Liman

Posted on • Edited on

2 2

Python Betiği İle Eklenti Geliştirme

Liman MYS üzerinde python, bash veya powershell betikleri çalıştırabilmekteyiz.

1.İlk olarak Sistem Ayarları > Eklenti > Yeni yolunu izleyerek eklenti oluşturuyoruz. Yaptığımız işlem bize varsayılan olarak views klasör altında index.php ve functions.php olmak üzere iki dosya oluşturmaktaydı.

Visual Studio Code ile Liman sunucusuna bağlanıp eklenti dosyalarına erişebiliyoruz. Bu konu hakkında Mert Çelen'in yazdığı yazıya buradan ulaşabilirsiniz.

Alt Text

2.Scripts klasörü içine liman sunucusunda liman user'ı ile aşağıdaki kod yardımıyla devtopython adında python dosyası oluşturulur.

touch /liman/extensions/devtopython/scripts/devtopython.py

Veya Visual Studio Code arayüzü ile scripts klasörüne sağ tıklayıp new file diyerek oluşturabilirsiniz.

3.index.blade.php dosyasına gerekli kod parçacıkları yazılır. Aşağıdan erişebilirsiniz.

<button class="btn btn-primary mb-2" onclick="runScript()">Python scriptini çalıştır</button>
<div id="devtoPython"></div>

<script>
    function runScript(){
        var form = new FormData();
        request("{{API('runPythonScript')}}", form, function(response) {
            message = JSON.parse(response)["message"];
            $('#devtoPython').html(message);
        }, function(error) {
            $('#devtoPython').html("Hata oluştu");
        });
    }
</script>

Enter fullscreen mode Exit fullscreen mode

Butona tıklandığında anda javascript fonksiyonu çalışıp backend de runPythonScript php fonksiyonuna gidecek.

4.functions.php sayfasının içeriği ise aşağıdaki gibidir.

<?php 

    function index(){
        return view('index');
    }

    function runPythonScript(){
        $output = runScript("devtopython.py","",false);
        return respond($output,200);
    }

?>
Enter fullscreen mode Exit fullscreen mode

runScript helperı Liman üzerinden betik çalıştırmamızı sağlamaktadır. 3 parametre almaktadır. Birinci parametre betik adı, ikinci parametre betiğe gönderilmek istenen parametrelerdir, üçüncüsü ise betiğin sudo veya normal çalışacağını belirtmektedir. Üçüncü parametre false verilir ise normal, true verilir ise betik sudo ile çalıştırılmaktadır.

5.devtopython.py içerisinde istediğiniz python komutlarını kullanabilirsiniz. Örnek amaçlı kullanılan betiğin içeriği aşağıdadır.

#!/usr/bin/python3
print("Merhaba Dünya !!")
Enter fullscreen mode Exit fullscreen mode

Eklentinin görsel çıktıları aşağıdadır.
Butona basılmadan önceki görsel ;

Alt Text

Butona basıldıktan sonraki görsel ;

Alt Text

Eklentinin koduna buradan ulaşabilirsiniz.

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more