seitime-frappe/frappe/utils/make_random.py
tundebabzy 6e29d9e925 xrange to range (#3237)
* introduces build status for local fork

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range

* converts xrange to range using six.moves.range

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range7

* converts xrange to range using six.moves.range7

* Revert "introduces build status for local fork"

This reverts commit 61f40983d0b3c6725369171ab850a18e5c029cc4.
2017-05-11 10:55:34 +05:30

53 lines
1.3 KiB
Python

import frappe, random
from six.moves import range
settings = frappe._dict(
prob = {
"default": { "make": 0.6, "qty": (1,5) },
}
)
def add_random_children(doc, fieldname, rows, randomize, unique=None):
nrows = rows
if rows > 1:
nrows = random.randrange(1, rows)
for i in range(nrows):
d = {}
for key, val in randomize.items():
if isinstance(val[0], basestring):
d[key] = get_random(*val)
else:
d[key] = random.randrange(*val)
if unique:
if not doc.get(fieldname, {unique:d[unique]}):
doc.append(fieldname, d)
else:
doc.append(fieldname, d)
def get_random(doctype, filters=None, doc=False):
condition = []
if filters:
for key, val in filters.items():
condition.append("%s='%s'" % (key, str(val).replace("'", "\'")))
if condition:
condition = " where " + " and ".join(condition)
else:
condition = ""
out = frappe.db.sql("""select name from `tab%s` %s
order by RAND() limit 0,1""" % (doctype, condition))
out = out and out[0][0] or None
if doc and out:
return frappe.get_doc(doctype, out)
else:
return out
def can_make(doctype):
return random.random() < settings.prob.get(doctype, settings.prob["default"])["make"]
def how_many(doctype):
return random.randrange(*settings.prob.get(doctype, settings.prob["default"])["qty"])