# HG changeset patch # User Alexandre Fayolle # Date 1266919071 -3600 # Node ID 573a6451b424bf6fc4bd10b7686d138cb019830c # Parent 717310b3d5765cdf70e45c5e3dccdc61b2171843# Parent ca11228a52683684b411275b306f6f1fddf22d9f merge diff -r 717310b3d576 -r 573a6451b424 devtools/fill.py --- a/devtools/fill.py Tue Feb 23 08:54:04 2010 +0100 +++ b/devtools/fill.py Tue Feb 23 10:57:51 2010 +0100 @@ -142,7 +142,7 @@ def generate_date(self, entity, attrname, index): """generates a random date (format is 'yyyy-mm-dd')""" - base = date(randint(2000, 2004), randint(1, 12), randint(1, 28)) + base = date(randint(2000, 2010), 1, 1) + timedelta(randint(1, 365)) return self._constrained_generate(entity, attrname, base, timedelta(days=1), index) def generate_time(self, entity, attrname, index): diff -r 717310b3d576 -r 573a6451b424 devtools/test/unittest_dbfill.py --- a/devtools/test/unittest_dbfill.py Tue Feb 23 08:54:04 2010 +0100 +++ b/devtools/test/unittest_dbfill.py Tue Feb 23 10:57:51 2010 +0100 @@ -9,6 +9,7 @@ import os.path as osp import re +import datetime from logilab.common.testlib import TestCase, unittest_main @@ -41,7 +42,6 @@ def _available_Person_firstname(self, etype, attrname): return [f.strip() for f in file(osp.join(DATADIR, 'firstnames.txt'))] - def setUp(self): config = ApptestConfiguration('data') config.bootstrap_cubes() @@ -52,17 +52,6 @@ self.bug_valgen = MyValueGenerator(e_schema) self.config = config - def _check_date(self, date): - """checks that 'date' is well-formed""" - year = date.year - month = date.month - day = date.day - self.failUnless(day in range(1, 29), '%s not in [0;28]' % day) - self.failUnless(month in range(1, 13), '%s not in [1;12]' % month) - self.failUnless(year in range(2000, 2005), - '%s not in [2000;2004]' % year) - - def test_string(self): """test string generation""" surname = self.person_valgen.generate_attribute_value({}, 'surname', 12) @@ -92,15 +81,14 @@ def test_date(self): """test date generation""" # Test for random index - for index in range(5): + for index in range(10): date_value = self.person_valgen.generate_attribute_value({}, 'birthday', index) - self._check_date(date_value) + self.failUnless(isinstance(date_value, datetime.date)) def test_phone(self): """tests make_tel utility""" self.assertEquals(make_tel(22030405), '22 03 04 05') - def test_customized_generation(self): self.assertEquals(self.bug_valgen.generate_attribute_value({}, 'severity', 12), u'dangerous') @@ -110,7 +98,6 @@ u'yo') - class ConstraintInsertionTC(TestCase): def test_writeme(self): diff -r 717310b3d576 -r 573a6451b424 server/migractions.py --- a/server/migractions.py Tue Feb 23 08:54:04 2010 +0100 +++ b/server/migractions.py Tue Feb 23 10:57:51 2010 +0100 @@ -352,7 +352,7 @@ 'T eid %%(x)s' % perm, {'x': teid}, 'x', ask_confirm=False): if not gname in newgroups: - if not confirm or self.confirm('remove %s permission of %s to %s?' + if not confirm or self.confirm('Remove %s permission of %s to %s?' % (action, erschema, gname)): self.rqlexec('DELETE T %s G WHERE G eid %%(x)s, T eid %s' % (perm, teid), @@ -360,7 +360,7 @@ else: newgroups.remove(gname) for gname in newgroups: - if not confirm or self.confirm('grant %s permission of %s to %s?' + if not confirm or self.confirm('Grant %s permission of %s to %s?' % (action, erschema, gname)): self.rqlexec('SET T %s G WHERE G eid %%(x)s, T eid %s' % (perm, teid), @@ -371,7 +371,7 @@ 'T eid %s' % (perm, teid), ask_confirm=False): if not expression in newexprs: - if not confirm or self.confirm('remove %s expression for %s permission of %s?' + if not confirm or self.confirm('Remove %s expression for %s permission of %s?' % (expression, action, erschema)): # deleting the relation will delete the expression entity self.rqlexec('DELETE T %s E WHERE E eid %%(x)s, T eid %s' @@ -381,7 +381,7 @@ newexprs.pop(expression) for expression in newexprs.values(): expr = expression.expression - if not confirm or self.confirm('add %s expression for %s permission of %s?' + if not confirm or self.confirm('Add %s expression for %s permission of %s?' % (expr, action, erschema)): self.rqlexec('INSERT RQLExpression X: X exprtype %%(exprtype)s, ' 'X expression %%(expr)s, X mainvars %%(vars)s, T %s X ' @@ -528,7 +528,7 @@ def checkpoint(self, ask_confirm=True): """checkpoint action""" - if not ask_confirm or self.confirm('commit now ?', shell=False): + if not ask_confirm or self.confirm('Commit now ?', shell=False): self.commit() def cmd_add_cube(self, cube, update_database=True): @@ -1146,13 +1146,13 @@ should only be used for low level stuff undoable with existing higher level actions """ - if not ask_confirm or self.confirm('execute sql: %s ?' % sql): + if not ask_confirm or self.confirm('Execute sql: %s ?' % sql): self.session.set_pool() # ensure pool is set try: cu = self.session.system_sql(sql, args) except: ex = sys.exc_info()[1] - if self.confirm('error: %s\nabort?' % ex): + if self.confirm('Error: %s\nabort?' % ex): raise return try: @@ -1175,11 +1175,11 @@ msg = '%s (%s)' % (rql, kwargs) else: msg = rql - if not ask_confirm or self.confirm('execute rql: %s ?' % msg): + if not ask_confirm or self.confirm('Execute rql: %s ?' % msg): try: res = execute(rql, kwargs, cachekey) except Exception, ex: - if self.confirm('error: %s\nabort?' % ex): + if self.confirm('Error: %s\nabort?' % ex): raise return res @@ -1264,12 +1264,12 @@ else: msg = rql if self.ask_confirm: - if not self._h.confirm('execute rql: %s ?' % msg): + if not self._h.confirm('Execute rql: %s ?' % msg): raise StopIteration try: rset = self._h._cw.execute(rql, kwargs) except Exception, ex: - if self._h.confirm('error: %s\nabort?' % ex): + if self._h.confirm('Error: %s\nabort?' % ex): raise else: raise StopIteration diff -r 717310b3d576 -r 573a6451b424 utils.py --- a/utils.py Tue Feb 23 08:54:04 2010 +0100 +++ b/utils.py Tue Feb 23 10:57:51 2010 +0100 @@ -7,27 +7,33 @@ """ __docformat__ = "restructuredtext en" -from logilab.mtconverter import xml_escape - -import locale import sys import decimal import datetime -from md5 import md5 -from time import time -from random import randint, seed +import random + +from logilab.mtconverter import xml_escape +from logilab.common.deprecation import deprecated # initialize random seed from current time -seed() +random.seed() if sys.version_info[:2] < (2, 5): + + from time import time + from md5 import md5 + from random import randint + def make_uid(key): """forge a unique identifier not that unique on win32""" msg = str(key) + "%.10f" % time() + str(randint(0, 1000000)) return md5(msg).hexdigest() + else: + from uuid import uuid4 + def make_uid(key): # remove dash, generated uid are used as identifier sometimes (sql table # names at least) @@ -328,3 +334,12 @@ # we never ever want to fail because of an unknown type, # just return None in those cases. return None + +from logilab.common import date +_THIS_MOD_NS = globals() +for funcname in ('date_range', 'todate', 'todatetime', 'datetime2ticks', + 'days_in_month', 'days_in_year', 'previous_month', + 'next_month', 'first_day', 'last_day', 'ustrftime', + 'strptime'): + msg = '[3.6] %s has been moved to logilab.common.date' % funcname + _THIS_MOD_NS[funcname] = deprecated(msg)(getattr(date, funcname))