Пример #1
0
 def test_index_new_row(self):
     data = 'house,2005-10-10\nwindow,2005-05-10\ncomputer,2005-10-10'
     handler = Things()
     handler.load_state_from_string(data)
     handler.add_row(['flower', Date.decode('2005-05-10')])
     self.assertEqual(handler.search(date=Date.decode('2005-05-10')),
                      [1,3])
Пример #2
0
 def test_load_state_with_schema(self):
     handler = Languages()
     handler.load_state_from_string(TEST_DATA_1)
     rows = list(handler.get_rows())
     self.assertEqual(rows, [
         [u"python", 'http://python.org/', 52343,
          Date.decode('2003-10-23')],
         [u"ruby", 'http://ruby-lang.org/', 42352,
          Date.decode('2001-03-28')]])
Пример #3
0
 def test_load_state_with_schema(self):
     handler = Languages()
     handler.load_state_from_string(TEST_DATA_1)
     rows = list(handler.get_rows())
     self.assertEqual(rows, [[
         u"python", 'http://python.org/', 52343,
         Date.decode('2003-10-23')
     ], [
         u"ruby", 'http://ruby-lang.org/', 42352,
         Date.decode('2001-03-28')
     ]])
Пример #4
0
 def test_build_csv_data(self):
     handler = People()
     handler.load_state_from_string('')
     handler.add_row(['Piotr', 'Macuk', Date.decode('1975-12-08')])
     handler.add_row(['Basia', 'Macuk', Date.decode('2002-02-14')])
     self.assertEqual(handler.search(surname='macuk'), [0, 1])
     handler.add_row(['Pawe³', 'Macuk', Date.decode('1977-05-13')])
     self.assertEqual(handler.search(surname='macuk'), [0, 1, 2])
     handler.del_row(2)
     self.assertEqual(handler.search(surname='macuk'), [0, 1])
     handler.del_row(0)
     self.assertEqual(handler.search(surname='macuk'), [1])
