Skip to main content

Python wrapper for TeamUp Calendar's API

Project description

pyTeamUp

Python API wrapper for TeamUp API. In early stages, only has event and calendar objects implemented.

version: 0.1.4a

Note: version 0.1.4a is required for working with the TeamUp API as of 11/26/2021. This version adds basic support for atttachment event attribute, but since it is undocumented in the official API there is no way to add or remove attachments. They can be viewed using event.attachments if set through the Web interface.

Features:

  • Pythonic access to TeamUp calendars and events.
  • Simple interface for gathering subcalendars and event containers.
  • Simple interface for creating and deleting events with Calendar object
  • Event Object features simple interface for updating event properties
  • Batch mode for reducing api calls for updating multiple event properties
  • If pandas is present, Calendar can return events as Series objects and event collections as DataFrame objects

Example usage

from pyteamup import Calendar, Event
from datetime import datetime

api_key = 'example api key'           # Get your own here: https://teamup.com/api-keys/request
calendar_id = 'example calendar id'   # goto www.teamup.com to sign up and get your own calendar

# Instantiate the calendar
calendar = Calendar(calendar_id, api_key)

# Get Subcalendars
subcalendars = calendar.subcalendars
subcal = subcalendars[0]

# Easily Create new events
new_event_dict = {'title': 'New Event Title',
                  'start_dt': datetime(2018,11,29, 14, 0, 0),
                  'end_dt': datetime(2018, 11, 29, 14, 0, 0),
                  'subcalendar_ids': subcal['id'],
                  'notes': 'This is the description!'}
new_event = calendar.new_event(**new_event_dict, returnas='event')
print(new_event.event_id)

# Gather Event Collections (returns a list)
event_list = calendar.get_event_collection()    # Note that the default start_dt and end_dt are -30 days and +180 days from today respectively
evnt = event_list.pop()

# Simple change of the title
print(evnt.title)
evnt.title = 'New Title'
print(evnt.title)

# Batch Mode Updates
evnt.enable_batch_update()
evnt.title = 'New Title 2'           # Will display a warning that no changes are made until batch_commit() is called
print(evnt.title)                    # Will still print the old title
print(evnt.notes)
evnt.notes = 'New Notes!'            # Will display a warning that no changes are made until batch_commit() is called

evnt.batch_commit()
print(evnt.title)
print(evnt.notes)

# Prevented from Editing Read-Only Attributes
evnt.event_id = 123                  # Will raise an error because attribute is read-only

# Easy Delete and confirm
evnt.delete()
print(evnt.is_deleted)                         # Will return True

todo

  • Add support for updating recurring events
  • Build Subcalendar object with update support similar to Event object
  • Add Tests
  • Add more Event endpoints (get history, get auxilliary info)
  • Add More Calendar endpoints (searching for events)
  • Add Access Key Endpoints
  • Add Color Swatch Lookup (create simple assignments for red, blue, green, etc)
  • Add support for password protected calendars
  • Add support for beta features: undo, custom fields, comments, signup

Installation

Using pip (Current Version: 0.1.4a):

python -m pip install pyTeamUp

Batch Mode

Events objects feature a batch mode for setting multiple values with a single api call, reducing your api usage and reducing the liklihood of TeamUp disabling your api key! Simply call event.enable_batch_mode() and begin making changes. When satisfied changes can be commited by calling event.batch_commit() which will automatically exit batch mode after, or call event.disable_batch_mode(clear=True) to discard changes.

Setting event data without enabling batch mode will cause each change to use an api request.

Questions

Use issue tracker please :)

FAQ

none

Change Log

0.1.4a

  • Added basic support for Event.attachment property to Event class to fix new undocumented change to teamup api. (credit: LogicallyUnfit)

0.1.3a

  • Refactored utilities format_date to use better timestamp awareness.

0.1.2a

  • Refactored date parameters in all object methods to use dt instead of date (requested by: LoreKeeperKen)
  • Eliminated unnecessary reproduction of pandas to_datetime in favor of dateutil's parse
  • Refactored check_status_code
  • minor Pep8 adjustments
  • fixed readme code errors

0.1.1a

  • Fixed versioning
  • Fixed file names, fixed import bug

0.1.0a2

  • Added "get_changed_events" method to Calendar (credit: vranki)

0.1.0a1

  • Initial realease

Contributors

Thank you to vranki for helping add features to the library, and LogicallyUnfit for helping keep the library stable during an undocumented API change.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyTeamUp-0.1.3b0.tar.gz (10.5 kB view hashes)

Uploaded Source

Built Distribution

pyTeamUp-0.1.3b0-py3-none-any.whl (12.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page