: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
A discord bot that can detect Nitro Scam Links and delete them to protect other users

A discord bot that can detect Nitro Scam Links and delete them to protect other users. Add it to your server from here.

Kanak Mittal 9 Oct 20, 2022
A Discord bot themed around the Swedish heavy metal band Sabaton! (Python)

A Discord bot themed around the Swedish heavy metal band Sabaton! (Python)

Evan Lundberg 1 Nov 29, 2021
Discord Bot written in Python that plays music in your voice channel

Discord Bot that plays music! I decided to create a simple Discord bot using Python in order to advance my coding skills. Please don't ask me for help

Eric Yeung 39 Jan 01, 2023
A fun hangman style game to guess random movie names with a short summary about the movie.

hang-movie-man Hangman but for movies 😉 This is a fun hangman style game to guess random movie names from the local database and show some summary ab

Ankit Josh 10 Sep 07, 2022
YouTube-Discord-Bot - Discord Bot to Search YouTube

YouTube Bot Info YouTube Bot is a discord bot where you can search for anything

Riceblades11 10 Mar 05, 2022
The best (and now open source) Discord selfbot.

React Selfbot Yes, for real Why am I making this open source? Because can't stop calling my product a rat, tokenlogger and what else not. But there is

30 Nov 13, 2022
Pythonic wrapper for the Aladhan prayer times API.

aladhan.py is a pythonic wrapper for the Aladhan prayer times API. Installation Python 3.6 or higher is required. To Install aladhan.py with pip: pip

HETHAT 8 Aug 17, 2022
A collection of scripts to steal BTC from Lightning Network enabled custodial services. Only for educational purpose! Share your findings only when design flaws are fixed.

Lightning Network Fee Siphoning Attack LN-fee-siphoning is a collection of scripts to subtract BTC from Lightning Network enabled custodial services b

Reckless_Satoshi 14 Oct 15, 2022
Projeto Informações Conta do Instagram - Instagram Account Information Project

VESTA-tools A collection of simple tools that proved to be needed for handling large periodic calculations with the VASP software package. distTotCalc

Thiago Souza 1 Dec 02, 2021
Instagram-follower-bot - An Instagram follower bot written in Python

Instagram Follower Bot An Instagram follower bot written in Python. The bot follows the follower of which account you want. e.g. (You want to follow @

Aytaç Kaşoğlu 1 Dec 31, 2021
GitNews: Github webhooks for Telegram

GitNews - Github webhooks for Telegram Setup: server: clone repo git clone https

Druv Jagdish 1 Feb 14, 2022
Automatically copy the Discord Status of a Friend you share a server with (conditions have to be satisfied to work)

CopyDiscordStatusOfUser-SelfBot Basic Function Automatically copy the Discord Status of a friend User whom you share a server with (These conditions h

Certified Baller 5 Aug 05, 2022
Discord Remote Administration Tool

Discord Remote Administration Tool

Rdimo 82 Aug 15, 2022
Twitch Linux Typer

Twitch Linux Typer The most cursed Twitch chat bot Listens to twitch chat, and then types it handles hotkeys and button presses via the ^ char, eg ctr

Robin Universe 4 Jun 27, 2022
Automatically download any NFT collection from OpenSea.

OpenSea NFT Stealer The sole purpose of this script is to download any NFT collection from OpenSea. How does it work? Basically, the OpenSea website a

Dan 111 Dec 29, 2022
A Telegram Bot to prevent Night Spams

NightModeBot A Telegram Bot to lock group in night to prevent night spam Setps To Use - Put Variables Correctly. - Add Bot to your group and make admi

ReeshuXD 10 Oct 21, 2022
Reverse engineered connection to the TradingView ticker in Python

Tradingview-ticker Reverse engineered connection to the TradingView ticker in Python. Makes a websocket connection to the Tradeview website and receiv

Aaron 20 Dec 02, 2022
An hcaptcha-solving discord account generator; capable of randomizing names, profile pictures, and verifying phone numbers.

discord-account-generator An hcaptcha-solving discord account generator; capable of randomizing names, profile pictures, and verifying phone numbers.

Acier 61 Dec 10, 2022
Sakamata-alpha-pycord - Sakamata bot alpha with pycord

sakamatabot このリポジトリは? ホロライブ所属VTuber沙花叉クロヱさんの非公式ファンDiscordサーバー「クロヱ水族館」の運営/管理補助を行う

sushichaaaan 1 May 04, 2022
Fairstructure - Structure your data in a FAIR way using google sheets or TSVs

Fairstructure - Structure your data in a FAIR way using google sheets or TSVs. These are then converted to LinkML, and from there other formats

Linked data Modeling Language 23 Dec 01, 2022