def generate_doc_dict(): doc_dict = OrderedDict() data_types_readable = { 'PositiveIntegerField': 'positive integer', 'IntegerField': 'integer', 'BooleanField': 'boolean', 'CharField': 'text', 'TextField': 'text', 'FloatField': 'decimal', 'DecimalField': 'decimal', 'CurrencyField': 'currency'} for model_name in model_names: if model_name == 'Participant': Model = session.Participant elif model_name == 'Session': Model = session.Session else: Model = getattr(models_module, model_name) field_names = set(field.name for field in Model._meta.fields) members = get_all_fields(Model, for_export=True) doc_dict[model_name] = OrderedDict() for member_name in members: member = getattr(Model, member_name, None) doc_dict[model_name][member_name] = OrderedDict() if member_name == 'id': doc_dict[model_name][member_name]['type'] = [ 'positive integer'] doc_dict[model_name][member_name]['doc'] = ['Unique ID'] elif member_name in field_names: member = Model._meta.get_field_by_name(member_name)[0] internal_type = member.get_internal_type() data_type = data_types_readable.get( internal_type, internal_type) doc_dict[model_name][member_name]['type'] = [data_type] # flag error if the model doesn't have a doc attribute, # which it should unless the field is a 3rd party field doc = getattr(member, 'doc', '[error]') or '' doc_dict[model_name][member_name]['doc'] = [ line.strip() for line in doc.splitlines() if line.strip()] choices = getattr(member, 'choices', None) if choices: doc_dict[model_name][member_name]['choices'] = ( choices_readable(choices)) elif callable(member): doc_dict[model_name][member_name]['doc'] = [ inspect.getdoc(member)] return doc_dict
def generate_doc_dict(): doc_dict = OrderedDict() data_types_readable = { 'PositiveIntegerField': 'positive integer', 'IntegerField': 'integer', 'BooleanField': 'boolean', 'CharField': 'text', 'TextField': 'text', 'FloatField': 'decimal', 'DecimalField': 'decimal', 'CurrencyField': 'currency'} for model_name in model_names: if model_name == 'Participant': Model = Participant elif model_name == 'Session': Model = Session else: Model = getattr(models_module, model_name) field_names = set(field.name for field in Model._meta.fields) members = get_all_fields(Model, for_export=True) doc_dict[model_name] = OrderedDict() for member_name in members: member = getattr(Model, member_name, None) doc_dict[model_name][member_name] = OrderedDict() if member_name == 'id': doc_dict[model_name][member_name]['type'] = [ 'positive integer'] doc_dict[model_name][member_name]['doc'] = ['Unique ID'] elif member_name in field_names: member = Model._meta.get_field_by_name(member_name)[0] internal_type = member.get_internal_type() data_type = data_types_readable.get( internal_type, internal_type) doc_dict[model_name][member_name]['type'] = [data_type] # flag error if the model doesn't have a doc attribute, # which it should unless the field is a 3rd party field doc = getattr(member, 'doc', '[error]') or '' doc_dict[model_name][member_name]['doc'] = [ line.strip() for line in doc.splitlines() if line.strip()] choices = getattr(member, 'choices', None) if choices: doc_dict[model_name][member_name]['choices'] = ( choices_readable(choices)) elif isinstance(member, collections.Callable): doc_dict[model_name][member_name]['doc'] = [ inspect.getdoc(member)] return doc_dict
def generate_doc_dict(): doc_dict = OrderedDict() data_types_readable = { "PositiveIntegerField": "positive integer", "IntegerField": "integer", "BooleanField": "boolean", "CharField": "text", "TextField": "text", "FloatField": "decimal", "DecimalField": "decimal", "CurrencyField": "currency", } for model_name in model_names: if model_name == "Participant": Model = Participant elif model_name == "Session": Model = Session else: Model = getattr(models_module, model_name) field_names = set(field.name for field in Model._meta.fields) members = get_all_fields(Model, for_export=True) doc_dict[model_name] = OrderedDict() for member_name in members: member = getattr(Model, member_name, None) doc_dict[model_name][member_name] = OrderedDict() if member_name == "id": doc_dict[model_name][member_name]["type"] = ["positive integer"] doc_dict[model_name][member_name]["doc"] = ["Unique ID"] elif member_name in field_names: member = Model._meta.get_field_by_name(member_name)[0] internal_type = member.get_internal_type() data_type = data_types_readable.get(internal_type, internal_type) doc_dict[model_name][member_name]["type"] = [data_type] # flag error if the model doesn't have a doc attribute, # which it should unless the field is a 3rd party field doc = getattr(member, "doc", "[error]") or "" doc_dict[model_name][member_name]["doc"] = [ line.strip() for line in doc.splitlines() if line.strip() ] choices = getattr(member, "choices", None) if choices: doc_dict[model_name][member_name]["choices"] = choices_readable(choices) elif callable(member): doc_dict[model_name][member_name]["doc"] = [inspect.getdoc(member)] return doc_dict
def export_time_spent(fp): """Write the data of the timespent on each_page as csv into the file-like object """ from otree.models_concrete import PageCompletion from otree.views.admin import get_all_fields columns = get_all_fields(PageCompletion) rows = PageCompletion.objects.order_by("session_pk", "participant_pk", "page_index").values_list(*columns) writer = csv.writer(fp) writer.writerows([columns]) writer.writerows(rows)
def export_time_spent(fp): """Write the data of the timespent on each_page as csv into the file-like object """ from otree.models_concrete import PageCompletion from otree.views.admin import get_all_fields columns = get_all_fields(PageCompletion) rows = PageCompletion.objects.order_by('session_pk', 'participant_pk', 'page_index').values_list(*columns) writer = csv.writer(fp) writer.writerows([columns]) writer.writerows(rows)
class Meta: model = Participant fields = get_all_fields(Participant)