Skip to main content

monday-item-parser is a library used to define Monday items structure in a specific board, and lets the user fetch, create, update and delete items from this board.

Project description

Monday Item Parser

Tests & Deploy to PyPI PyPI version

Introduction

Monday Item Parser is a library used to define Monday items structure in a specific board, and lets the user fetch, create, update and delete items from this board.

Installation

pip install monday-item-parser

Requirements

Changelog

  • 0.2.15 (2023-08-03) - Added support for the DropdownLabelField (like the DropdownField but work with the label of the dropdown instead of the index)
  • 0.2.14 (2023-08-03) - Added support for the StatusLabelField (like the StatusField but work with the label of the status instead of the index)
  • 0.2.13 (2023-08-03) - Added support for fetching group titles, and added the group_title to the Item class
  • 0.2.12 (2023-08-03) - Added support for the Location field
  • 0.2.10 (2022-09-08) - Added support for the Dropdown field and updated the monday library version
  • 0.2.9 (2022-04-22) - Fixed a bug in Long Text field
  • 0.2.8 (2022-04-22) - Added support for Long Text field
  • 0.2.7 (2022-03-30) - Bumped version because of workflow problems (again :()
  • 0.2.5 (2022-03-30) - Added mirror field to readme.
  • 0.2.4 (2022-03-30) - Added support for mirror (lookup) fields.
  • 0.2.3 (2021-01-16) - Same as 0.2.2, but got some problems with PyPI and Github Workflows again. :(
  • 0.2.2 (2021-01-16) - Added support for search items by column value
  • 0.2.1 (2021-01-16) - Added hooks for field values.
  • 0.2.0 (2021-01-14) - Updated the item's field value set method to be explicit (without calling .value)
  • 0.1.2 (2021-01-13) - Fixed a small bug in the Item::__init__ function
  • 0.1.1 (2021-01-13) - Still first release, but got some problems with PyPI and Github Workflows
  • 0.1.0 (2021-01-13) - First release

Todo List

  • Create fetch_groups function to an item that returns the id along with the group title
  • Add to the create_item function the option to add the item to a group by its title, not by id
  • Add custom exceptions for common errors:
    • Budget Exhausted Error
    • Invalid Group Id (in item creation)

How to use

Items

Items are the full board item structure, built from fields.

from monday import MondayClient
from monday_item_parser import Item, CheckboxField


board_id = 1234
monday_client = MondayClient("MONDAY_API_KEY_HERE")


class MyItem(Item, board_id=board_id, monday_client=monday_client):
    checkbox_example = CheckboxField()

    # Can be declared either as a type or as an instance, so this is good as well:
    checkbox_example = CheckboxField

NOTE: The variables in your item class must be named EXACTLY the same as in your monday board but in lower-case and replace spaces into underscore. For example a column in Monday with the name My Nice Column will must be defined in your item class my_nice_column.

Fetch items from board

>>> for item in ExampleItem.fetch_items_from_board():
>>>     print(item)

Items Preview

Fetch items by column value

You can fetch all of the items from board by a specific column value filter.

# Let's filter all of the items with a Status column named "status_example" that holds the label "Done"
for item in ExampleItem.fetch_items_by_column_value(status_example="Done"):
    print(item)

More info about supported and unsupported fields you can search by here.

Field Type Field Value to Search By
Text str The text to search
Status str The label to search
Numbers Either int or float. The value to search
Date datetime.datetime The date (year, month and day) to search by
Phone Phone (internal library class) The phone number to search by
Country str The country code to search by
Email str The email to search by
Timeline Timeline (internal library class) The start and end date to search by
Link Link (internal library class) The display text (not the actual url link) to search by
Mirror str The text to search
Long Text str The text to search

Create Item

NOTE: You can only create an item that isn't fetched from the board / already created using this exact function. If you want to create a new item that was fetched from the board you should use the duplicate_item function

>>> item = MyItem(checkbox_example=True)
>>> item.name = "My First Example"
>>> item.create_item()

Duplicate Item

NOTE: You can only duplicate an item that was fetched from the board / created by the create_item function.

>>> new_item = item.duplicate_item()

Update Item

NOTE: You can only update an item that was fetched from the board / created by the create_item function.

>>> new_item.name = 'Updated Item'
>>> new_item.checkbox_example = False
>>> new_item.update_item()

Delete Item

NOTE: You can only delete an item that was fetched from the board / created by the create_item function.

>>> new_item.delete_item()

Get Group Ids in Board

>>> for group_id in ItemExample.fetch_group_ids():
>>>     print(group_id)
"topics"
"group_title"

Hook Field Values

A hook can be registered for whenever the value on a specific field is changed.

from monday_item_parser import *

class ItemWithFieldHook(Item, monday_client=client, board_id=testing_board_id):
    status_example = StatusField
    checkbox_example = CheckboxField

    @field_updated_hook(status_example)
    def status_example_hook(self):
        if self.status_example.value is not None:
            # In the hook you must update the value with the
            # `.value` attribute if you don't want to trigger the hook again
            self.status_example.value += 1
        else:
            self.status_example.value = 0

item = ItemWithFieldHook()
# Trigger the hook by setting the value WITHOUT the `.value` attribute
item.status_example = 5
assert item.status_example.value == 6

Fields

Field is actually an Monday board's item column. The currently supported types are:

Monday Column Type Library Class Name
Checkbox CheckboxField
Country CountryField
Date DateField
Email EmailField
Link LinkField
Number NumberField
People PeopleField
Phone PhoneField
Status StatusField
Tags TagsField
Text TextField
Timeline TimelineField
Mirror MirrorField
Long Text LongTextField

Full Example

class ItemExample(Item, monday_client=client, board_id=testing_board_id):
    status_example = StatusField
    date_example = DateField
    checkbox_example = CheckboxField
    country_example = CountryField
    email_example = EmailField
    link_example = LinkField
    numbers_example = NumberField
    people_example = PeopleField
    phone_example = PhoneField
    tags_example = TagsField
    text_example = TextField
    timeline_example = TimelineField
	mirror_example = MirrorField
    long_text_example = LongTextField

item = ItemExample()

# Setting the values of an item
item.item_name = "Aviv Atedgi"
item.status_example = "Working on it"
item.date_example = datetime.now()
item.checkbox_example = True
item.country_example = "IL"
item.email_example = "aviv.atedgi2000@gmail.com"
item.link_example.value.url = "https://www.github.com/avivatedgi"
item.link_example.value.text = "My Github Profile"
item.link_example = LinkField(url="https://www.google.com", text="Google It")
item.numbers_example = 192.4
item.people_example = [Person(25200525)]
item.phone_example.value.country_code = "IL"
item.phone_example.value.phone = "0501234567"
item.phone_example = PhoneField(phone="12123123123", country_code="US")
item.tags_example = [12808387]
item.text_example = "My Cool Text Example"
item.timeline_example.value.start = datetime.strptime("2000-05-01", "%Y-%m-%d")
item.timeline_example.value.end = datetime.now()
item.timeline_example = TimelineField(
    start=datetime.strptime("2005-04-12", "%Y-%m-%d"),
    end=datetime.now(),
)
item.long_text_example = "Hello\nWorld"

# Getting the values of an item
print("Status Example =", item.status_example.value)
print("Date Example =", item.date_example.value)
print("Checkbox Example =", item.checkbox_example.value)
print("Country Example =", item.country_example.value)
print("Email Example =", item.email_example.value)
print("Link Example URL =", item.link_example.value.url)
print("Link Example Text =", item.link_example.value.text)
print("Numbers Example =", item.numbers_example.value)
print("People Example =", item.people_example.value)
print("Phone Example Country Code =", item.phone_example.value.country_code)
print("Phone Example Phone Number =", item.phone_example.value.phone)
print("Tags Example =", item.tags_example.value)
print("Text Example =", item.text_example.value)
print("Timeline Example Start Date =", item.timeline_example.value.start)
print("Timeline Example End Date =", item.timeline_example.value.end)
print("Mirror Example = ", item.mirror_example.value)
print("Long Text Example = ", item.long_text_example.value)

Special Thanks

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

monday_item_parser-0.2.15.tar.gz (28.3 kB view details)

Uploaded Source

Built Distribution

monday_item_parser-0.2.15-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

Details for the file monday_item_parser-0.2.15.tar.gz.

File metadata

  • Download URL: monday_item_parser-0.2.15.tar.gz
  • Upload date:
  • Size: 28.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.11.4 Darwin/22.5.0

File hashes

Hashes for monday_item_parser-0.2.15.tar.gz
Algorithm Hash digest
SHA256 617603fe28ddee04bc58e64e34eaa149542d8edf215018d3d18831b5e10a20a6
MD5 27972e3dfd7e5def5d1c931b2d7aadc9
BLAKE2b-256 3fdc55d1cc8cc404a564f93a4ac4af4e3e1e6bee4929748678100b8039cf973f

See more details on using hashes here.

Provenance

File details

Details for the file monday_item_parser-0.2.15-py3-none-any.whl.

File metadata

File hashes

Hashes for monday_item_parser-0.2.15-py3-none-any.whl
Algorithm Hash digest
SHA256 1a60cfdd6855e39285d89dedbda06a969e938ae7a9afb3953291bcf8cbabf8a2
MD5 7945f7ab6bf0c166ee4a567b8f8d5c2f
BLAKE2b-256 7faff339326950746cd78d1efebcdbd5a5d9a38b2971b90e337fb35dfa40e85c

See more details on using hashes here.

Provenance

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