mirror of
https://github.com/wekan/wekan.git
synced 2025-09-22 01:50:48 +02:00
Created New card with Python3 and REST API (markdown)
parent
9f8c39effe
commit
5526c6d38e
1 changed files with 172 additions and 0 deletions
172
New-card-with-Python3-and-REST-API.md
Normal file
172
New-card-with-Python3-and-REST-API.md
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
Also see:
|
||||||
|
- https://wekan.github.io/api/
|
||||||
|
- https://github.com/pycurl/pycurl/tree/master/examples/quickstart
|
||||||
|
|
||||||
|
# Install
|
||||||
|
|
||||||
|
Windows
|
||||||
|
```
|
||||||
|
choco install python3
|
||||||
|
# REBOOT
|
||||||
|
pip3 install pip --upgrade
|
||||||
|
pip3 install pycurl certifi json
|
||||||
|
python3 newcard.py
|
||||||
|
```
|
||||||
|
Debian/Ubuntu
|
||||||
|
```
|
||||||
|
sudo apt-get install python3 python3-pip python3-pycurl
|
||||||
|
sudo pip3 install pip --upgrade
|
||||||
|
sudo pip3 install certifi json
|
||||||
|
chmod +x newcard.py
|
||||||
|
./newcard.py
|
||||||
|
```
|
||||||
|
|
||||||
|
# newcard.py
|
||||||
|
|
||||||
|
Change these:
|
||||||
|
- https://example.com => Your Wekan URL
|
||||||
|
- username: joe
|
||||||
|
- password: topsecret
|
||||||
|
- BOARD-ID-HERE
|
||||||
|
- LIST-ID-HERE
|
||||||
|
- USER-ID-HERE
|
||||||
|
|
||||||
|
```
|
||||||
|
#! /usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vi:ts=4:et
|
||||||
|
|
||||||
|
import pycurl
|
||||||
|
try:
|
||||||
|
# python 3
|
||||||
|
from urllib.parse import urlencode
|
||||||
|
except ImportError:
|
||||||
|
# python 2
|
||||||
|
from urllib import urlencode
|
||||||
|
|
||||||
|
import certifi
|
||||||
|
import json
|
||||||
|
from io import BytesIO
|
||||||
|
|
||||||
|
buffer = BytesIO()
|
||||||
|
c = pycurl.Curl()
|
||||||
|
c.setopt(c.URL, 'https://example.com/users/login')
|
||||||
|
c.setopt(c.WRITEDATA, buffer)
|
||||||
|
c.setopt(c.CAINFO, certifi.where())
|
||||||
|
post_data = {"username": "joe", "password": "topsecret"}
|
||||||
|
# Form data must be provided already urlencoded.
|
||||||
|
postfields = urlencode(post_data)
|
||||||
|
# Sets request method to POST,
|
||||||
|
# Content-Type header to application/x-www-form-urlencoded
|
||||||
|
# and data to send in request body.
|
||||||
|
c.setopt(c.POSTFIELDS, postfields)
|
||||||
|
|
||||||
|
c.perform()
|
||||||
|
c.close()
|
||||||
|
|
||||||
|
body = buffer.getvalue()
|
||||||
|
# Body is a byte string.
|
||||||
|
# We have to know the encoding in order to print it to a text file
|
||||||
|
# such as standard output.
|
||||||
|
data = body.decode('iso-8859-1')
|
||||||
|
#print(data)
|
||||||
|
d = json.loads(data)
|
||||||
|
#print(list(d.keys()))
|
||||||
|
#print(d['token'])
|
||||||
|
apikey = d['token']
|
||||||
|
|
||||||
|
# Lists of board
|
||||||
|
c = pycurl.Curl()
|
||||||
|
c.setopt(c.URL, 'https://example.com/api/boards/BOARD-ID-HERE/lists')
|
||||||
|
c.setopt(c.WRITEDATA, buffer)
|
||||||
|
c.setopt(c.CAINFO, certifi.where())
|
||||||
|
c.setopt(c.HTTPHEADER, ['Accept: application/json', 'Authorization: Bearer {}'.format(apikey)])
|
||||||
|
##post_data = {"authorId": "joe", "password": "topsecret"}
|
||||||
|
# Form data must be provided already urlencoded.
|
||||||
|
#postfields = urlencode(post_data)
|
||||||
|
# Sets request method to POST,
|
||||||
|
# Content-Type header to application/x-www-form-urlencoded
|
||||||
|
# and data to send in request body.
|
||||||
|
#c.setopt(c.POSTFIELDS, postfields)
|
||||||
|
c.perform()
|
||||||
|
c.close()
|
||||||
|
body = buffer.getvalue()
|
||||||
|
data = body.decode('iso-8859-1')
|
||||||
|
print("=== LISTS ===\n")
|
||||||
|
print(data)
|
||||||
|
print("\n")
|
||||||
|
data = ""
|
||||||
|
|
||||||
|
# Swimlanes of board
|
||||||
|
c = pycurl.Curl()
|
||||||
|
c.setopt(c.URL, 'https://example.com/api/boards/BOARD-ID-HERE/swimlanes')
|
||||||
|
c.setopt(c.WRITEDATA, buffer)
|
||||||
|
c.setopt(c.CAINFO, certifi.where())
|
||||||
|
c.setopt(c.HTTPHEADER, ['Accept: application/json', 'Authorization: Bearer {}'.format(apikey)])
|
||||||
|
##post_data = {"authorId": "joe", "password": "topsecret"}
|
||||||
|
# Form data must be provided already urlencoded.
|
||||||
|
#postfields = urlencode(post_data)
|
||||||
|
# Sets request method to POST,
|
||||||
|
# Content-Type header to application/x-www-form-urlencoded
|
||||||
|
# and data to send in request body.
|
||||||
|
#c.setopt(c.POSTFIELDS, postfields)
|
||||||
|
c.perform()
|
||||||
|
c.close()
|
||||||
|
body = buffer.getvalue()
|
||||||
|
data = body.decode('iso-8859-1')
|
||||||
|
print("=== SWIMLANES ===\n")
|
||||||
|
print(data)
|
||||||
|
print("\n")
|
||||||
|
data = ""
|
||||||
|
|
||||||
|
# Board info
|
||||||
|
c = pycurl.Curl()
|
||||||
|
c.setopt(c.URL, 'https://example.com/api/boards/BOARD-ID-HERE')
|
||||||
|
c.setopt(c.WRITEDATA, buffer)
|
||||||
|
c.setopt(c.CAINFO, certifi.where())
|
||||||
|
c.setopt(c.HTTPHEADER, ['Accept: application/json', 'Authorization: Bearer {}'.format(apikey)])
|
||||||
|
##post_data = {"authorId": "joe", "password": "topsecret"}
|
||||||
|
# Form data must be provided already urlencoded.
|
||||||
|
#postfields = urlencode(post_data)
|
||||||
|
# Sets request method to POST,
|
||||||
|
# Content-Type header to application/x-www-form-urlencoded
|
||||||
|
# and data to send in request body.
|
||||||
|
#c.setopt(c.POSTFIELDS, postfields)
|
||||||
|
c.perform()
|
||||||
|
c.close()
|
||||||
|
body = buffer.getvalue()
|
||||||
|
data = body.decode('iso-8859-1')
|
||||||
|
print("=== BOARD ===\n")
|
||||||
|
print(data)
|
||||||
|
print("\n")
|
||||||
|
data = ""
|
||||||
|
|
||||||
|
# Write to card
|
||||||
|
c = pycurl.Curl()
|
||||||
|
c.setopt(c.URL, 'https://example.com/api/boards/BOARD-ID-HERE/lists/LIST-ID-HERE/cards')
|
||||||
|
c.setopt(c.WRITEDATA, buffer)
|
||||||
|
c.setopt(c.CAINFO, certifi.where())
|
||||||
|
c.setopt(c.HTTPHEADER, ['Accept: application/json', 'Authorization: Bearer {}'.format(apikey)])
|
||||||
|
post_data = {"authorId": "USER-ID-HERE", "title": "Test API", "description": "Testing Description", "swimlaneId": "SWIMLANE-ID-HERE"}
|
||||||
|
# Form data must be provided already urlencoded.
|
||||||
|
postfields = urlencode(post_data)
|
||||||
|
# Sets request method to POST,
|
||||||
|
# Content-Type header to application/x-www-form-urlencoded
|
||||||
|
# and data to send in request body.
|
||||||
|
c.setopt(c.POSTFIELDS, postfields)
|
||||||
|
c.perform()
|
||||||
|
c.close()
|
||||||
|
body = buffer.getvalue()
|
||||||
|
data = body.decode('iso-8859-1')
|
||||||
|
print(data)
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
authorId: string
|
||||||
|
members: string
|
||||||
|
assignees: string
|
||||||
|
title: string
|
||||||
|
description: string
|
||||||
|
swimlaneId: string
|
||||||
|
"""
|
||||||
|
```
|
Loading…
Add table
Add a link
Reference in a new issue