DEV Community

Cover image for Wagtail Admin+netlify
Taleb
Taleb

Posted on

Wagtail Admin+netlify

Netlify API Doc
https://open-api.netlify.com/

this are the three api endpoint we need
https://api.netlify.com/api/v1/sites/{site_id}/deploys
https://api.netlify.com/api/v1/sites/{site_id}/deploys/{deploy_id}
https://api.netlify.com/api/v1/deploys/{deploy_id}/cancel

Netlify Class

class Netlify(object):
    def __init__(
        self, netlify_site_name, netlify_api_key, netlify_site_id, netlify_webhook_id
    ):
...

    def start_job(self):
        url = f"https://api.netlify.com/build_hooks/{self.webhook_id}"
        requests.post(url)
        return self.list_jobs()[0]["id"]

    def stop_job(self, deploy_id):
        url = f"{self.base_url}/deploys/{deploy_id}/cancel"
        self.make_request(url, "POST")

    def get_job(self, deploy_id):
        url = f"{self.base_url}/sites/{self.site_id}/deploys/{deploy_id}"
        return self.make_request(url, action="GET")

    def list_jobs(self):
        url = f"{self.base_url}/sites/{self.site_id}/deploys"
        return self.make_request(url=url, action="GET")

Enter fullscreen mode Exit fullscreen mode

Wagtail admin view

amplify = Amplify(
        aws_access_key_id=settings.AMPLIFY_AWS_ACCESS_KEY_ID,
        aws_secret_access_key=settings.AMPLIFY_AWS_SECRET_ACCESS_KEY,
        app_id=settings.AMPLIFY_APP_ID,
        branch_name=settings.AMPLIFY_BRANCH,
    )

def netlify_jobs(request):

    job_id = request.GET.get("jobid", "")
    if job_id:
        active_job = netlify.get_job(job_id)

    jobs = netlify.list_jobs()
   ....
   render template

def start_build(request):
    jobid = netlify.start_job()
    ....


def stop_build(request, job_id):
    netlify.stop_job(job_id)
    ....
Enter fullscreen mode Exit fullscreen mode

Discussion (0)