You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

84 lines
2.5 KiB

from django.shortcuts import _get_queryset
from django.utils import timezone
from pprint import pprint, pformat
import natsort
import pydash as _; _.map = _.map_; _.filter = _.filter_
import random
def take(coll, n):
chunk = coll[0:n]
del coll[0:n]
return chunk
def take_random(coll, n):
if n == 0:
return []
chunk = _.sample(coll, n)
for item in chunk:
coll.remove(item)
return chunk
def take_one_random(coll):
if len(coll) == 0:
return None
return coll.pop(_.random(0, len(coll)-1))
def random_phone():
return '+7' + str(_.sample((917, 964, 965, 987, 912, 935))) + str(_.random(1000000, 9999999))
def random_date():
return timezone.datetime(_.random(2012, 2018), _.random(1, 12), _.random(1, 28))
def random_amount():
return random.random() * random.choice((100, 1000, 10000))
def get_or_none(klass, *args, **kwargs):
queryset = _get_queryset(klass)
try:
return queryset.get(*args, **kwargs)
except queryset.model.DoesNotExist:
return None
def get_attr_or_none(klass, *args, attr=None, **kwargs):
object = get_or_none(klass, *args, **kwargs)
if object and attr and isinstance(attr, str):
return getattr(object, attr, None)
def model_fields(model, width=200):
fields = natsort.natsorted(model._meta.get_fields(), key=lambda f: f.name)
pprint([(
f.name,
'Relation? %s' % f.is_relation,
'Null? %s' % f.null,
'Blank? %s' % f.blank if not f.is_relation else '(relation)',
) for f in fields], width=width)
def lorem(sentences=5):
words = _.split((
'a ac adipiscing amet ante arcu at auctor augue bibendum commodo condimentum consectetur consequat convallis curabitur'
'cursus diam dictum dignissim dolor donec duis efficitur eget eleifend elit enim erat et eu ex facilisis faucibus feugiat'
'finibus gravida iaculis id imperdiet in integer ipsum lacinia lacus laoreet lectus leo libero ligula lobortis lorem'
'luctus maecenas mauris metus mi mollis morbi nam nec neque nisi non nulla nullam nunc odio orci ornare pellentesque'
'pharetra phasellus porta porttitor posuere pretium proin pulvinar purus quam quis rhoncus rutrum sapien sed sem semper'
'sit sollicitudin tempor tempus tincidunt tortor turpis ullamcorper ultricies ut varius vehicula vel velit vestibulum'
'vitae viverra volutpat vulputate'
), ' ')
return _.join(_.times(lambda i_: _.capitalize(_.join(_.sample(words, _.random(5, 30)), ' ')), sentences), '. ')