Code Monkey home page Code Monkey logo

asana-hub's People

Contributors

soundofjw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

asana-hub's Issues

request multiprocessing for sync

Implementing multiprocessing.Pool to achieve parallel task-issue sync should increase throughput.

Asana Tasks:

#44725003599618

Synchronize issues and asana tasks

Create an action to sync the 'closed' / 'complete' status between asana tasks and github issues created with this app.

Two versions:

  • Full sync
  • Sync known 'open' issues/tasks

Asana Tasks:

#36084070893433

multiple issue stories created when connections fail during initial update

This occurred specifically when asana-hub sync fails for reasons like connection errors, etc.

screenshot 2015-08-11 13 12 43

Traceback

    1391) update pipelines library - no task
Process Process-5:
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "/Library/Python/2.7/site-packages/asana_hub/transport.py", line 207, in run_worker
    worker.run()
  File "/Library/Python/2.7/site-packages/asana_hub/transport.py", line 78, in run
    method(**packet)
  File "/Library/Python/2.7/site-packages/asana_hub/transport.py", line 180, in issue_edit
    issue.edit(body=body)
  File "/Library/Python/2.7/site-packages/github/Issue.py", line 296, in edit
    input=post_parameters
  File "/Library/Python/2.7/site-packages/github/Requester.py", line 169, in requestJsonAndCheck
    1390) Throttle ALL Music Manager Requests through a queue - cached
    return self.__check(*self.requestJson(verb, url, parameters, headers, input, cnx))
  File "/Library/Python/2.7/site-packages/github/Requester.py", line 210, in requestJson
    return self.__requestEncode(cnx, verb, url, parameters, headers, input, encode)
  File "/Library/Python/2.7/site-packages/github/Requester.py", line 247, in __requestEncode
    status, responseHeaders, output = self.__requestRaw(cnx, verb, url, requestHeaders, encoded_input)
  File "/Library/Python/2.7/site-packages/github/Requester.py", line 271, in __requestRaw
    requestHeaders
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 973, in request
    self._send_request(method, url, body, headers)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1007, in _send_request
    self.endheaders(body)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 969, in endheaders
    self._send_output(message_body)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 829, in _send_output
    self.send(msg)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 791, in send
    self.connect()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1172, in connect
    self.timeout, self.source_address)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 571, in create_connection
    raise err
timeout: timed out

Asana Tasks:

#46430188436645

Sync Github Issues to tasks via # asana numbers

Github Issues and Asana Tasks could be linked with #ASANATASK in the description of an issue.

Further, asana-hub sync should not automatically create asana tasks for issues unless explicitly instructed to do so.

Asana Tasks:

#36695138298865

sync fails when issues change during iteration

Iterating over issue_tasks fails when the set changes, which occurs during the sync process.

Traceback

Exception: RuntimeError('Set changed size during iteration',)
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/asana_hub/tool.py", line 401, in __init__
    action.run()
  File "/Library/Python/2.7/site-packages/asana_hub/actions/sync.py", line 278, in run
    for task_id in issue_tasks:
RuntimeError: Set changed size during iteration

Asana Tasks:

#42615941001493

Skip issues that haven't changed

Utilize Issue.updated_at to skip changes.

Will need a last_touched_at for each issue. Also something for the last_label_touched_at. Combine, make clean, etc.

Asana Tasks:

#42616217578548

Asana API Deprecation (Convert to Personal Tokens?)

API Key Deprecation

The Asana API key has served as a low barrier to entry means of authenticating against the API. We created it for personal scripts or for rapid prototyping of applications. Applications intended for large scale deployment should implement Asana Connect (OAuth 2.0) for authentication.

While easier to get started with, the API key poses security risks and provides a degraded user experience overall. Because we care deeply about user experience and security of the platform, we are rolling out a deprecation plan for API keys. This means that in the future, these keys will no longer be an acceptable means of authentication and developers will need to migrate to using one of the options below. We understand this will generate work for some developers and we'll do our best to ease the transition to what we strongly believe is a more secure and robust developer ecosystem.

API Deprecation Timeline

  • Today - Asana will launch personal access tokens (an alternative to API keys for command line access, personal projects or rapid prototyping of applications that will implement OAuth).
  • Today - Asana will launch a migration mechanism for applications currently deployed using API keys to exchange those keys for OAuth credentials.
  • 2-4 Months - Users will no longer be able to generate new API keys generation.
  • 4-8 Months - Asana will no longer accept API keys as a means of authenticating to the API.

    Asana Tasks:

#46430200839407

Auto-commit for `.asana-hub.proj`

Provide either a new action, or a new option for asana-hub sync that performs:

  • git add .asana-hub.proj
  • git commit -m "asana-hub sync [ci skip]"

This makes the process of asana-hub sync more streamlined in the git flow.

Asana Tasks:

#42615605021250

Remove empty dicts from .asana-hub.proj

Our asana sync project has many issues without tasks at all, and these are shown in the JSON file as:

{
    "501": {},
    "502": {},
    "503": {},
    "504": {},
    "505": {},
    "506": {},
    "507": {},
    "508": {},
    "509": {},
    "51": {},
    "510": {},
    "511": {},
    "512": {},
    "513": {},
    "514": {},
    "515": {},
    "516": {}
}

This is a lot to store in a text file, is there a means of compressing this information or excluding these items altogether?

Asana Tasks:

#39098625976593

Create `--first-issue` command

To prevent syncing archived issues, implement a first-issue setting to
bypass issues.

  • Adds --first-issue setting.
  • Shortens --create-missing-tasks with -c alias.

    Asana Tasks:

#39098890742071

BOZOOO

#36700026060608

Asana Tasks:

#36700026060608

Asana raises ForbiddenError when updating task status

Asana raises Exception: ForbiddenError(u'Forbidden: task: Not the correct type',).

I'm not exactly sure why asana might say a task isn't the "correct type," but my guess is a merged [duplicate] task.

Traceback

Exception: ForbiddenError(u'Forbidden: task: Not the correct type',)
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/asana_hub/tool.py", line 401, in __init__
    action.run()
  File "/Library/Python/2.7/site-packages/asana_hub/actions/sync.py", line 284, in run
    task = app.get_asana_task(task_id)
  File "/Library/Python/2.7/site-packages/asana_hub/tool.py", line 286, in get_asana_task
    return self.asana.tasks.find_by_id(asana_task_id)
  File "/Library/Python/2.7/site-packages/asana/resources/gen/tasks.py", line 49, in find_by_id
    return self.client.get(path, params, **options)
  File "/Library/Python/2.7/site-packages/asana/client.py", line 107, in get
    return self.request('get', path, params=query, **options)
  File "/Library/Python/2.7/site-packages/asana/client.py", line 77, in request
    raise STATUS_MAP[response.status_code](response)
ForbiddenError: Forbidden: task: Not the correct type

Asana Tasks:

#42615939304807

sync github checkboxes to asana sub-tasks

asana-hub sync --sync-checks (or -x) should sync checkboxes with sub-tasks.

If notated with another #PR or #ISSUE, closing the PR should trigger the checkbox to close and the sub-task to be completed.

This enables multi-feature issues that require more than one pull request to enable.

Asana Tasks:

#42616215259640

Test Cases!

No great repo was ever really that great without testing.

We'll use circle-ci for ci.

Asana Tasks:

#42616219258898

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.