コード例 #1
0
ファイル: common_internal.py プロジェクト: Cron-J/otree-core
    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
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
0
ファイル: serializers.py プロジェクト: dcthomas4679/oTree-1
 class Meta:
     model = Participant
     fields = get_all_fields(Participant)