From a3d351eb8856003031b295b29610fe9d840db249 Mon Sep 17 00:00:00 2001 From: Bezleputh Date: Thu, 5 Mar 2015 18:16:34 +0100 Subject: [PATCH] [base] create enum in base and use it in calendar and housing --- weboob/capabilities/base.py | 15 +++++++++++++++ weboob/capabilities/calendar.py | 13 +------------ weboob/capabilities/housing.py | 13 +------------ 3 files changed, 17 insertions(+), 24 deletions(-) diff --git a/weboob/capabilities/base.py b/weboob/capabilities/base.py index 5180c88e..ab69e4e6 100644 --- a/weboob/capabilities/base.py +++ b/weboob/capabilities/base.py @@ -34,6 +34,21 @@ __all__ = ['UserError', 'FieldNotFound', 'NotAvailable', 'empty', 'BaseObject'] +def enum(**enums): + _values = enums.values() + _keys = enums.keys() + _items = enums.items() + _types = list((type(value) for value in enums.values())) + _index = dict((value if not isinstance(value, dict) else value.itervalues().next(), i) for i, value in enumerate(enums.values())) + + enums['keys'] = _keys + enums['values'] = _values + enums['items'] = _items + enums['index'] = _index + enums['types'] = _types + return type('Enum', (), enums) + + def empty(value): """ Checks if a value is empty (None, NotLoaded or NotAvailable). diff --git a/weboob/capabilities/calendar.py b/weboob/capabilities/calendar.py index 2a56ce4c..c37c19fb 100644 --- a/weboob/capabilities/calendar.py +++ b/weboob/capabilities/calendar.py @@ -17,7 +17,7 @@ # You should have received a copy of the GNU Affero General Public License # along with weboob. If not, see . -from .base import BaseObject, StringField, IntField, FloatField, Field +from .base import BaseObject, StringField, IntField, FloatField, Field, enum from .collection import CapCollection, CollectionNotFound, Collection from .date import DateField @@ -27,17 +27,6 @@ from weboob.tools.date import parse_date __all__ = ['BaseCalendarEvent', 'CapCalendarEvent'] -def enum(**enums): - _values = enums.values() - _items = enums.items() - _index = dict((value, i) for i, value in enumerate(enums.values())) - _types = list((type(value) for value in enums.values())) - enums['values'] = _values - enums['items'] = _items - enums['index'] = _index - enums['types'] = _types - return type('Enum', (), enums) - CATEGORIES = enum(CONCERT=u'Concert', CINE=u'Cinema', THEATRE=u'Theatre', TELE=u'Television', CONF=u'Conference') #the following elements deal with ICalendar stantdards diff --git a/weboob/capabilities/housing.py b/weboob/capabilities/housing.py index 6f9368fe..a0a39dce 100644 --- a/weboob/capabilities/housing.py +++ b/weboob/capabilities/housing.py @@ -19,7 +19,7 @@ from .base import Capability, BaseObject, Field, IntField, DecimalField, \ - StringField, BytesField + StringField, BytesField, enum from .date import DateField __all__ = ['HousingPhoto', 'Housing', 'Query', 'City', 'CapHousing'] @@ -71,17 +71,6 @@ class Query(BaseObject): TYPE_RENT = 0 TYPE_SALE = 1 - def enum(**enums): - _values = enums.values() - _items = enums.items() - _index = dict((value, i) for i, value in enumerate(enums.values())) - _types = list((type(value) for value in enums.values())) - enums['values'] = _values - enums['items'] = _items - enums['index'] = _index - enums['types'] = _types - return type('Enum', (), enums) - HOUSE_TYPES = enum(APART=u'Apartment', HOUSE=u'House', PARKING=u'Parking',