+++ /dev/null
-#!/usr/bin/python3
-###############################################################################
-# #
-# Westferry - The IPFire web user interface #
-# Copyright (C) 2015 IPFire development team #
-# #
-# This program is free software: you can redistribute it and/or modify #
-# it under the terms of the GNU General Public License as published by #
-# the Free Software Foundation, either version 3 of the License, or #
-# (at your option) any later version. #
-# #
-# This program is distributed in the hope that it will be useful, #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
-# GNU General Public License for more details. #
-# #
-# You should have received a copy of the GNU General Public License #
-# along with this program. If not, see <http://www.gnu.org/licenses/>. #
-# #
-###############################################################################
-
-class Missing(object):
- pass
-
-_missing = Missing()
-
-class lazy_property(property):
- """
- The property is only computed once and then being
- cached until the end of the lifetime of the object.
- """
- def __init__(self, fget, fset=None, fdel=None, doc=None, name=None):
- property.__init__(self, fget=fget, fset=fset, fdel=fdel, doc=doc)
-
- self.__name__ = name or fget.__name__
- self.__module__ = fget.__module__
-
- def __get__(self, obj, type=None):
- if object is None:
- return self
-
- value = obj.__dict__.get(self.__name__, _missing)
- if value is _missing:
- obj.__dict__[self.__name__] = value = self.fget(obj)
-
- return value
-
- def __set__(self, obj, value):
- if self.fset:
- self.fset(obj, value)
-
- obj.__dict__[self.__name__] = value