Пример #5
0
 def get_errors(self):
     errors = []
     handler = self.get_value('data')
     # Consistency check
     # First round on variables
     # Starting from 1 + header
     lineno = 2
     locals_ = {}
     for line in handler.get_rows():
         record = {}
         for index, key in enumerate(handler.columns):
             record[key] = line[index]
         # Name
         name = record['name']
         if name is None:
             continue
         if not Variable.is_valid(name):
             err = ERR_BAD_NAME.gettext(line=lineno, name=name)
             errors.append(err)
             continue
         if name in locals_:
             err = ERR_DUPLICATE_NAME.gettext(line=lineno, name=name)
             errors.append(err)
             continue
         # Type
         type_name = record['type']
         if type_name is None:
             # Write down default at this time
             record['type'] = type_name = 'str'
         datatype = Type.get_type(type_name)
         if datatype is None:
             err = ERR_BAD_TYPE.gettext(line=lineno, type=type_name)
             errors.append(err)
             continue
         # Length
         length = record['length']
         if length is None:
             # Write down default at this time
             record['length'] = length = 20
         if not ValidInteger.is_valid(length):
             err = ERR_BAD_LENGTH.gettext(line=lineno, length=length)
             errors.append(err)
             continue
         if issubclass(datatype, SqlEnumerate):
             # Enumerate Options
             enum_option = record['enum_options']
             if enum_option is None:
                 err = ERR_MISSING_OPTIONS(line=lineno)
                 errors.append(err)
                 continue
             # Split on "/"
             enum_options = EnumerateOptions.split(enum_option['value'])
             record['enum_options'] = enum_options
             # Enumerate Representation
             enum_repr = record['enum_repr']
             if enum_repr is None:
                 # Write down default at the time of writing
                 record['enum_repr'] = enum_repr = 'radio'
             if not EnumerateRepresentation.is_valid(enum_repr):
                 err = ERR_BAD_ENUM_REPR.gettext(line=lineno, enum_repr=enum_repr)
                 errors.append(err)
                 continue
         elif issubclass(datatype, NumDecimal):
             # Decimals
             decimals = record['decimals']
             if decimals is None:
                 # Write down default at the time of writing
                 record['decimals'] = decimals = 2
             if not ValidInteger.is_valid(decimals):
                 err = ERR_BAD_DECIMALS.gettext(line=lineno, decimals=decimals)
                 errors.append(err)
                 continue
         # Mandatory
         mandatory = record['mandatory']
         if mandatory is None:
             # Write down default at the time of writing
             record['mandatory'] = mandatory = True
         if not Mandatory.is_valid(mandatory):
             err = ERR_BAD_MANDATORY.gettext(line=lineno, mandatory=mandatory)
             errors.append(err)
             continue
         # Size
         size = record['size']
         if size is None:
             # Write down default at the time of writing
             if type_name == 'text':
                 record['size'] = size = 5
             else:
                 record['size'] = size = length
         if not ValidInteger.is_valid(size):
             err = ERR_BAD_SIZE.gettext(line=lineno, size=size)
             errors.append(err)
             continue
         # Default value
         default = record['default'] = record['default'].strip()
         if default:
             if issubclass(datatype, EnumBoolean):
                 value = Mandatory.decode(default)
                 default = EnumBoolean.encode(value)
             elif issubclass(datatype, SqlEnumerate):
                 datatype = datatype(options=enum_options)
                 #default = checkid(default) or ''
                 default = default
             elif issubclass(datatype, NumTime):
                 # "0-0-0 09:00:00" -> "09:00:00"
                 default = default.split(' ')[-1]
                 # "09:00:00" -> "09:00"
                 if default.count(":") > 1:
                     default = default.rsplit(":", 1)[0]
             elif issubclass(datatype, NumDate):
                 # "2010-11-18 00:00:00" -> "18/11/2010"
                 default = default.split(' ')[0]
                 value = Date.decode(default)
                 default = NumDate.encode(value)
             elif issubclass(datatype, NumDigit):
                 datatype = datatype(length=length)
             if not datatype.is_valid(default):
                 err = ERR_BAD_DEFAULT.gettext(line=lineno, default=unicode(default, 'utf_8'))
                 errors.append(err)
                 continue
             record['default'] = default
         if record['enum_repr'] == 'checkbox':
             locals_[name] = []
         else:
             locals_[name] = 0
         lineno += 1
     # Second round on references
     # Starting from 1 + header
     lineno = 2
     for row in handler.get_rows():
         dependency = row.get_value('dependency')
         if dependency:
             try:
                 Expression.is_valid(dependency, locals_)
             except Exception, err:
                 err = ERR_BAD_DEPENDENCY.gettext(line=lineno, err=err)
                 errors.append(err)
                 continue
         formula = row.get_value('formula')
         if formula:
             try:
                 datatype.sum
             except AttributeError:
                 err = ERR_NO_FORMULA.gettext(line=lineno, type=type_name)
                 errors.append(err)
                 continue
             try:
                 Expression.is_valid(formula, locals_)
             except Exception, err:
                 err = ERR_BAD_FORMULA.gettext(line=lineno, err=err)
                 errors.append(err)
                 continue
Пример #6
0
 def test_indexes_hit_in_many_rows(self):
     data = 'house,2005-10-10\nwindow,2005-05-10\ncomputer,2005-10-10'
     handler = Things(string=data)
     handler.load_state_from_string(data)
     self.assertEqual(handler.search(date=Date.decode('2005-01-01')), [])
     self.assertEqual(handler.search(date=Date.decode('2005-10-10')), [0,2])
Пример #7
0
 def test_indexes_hit_in_one_row(self):
     handler = Languages()
     handler.load_state_from_string(TEST_DATA_1)
     self.assertEqual(handler.search(number=52343), [0])
     self.assertEqual(handler.search(date=Date.decode('2001-03-28')), [1])
Пример #8
0
Файл: root.py Проект: TZM/zmgc
from ikaaro.table import OrderedTable, OrderedTableFile
from ikaaro.table_views import OrderedTable_View, Table_EditRecord
from ikaaro.text import CSV
from ikaaro.tracker import Tracker

# Import from wiki
from wiki import WikiFolder

# Import from tzm
from chapter.chapter import Chapters
from phoenix.phoenix import Phoenix
from project.project import Projects
#from training.training import Training
from forums.forums import Forums

message_date = Date.decode('2003-10-23')
MESSAGES_DATA = """0, 0, 120124, 'hello world'"""
###########################################################################
# Resources
###########################################################################

class Affiliations(CSV):
    
    class_id = 'affiliations'
    def init_resource(self):
        super(Affiliations, self).init_resource()
        path =  get_abspath('data/affiliations.csv')
        self.handler.load_state_from_uri(path)

class Industry(CSV):