Skip to main content

Basic functionality for Horae

Project description

Introduction

The horae.core package provides several core functionality used by the horae.* packages which there are:

  • Formatters for:

    • Prices

    • Sizes

    • Dates and times

    • Hours

  • Global configuration defining:

    • Title and description of the application

    • Work days

    • The currency

  • Generic interfaces for objects having a textual or integer ID

  • Utility managing integer IDs

  • Utility creating textual IDs

  • Base implementation of a container holding objects having a textual or integer ID

Usage

Formatters

Prices

The price formatter formats the given value using the current locale and adds the configured currency. The formatter is registered as an adapter implementing horae.core.interfaces.ICurrencyFormatter and adapting any context and the request. The following example shows the usage of the formatter in a view:

import grok
from zope.component import getMultiAdapter

from horae.core import interfaces

class SampleView(grok.View):

    def currency_formatted_price(self):
        formatter = getMultiAdapter((self.context, self.request),
                                    interface=interfaces.ICurrencyFormatter)
        return formatter.format(1050.25)

Sizes

The size formatter formats the given value (in bytes) as a number appending the appropriate unit (B, KB, MB, GB). The formatter is registered as an adapter implementing horae.core.interfaces.ISizeFormatter and adapting the request. The following example shows the usage of the formatter in a view:

class SampleView(grok.View):

    def size_formatted_price(self):
        return interfaces.ISizeFormatter(self.request).format(2048)

Dates and times

The date and time formatters are simple functions part of the horae.core.utils module. There are two functions available:

formatDateTime(value, request, format=('dateTime', 'short'), html=True)

Formats the datetime value using the locale provided by the request and the format provided. HTML output may be disabled by the html argument.

formatDateTimeRange(start, end, request, format=('dateTime', 'short'), html=True)

Formats the datetime range (start, end) using the locale provided by the request and the format provided. HTML output may be disabled by the html argument.

Hours

As with the date and time formatters the hours formatter is a simple function of the horae.core.utils module:

formatHours(value, request)

Formats the value as a decimal using the locale provided by the request.

IDs and base container implementation

horae.core defines two interfaces for objects having an ID:

horae.core.interfaces.ITextId

An object having a text ID

horae.core.interfaces.IIntId

An object having an integer ID

Text IDs may be generated by the text ID manager which is a global utility implementing horae.core.interfaces.ITextIdManager. The utility has two methods:

normalize(name)

Returns a normalized string usable in URLs based on the name provided

idFromName(container, name)

Returns a valid ID for a new object to be added to the container from the name provided

Integer IDs are managed by the int ID manager which is a local utility implementing horae.core.interfaces.IIntIdManager. The utility provides a method to get the next ID for a given key:

nextId(self, key)

Returns the next ID for the given key

Container

The base container implementation resides in the horae.core.container module and consists of a Container class implementing horae.core.interfaces.IContainer. The container is mainly there to simplify the process of adding new objects implementing one of the aforementioned ID interfaces. The add_object(obj) method checks if the given object has an attribute named id and whether it is None. If no ID is available one is generated. If the object implements horae.core.interfaces.ITextId the ID is generated by using the text ID manager otherwise by the int ID manager. A simple usage would look like this:

import grok

from horae.core import interfaces, container

class SampleContainer(container):

    def id_key(self):
        return 'sample_key'

class SampleIntIdContent(grok.Model):
    grok.implements(interfaces.IIntId)

class SampleTextIdContent(grok.Model):
    grok.implements(interfaces.ITextId)

An example usage of the above sample classes would look like this:

>>> container = SampleContainer()
>>> intcontent1 = SampleIntIdContent()
>>> container.add_object(intcontent1)
1
>>> intcontent1.id
1
>>> intcontent2 = SampleIntIdContent()
>>> container.add_object(intcontent2)
2
>>> intcontent2.id
2
>>> textcontent1 = SampleTextContent()
>>> textcontent1.name = u'Test name of the content'
>>> container.add_object(textcontent1)
'test_name_of_the_content'
>>> textcontent1.id
'test_name_of_the_content'
>>> textcontent2 = SampleTextContent()
>>> textcontent2.name = u'Test name of the content'
>>> container.add_object(textcontent2)
'test_name_of_the_content-2'
>>> textcontent2.id
'test_name_of_the_content-2'

Dependencies

Horae

Third party

Changelog

1.0a1 (2012-01-16)

  • Initial release

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

horae.core-1.0a1.tar.gz (11.8 kB view details)

Uploaded Source

File details

Details for the file horae.core-1.0a1.tar.gz.

File metadata

  • Download URL: horae.core-1.0a1.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for horae.core-1.0a1.tar.gz
Algorithm Hash digest
SHA256 1f61013914110b9546b32a41d892233b2ef7f442f60de26976d557c0a1265299
MD5 8ed3c28cb27f9fc9d624c73f418e7a5c
BLAKE2b-256 5ec892d05d584727eb84fc5c98ea92753006db39893ce68db4dbf70fb2cd33a1

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