:evergreen_tree: Python module for communicating with the Taiga API

Overview
Comments
  • Preliminary pagination support API

    Preliminary pagination support API

    This implements support for pagination Fix #59

    By default list method retrieves all the objects navigating the pages returned by the API all argument allows to disable pagination and return all the results (implementing current behavior) lazy_pagination argument allows to load a single page

    opened by yakky 21
  • Package for Debian (.deb)

    Package for Debian (.deb)

    I've added a basic configuration to build .deb packages of the module for Debian-based systems.

    The configurations is not complete enough to get accepted into the official Debian repository, but it ought to suffice if someone wanted to set up a PPA, for example. Personally, I need the .deb-packaged version to be able to distribute the module in a particularly Debian-centric environment.

    Pybuild does the heavy lifting based on your existing setup.py file. A single command, which I've encapsulated in the Makefile, is enough to build the packages for both Python 2 and 3.

    If this is merged, the Maintainer field (line 4 in debian/control) should probably be changed to (one of) the repository maintainers from here.

    opened by rgson 15
  • bugfixes

    bugfixes

    This will add the ability to set existing custom attributes (fixes #18). Adds version to allowed_params in class UserStory and Task (maybe needs in Issue too?) (fixes #17). Forwards **attrs in UserStory add_task (fixes #16 )

    opened by dionysiusmarquis 8
  • AttributeError: 'History' object has no attribute 'id'

    AttributeError: 'History' object has no attribute 'id'

    Hi,

    I think one of the latest taiga-back commits broke python-taiga if not entirely but quite badly. I see they made changes to the history management in taiga-back (they fixed something with timeline history loops on fresh projects) and I suppose it had some effect on this tool.

    This gets raised when I'm trying to get a project by its slug: AttributeError: 'History' object has no attribute 'id'

    Got no idea where to fix it yet.

    type: bug status: approved 
    opened by theriverman 6
  • extend models (us, task, issue) and add epic model (init)

    extend models (us, task, issue) and add epic model (init)

    Hi @nephilaweb, thanks for the python-taiga api.

    This is my first time writing some python scripts and I would love to have some guidance of how to test my changes well.

    I extended some models so it's more usable in tools and also added an epic-support.

    Can you guide me along the way? I will update this pull request with the changes necessary to get this merged.

    Thanks! Cheers

    opened by sopitz 6
  • Request was throttled.Expected available in 86097 seconds.

    Request was throttled.Expected available in 86097 seconds.

    I was using this API to send out a massive amount of invites for a class to create public projects and adding members. It throttled at adding members. For some reason, my connection to Taiga Server is extremely slow. I have 100mbps at home and it takes 5 secs to load the website. I am not sure if it has anything to do with it. Thoughts? Thank you!

    type: bug status: feedback needed 
    opened by Bowenislandsong 5
  • LDAP auth not provided

    LDAP auth not provided

    Hi,

    As an LDAP user, I would like to have an ldap auth provided by python-taiga. I can't use python-taiga as long as ldap auth is not supported.

    Thanks in advance.

    opened by bzhtux 5
  • Added stats for Projects and Milestones

    Added stats for Projects and Milestones

    First of all: wonderful project, I like working with python-taiga!

    I want to fetch out some project stats but the stats API calls for Projects and Milestones were missing. I added these two calls and associated test cases with them.

    API doc: http://taigaio.github.io/taiga-doc/dist/api.html#projects-stats http://taigaio.github.io/taiga-doc/dist/api.html#milestones-stats

    opened by erikw 4
  • How to get project slug?

    How to get project slug?

    Description

    Hi, I want to get project slug. I need project slug to create full front-end link (eg. https://mytaigahost.com/project/<project_slug>/us/<userstory_id>) of user stories and tasks. Sorry, but I don't understand how to get it. Can you help me?

    Steps to reproduce

    projects = api.projects.list() not return project slug.

    Versions

    python-taiga 1.0.0 taiga 6.0.0

    type: bug 
    opened by menteora 3
  • Project listing agains taiga.io fails: too many projects

    Project listing agains taiga.io fails: too many projects

    Hello,

    I noticed that if you use python-taiga against https://api.taiga.io/ to list projects it fails.

    api.projects.list()
    (Traceback (most recent call last):
      File "./taiga-stats", line 175, in cmd_list_projects
        for proj in api.projects.list():
      File "/home/erikw/.virtualenvs/taiga-stats/lib/python3.6/site-packages/taiga/models/base.py", line 41, in list
        objects = self.parse_list(result.json())
      File "/home/erikw/.virtualenvs/taiga-stats/lib/python3.6/site-packages/requests/models.py", line 892, in json
        return complexjson.loads(self.text, **kwargs)
      File "/usr/lib64/python3.6/json/__init__.py", line 354, in loads
        return _default_decoder.decode(s)
      File "/usr/lib64/python3.6/json/decoder.py", line 339, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "/usr/lib64/python3.6/json/decoder.py", line 357, in raw_decode
        raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    

    No output fed in to the JSON decoding? So I decided to get down to my friend command line, and this works as expected:

    $ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer ${AUTH_TOKEN}" -s https://api.taiga.io/api/v1/projects
    ...
    <project JSON>
    

    So I drilled down the code and noticed that python-taiga always send the header

    x-disable-pagination: True
    

    to disable pagination and get everything at once.

    So I plugged this in to the the previous command line

    $ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer ${AUTH_TOKEN}" -H "x-disable-pagination: True" -s https://api.taiga.io/api/v1/projects
    <html>
    <head><title>504 Gateway Time-out</title></head>
    <body bgcolor="white">
    <center><h1>504 Gateway Time-out</h1></center>
    <hr><center>nginx/1.10.3 (Ubuntu)</center>
    </body>
    </html>
    

    and now it it also fails like when called with pyhon-taiga.

    I simply think this is the situation: now the number of public projects at taiga.io has recently grown too large to be included in one GET request to the project listing API endpoint. But before it was small enough to work.

    A user of my project taiga-stats reported this last week.

    I guess python-taiga should be adapted to use pagination for requests, so it can handle large taiga instances, like taiga.io now is. And I think this is prioritized to to, as I guess taiga.io is the most used instance of Taiga of them all!

    type: feature 
    opened by erikw 3
  • Unsecure login and auth_type

    Unsecure login and auth_type

    Allow the connection to a Taiga host using a self-signed certificate (also ignore the InsecureWarning triggered by urllib3).

    Taiga offers other types of authentication (LDAP, github, ...), so the key 'type' in the payload for the auth request can't be hard coded to 'normal'.

    opened by MaxenceAdnot 3
  • Update models.py

    Update models.py

    Add Epic Custom Attributes

    Description

    Describe:

    • Content of the pull request
    • Feature added / Problem fixed

    References

    Provide any github issue fixed (as in Fix #XYZ)

    Checklist

    • [ ] I have read the contribution guide
    • [ ] Code lint checked via inv lint
    • [ ] changes file included (see docs)
    • [ ] Usage documentation added in case of new features
    • [ ] Tests added
    opened by seraf167 0
  • Update __init__.py

    Update __init__.py

    Add EpicAttribute and EpicAttributes

    Description

    Describe:

    • Content of the pull request
    • Feature added / Problem fixed

    References

    Provide any github issue fixed (as in Fix #XYZ)

    Checklist

    • [ ] I have read the contribution guide
    • [ ] Code lint checked via inv lint
    • [ ] changes file included (see docs)
    • [ ] Usage documentation added in case of new features
    • [ ] Tests added
    opened by seraf167 0
  • [pre-commit.ci] pre-commit autoupdate

    [pre-commit.ci] pre-commit autoupdate

    opened by pre-commit-ci[bot] 2
  • Improve models documentation

    Improve models documentation

    Clarify that description is not available in the list responses

    References

    Fix #105

    Checklist

    • [x] I have read the contribution guide
    • [x] Code lint checked via inv lint
    • [x] changes file included (see docs)
    • [x] Usage documentation added in case of new features
    • [ ] Tests added
    type: bug 
    opened by yakky 2
  • Fix pagination

    Fix pagination

    Description

    Page parameter was not passed to querystring, thus pagination failed

    Ensure page parameter is actually passed to query parameters

    References

    Fix #116

    Checklist

    • [x] I have read the contribution guide
    • [x] Code lint checked via inv lint
    • [x] changes file included (see docs)
    • [ ] Usage documentation added in case of new features
    • [x] Tests added
    type: bug 
    opened by yakky 2
  • pagination, page always returns the first page

    pagination, page always returns the first page

    Description

    when you have more than 300 User stories (2071 in the one I'm working with) setting page=y will return the same results no matter the value of y

    Steps to reproduce

        the_page_size = 100
    
        for y in range(1,10):
            stories = api.user_stories.list(project=44, page=y, page_size=the_page_size)
            for x in stories:
                print(x.subject)
            print("*** Page *** ", y, "Len: ",len(stories))
    

    Versions

    Expected behaviour

    when incrementing "page" and re calling I would expect the next page of results to be returned

    Actual behaviour

    whatever value is set the first page is returned

    Additional information

    type: bug 
    opened by wadoadi 2
Releases(1.0.0)
Owner
Nephila
The Open source & Django web company based in Firenze, London and Zürich - https://gitter.im/nephila/applications
Nephila
Who are we? We are the Hunters of all Torrent in this world.🗡️.Fork from SlamDevs

MIRROR HUNTER This Mirror Bot is a multipurpose Telegram Bot writen in Python for mirroring files on the Internet to our beloved Google Drive. Repo la

Anime Republic 130 May 28, 2022
A Bot to get RealTime Tweets to a Specific Chats from Desired Persons on Twitter to Telegram Chat.

TgTwitterStreamer A Bot to get RealTime Tweets to a Specific Chats from Desired Persons on Twitter to Telegram Chat. For Getting ENV's Refer this Link

Anonymous 69 Dec 20, 2022
Blankly - 🚀 💸 Trade stocks, cryptos, and forex w/ one package. Easily build, backtest, trade, and deploy across exchanges in a few lines of code.

💨 Rapidly build and deploy quantitative models for stocks, crypto, and forex 🚀 View Docs · Our Website · Join Our Newsletter · Getting Started Why B

Blankly Finance 1.4k Jan 03, 2023
API Wrapper for seedr.cc

Seedr Python Client Seedr API built with 💛 by Souvik Pratiher Hit that Star button if you like this kind of SDKs and wants more of similar SDKs for o

Souvik Pratiher 2 Oct 24, 2021
Métamorphose Renamer v2

Métamorphose 2 Métamorphose is a graphical mass renaming program for files and folders. These are the command line options: -h, --help Show hel

Métamorphose 129 Dec 30, 2022
A python wrapper for the mangadex API V5. Work in progress

mangadex A python wrapper for the mangadex API V5. It uses the requests library and all the aditional arguments can be viewed in the Official Mangadex

Eduardo Ceja 27 Dec 14, 2022
Multi-Branch CI/CD Pipeline using CDK Pipelines.

Using AWS CDK Pipelines and AWS Lambda for multi-branch pipeline management and infrastructure deployment. This project shows how to use the AWS CDK P

AWS Samples 36 Dec 23, 2022
Asca - Antiscam Discord Bot With Python

asca Antiscam Discord Bot Asca moderates scammers and deletes scam messages Opti

11 Nov 01, 2022
A Code that can make your Discord Account 24/7!

Online-Forever Make your Discord Account Online 24/7! A Code written in Python that helps you to keep your account 24/7. The main.py is the main file.

Phantom 556 Dec 29, 2022
BiliBili-live-barrage-transceiver - A simple python program for sending and receiving barrage in bilibili live room

BiliBili-live-barrage-transceiver - A simple python program for sending and receiving barrage in bilibili live room

zeroy 2 Jan 18, 2022
Telegram Userbot built with Pyrogram

Pyrogram Userbot A Telegram Userbot based on Pyrogram This repository contains the source code of a Telegram Userbot and the instructions for running

Athfan Khaleel 113 Jan 03, 2023
Telegram bot made with Python to get notified when visa slots are available

Visa slot bot I created this bot to getnotified when screenshots are available in the Telegram channel for dropbox appointments. How do I use this? Ch

Jimil 7 Jan 03, 2023
A small package to markdownify Notion blocks.

markdownify-notion A small package to markdownify notion blocks. Installation Install this library using pip: $ pip install markdownify-notion Usage

Sergio Sánchez Zavala 2 Oct 29, 2022
An advanced Filter Bot with nearly unlimitted filters!

Unlimited Filter Bot ㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤ An advanced Filter Bot with nearly unlimitted filters! Features Nearly unlimited filters Supports all type of fil

1 Nov 20, 2021
veez music bot is a telegram music bot project, allow you to play music on voice chat group telegram.

🎶 Veez Music Bot Music bot for playing music on telegram voice chat group. Requirements 📝 FFmpeg NodeJS nodesource.com Python 3.7+ PyTgCalls 🧪 Get

levina 143 Jun 19, 2022
A Discord Self bot written in python

WitheredBot A Discord Self bot written in python Requirement Python = 3.9 How to Configure git clone https://github.com/a-a-a-aa/WitheredBot.git cd W

......... 0 Jan 05, 2023
A Python library for inserting an reverse shell attached to Telegram in any Python application.

py tel reverse shell the reverse shell in your telgram! What is this? This program is a Python library that you can use to put an inverted shell conne

Torham 12 Dec 28, 2022
Community-based extensions for the python-telegram-bot library.

Community-based extensions for the python-telegram-bot library. Table of contents Introduction Installing Getting help Contributing License Introducti

74 Dec 24, 2022
quote is a python wrapper for the Goodreads Quote API, powered by gazpacho.

About quote is a python wrapper for the Goodreads Quote API, powered by gazpacho.

Max Humber 11 Nov 10, 2022
Async ready API wrapper for Revolt API written in Python.

Mutiny Async ready API wrapper for Revolt API written in Python. Installation Python 3.9 or higher is required To install the library, you can just ru

16 Mar 29, 2022