Skip to main content

No project description provided

Project description

django-time-block

an django application to save the timeline information of an object.

Tutorial

from django_time_block.utils import add_time_block
def format_datetime(date_str: str) -> datetime.datetime:
    """formate datetime string format"""
    return datetime.datetime.strptime(
            date_str,
            "%Y-%m-%d %H:%M:%S",
    ).astimezone(
            timezone.get_current_timezone(),
    )

# record alice's work time according to her clock in record
object_id = "work_time_user_alice"
add_time_block(  # a timeblock record will be created
    object_id=object_id,
    start_datetime=format_datetime("2023-09-01 00:00:00"),
    end_datetime=format_datetime("2023-09-05 00:00:00"),
)
all_include(  # alice didn't work from 2023-09-05 00:00 to 2023-09-06 00:00
    object_id,
    format_datetime("2023-09-02 00:00:00"),
    format_datetime("2023-09-06 00:00:00"),
)  # False
TimeBlock.objects.filter(object_id=object_id).count()  # 1
add_time_block(  # the second record will merged int the first one
    object_id=object_id,
    start_datetime=format_datetime("2023-09-01 00:00:00"),
    end_datetime=format_datetime("2023-09-05 00:00:00"),
)
TimeBlock.objects.filter(object_id=object_id).count()  # 1
all_include(
    object_id,
    format_datetime("2023-09-02 00:00:00"),
    format_datetime("2023-09-06 00:00:00"),
)  # True
  • For example: You have to handle a lot of data from 2000-01-01 to 2023-11-11.

    • First day, you may handle the data from 2023-10-01 to 2023-11-11

    • Next day, you may have handled the data from 2023-09-01 to 2023-09-07: the results look like this:

    you will record: 2023-09-01~2023-09-07, 2023-10-01~2023-11-11

    • the third day, you handled the data from 2023-09-06 to 2023-10-02 then, the records will merge into one:

    this two records will be merged: 2023-09-01 ~ 2023-11-11

API

  • add_time_block

  • all_include
    check if a duration is all included

  • find_min_uninclude
    find the earliest datetime that was not included

  • find_max_uninclude
    find the latest datetime that was not included

  • find_uninclude_blocks
    find all the uninclude durations

PyPI - Version PyPI - Python Version


Table of Contents

Installation

pip install django-time-block

License

django-time-block is distributed under the terms of the MIT license.

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

django_time_block-0.5.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

django_time_block-0.5.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file django_time_block-0.5.0.tar.gz.

File metadata

  • Download URL: django_time_block-0.5.0.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.25.0

File hashes

Hashes for django_time_block-0.5.0.tar.gz
Algorithm Hash digest
SHA256 41c3c99aa14fbc994f911252d9fca9c52b95f381a69081183cb0bbe6a45ddf04
MD5 01980f05d36fbd57ee205dce368abf02
BLAKE2b-256 42f7334c45690edd376a9e841702371dd4296d2ee3ed5c9a8b46d2c6d335da64

See more details on using hashes here.

File details

Details for the file django_time_block-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_time_block-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ca5d5a47e07c56f086deffb65e47307e4a316c58219b5675a7d1a92a359fc55c
MD5 39863274bca91a9433233db0d6ba659d
BLAKE2b-256 af530b3f1812dacafe4af5d5c8ad22aaa6b2ff63fc2402f97fcd998f593265ed

See more details on using hashes here.

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