Пример #1
0
def entitydata_context_add_field(
    context_dict, field_id, dup_index, field_value,
        field_name='Entity_comment',
        field_label='Comment',
        field_render_type='Markdown',
        field_value_mode='Value_direct',
        field_value_type='annal:Richtext',
        field_placement='small:0,12',
        field_options=[]
        ):
    """
    Add field value to context; if duplicate then reformat appropriately.

    Field details default to Entity_comment

    Updates and returns supplied context dictionary.
    """
    #@@TODO: use field context from  entity_testfielddesc
    field_ids = [ f['field_id'] for f in context_dict['fields'] ]
    if field_id in field_ids:
        suffix = "__%d"%dup_index
    else:
        suffix = ""
    context_dict['fields'].append(
        { 'field_id':           field_id
        , 'field_value':        field_value
        , 'field_name':         field_name+suffix
        , 'field_label':        field_label
        , 'field_render_type':  field_render_type
        , 'field_value_mode':   field_value_mode
        , 'field_value_type':   field_value_type
        , 'field_placement':    get_placement_classes(field_placement)
        , 'options':            field_options
        })
    return context_dict
Пример #2
0
 def _get_repeatgroup_context(self):
     # context['field'] is essentially a bound_field value, combining the repeat group
     # description with a list of entity values to be formatted.
     repeatgroup_context = Context(
         { 'field':
             # ----- Repeated field values, as presented by bound_field
             { 'field_value':
               [ { "annal:field_id":         "Entity_id"
                 , "annal:field_placement":  "small:0,12;medium:0,6"
                 }
               , { "annal:field_id":         "Entity_type"
                 , "annal:field_placement":  "small:0,12;medium:6,6"
                 }
               , { "annal:field_id":         "Entity_label"
                 , "annal:field_placement":  "small:0,12"
                 , "annal:property_uri":     "rdfs:label"
                 }
               , { "annal:field_id":         "Entity_comment"
                 , "annal:field_placement":  "small:0,12"
                 , "annal:property_uri":     "rdfs:comment"
                 }
               ]
             , 'context_extra_values':       {}
             # ----- Field description -----
             , 'description':
                 { 'field_id':                   'View_fields'
                 , 'field_name':                 'View_fields'
                 , 'field_value_type':          'annal:Field_group'
                 , 'field_label':                'Fields'
                 , 'field_help':                 'This resource descibes the repeated field description used when displaying and/or editing a record view description'
                 , 'field_render_type':          'RepeatGroup'
                 , 'field_value_mode':           'Value_direct'
                 , 'field_property_uri':         'annal:view_fields'
                 , 'field_placement':            get_placement_classes("small:0,12")
                 , 'field_placeholder':          '(repeat field description)'
                 #@@ , 'field_group_ref':            'View_field_view'
                 , 'group_id':                   'View_fields'
                 , 'group_label':                'Fields'
                 , 'group_add_label':            'Add field'
                 , 'group_delete_label':         'Remove selected field(s)'
                 , 'group_field_descs':
                     [ field_description_from_view_field(
                         self.testcoll, { ANNAL.CURIE.field_id: "View_field_sel" },        {}
                         )
                     , field_description_from_view_field(
                         self.testcoll, { ANNAL.CURIE.field_id: "View_field_property" },   {}
                         )
                     , field_description_from_view_field(
                         self.testcoll, { ANNAL.CURIE.field_id: "View_field_placement" },  {}
                         )
                     ]
                 }
             }
         # ----- other values -----
         , 'auth_config':                  True
         })
     return repeatgroup_context
Пример #3
0
def context_field_row(*fields):
    row = ({
        'field_id': "Row_fields",
        'field_name': "Row_fields",
        'field_label': "Fields in row",
        'field_value_mode': "Value_direct",
        'field_render_type': "FieldRow",
        'field_placement': get_placement_classes('small:0,12'),
        'row_field_descs': list(fields)
    })
    return row
Пример #4
0
 def get_repeatgroup_context(self):
     # context['field'] is essentially a bound_field value, combining the repeat group
     # description with a list of entity values to be formatted.
     repeatgroup_context = Context(
         { 'field':
             # ----- Repeated field values, as presented by bound_field
             { 'field_value':
               [ { "annal:field_id":         "Entity_id"
                 , "annal:field_placement":  "small:0,12;medium:0,6"
                 }
               , { "annal:field_id":         "Entity_type"
                 , "annal:field_placement":  "small:0,12;medium:6,6"
                 }
               , { "annal:field_id":         "Entity_label"
                 , "annal:field_placement":  "small:0,12"
                 , "annal:property_uri":     "rdfs:label"
                 }
               , { "annal:field_id":         "Entity_comment"
                 , "annal:field_placement":  "small:0,12"
                 , "annal:property_uri":     "rdfs:comment"
                 }
               ]
             # ----- Field description -----
             , 'field_id':                   'View_fields'
             , 'field_name':                 'View_fields'
             , 'field_label':                'Fields'
             , 'field_help':                 'This resource descibes the repeated field description used when displaying and/or editing a record view description'
             , 'field_placeholder':          '(repeat field description)'
             , 'field_placement':            get_placement_classes("small:0,12")
             , 'field_property_uri':         'annal:view_fields'
             , 'field_value_type':           'annal:Field_group'
             , 'field_group_ref':            'View_field_view'
             , 'field_render_type':          'RepeatGroup'
             , 'group_id':                   'View_fields'
             , 'group_label':                'Fields'
             , 'group_add_label':            'Add field'
             , 'group_delete_label':         'Remove selected field(s)'
             , 'group_field_descs':
                 [ field_description_from_view_field(
                     self.testcoll, { ANNAL.CURIE.field_id: "Group_field_sel" },        {}
                     )
                 , field_description_from_view_field(
                     self.testcoll, { ANNAL.CURIE.field_id: "Group_field_property" },   {}
                     )
                 , field_description_from_view_field(
                     self.testcoll, { ANNAL.CURIE.field_id: "Group_field_placement" },  {}
                     )
                 ]
             , 'context_extra_values':       {}
             }
         # ----- other values -----
         , 'auth_config':                  True
         })
     return repeatgroup_context
Пример #5
0
def field_description_from_view_field(collection, field, view_context=None):
    """
    Returns a field description value created using information from
    a field reference in a view description record (i.e. a dictionary
    containing a field id value and optional field property URI and
    placement values.  (The optional values, if not provided, are 
    obtained from the referenced field descriptionb)

    collection      is a collection from which data is being rendered.
    field           is a dictionary with the field description from a view or list 
                    description, containing a field id and placement values.
    view_context    is a dictionary of additional values that may be used in assembling
                    values to be used when rendering the field.  In particular, a copy 
                    of the view description record provides context for some enumeration 
                    type selections.
    """
    #@@TODO: for resilience, revert this when all tests pass?
    # field_id    = field.get(ANNAL.CURIE.field_id, "Field_id_missing")  # Field ID slug in URI
    #@@
    field_id = field[ANNAL.CURIE.field_id]
    recordfield = RecordField.load(collection, field_id,
                                   collection._parentsite)
    if recordfield is None:
        log.warning("Can't retrieve definition for field %s" % (field_id))
        recordfield = RecordField.load(collection, "Field_missing",
                                       collection._parentsite)
    field_property = (field.get(ANNAL.CURIE.property_uri, None)
                      or recordfield.get(ANNAL.CURIE.property_uri, ""))
    field_placement = get_placement_classes(
        field.get(ANNAL.CURIE.field_placement, None)
        or recordfield.get(ANNAL.CURIE.field_placement, ""))
    # If field references group, pull in field details
    group_ref = recordfield.get(ANNAL.CURIE.group_ref, None)
    if group_ref:
        group_view = RecordGroup.load(collection, group_ref,
                                      collection._parentsite)
        if not group_view:
            raise EntityNotFound_Error("Group %s used in field %s" %
                                       (group_ref, field_id))
    else:
        group_view = None
    return FieldDescription(collection,
                            recordfield,
                            view_context=view_context,
                            field_property=field.get(ANNAL.CURIE.property_uri,
                                                     None),
                            field_placement=field.get(
                                ANNAL.CURIE.field_placement, None),
                            group_view=group_view)
Пример #6
0
def entitydata_context_add_field(context_dict,
                                 field_id,
                                 dup_index,
                                 field_value,
                                 field_name='Entity_comment',
                                 field_label='Comment',
                                 field_render_type='Markdown',
                                 field_value_mode='Value_direct',
                                 field_value_type='annal:Richtext',
                                 field_placement='small:0,12',
                                 field_options=[]):
    """
    Add field value to context; if duplicate then reformat appropriately.

    Field details default to Entity_comment

    Updates and returns supplied context dictionary.
    """
    #@@TODO: use field context from  entity_testfielddesc
    field_ids = [f['field_id'] for f in context_dict['fields']]
    if field_id in field_ids:
        suffix = "__%d" % dup_index
    else:
        suffix = ""
    context_dict['fields'].append({
        'field_id':
        field_id,
        'field_value':
        field_value,
        'field_name':
        field_name + suffix,
        'field_label':
        field_label,
        'field_render_type':
        field_render_type,
        'field_value_mode':
        field_value_mode,
        'field_value_type':
        field_value_type,
        'field_placement':
        get_placement_classes(field_placement),
        'options':
        field_options
    })
    return context_dict
 def _make_test_context(self, val, 
         repeat_prefix="repeat_prefix_", 
         target_value=None, 
         field_link=None, 
         target_link=None, 
         field_ref_type=None,
         options=None,
         coll_id="testcoll"
     ):
     cd = (
         { 'field':
           { 'field_placement':      get_placement_classes("small:0,12")
           , 'field_name':           "test_field"
           , 'field_label':          "test label"
           , 'field_placeholder':    "(test placeholder)"
           , 'field_value':          val
           , 'field_edit_value':     val
           , 'target_value':         val     # Mimics bound_field default behaviour
           , 'field_view_value':     val
           , 'continuation_param':   "?continuation_url=test_cont"
           }
         , 'repeat_prefix':        repeat_prefix
         , 'HOST':                 TestHostUri
         , 'SITE':                 TestBaseUri
         , 'COLL':                 TestBaseUri+"/c/"+coll_id+"/"
         , 'BASE':                 TestBasePath+"/c/"+coll_id+"/d/"
         })
     if target_value is not None:
         cd['field']['target_value'] = target_value
     if field_link is not None:
         cd['field']['field_value_link']              = field_link
         cd['field']['field_value_link_continuation'] = field_link+"?continuation_url=test_cont"
     if target_link is not None:
         cd['field']['target_value_link']              = target_link
         cd['field']['target_value_link_continuation'] = target_link+"?continuation_url=test_cont"
     if field_ref_type is not None:
         cd['field']['field_ref_type'] = field_ref_type
     if options is not None:
         cd['field']['options'] = options
     return Context(cd)
Пример #8
0
def context_field_row(*fields):
    """
    Return a FieldDescription like object for a displayed row of fields
    in a view context.

    *fields      is a sequence of bound field like obects
    """
    field_row = context_field({
        'field_id':
        "Row_fields",
        'field_name':
        "Row_fields",
        'field_label':
        "Fields in row",
        'field_value_mode':
        "Value_direct",
        'field_render_type':
        "FieldRow",
        'field_placement':
        get_placement_classes('small:0,12'),
        'row_field_descs':
        fields
    })
    return field_row
Пример #9
0
def recordview_entity_view_context_data(
        coll_id="testcoll", view_id=None, orig_id=None, view_ids=[],
        action=None, add_field=None, remove_field=None, 
        update="RecordView"
    ):
    # Target record fields listed in the view description
    view_fields = (
          [ { 'annal:field_id':         "Entity_id"
            , 'annal:field_placement':  "small:0,12;medium:0,6"
            }
          , { 'annal:field_id':         "Entity_type"
            , 'annal:field_placement':  "small:0,12;medium:6,6"
            }
          , { 'annal:field_id':         "Entity_label"
            , 'annal:property_uri':     "rdfs:label"
            , 'annal:field_placement':  "small:0,12"
            }
          , { 'annal:field_id':         "Entity_comment"
            , 'annal:property_uri':     "rdfs:comment"
            # , 'annal:field_placement':  field3_placement
            }
          ])
    context_dict = (
        { 'title':              "Collection %s"%(coll_id)
        , 'coll_id':            coll_id
        , 'type_id':            '_view'
        , 'orig_id':            'orig_view_id'
        , 'record_type':        'annal:View'
        , 'fields':
          [ { 'field_id':           'View_id'           # fields[0]
            , 'field_label':        'Id'
            , 'field_name':         'entity_id'
            , 'field_placement':    get_placement_classes('small:0,12;medium:0,6')
            , 'field_value_type':   'annal:Slug'
            # , 'field_value':      (Supplied separately)
            , 'options':            []
            }
          , { 'field_id':           'View_label'        # fields[1]
            , 'field_label':        'Label'
            , 'field_name':         'View_label'
            , 'field_placement':    get_placement_classes('small:0,12')
            , 'field_value_type':   'annal:Text'
            , 'field_value':        '%s data ... (%s/%s)'%(update, coll_id, view_id)
            , 'options':            []
            }
          , { 'field_id':           'View_comment'      # fields[2]
            , 'field_label':        'Help'
            , 'field_name':         'View_comment'
            , 'field_placement':    get_placement_classes('small:0,12')
            , 'field_value_type':   'annal:Longtext'
            , 'field_value':        '%s description ... (%s/%s)'%(update, coll_id, view_id)
            , 'options':            []
            }
          , { 'field_id':           'View_target_type'   # fields[3]
            , 'field_label':        'Record type'
            , 'field_name':         'View_target_type'
            , 'field_placement':    get_placement_classes('small:0,12')
            , 'field_value_type':   'annal:Identifier'
            , 'field_value':        'annal:View'
            , 'options':            []
            }
          , { 'field_id':           'View_add_field'    # fields[4]
            , 'field_label':        'Add field?'
            , 'field_name':         'View_add_field'
            , 'field_placement':    get_placement_classes('small:0,12;medium:0,6')
            , 'field_value_type':   'annal:Text'
            , 'field_value':        'yes'
            , 'options':            []
            }
          , { "field_id":           "View_fields"   # fields[5]
            , 'field_label':        'Fields'
            , 'field_render_type':  'RepeatGroupRow'
            , 'field_name':         'View_fields'
            , 'field_placement':    get_placement_classes('small:0,12')
            , 'field_value_type':   'annal:Field_group'
            , 'field_value':        view_fields
            , 'options':            []
            }
          ]
        , 'continuation_url':   entitydata_list_type_url(coll_id, "_view")
        })
    if view_id:
        context_dict['fields'][0]['field_value'] = view_id
        context_dict['fields'][1]['field_value'] = '%s %s/%s'%(update, coll_id, view_id)
        context_dict['fields'][2]['field_value'] = '%s help for %s in collection %s'%(update, view_id, coll_id)
        context_dict['orig_id']     = view_id
    if orig_id:
        context_dict['orig_id']     = orig_id
    if action:  
        context_dict['action']      = action
    if add_field:
        context_dict['fields'][5]['field_value'].append(
            { 'annal:field_id':         None
            , 'annal:property_uri':     None
            , 'annal:field_placement':  None
            })
    if remove_field:
        context_dict['fields'][5]['field_value'][3:4] = []
    return context_dict
Пример #10
0
    def __init__(self,
                 collection,
                 recordfield,
                 view_context=None,
                 field_property=None,
                 field_placement=None,
                 group_view=None):
        """
        Creates a field description value to use in a context value when
        rendering a form.  Values defined here are mentioned in field
        rendering templates.

        The FieldDescription object behaves as a dictionary containing the 
        various field attributes.

        collection      is a collection from which data is being rendered.
        recordfield     is a RecordField value or dictionary containing details of
                        the field for which a descriptor is constructed.
        view_context    is a dictionary of additional values that may be used in assembling
                        values to be used when rendering the field.  In particular, a copy 
                        of the view description record provides context for some enumeration 
                        type selections.
        field_property  if supplied, overrides the field property URI from `recordfield`
        field_placement if supplied, overrides field placement from `recordfield`
        group_view      if the field itself references a list of fields, this is a
                        RecordGroup value or dictionary containing the referenced list 
                        of fields.
        """
        # log.debug("FieldDescription recordfield: %r"%(recordfield,))
        field_id = recordfield.get(ANNAL.CURIE.id, "_missing_id_")
        field_name = recordfield.get(ANNAL.CURIE.field_name,
                                     field_id)  # Field name in form
        field_label = recordfield.get(RDFS.CURIE.label, "")
        field_property = field_property or recordfield.get(
            ANNAL.CURIE.property_uri, "")
        field_placement = field_placement or recordfield.get(
            ANNAL.CURIE.field_placement, "")
        field_render_type = recordfield.get(ANNAL.CURIE.field_render_type, "")
        self._field_desc = ({
            'field_id':
            field_id,
            'field_name':
            field_name,
            'field_label':
            field_label,
            'field_help':
            recordfield.get(RDFS.CURIE.comment, ""),
            'field_property_uri':
            field_property,
            'field_placement':
            get_placement_classes(field_placement),
            'field_render_type':
            field_render_type,
            'field_render_view':
            get_view_renderer(field_render_type),
            'field_render_edit':
            get_edit_renderer(field_render_type),
            'field_render_colhead':
            get_colhead_renderer(field_render_type),
            'field_render_colview':
            get_colview_renderer(field_render_type),
            'field_render_coledit':
            get_coledit_renderer(field_render_type),
            'field_value_mapper':
            get_value_mapper(field_render_type),
            'field_value_type':
            recordfield.get(ANNAL.CURIE.field_value_type, ""),
            'field_placeholder':
            recordfield.get(ANNAL.CURIE.placeholder, ""),
            'field_default_value':
            recordfield.get(ANNAL.CURIE.default_value, None),
            'field_options_typeref':
            recordfield.get(ANNAL.CURIE.options_typeref, None),
            'field_restrict_values':
            recordfield.get(ANNAL.CURIE.restrict_values, "ALL"),
            'field_choice_labels':
            None,
            'field_choice_links':
            None,
            'field_group_ref':
            recordfield.get(ANNAL.CURIE.group_ref, None),
            'group_label':
            None,
            'group_add_label':
            None,
            'group_delete_label':
            None,
            'group_view':
            None,
            'group_field_descs':
            None
        })
        self._field_suffix_index = 0  # No dup
        self._field_suffix = ""
        # If field references type, pull in copy of type id and link values
        type_ref = self._field_desc['field_options_typeref']
        if type_ref:
            restrict_values = self._field_desc['field_restrict_values']
            entity_finder = EntityFinder(collection, selector=restrict_values)
            entities = entity_finder.get_entities_sorted(type_id=type_ref,
                                                         context=view_context,
                                                         scope="all")
            # Note: the options list may be used more than once, so the id generator
            # returned must be materialized as a list
            # Uses collections.OrderedfDict to preserve entity ordering
            # 'Enum_optional' adds a blank entry at the start of the list
            self._field_desc['field_choice_labels'] = collections.OrderedDict()
            self._field_desc['field_choice_links'] = collections.OrderedDict()
            if field_render_type == "Enum_optional":
                self._field_desc['field_choice_labels'][''] = ""
                self._field_desc['field_choice_links'][''] = None
            for e in entities:
                eid = e.get_id()
                if eid != "_initial_values":
                    self._field_desc['field_choice_labels'][
                        eid] = eid  # @@TODO: be smarter about label?
                    self._field_desc['field_choice_links'][
                        eid] = e.get_view_url_path()
            # log.info("typeref %s: %r"%
            #     (self._field_desc['field_options_typeref'], list(self._field_desc['field_choices']))
            #     )
        # If field references group, pull in field details
        if group_view:
            group_label = (field_label or group_view.get(
                RDFS.CURIE.label, self._field_desc['field_group_ref']))
            group_field_descs = []
            for subfield in group_view[ANNAL.CURIE.group_fields]:
                f = field_description_from_view_field(collection, subfield,
                                                      view_context)
                group_field_descs.append(f)
            self._field_desc.update({
                'group_id':
                field_id,
                'group_label':
                group_label,
                'group_add_label':
                recordfield.get(ANNAL.CURIE.repeat_label_add,
                                "Add " + group_label),
                'group_delete_label':
                recordfield.get(ANNAL.CURIE.repeat_label_delete,
                                "Remove " + group_label),
                'group_view':
                group_view,
                'group_field_descs':
                group_field_descs
            })
        # log.debug("FieldDescription: %s"%field_id)
        # log.info("FieldDescription._field_desc %r"%(self._field_desc,))
        # log.info("FieldDescription.field_placement %r"%(self._field_desc['field_placement'],))
        return
Пример #11
0
def recordlist_view_context_data(coll_id="testcoll",
                                 list_id=None,
                                 orig_id=None,
                                 view_ids=[],
                                 action=None,
                                 update="RecordList"):
    if list_id:
        list_label = "%s %s/%s" % (update, coll_id, list_id)
        list_descr = "%s help for %s/%s" % (update, coll_id, list_id)
    else:
        list_label = "%s list (%s/@@list_id@@)" % (update, coll_id)
        list_descr = "%s description ... (%s/%s)" % (update, coll_id, list_id)
    list_fields = ([{
        "annal:field_id": layout.FIELD_TYPEID + "/Entity_id",
        "annal:field_placement": "small:0,3"
    }, {
        "annal:field_id": layout.FIELD_TYPEID + "/Entity_label",
        "annal:field_placement": "small:3,9"
    }])
    context_dict = ({
        "title":
        "%s - List definition - Collection %s" % (list_label, coll_id),
        'heading':
        "List definition",
        "coll_id":
        coll_id,
        "type_id":
        "_list",
        "orig_id":
        "orig_list_id",
        "continuation_url":
        entitydata_list_type_url(coll_id, "_list"),
        "fields": [
            context_field_row(
                {
                    "field_id":
                    "List_id"  # fields[0]
                    ,
                    "field_name":
                    "entity_id",
                    "field_value_type":
                    "annal:Slug",
                    "field_label":
                    "List Id",
                    "field_render_type":
                    "Slug",
                    "field_value_mode":
                    "Value_direct",
                    "field_placement":
                    get_placement_classes("small:0,12;medium:0,6")
                    # , "field_value":      (Supplied separately, below)
                    ,
                    "options": []
                },
                {
                    "field_id":
                    "List_type"  # fields[1]
                    ,
                    "field_name":
                    "List_type",
                    "field_value_type":
                    "annal:List_type",
                    "field_label":
                    "List display type",
                    "field_render_type":
                    "Enum_choice",
                    "field_value_mode":
                    "Value_direct",
                    "field_placement":
                    get_placement_classes("small:0,12;medium:6,6"),
                    "field_value":
                    "Enum_list_type/List",
                    "options": []  # ["list", "grid"]
                }),
            context_field_row({
                "field_id":
                "List_label"  # fields[2]
                ,
                "field_name":
                "List_label",
                "field_value_type":
                "annal:Text",
                "field_label":
                "Label",
                "field_render_type":
                "Text",
                "field_value_mode":
                "Value_direct",
                "field_placement":
                get_placement_classes("small:0,12")
                # , "field_value":      (Supplied separately, below)
                ,
                "options": []
            }),
            context_field_row({
                "field_id":
                "List_comment"  # fields[3]
                ,
                "field_name":
                "List_comment",
                "field_label":
                "Help",
                "field_value_type":
                "annal:Richtext",
                "field_render_type":
                "Markdown",
                "field_value_mode":
                "Value_direct",
                "field_placement":
                get_placement_classes("small:0,12")
                # , "field_value":      (Supplied separately, below)
                ,
                "options": []
            }),
            context_field_row(
                {
                    "field_id":
                    "List_default_type"  # fields[4]
                    ,
                    "field_name":
                    "List_default_type",
                    "field_value_type":
                    "annal:Type",
                    "field_label":
                    "Default type",
                    "field_render_type":
                    "Enum_optional",
                    "field_value_mode":
                    "Value_direct",
                    "field_placement":
                    get_placement_classes("small:0,12;medium:0,6"),
                    "field_value":
                    "_type/Default_type",
                    "options": []
                },
                {
                    "field_id":
                    "List_default_view"  # fields[5]
                    ,
                    "field_name":
                    "List_default_view",
                    "field_value_type":
                    "annal:View",
                    "field_label":
                    "Default view",
                    "field_render_type":
                    "Enum_optional",
                    "field_value_mode":
                    "Value_direct",
                    "field_placement":
                    get_placement_classes("small:0,12;medium:6,6"),
                    "field_value":
                    "_view/Default_view",
                    "options": []
                }),
            context_field_row({
                "field_id":
                "List_entity_selector"  # fields[6]
                ,
                "field_name":
                "List_entity_selector",
                "field_value_type":
                "annal:Text",
                "field_label":
                "Selector",
                "field_render_type":
                "Text",
                "field_value_mode":
                "Value_direct",
                "field_placement":
                get_placement_classes("small:0,12"),
                "field_value":
                "ALL",
                "options": []
            }),
            context_field_row({
                "field_id":
                "List_target_type"  # fields[7]
                ,
                "field_name":
                "List_target_type",
                "field_value_type":
                "annal:Identifier",
                "field_label":
                "List entity type",
                "field_render_type":
                "Identifier",
                "field_value_mode":
                "Value_direct",
                "field_placement":
                get_placement_classes("small:0,12"),
                "field_value":
                "",
                "options": []
            }),
            {
                "field_id": "List_fields"  # fields[8]
                ,
                "field_name": "List_fields",
                "field_value_type": "annal:Field_group",
                "field_label": "Fields",
                "field_render_type": "RepeatGroupRow",
                "field_value_mode": "Value_direct",
                "field_placement": get_placement_classes("small:0,12"),
                "field_value": list_fields,
                "options": []
            }
        ]
    })
    if list_id:
        context_dict['fields'][0]['row_field_descs'][0][
            'field_value'] = list_id
        context_dict['fields'][1]['row_field_descs'][0][
            'field_value'] = list_label
        context_dict['fields'][2]['row_field_descs'][0][
            'field_value'] = list_descr
        context_dict['orig_id'] = list_id
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict
Пример #12
0
def recordtype_entity_view_context_data(
        coll_id="testcoll", type_id="", orig_id=None, type_ids=[],
        action=None, update="RecordType",
        type_uri=None, supertype_uris=None #@@ need to deal with these.
    ):
    if type_id:
        type_label = "%s %s/%s"%(update, coll_id, type_id)
        type_descr = "%s help for %s in collection %s"%(update, type_id, coll_id)
    else:
        type_label = "%s data ... (%s/%s)"%(update, coll_id, type_id)
        type_descr = "%s description ... (%s/%s)"%(update, coll_id, type_id)
    context_dict = (
        { 'title':              "%s - Type definition - Collection %s"%(type_label, coll_id)
        , 'heading':            "Type definition"
        , 'coll_id':            coll_id
        , 'type_id':            '_type'
        , 'orig_id':            'orig_type_id'
        , 'fields':
          [ context_field_row(
              { 'field_id':           'Type_id'
              , 'field_name':         'entity_id'
              , 'field_value_type':  'annal:Slug'
              , 'field_label':        'Type Id'
              , 'field_render_type':  'EntityId'
              , 'field_value_mode':   'Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12;medium:0,6')
              # , 'field_value':      (Supplied separately)
              , 'options':            []
              })
          , context_field_row(
              { 'field_id':           'Type_label'
              , 'field_name':         'Type_label'
              , 'field_value_type':  'annal:Text'
              , 'field_label':        'Label'
              , 'field_render_type':  'Text'
              , 'field_value_mode':   'Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_value':        type_label
              , 'options':            []
              })
          , context_field_row(
              { 'field_id':           'Type_comment'
              , 'field_name':         'Type_comment'
              , 'field_label':        'Comment'
              , 'field_value_type':  'annal:Richtext'
              , 'field_render_type':  'Markdown'
              , 'field_value_mode':   'Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_value':        type_descr
              , 'options':            []
              })
          , context_field_row(
              { 'field_id':           'Type_uri'
              , 'field_name':         'Type_uri'
              , 'field_value_type':  'annal:Identifier'
              , 'field_label':        'Type URI'
              , 'field_render_type':  'Identifier'
              , 'field_value_mode':   'Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12')
              # , 'field_value':      (Supplied separately)
              , 'options':            []
              })
          , { 'field_id':           'Type_supertype_uris'
            , 'field_name':         'Type_supertype_uris'
            , 'field_value_type':  'annal:Type_supertype_uri'
            , 'field_label':        'Supertype URIs'
            , 'field_render_type':  'RepeatGroupRow'
            , 'field_value_mode':   'Value_direct'
            , 'field_placement':    get_placement_classes('small:0,12')
            # , 'field_value':      (Supplied separately)
            , 'options':            []
            }
          , context_field_row(
              { 'field_id':           'Type_view'
              , 'field_name':         'Type_view'
              , 'field_value_type':  'annal:View'
              , 'field_label':        'Default view'
              , 'field_render_type':  'Enum_optional'
              , 'field_value_mode':   'Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12;medium:0,6')
              # , 'field_value':      (Supplied separately)
              , 'options':            []
              },
              { 'field_id':           'Type_list'
              , 'field_name':         'Type_list'
              , 'field_value_type':  'annal:List'
              , 'field_label':        'Default list'
              , 'field_render_type':  'Enum_optional'
              , 'field_value_mode':   'Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12;medium:6,6')
              # , 'field_value':      (Supplied separately)
              , 'options':            []
              })
          ]
        , 'continuation_url':   entitydata_list_type_url(coll_id, "_type")
        })
    if type_id:
        type_url = recordtype_url(coll_id=coll_id, type_id=type_id)
        context_dict['fields'][0]['row_field_descs'][0]['field_value'] = type_id
        context_dict['fields'][3]['row_field_descs'][0]['field_value'] = type_url or ""
        context_dict['orig_id']     = type_id
    if orig_id:
        context_dict['orig_id']     = orig_id
    if action:  
        context_dict['action']      = action
    return context_dict
Пример #13
0
def recordfield_entity_view_context_data(
        coll_id="testcoll", field_id=None, orig_id=None, type_ids=[],
        action=None, update="Field"
    ):
    if field_id:
        field_label = "%s %s/_field/%s"%(update, coll_id, field_id)
        field_descr = "%s help for %s in collection %s"%(update, field_id, coll_id)
    else:
        field_label = "%s data ... (testcoll/_field)"%(update)
        field_descr = "%s description ... (testcoll/_field)"%(update)
    padding_placement = Placement(
        width=make_field_width(sw=0, mw=6, lw=6),
        offset=make_field_offset(so=0, mo=0, lo=0),
        display=make_field_display(sd=False, md=True, ld=True),
        field="hide-for-small-only medium-6 large-6 columns",
        label="small-4 columns",
        value="small-8 columns"
        )
    context_dict = (
        { "title":              "%s - Field definition - Collection %s"%(field_label, coll_id)
        , 'heading':            "Field definition"
        , 'coll_id':            coll_id
        , 'type_id':            "_field"
        , 'orig_id':            "orig_field_id"
        , 'fields':
          [ context_field_row(
              { 'field_id':               "Field_id"                  # 0 (0,0)
              , 'field_name':             "entity_id"
              , 'field_label':            "Field Id"
              , 'field_value_type':       "annal:Slug"
              , 'field_render_type':      "EntityId"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:..."
              , 'field_placement':        get_placement_classes('small:0,12;medium:0,6')
              , 'field_property_uri':     'annal:id'
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field id)"
              , 'field_default_value':    None
              # , 'field_value':          (Supplied separately)
              , 'options':                []
              },
              { 'field_id':               "Field_render_type"              # 1 (0,1)
              , 'field_name':             "Field_render_type"
              , 'field_label':            "Render type"
              , 'field_value_type':       "annal:Slug"
              , 'field_render_type':      "Enum_choice"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:field_render_type"
              , 'field_placement':        get_placement_classes('small:0,12;medium:6,6')
              , 'field_ref_type':         "Enum_render_type"
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field render type)"
              , 'field_default_value':    "Text"
              , 'field_value':            "Text"
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_value_type"                # 2 (1,0)
              , 'field_name':             "Field_value_type"
              , 'field_label':            "Value type"
              , 'field_value_type':       "annal:Identifier"
              , 'field_render_type':      "Identifier"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:field_value_type"
              , 'field_placement':        get_placement_classes('small:0,12;medium:0,6')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field value type)"
              , 'field_default_value':    "annal:Text"
              , 'field_value':            "annal:Text"
              , 'options':                []
              },
              { 'field_id':               "Field_value_mode"          # 3 (1,1)
              , 'field_name':             "Field_value_mode"
              , 'field_label':            "Value mode"
              , 'field_value_type':       "annal:Slug"
              , 'field_render_type':      "Enum_choice"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:field_value_mode"
              , 'field_placement':        get_placement_classes('small:0,12;medium:6,6')
              , 'field_ref_type':         "Enum_value_mode"
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field value mode)"
              , 'field_default_value':    "Value_direct"
              , 'field_value':            "Value_direct"
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_label"               # 4 (2,0)
              , 'field_name':             "Field_label"
              , 'field_label':            "Label"
              , 'field_value_type':       "annal:Text"
              , 'field_render_type':      "Text"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "rdfs:label"
              , 'field_placement':        get_placement_classes('small:0,12')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field label)"
              , 'field_default_value':    ""
              , 'field_value':            field_label
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_comment"             # 5 (3,0)
              , 'field_name':             "Field_comment"
              , 'field_label':            "Help"
              , 'field_value_type':       "annal:Longtext"
              , 'field_render_type':      "Textarea"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "rdfs:comment"
              , 'field_placement':        get_placement_classes('small:0,12')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field usage commentary or help text)"
              , 'field_default_value':    ""
              , 'field_value':            field_descr
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_property"            # 6 (4,0)
              , 'field_name':             "Field_property"
              , 'field_label':            "Property URI"
              , 'field_value_type':       "annal:Identifier"
              , 'field_render_type':      "Identifier"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:property_uri"
              , 'field_placement':        get_placement_classes('small:0,12;medium:0,6')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field URI or CURIE)"
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              },
              { 'field_id':               "Field_placement"           # 7 (4,1)
              , 'field_name':             "Field_placement"
              , 'field_label':            "Position/size"
              , 'field_value_type':       "annal:Placement"
              , 'field_render_type':      "Placement"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:field_placement"
              , 'field_placement':        get_placement_classes('small:0,12;medium:6,6')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field position and size)"
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_typeref"             # 8 (5,0)
              , 'field_name':             "Field_typeref"
              , 'field_label':            "Refer to type"
              , 'field_value_type':       "annal:Slug"
              , 'field_render_type':      "Enum_optional"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:field_ref_type"
              , 'field_placement':        get_placement_classes('small:0,12;medium:0,6')
              , 'field_ref_type':         "_type"
              , 'field_ref_field':        None
              , 'field_placeholder':      "(no type selected)"
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              },
              { 'field_id':               "Field_fieldref"            # 9 (5,1)
              , 'field_name':             "Field_fieldref"
              , 'field_label':            "Refer to field"
              , 'field_value_type':       "annal:Identifier"
              , 'field_render_type':      "Identifier"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:field_ref_field"
              , 'field_placement':        get_placement_classes('small:0,12;medium:6,6')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field URI or CURIE)"
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_placeholder"         # 10 (6,0)
              , 'field_name':             "Field_placeholder"
              , 'field_label':            "Placeholder"
              , 'field_value_type':       "annal:Text"
              , 'field_render_type':      "Text"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:placeholder"
              , 'field_placement':        get_placement_classes('small:0,12')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              , 'field_placeholder':      "(placeholder text)"
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_default"             # 11 (7,0)
              , 'field_name':             "Field_default"
              , 'field_label':            "Default"
              , 'field_value_type':       "annal:Text"
              , 'field_render_type':      "Text"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:default_value"
              , 'field_placement':        get_placement_classes('small:0,12')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              , 'field_placeholder':      "(field default value)"
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_groupref"            # 12 (8,0)
              , 'field_name':             "Field_groupref"
              , 'field_label':            "Field group"
              , 'field_value_type':       "annal:Slug"
              , 'field_render_type':      "Enum_optional"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:group_ref"
              , 'field_placement':        get_placement_classes('small:0,12;medium:0,6')
              , 'field_ref_type':         "_group"
              , 'field_ref_field':        None
              , 'field_placeholder':      "(no field group selected)"
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':                "Field_repeat_label_add"    # 13 (9,0)
              , 'field_name':             "Field_repeat_label_add"
              , 'field_label':            "Add value label"
              , 'field_value_type':       "annal:Text"
              , 'field_render_type':      "Text"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:repeat_label_add"
              , 'field_placement':        get_placement_classes('small:0,12;medium:0,6')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              # , 'field_placeholder':      "..."
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              },
              { 'field_id':               "Field_repeat_label_delete" # 14 (9,1)
              , 'field_name':             "Field_repeat_label_delete"
              , 'field_label':            "Delete value label"
              , 'field_value_type':       "annal:Text"
              , 'field_render_type':      "Text"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:repeat_label_delete"
              , 'field_placement':        get_placement_classes('small:0,12;medium:6,6')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              # , 'field_placeholder':      "..."
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_entity_type"         # 15 (10,0)
              , 'field_name':             "Field_entity_type" 
              , 'field_label':            "Entity type"
              , 'field_value_type':       "annal:Identifier"
              , 'field_render_type':      "Identifier"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:field_entity_type"
              , 'field_placement':        get_placement_classes('small:0,12')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              # , 'field_placeholder':      "..."
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              })
          , context_field_row(
              { 'field_id':               "Field_restrict"            # 16 (11,0)
              , 'field_name':             "Field_restrict"
              , 'field_label':            "Value restriction"
              , 'field_value_type':      "annal:Text"
              , 'field_render_type':      "Text"
              , 'field_value_mode':       "Value_direct"
              , 'field_property_uri':     "annal:field_ref_restriction"
              , 'field_placement':        get_placement_classes('small:0,12')
              , 'field_ref_type':         None
              , 'field_ref_field':        None
              # , 'field_placeholder':      "..."
              , 'field_default_value':    ""
              , 'field_value':            ""
              , 'options':                []
              })
          ]
        , 'continuation_url':   entitydata_list_type_url(coll_id, "_field")
        })
    if field_id:
        context_dict['fields'][0]['row_field_descs'][0]['field_value'] = field_id
        context_dict['orig_id']     = field_id
    if orig_id:
        context_dict['orig_id']     = orig_id
    if action:  
        context_dict['action']      = action
    return context_dict
Пример #14
0
def entitydata_recordtype_view_context_data(entity_id=None,
                                            orig_id=None,
                                            type_id="testtype",
                                            type_uri=None,
                                            type_ids=[],
                                            action=None,
                                            update="Entity"):
    context_dict = ({
        'title':
        "Collection testcoll",
        'coll_id':
        'testcoll',
        'type_id':
        type_id,
        'orig_id':
        'orig_entity_id',
        'fields': [
            {
                'field_label': 'Id',
                'field_name': 'entity_id',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_id': 'Type_id',
                'field_value_type': 'annal:Slug'
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            },
            {
                'field_label': 'Label',
                'field_name': 'Type_label',
                'field_placement': get_placement_classes('small:0,12'),
                'field_id': 'Type_label',
                'field_value_type': 'annal:Text',
                'field_value': '%s data ... (testcoll/testtype)' % (update),
                'options': []
            },
            {
                'field_label': 'Comment',
                'field_name': 'Type_comment',
                'field_placement': get_placement_classes('small:0,12'),
                'field_id': 'Type_comment',
                'field_value_type': 'annal:Longtext',
                'field_value':
                '%s description ... (testcoll/testtype)' % (update),
                'options': []
            },
            {
                'field_label': 'URI',
                'field_name': 'Type_uri',
                'field_placement': get_placement_classes('small:0,12'),
                'field_id': 'Type_uri',
                'field_value_type': 'annal:Identifier',
                'field_value': "",
                'options': []
            }
        ],
        'continuation_url':
        entitydata_list_type_url("testcoll", type_id)
    })
    if entity_id:
        context_dict['fields'][0]['field_value'] = entity_id
        context_dict['fields'][1][
            'field_value'] = '%s testcoll/testtype/%s' % (update, entity_id)
        context_dict['fields'][2][
            'field_value'] = '%s coll testcoll, type testtype, entity %s' % (
                update, entity_id)
        context_dict['orig_id'] = entity_id
    if type_uri:
        context_dict['fields'][3][
            'field_value'] = type_uri  # TestBasePath + "/c/%s/d/%s/%s/"%("testcoll", "testtype", entity_id)
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict
def entitydata_recordtype_view_context_data(entity_id=None,
                                            orig_id=None,
                                            coll_id="testcoll",
                                            type_id="testtype",
                                            type_uri=None,
                                            type_ids=[],
                                            action=None,
                                            update="Entity",
                                            view_label="Type definition"):
    if entity_id:
        entity_label = '%s %s/%s/%s' % (update, coll_id, type_id, entity_id)
        entity_descr = '%s coll %s, type %s, entity %s' % (update, coll_id,
                                                           type_id, entity_id)
    else:
        entity_label = '%s data ... (%s/%s)' % (update, coll_id, type_id)
        entity_descr = '%s description ... (%s/%s)' % (update, coll_id,
                                                       type_id)
    context_dict = ({
        'title':
        "%s - %s - Collection %s" % (entity_label, view_label, coll_id),
        'heading':
        view_label,
        'coll_id':
        coll_id,
        'type_id':
        type_id,
        'orig_id':
        'orig_entity_id',
        'fields': [
            context_field_row({
                'field_label':
                'Type Id',
                'field_name':
                'entity_id',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_id':
                'Type_id',
                'field_value_mode':
                'Value_direct',
                'field_value_type':
                'annal:Slug'
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            }),
            context_field_row({
                'field_label':
                'Label',
                'field_name':
                'Type_label',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_id':
                'Type_label',
                'field_value_mode':
                'Value_direct',
                'field_value_type':
                'annal:Text',
                'field_value':
                entity_label,
                'options': []
            }),
            context_field_row({
                'field_label':
                'Comment',
                'field_name':
                'Type_comment',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_id':
                'Type_comment',
                'field_value_mode':
                'Value_direct',
                'field_value_type':
                'annal:Richtext',
                'field_value':
                entity_descr,
                'options': []
            }),
            context_field_row({
                'field_label':
                'Type URI',
                'field_name':
                'Type_uri',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_id':
                'Type_uri',
                'field_value_mode':
                'Value_direct',
                'field_value_type':
                'annal:Identifier',
                'field_value':
                "",
                'options': []
            })
        ],
        'continuation_url':
        entitydata_list_type_url(coll_id, type_id)
    })
    if entity_id:
        context_dict['fields'][0]['row_field_descs'][0][
            'field_value'] = entity_id
        context_dict['orig_id'] = entity_id
    if type_uri:
        context_dict['fields'][3]['row_field_descs'][0][
            'field_value'] = type_uri
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict
def recordfield_entity_view_context_data(coll_id="testcoll",
                                         field_id=None,
                                         orig_id=None,
                                         type_ids=[],
                                         action=None,
                                         update="Field"):
    if field_id:
        field_label = "%s %s/_field/%s" % (update, coll_id, field_id)
        field_descr = "%s help for %s in collection %s" % (update, field_id,
                                                           coll_id)
    else:
        field_label = "%s data ... (testcoll/_field)" % (update)
        field_descr = "%s description ... (testcoll/_field)" % (update)
    padding_placement = Placement(
        width=make_field_width(sw=0, mw=6, lw=6),
        offset=make_field_offset(so=0, mo=0, lo=0),
        display=make_field_display(sd=False, md=True, ld=True),
        field="hide-for-small-only medium-6 large-6 columns",
        label="small-4 columns",
        value="small-8 columns")
    context_dict = ({
        "title":
        "%s - Field definition - Collection %s" % (field_label, coll_id),
        'heading':
        "Field definition",
        'coll_id':
        coll_id,
        'type_id':
        "_field",
        'orig_id':
        "orig_field_id",
        'fields': [
            context_field_row(
                {
                    'field_id':
                    "Field_id"  # 0 (0,0)
                    ,
                    'field_name':
                    "entity_id",
                    'field_label':
                    "Field Id",
                    'field_value_type':
                    "annal:Slug",
                    'field_render_type':
                    "EntityId",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:...",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:0,6'),
                    'field_property_uri':
                    'annal:id',
                    'field_ref_type':
                    None,
                    'field_ref_field':
                    None,
                    'field_placeholder':
                    "(field id)",
                    'field_default_value':
                    None
                    # , 'field_value':          (Supplied separately)
                    ,
                    'options': []
                },
                {
                    'field_id':
                    "Field_render_type"  # 1 (0,1)
                    ,
                    'field_name':
                    "Field_render_type",
                    'field_label':
                    "Render type",
                    'field_value_type':
                    "annal:Slug",
                    'field_render_type':
                    "Enum_choice",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:field_render_type",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:6,6'),
                    'field_ref_type':
                    "Enum_render_type",
                    'field_ref_field':
                    None,
                    'field_placeholder':
                    "(field render type)",
                    'field_default_value':
                    "Text",
                    'field_value':
                    "Text",
                    'options': []
                }),
            context_field_row(
                {
                    'field_id':
                    "Field_value_type"  # 2 (1,0)
                    ,
                    'field_name':
                    "Field_value_type",
                    'field_label':
                    "Value type",
                    'field_value_type':
                    "annal:Identifier",
                    'field_render_type':
                    "Identifier",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:field_value_type",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:0,6'),
                    'field_ref_type':
                    None,
                    'field_ref_field':
                    None,
                    'field_placeholder':
                    "(field value type)",
                    'field_default_value':
                    "annal:Text",
                    'field_value':
                    "annal:Text",
                    'options': []
                },
                {
                    'field_id':
                    "Field_value_mode"  # 3 (1,1)
                    ,
                    'field_name':
                    "Field_value_mode",
                    'field_label':
                    "Value mode",
                    'field_value_type':
                    "annal:Slug",
                    'field_render_type':
                    "Enum_choice",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:field_value_mode",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:6,6'),
                    'field_ref_type':
                    "Enum_value_mode",
                    'field_ref_field':
                    None,
                    'field_placeholder':
                    "(field value mode)",
                    'field_default_value':
                    "Value_direct",
                    'field_value':
                    "Value_direct",
                    'options': []
                }),
            context_field_row({
                'field_id':
                "Field_label"  # 4 (2,0)
                ,
                'field_name':
                "Field_label",
                'field_label':
                "Label",
                'field_value_type':
                "annal:Text",
                'field_render_type':
                "Text",
                'field_value_mode':
                "Value_direct",
                'field_property_uri':
                "rdfs:label",
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_ref_type':
                None,
                'field_ref_field':
                None,
                'field_placeholder':
                "(field label)",
                'field_default_value':
                "",
                'field_value':
                field_label,
                'options': []
            }),
            context_field_row({
                'field_id':
                "Field_comment"  # 5 (3,0)
                ,
                'field_name':
                "Field_comment",
                'field_label':
                "Help",
                'field_value_type':
                "annal:Longtext",
                'field_render_type':
                "Textarea",
                'field_value_mode':
                "Value_direct",
                'field_property_uri':
                "rdfs:comment",
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_ref_type':
                None,
                'field_ref_field':
                None,
                'field_placeholder':
                "(field usage commentary or help text)",
                'field_default_value':
                "",
                'field_value':
                field_descr,
                'options': []
            }),
            context_field_row(
                {
                    'field_id':
                    "Field_property"  # 6 (4,0)
                    ,
                    'field_name':
                    "Field_property",
                    'field_label':
                    "Property URI",
                    'field_value_type':
                    "annal:Identifier",
                    'field_render_type':
                    "Identifier",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:property_uri",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:0,6'),
                    'field_ref_type':
                    None,
                    'field_ref_field':
                    None,
                    'field_placeholder':
                    "(field URI or CURIE)",
                    'field_default_value':
                    "",
                    'field_value':
                    "",
                    'options': []
                },
                {
                    'field_id':
                    "Field_placement"  # 7 (4,1)
                    ,
                    'field_name':
                    "Field_placement",
                    'field_label':
                    "Position/size",
                    'field_value_type':
                    "annal:Placement",
                    'field_render_type':
                    "Placement",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:field_placement",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:6,6'),
                    'field_ref_type':
                    None,
                    'field_ref_field':
                    None,
                    'field_placeholder':
                    "(field position and size)",
                    'field_default_value':
                    "",
                    'field_value':
                    "",
                    'options': []
                }),
            context_field_row(
                {
                    'field_id':
                    "Field_typeref"  # 8 (5,0)
                    ,
                    'field_name':
                    "Field_typeref",
                    'field_label':
                    "Refer to type",
                    'field_value_type':
                    "annal:Slug",
                    'field_render_type':
                    "Enum_optional",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:field_ref_type",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:0,6'),
                    'field_ref_type':
                    "_type",
                    'field_ref_field':
                    None,
                    'field_placeholder':
                    "(no type selected)",
                    'field_default_value':
                    "",
                    'field_value':
                    "",
                    'options': []
                },
                {
                    'field_id':
                    "Field_fieldref"  # 9 (5,1)
                    ,
                    'field_name':
                    "Field_fieldref",
                    'field_label':
                    "Refer to field",
                    'field_value_type':
                    "annal:Identifier",
                    'field_render_type':
                    "Identifier",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:field_ref_field",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:6,6'),
                    'field_ref_type':
                    None,
                    'field_ref_field':
                    None,
                    'field_placeholder':
                    "(field URI or CURIE)",
                    'field_default_value':
                    "",
                    'field_value':
                    "",
                    'options': []
                }),
            context_field_row({
                'field_id':
                "Field_placeholder"  # 10 (6,0)
                ,
                'field_name':
                "Field_placeholder",
                'field_label':
                "Placeholder",
                'field_value_type':
                "annal:Text",
                'field_render_type':
                "Text",
                'field_value_mode':
                "Value_direct",
                'field_property_uri':
                "annal:placeholder",
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_ref_type':
                None,
                'field_ref_field':
                None,
                'field_placeholder':
                "(placeholder text)",
                'field_default_value':
                "",
                'field_value':
                "",
                'options': []
            }),
            context_field_row({
                'field_id':
                "Field_default"  # 11 (7,0)
                ,
                'field_name':
                "Field_default",
                'field_label':
                "Default",
                'field_value_type':
                "annal:Text",
                'field_render_type':
                "Text",
                'field_value_mode':
                "Value_direct",
                'field_property_uri':
                "annal:default_value",
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_ref_type':
                None,
                'field_ref_field':
                None,
                'field_placeholder':
                "(field default value)",
                'field_default_value':
                "",
                'field_value':
                "",
                'options': []
            }),
            context_field_row({
                'field_id':
                "Field_groupref"  # 12 (8,0)
                ,
                'field_name':
                "Field_groupref",
                'field_label':
                "Field group",
                'field_value_type':
                "annal:Slug",
                'field_render_type':
                "Enum_optional",
                'field_value_mode':
                "Value_direct",
                'field_property_uri':
                "annal:group_ref",
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_ref_type':
                "_group",
                'field_ref_field':
                None,
                'field_placeholder':
                "(no field group selected)",
                'field_default_value':
                "",
                'field_value':
                "",
                'options': []
            }),
            context_field_row(
                {
                    'field_id':
                    "Field_repeat_label_add"  # 13 (9,0)
                    ,
                    'field_name':
                    "Field_repeat_label_add",
                    'field_label':
                    "Add value label",
                    'field_value_type':
                    "annal:Text",
                    'field_render_type':
                    "Text",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:repeat_label_add",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:0,6'),
                    'field_ref_type':
                    None,
                    'field_ref_field':
                    None
                    # , 'field_placeholder':      "..."
                    ,
                    'field_default_value':
                    "",
                    'field_value':
                    "",
                    'options': []
                },
                {
                    'field_id':
                    "Field_repeat_label_delete"  # 14 (9,1)
                    ,
                    'field_name':
                    "Field_repeat_label_delete",
                    'field_label':
                    "Delete value label",
                    'field_value_type':
                    "annal:Text",
                    'field_render_type':
                    "Text",
                    'field_value_mode':
                    "Value_direct",
                    'field_property_uri':
                    "annal:repeat_label_delete",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:6,6'),
                    'field_ref_type':
                    None,
                    'field_ref_field':
                    None
                    # , 'field_placeholder':      "..."
                    ,
                    'field_default_value':
                    "",
                    'field_value':
                    "",
                    'options': []
                }),
            context_field_row({
                'field_id':
                "Field_entity_type"  # 15 (10,0)
                ,
                'field_name':
                "Field_entity_type",
                'field_label':
                "Entity type",
                'field_value_type':
                "annal:Identifier",
                'field_render_type':
                "Identifier",
                'field_value_mode':
                "Value_direct",
                'field_property_uri':
                "annal:field_entity_type",
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_ref_type':
                None,
                'field_ref_field':
                None
                # , 'field_placeholder':      "..."
                ,
                'field_default_value':
                "",
                'field_value':
                "",
                'options': []
            }),
            context_field_row({
                'field_id':
                "Field_restrict"  # 16 (11,0)
                ,
                'field_name':
                "Field_restrict",
                'field_label':
                "Value restriction",
                'field_value_type':
                "annal:Text",
                'field_render_type':
                "Text",
                'field_value_mode':
                "Value_direct",
                'field_property_uri':
                "annal:field_ref_restriction",
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_ref_type':
                None,
                'field_ref_field':
                None
                # , 'field_placeholder':      "..."
                ,
                'field_default_value':
                "",
                'field_value':
                "",
                'options': []
            })
        ],
        'continuation_url':
        entitydata_list_type_url(coll_id, "_field")
    })
    if field_id:
        context_dict['fields'][0]['row_field_descs'][0][
            'field_value'] = field_id
        context_dict['orig_id'] = field_id
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict
Пример #17
0
def recordlist_view_context_data(
        coll_id="testcoll", list_id=None, orig_id=None, view_ids=[],
        action=None, update="RecordList"
    ):
    if list_id:
        list_label = "%s %s/%s"%(update, coll_id, list_id)
        list_descr = "%s help for %s/%s"%(update, coll_id, list_id)
    else:
        list_label = "%s list (%s/@@list_id@@)"%(update, coll_id)
        list_descr = "%s description ... (%s/%s)"%(update, coll_id, list_id)
    list_fields = (
        [ { "annal:field_id":         layout.FIELD_TYPEID+"/Entity_id"
          , "annal:field_placement":  "small:0,3"
          }
        , { "annal:field_id":         layout.FIELD_TYPEID+"/Entity_label"
          , "annal:field_placement":  "small:3,9"
          }
        ])
    context_dict = (
        { "title":              "%s - List definition - Collection %s"%(list_label, coll_id)
        , 'heading':            "List definition"
        , "coll_id":            coll_id
        , "type_id":            "_list"
        , "orig_id":            "orig_list_id"
        , "continuation_url":   entitydata_list_type_url(coll_id, "_list")
        , "fields":
          [ context_field_row(
              { "field_id":           "List_id"                   # fields[0]
              , "field_name":         "entity_id"
              , "field_value_type":   "annal:Slug"
              , "field_label":        "List Id"
              , "field_render_type":  "Slug"
              , "field_value_mode":   "Value_direct"
              , "field_placement":    get_placement_classes("small:0,12;medium:0,6")
              # , "field_value":      (Supplied separately, below)
              , "options":            []
              },
              { "field_id":           "List_type"                 # fields[1]
              , "field_name":         "List_type"
              , "field_value_type":  "annal:List_type"
              , "field_label":        "List display type"
              , "field_render_type":  "Enum_choice"
              , "field_value_mode":   "Value_direct"
              , "field_placement":    get_placement_classes("small:0,12;medium:6,6")
              , "field_value":        "Enum_list_type/List"
              , "options":            [] # ["list", "grid"]
              })
          , context_field_row(
              { "field_id":           "List_label"                # fields[2]
              , "field_name":         "List_label"
              , "field_value_type":   "annal:Text"
              , "field_label":        "Label"
              , "field_render_type":  "Text"
              , "field_value_mode":   "Value_direct"
              , "field_placement":    get_placement_classes("small:0,12")
              # , "field_value":      (Supplied separately, below)
              , "options":            []
              })
          , context_field_row(
              { "field_id":           "List_comment"              # fields[3]
              , "field_name":         "List_comment"
              , "field_label":        "Help"
              , "field_value_type":   "annal:Richtext"
              , "field_render_type":  "Markdown"
              , "field_value_mode":   "Value_direct"
              , "field_placement":    get_placement_classes("small:0,12")
              # , "field_value":      (Supplied separately, below)
              , "options":            []
              })
          , context_field_row(
              { "field_id":           "List_default_type"         # fields[4]
              , "field_name":         "List_default_type"
              , "field_value_type":   "annal:Type"
              , "field_label":        "Default type"
              , "field_render_type":  "Enum_optional"
              , "field_value_mode":   "Value_direct"
              , "field_placement":    get_placement_classes("small:0,12;medium:0,6")
              , "field_value":        "_type/Default_type"
              , "options":            []
              },
              { "field_id":           "List_default_view"         # fields[5]
              , "field_name":         "List_default_view"
              , "field_value_type":   "annal:View"
              , "field_label":        "Default view"
              , "field_render_type":  "Enum_optional"
              , "field_value_mode":   "Value_direct"
              , "field_placement":    get_placement_classes("small:0,12;medium:6,6")
              , "field_value":        "_view/Default_view"
              , "options":            []
              })
          , context_field_row(
              { "field_id":           "List_entity_selector"      # fields[6]
              , "field_name":         "List_entity_selector"
              , "field_value_type":   "annal:Text"
              , "field_label":        "Selector"
              , "field_render_type":  "Text"
              , "field_value_mode":   "Value_direct"
              , "field_placement":    get_placement_classes("small:0,12")
              , "field_value":        "ALL"
              , "options":            []
              })
          , context_field_row(
              { "field_id":           "List_target_type"          # fields[7]
              , "field_name":         "List_target_type"
              , "field_value_type":   "annal:Identifier"
              , "field_label":        "List entity type"
              , "field_render_type":  "Identifier"
              , "field_value_mode":   "Value_direct"
              , "field_placement":    get_placement_classes("small:0,12")
              , "field_value":        ""
              , "options":            []
              })
          , { "field_id":           "List_fields"           # fields[8]
            , "field_name":         "List_fields"
            , "field_value_type":   "annal:Field_group"
            , "field_label":        "Fields"
            , "field_render_type":  "RepeatGroupRow"
            , "field_value_mode":   "Value_direct"
            , "field_placement":    get_placement_classes("small:0,12")
            , "field_value":        list_fields
            , "options":            []
            }
          ]
        })
    if list_id:
        context_dict['fields'][0]['row_field_descs'][0]['field_value'] = list_id
        context_dict['fields'][1]['row_field_descs'][0]['field_value'] = list_label
        context_dict['fields'][2]['row_field_descs'][0]['field_value'] = list_descr
        context_dict['orig_id']     = list_id
    if orig_id:
        context_dict['orig_id']     = orig_id
    if action:  
        context_dict['action']      = action
    return context_dict
def recordview_entity_view_context_data(coll_id="testcoll",
                                        view_id="",
                                        orig_id=None,
                                        view_ids=[],
                                        action=None,
                                        target_record_type="annal:View",
                                        add_field=None,
                                        remove_field=None,
                                        move_up=None,
                                        move_down=None,
                                        update="RecordView"):
    if view_id:
        view_label = "%s %s/%s" % (update, coll_id, view_id)
        view_descr = "%s help for %s in collection %s" % (update, view_id,
                                                          coll_id)
    else:
        view_label = "%s data ... (%s/%s)" % (update, coll_id, view_id)
        view_descr = "%s description ... (%s/%s)" % (update, coll_id, view_id)
    # Target record fields listed in the view description
    view_fields = ([
        {
            'annal:field_id': layout.FIELD_TYPEID + "/Entity_id",
            'annal:field_placement': "small:0,12;medium:0,6"
        },
        {
            'annal:field_id': layout.FIELD_TYPEID + "/Entity_type",
            'annal:field_placement': "small:0,12;medium:6,6"
        },
        {
            'annal:field_id': layout.FIELD_TYPEID + "/Entity_label",
            'annal:property_uri': "rdfs:label",
            'annal:field_placement': "small:0,12"
        },
        {
            'annal:field_id': layout.FIELD_TYPEID + "/Entity_comment",
            'annal:property_uri': "rdfs:comment"
            # , 'annal:field_placement':  field3_placement
        }
    ])
    # NOTE: context['fields'][i]['field_id'] comes from FieldDescription instance via
    #       bound_field, so type prefix is stripped.  This does not apply to the field
    #       ids actually coming from the view form.
    context_dict = ({
        'title':
        "%s - View definition - Collection %s" % (view_label, coll_id),
        'heading':
        "View definition",
        'coll_id':
        coll_id,
        'type_id':
        '_view',
        'orig_id':
        'orig_view_id',
        'record_type':
        'annal:View',
        'fields': [
            context_field_row({
                'field_id':
                'View_id'  # fields[0]
                ,
                'field_name':
                'entity_id',
                'field_value_type':
                'annal:Slug',
                'field_label':
                'View Id',
                'field_render_type':
                'Enum_render_type/EntityId',
                'field_value_mode':
                'Enum_value_mode/Value_direct',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6')
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            }),
            context_field_row({
                'field_id':
                'View_label'  # fields[1]
                ,
                'field_name':
                'View_label',
                'field_value_type':
                'annal:Text',
                'field_label':
                'Label',
                'field_render_type':
                'Enum_render_type/Text',
                'field_value_mode':
                'Enum_value_mode/Value_direct',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_value':
                view_label,
                'options': []
            }),
            context_field_row({
                'field_id':
                'View_comment'  # fields[2]
                ,
                'field_name':
                'View_comment',
                'field_label':
                'Help',
                'field_value_type':
                'annal:Richtext',
                'field_render_type':
                'Enum_render_type/Markdown',
                'field_value_mode':
                'Enum_value_mode/Value_direct',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_value':
                view_descr,
                'options': []
            }),
            context_field_row({
                'field_id':
                'View_target_type'  # fields[3]
                ,
                'field_name':
                'View_target_type',
                'field_value_type':
                'annal:Identifier',
                'field_label':
                'View entity type',
                'field_render_type':
                'Enum_render_type/Identifier',
                'field_value_mode':
                'Enum_value_mode/Value_direct',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_value':
                target_record_type,
                'options': []
            }),
            context_field_row({
                'field_id':
                'View_edit_view'  # fields[4]
                ,
                'field_name':
                'View_edit_view',
                'field_value_type':
                'annal:Boolean',
                'field_label':
                'Editable view?',
                'field_render_type':
                'Enum_render_type/CheckBox',
                'field_value_mode':
                'Enum_value_mode/Value_direct',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_value':
                True,
                'options': []
            }),
            {
                "field_id": 'View_fields'  # fields[5]
                ,
                'field_name': 'View_fields',
                'field_value_type': 'annal:Field_group',
                'field_label': 'Fields',
                'field_render_type': 'Enum_render_type/Group_Seq_Row',
                'field_value_mode': 'Enum_value_mode/Value_direct',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value': view_fields,
                'options': []
            }
        ],
        'continuation_url':
        entitydata_list_type_url(coll_id, "_view")
    })
    if view_id:
        context_dict['fields'][0]['row_field_descs'][0][
            'field_value'] = view_id
        context_dict['fields'][1]['row_field_descs'][0][
            'field_value'] = view_label
        context_dict['fields'][2]['row_field_descs'][0][
            'field_value'] = '%s help for %s in collection %s' % (
                update, view_id, coll_id)
        context_dict['orig_id'] = view_id
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    if add_field:
        context_dict['fields'][5]['field_value'].append({
            'annal:field_id':
            None,
            'annal:property_uri':
            None,
            'annal:field_placement':
            None
        })
    if remove_field:
        context_dict['fields'][5]['field_value'][3:4] = []
    if move_up:
        assert move_up == [2, 3]
        fields = context_dict['fields'][5]['field_value']
        context_dict['fields'][5]['field_value'] = [
            fields[i] for i in [0, 2, 3, 1]
        ]
    if move_down:
        assert move_down == [1]
        fields = context_dict['fields'][5]['field_value']
        context_dict['fields'][5]['field_value'] = [
            fields[i] for i in [0, 2, 1, 3]
        ]
    return context_dict
Пример #19
0
def recordview_entity_view_context_data(
        coll_id="testcoll", view_id="", orig_id=None, view_ids=[],
        action=None, 
        target_record_type="annal:View",
        add_field=None, remove_field=None, move_up=None, move_down=None,
        update="RecordView"
    ):
    if view_id:
        view_label = "%s %s/%s"%(update, coll_id, view_id)
        view_descr = "%s help for %s in collection %s"%(update, view_id, coll_id)
    else:
        view_label = "%s data ... (%s/%s)"%(update, coll_id, view_id)
        view_descr = "%s description ... (%s/%s)"%(update, coll_id, view_id)
    # Target record fields listed in the view description
    view_fields = (
          [ { 'annal:field_id':         layout.FIELD_TYPEID+"/Entity_id"
            , 'annal:field_placement':  "small:0,12;medium:0,6"
            }
          , { 'annal:field_id':         layout.FIELD_TYPEID+"/Entity_type"
            , 'annal:field_placement':  "small:0,12;medium:6,6"
            }
          , { 'annal:field_id':         layout.FIELD_TYPEID+"/Entity_label"
            , 'annal:property_uri':     "rdfs:label"
            , 'annal:field_placement':  "small:0,12"
            }
          , { 'annal:field_id':         layout.FIELD_TYPEID+"/Entity_comment"
            , 'annal:property_uri':     "rdfs:comment"
            # , 'annal:field_placement':  field3_placement
            }
          ])
    # NOTE: context['fields'][i]['field_id'] comes from FieldDescription instance via
    #       bound_field, so type prefix is stripped.  This does not apply to the field
    #       ids actually coming from the view form.
    context_dict = (
        { 'title':              "%s - View definition - Collection %s"%(view_label, coll_id)
        , 'heading':            "View definition"
        , 'coll_id':            coll_id
        , 'type_id':            '_view'
        , 'orig_id':            'orig_view_id'
        , 'record_type':        'annal:View'
        , 'fields':
          [ context_field_row(
              { 'field_id':           'View_id'               # fields[0]
              , 'field_name':         'entity_id'
              , 'field_value_type':   'annal:Slug'
              , 'field_label':        'View Id'
              , 'field_render_type':  'Enum_render_type/EntityId'
              , 'field_value_mode':   'Enum_value_mode/Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12;medium:0,6')
              # , 'field_value':      (Supplied separately)
              , 'options':            []
              })
          , context_field_row(
              { 'field_id':           'View_label'            # fields[1]
              , 'field_name':         'View_label'
              , 'field_value_type':   'annal:Text'
              , 'field_label':        'Label'
              , 'field_render_type':  'Enum_render_type/Text'
              , 'field_value_mode':   'Enum_value_mode/Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_value':        view_label
              , 'options':            []
              })
          , context_field_row(
              { 'field_id':           'View_comment'          # fields[2]
              , 'field_name':         'View_comment'
              , 'field_label':        'Help'
              , 'field_value_type':   'annal:Richtext'
              , 'field_render_type':  'Enum_render_type/Markdown'
              , 'field_value_mode':   'Enum_value_mode/Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_value':        view_descr
              , 'options':            []
              })
          , context_field_row(
              { 'field_id':           'View_target_type'      # fields[3]
              , 'field_name':         'View_target_type'
              , 'field_value_type':   'annal:Identifier'
              , 'field_label':        'View entity type'
              , 'field_render_type':  'Enum_render_type/Identifier'
              , 'field_value_mode':   'Enum_value_mode/Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_value':        target_record_type
              , 'options':            []
              })
          , context_field_row(
              { 'field_id':           'View_edit_view'        # fields[4]
              , 'field_name':         'View_edit_view'
              , 'field_value_type':   'annal:Boolean'
              , 'field_label':        'Editable view?'
              , 'field_render_type':  'Enum_render_type/CheckBox'
              , 'field_value_mode':   'Enum_value_mode/Value_direct'
              , 'field_placement':    get_placement_classes('small:0,12;medium:0,6')
              , 'field_value':        True
              , 'options':            []
              })
          , { "field_id":           'View_fields'           # fields[5]
            , 'field_name':         'View_fields'
            , 'field_value_type':   'annal:Field_group'
            , 'field_label':        'Fields'
            , 'field_render_type':  'Enum_render_type/Group_Seq_Row'
            , 'field_value_mode':   'Enum_value_mode/Value_direct'
            , 'field_placement':    get_placement_classes('small:0,12')
            , 'field_value':        view_fields
            , 'options':            []
            }
          ]
        , 'continuation_url':   entitydata_list_type_url(coll_id, "_view")
        })
    if view_id:
        context_dict['fields'][0]['row_field_descs'][0]['field_value'] = view_id
        context_dict['fields'][1]['row_field_descs'][0]['field_value'] = view_label
        context_dict['fields'][2]['row_field_descs'][0]['field_value'] = '%s help for %s in collection %s'%(update, view_id, coll_id)
        context_dict['orig_id']     = view_id
    if orig_id:
        context_dict['orig_id']     = orig_id
    if action:  
        context_dict['action']      = action
    if add_field:
        context_dict['fields'][5]['field_value'].append(
            { 'annal:field_id':         None
            , 'annal:property_uri':     None
            , 'annal:field_placement':  None
            })
    if remove_field:
        context_dict['fields'][5]['field_value'][3:4] = []
    if move_up:
        assert move_up == [2,3]
        fields = context_dict['fields'][5]['field_value']
        context_dict['fields'][5]['field_value'] = [ fields[i]  for i in [0,2,3,1] ]
    if move_down:
        assert move_down == [1]
        fields = context_dict['fields'][5]['field_value']
        context_dict['fields'][5]['field_value'] = [ fields[i]  for i in [0,2,1,3] ]
    return context_dict
Пример #20
0
    def __init__(self,
                 collection,
                 recordfield,
                 view_context=None,
                 field_property=None,
                 field_placement=None,
                 group_view=None,
                 group_ids_seen=[],
                 field_placement_classes=None):
        """
        Creates a field description value to use in a context value when
        rendering a form.  Values defined here are mentioned in field
        rendering templates.

        The FieldDescription object behaves as a dictionary containing the 
        various field attributes.

        collection      is a collection from which data is being rendered.
                        Used when generating enumerated values.
        recordfield     is a RecordField value or dictionary containing details of
                        the field for which a descriptor is constructed.
        view_context    is a dictionary of additional values that may be used in assembling
                        values to be used when rendering the field.  In particular, a copy 
                        of the view description record provides context for some enumeration 
                        type selections.
        field_property  if supplied, overrides the field property URI from `recordfield`
        field_placement if supplied, overrides field placement from `recordfield`
        group_view      if the field itself references a list of fields, this is a
                        RecordGroup value or dictionary containing the referenced list 
                        of fields.
        group_ids_seen  group ids expanded so far, to check for recursive reference.
        field_classes   if supplied, overrides field placement classes derived from value
                        for `field_placement` string.
        """
        self._collection = collection
        # log.debug("FieldDescription recordfield: %r"%(recordfield,))
        field_id = recordfield.get(ANNAL.CURIE.id, "_missing_id_")
        field_name = recordfield.get(ANNAL.CURIE.field_name,
                                     field_id)  # Field name in form
        field_label = recordfield.get(RDFS.CURIE.label, "")
        field_property = field_property or recordfield.get(
            ANNAL.CURIE.property_uri, "")
        field_placement = field_placement or recordfield.get(
            ANNAL.CURIE.field_placement, "")
        field_placement_c = field_placement_classes or get_placement_classes(
            field_placement)
        field_placeholder = recordfield.get(ANNAL.CURIE.placeholder, "")
        field_render_type = extract_entity_id(
            recordfield.get(ANNAL.CURIE.field_render_type, ""))
        field_value_mode = extract_entity_id(
            recordfield.get(ANNAL.CURIE.field_value_mode,
                            "@@FieldDescription:value_mode@@"))
        field_ref_type = extract_entity_id(
            recordfield.get(ANNAL.CURIE.field_ref_type, None))
        field_entity_type = recordfield.get(ANNAL.CURIE.field_entity_type,
                                            None)
        field_group_ref = extract_entity_id(
            recordfield.get(ANNAL.CURIE.group_ref, None))
        self._field_desc = ({
            'field_id':
            field_id,
            'field_name':
            field_name,
            'field_instance_name':
            field_name,
            'field_render_type':
            field_render_type,
            'field_value_mode':
            field_value_mode,
            'field_value_type':
            recordfield.get(ANNAL.CURIE.field_value_type, ""),
            'field_label':
            field_label,
            'field_help':
            recordfield.get(RDFS.CURIE.comment, ""),
            'field_property_uri':
            field_property,
            'field_placement':
            field_placement_c,
            'field_placeholder':
            field_placeholder,
            'field_default_value':
            recordfield.get(ANNAL.CURIE.default_value, None),
            'field_ref_type':
            field_ref_type,
            'field_ref_field':
            recordfield.get(ANNAL.CURIE.field_ref_field, None),
            'field_ref_restriction':
            recordfield.get(ANNAL.CURIE.field_ref_restriction, "ALL"),
            'field_entity_type':
            field_entity_type,
            'field_choices':
            None
            # , 'field_choice_labels':        None
            # , 'field_choice_links':         None
            ,
            'field_group_ref':
            field_group_ref,
            'group_label':
            None,
            'group_add_label':
            None,
            'group_delete_label':
            None,
            'group_view':
            None,
            'group_field_descs':
            None,
            'field_render_label':
            get_label_renderer(field_render_type, field_value_mode),
            'field_render_view':
            get_view_renderer(field_render_type, field_value_mode),
            'field_render_edit':
            get_edit_renderer(field_render_type, field_value_mode),
            'field_render_label_view':
            get_label_view_renderer(field_render_type, field_value_mode),
            'field_render_label_edit':
            get_label_edit_renderer(field_render_type, field_value_mode),
            'field_render_colhead':
            get_col_head_renderer(field_render_type, field_value_mode),
            'field_render_colhead_view':
            get_col_head_view_renderer(field_render_type, field_value_mode),
            'field_render_colhead_edit':
            get_col_head_edit_renderer(field_render_type, field_value_mode),
            'field_render_colview':
            get_col_view_renderer(field_render_type, field_value_mode),
            'field_render_coledit':
            get_col_edit_renderer(field_render_type, field_value_mode),
            'field_render_mode':
            get_mode_renderer(field_render_type, field_value_mode),
            'field_value_mapper':
            get_value_mapper(field_render_type)
        })
        self._field_suffix_index = 0  # No dup
        self._field_suffix = ""
        # If field references type, pull in copy of type id and link values
        type_ref = self._field_desc['field_ref_type']
        if type_ref:
            restrict_values = self._field_desc['field_ref_restriction']
            entity_finder = EntityFinder(collection, selector=restrict_values)
            # Determine subtypes of field entity type, if specified
            # @@TODO: subtype logic here is just pig ugly...
            #         need context to provide info that can be used to calculate supertypes
            #         on-the-fly as needed by the field restriction expression.  E.g. include
            #         collection object in context.
            if field_entity_type and restrict_values:
                field_entity_subtypes = ([
                    t.get_type_uri()
                    for t in entity_finder.get_collection_uri_subtypes(
                        field_entity_type, altscope="all")
                ])
                self._field_desc[
                    'field_entity_subtypes'] = field_entity_subtypes
                field_view_context = dict(
                    view_context or {},
                    field={'subtypes': field_entity_subtypes})
            else:
                field_view_context = view_context
            entities = entity_finder.get_entities_sorted(
                type_id=type_ref,
                context=field_view_context,
                altscope="select")
            # Note: the options list may be used more than once, so the id generator
            # returned must be materialized as a list
            # Uses collections.OrderedfDict to preserve entity ordering
            self._field_desc['field_choices'] = collections.OrderedDict()
            if field_render_type in ["Enum_optional", "Enum_choice_opt"]:
                # Add blank choice for optional selections
                self._field_desc['field_choices'][''] = FieldChoice(
                    '', label=field_placeholder)
            for e in entities:
                eid = e.get_id()
                val = e.get_type_entity_id()
                if eid != "_initial_values":
                    self._field_desc['field_choices'][val] = FieldChoice(
                        val, label=e.get_label(), link=e.get_view_url_path())
            # log.debug("FieldDescription: typeref %s: %r"%
            #     (self._field_desc['field_ref_type'], list(self._field_desc['field_choices'].items()))
            #     )
        # If field references group, pull in field details
        if group_view:
            if field_id in group_ids_seen:
                raise Annalist_Error(
                    field_id, "Recursive field reference in field group")
            group_ids_seen = group_ids_seen + [field_id]
            group_label = (field_label or group_view.get(
                RDFS.CURIE.label, self._field_desc['field_group_ref']))
            add_label = recordfield.get(ANNAL.CURIE.repeat_label_add,
                                        None) or "Add " + field_id
            remove_label = recordfield.get(ANNAL.CURIE.repeat_label_delete,
                                           None) or "Remove " + field_id
            group_field_descs = []
            for subfield in group_view[ANNAL.CURIE.group_fields]:
                f = field_description_from_view_field(collection, subfield,
                                                      view_context,
                                                      group_ids_seen)
                group_field_descs.append(f)
            self._field_desc.update({
                'group_id': field_id,
                'group_label': group_label,
                'group_add_label': add_label,
                'group_delete_label': remove_label,
                'group_view': group_view,
                'group_field_descs': group_field_descs
            })
        # log.debug("FieldDescription: %s"%field_id)
        # log.info("FieldDescription._field_desc %r"%(self._field_desc,))
        # log.info("FieldDescription.field_placement %r"%(self._field_desc['field_placement'],))
        return
Пример #21
0
    def __init__(self, 
            collection, recordfield, view_context=None, 
            field_property=None, field_placement=None, 
            field_list=None, field_ids_seen=[],
            field_placement_classes=None
            ):
        """
        Creates a field description value to use in a context value when
        rendering a form.  Values defined here are mentioned in field
        rendering templates.

        The FieldDescription object behaves as a dictionary containing the 
        various field attributes.

        collection      is a collection from which data is being rendered.
        recordfield     is a RecordField value or dictionary containing details of
                        the field for which a descriptor is constructed.
        view_context    is a dictionary of additional values that may be used in assembling
                        values to be used when rendering the field.  In particular, a copy 
                        of the view description record provides context for some enumeration 
                        type selections.
        field_property  if supplied, overrides the field property URI from `recordfield`
        field_placement if supplied, overrides field placement from `recordfield`
        field_list      if the field itself contains or references a list of fields, this is
                        that list of fields.
        field_ids_seen  field ids expanded so far, to check for recursive reference.
        field_placement_classes
                        if supplied, overrides field placement classes derived from value
                        for `field_placement` string.
        """
        self._collection    = collection
        # log.debug("FieldDescription recordfield: %r"%(recordfield,))
        field_id            = recordfield.get(ANNAL.CURIE.id,         "_missing_id_")
        field_name          = recordfield.get(ANNAL.CURIE.field_name, field_id)  # Field name in form
        field_label         = recordfield.get(RDFS.CURIE.label, "")
        field_help          = recordfield.get(RDFS.CURIE.comment, "")
        field_property      = field_property  or recordfield.get(ANNAL.CURIE.property_uri, "")
        field_placement     = field_placement or recordfield.get(ANNAL.CURIE.field_placement, "")
        field_placement_c   = field_placement_classes or get_placement_classes(field_placement)
        field_placeholder   = recordfield.get(ANNAL.CURIE.placeholder, "")
        field_tooltip       = recordfield.get(ANNAL.CURIE.tooltip, "")
        field_render_type   = extract_entity_id(recordfield.get(ANNAL.CURIE.field_render_type, ""))
        field_value_mode    = extract_entity_id(recordfield.get(ANNAL.CURIE.field_value_mode, "@@FieldDescription:value_mode@@"))
        field_ref_type      = extract_entity_id(recordfield.get(ANNAL.CURIE.field_ref_type, None))
        field_entity_type   = recordfield.get(ANNAL.CURIE.field_entity_type, None)
        field_group_ref     = extract_entity_id(recordfield.get(ANNAL.CURIE.group_ref, None))
        self._field_desc    = (
            { 'field_id':                   field_id
            , 'field_name':                 field_name
            , 'field_instance_name':        field_name
            , 'field_render_type':          field_render_type
            , 'field_value_mode':           field_value_mode
            , 'field_value_type':           recordfield.get(ANNAL.CURIE.field_value_type, "")
            , 'field_label':                field_label
            , 'field_help':                 field_help
            , 'field_property_uri':         field_property
            , 'field_placement':            field_placement_c
            , 'field_placeholder':          field_placeholder
            , 'field_tooltip':              field_tooltip
            , 'field_tooltip_test':         field_tooltip or (field_help) or ""
            , 'field_default_value':        recordfield.get(ANNAL.CURIE.default_value, None)
            , 'field_ref_type':             field_ref_type
            , 'field_ref_field':            recordfield.get(ANNAL.CURIE.field_ref_field, None)
            , 'field_ref_restriction':      recordfield.get(ANNAL.CURIE.field_ref_restriction, "ALL")
            , 'field_entity_type':          field_entity_type
            , 'field_choices':              None
            , 'field_group_ref':            field_group_ref
            , 'group_label':                None
            , 'group_add_label':            None
            , 'group_delete_label':         None
            , 'group_field_list':           None
            , 'group_field_descs':          None
            , 'field_renderer':             FieldRenderer(field_render_type, field_value_mode)
            , 'field_value_mapper':         get_value_mapper(field_render_type) # Used by fieldvaluemap.py
            })
        self._field_suffix_index  = 0    # No dup
        self._field_suffix        = ""
        # If field references type, pull in copy of type id and link values
        type_ref = self._field_desc['field_ref_type']
        if type_ref:
            restrict_values = self._field_desc['field_ref_restriction']
            entity_finder   = EntityFinder(collection, selector=restrict_values)
            entities        = entity_finder.get_entities_sorted(
                type_id=type_ref, context=view_context, altscope="select"
                )
            # Note: the options list may be used more than once, so the id generator
            # returned must be materialized as a list
            # Uses collections.OrderedfDict to preserve entity ordering
            self._field_desc['field_choices'] = OrderedDict()
            if field_render_type in ["Enum_optional", "Enum_choice_opt"]:
                # Add blank choice for optional selections
                self._field_desc['field_choices'][''] = FieldChoice('', label=field_placeholder)
            for e in entities:
                eid = e.get_id()
                val = e.get_type_entity_id()
                if eid != layout.INITIAL_VALUES_ID:
                    self._field_desc['field_choices'][val] = FieldChoice(
                        val, label=e.get_label(), link=e.get_view_url_path()
                        )
        # If field references or contains field list, pull in field details
        if field_list:
            if field_id in field_ids_seen:
                raise Annalist_Error(field_id, "Recursive field reference in field group")
            field_ids_seen = field_ids_seen + [field_id]
            group_label  = field_label
            add_label    = recordfield.get(ANNAL.CURIE.repeat_label_add,    None) or "Add "+field_id
            remove_label = recordfield.get(ANNAL.CURIE.repeat_label_delete, None) or "Remove "+field_id
            group_field_descs = []
            for subfield in field_list:
                f = field_description_from_view_field(collection, subfield, view_context, field_ids_seen)
                group_field_descs.append(f)
            self._field_desc.update(
                { 'group_id':           field_id
                , 'group_label':        group_label
                , 'group_add_label':    add_label
                , 'group_delete_label': remove_label
                , 'group_field_list':   field_list          # Description from field/group
                , 'group_field_descs':  group_field_descs   # Resulting field description list
                })
        # log.debug("FieldDescription: %s"%field_id)
        # log.info("FieldDescription._field_desc %r"%(self._field_desc,))
        # log.info("FieldDescription.field_placement %r"%(self._field_desc['field_placement'],))
        return
def recordtype_entity_view_context_data(
        coll_id="testcoll",
        type_id="",
        orig_id=None,
        type_ids=[],
        action=None,
        update="RecordType",
        type_uri=None,
        supertype_uris=None  #@@ need to deal with these.
):
    if type_id:
        type_label = "%s %s/%s" % (update, coll_id, type_id)
        type_descr = "%s help for %s in collection %s" % (update, type_id,
                                                          coll_id)
    else:
        type_label = "%s data ... (%s/%s)" % (update, coll_id, type_id)
        type_descr = "%s description ... (%s/%s)" % (update, coll_id, type_id)
    context_dict = ({
        'title':
        "%s - Type definition - Collection %s" % (type_label, coll_id),
        'heading':
        "Type definition",
        'coll_id':
        coll_id,
        'type_id':
        '_type',
        'orig_id':
        'orig_type_id',
        'fields': [
            context_field_row({
                'field_id':
                'Type_id',
                'field_name':
                'entity_id',
                'field_value_type':
                'annal:Slug',
                'field_label':
                'Type Id',
                'field_render_type':
                'EntityId',
                'field_value_mode':
                'Value_direct',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6')
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            }),
            context_field_row({
                'field_id':
                'Type_label',
                'field_name':
                'Type_label',
                'field_value_type':
                'annal:Text',
                'field_label':
                'Label',
                'field_render_type':
                'Text',
                'field_value_mode':
                'Value_direct',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_value':
                type_label,
                'options': []
            }),
            context_field_row({
                'field_id':
                'Type_comment',
                'field_name':
                'Type_comment',
                'field_label':
                'Comment',
                'field_value_type':
                'annal:Richtext',
                'field_render_type':
                'Markdown',
                'field_value_mode':
                'Value_direct',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_value':
                type_descr,
                'options': []
            }),
            context_field_row({
                'field_id':
                'Type_uri',
                'field_name':
                'Type_uri',
                'field_value_type':
                'annal:Identifier',
                'field_label':
                'Type URI',
                'field_render_type':
                'Identifier',
                'field_value_mode':
                'Value_direct',
                'field_placement':
                get_placement_classes('small:0,12')
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            }),
            {
                'field_id': 'Type_supertype_uris',
                'field_name': 'Type_supertype_uris',
                'field_value_type': 'annal:Type_supertype_uri',
                'field_label': 'Supertype URIs',
                'field_render_type': 'RepeatGroupRow',
                'field_value_mode': 'Value_direct',
                'field_placement': get_placement_classes('small:0,12')
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            },
            context_field_row(
                {
                    'field_id':
                    'Type_view',
                    'field_name':
                    'Type_view',
                    'field_value_type':
                    'annal:View',
                    'field_label':
                    'Default view',
                    'field_render_type':
                    'Enum_optional',
                    'field_value_mode':
                    'Value_direct',
                    'field_placement':
                    get_placement_classes('small:0,12;medium:0,6')
                    # , 'field_value':      (Supplied separately)
                    ,
                    'options': []
                },
                {
                    'field_id':
                    'Type_list',
                    'field_name':
                    'Type_list',
                    'field_value_type':
                    'annal:List',
                    'field_label':
                    'Default list',
                    'field_render_type':
                    'Enum_optional',
                    'field_value_mode':
                    'Value_direct',
                    'field_placement':
                    get_placement_classes('small:0,12;medium:6,6')
                    # , 'field_value':      (Supplied separately)
                    ,
                    'options': []
                })
        ],
        'continuation_url':
        entitydata_list_type_url(coll_id, "_type")
    })
    if type_id:
        type_url = recordtype_url(coll_id=coll_id, type_id=type_id)
        context_dict['fields'][0]['row_field_descs'][0][
            'field_value'] = type_id
        context_dict['fields'][3]['row_field_descs'][0][
            'field_value'] = type_url or ""
        context_dict['orig_id'] = type_id
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict
Пример #23
0
def recordlist_view_context_data(coll_id="testcoll",
                                 list_id=None,
                                 orig_id=None,
                                 view_ids=[],
                                 action=None,
                                 update="RecordList"):
    list_fields = ([{
        "annal:field_id": "Entity_id",
        "annal:field_placement": "small:0,3"
    }, {
        "annal:field_id": "Entity_label",
        "annal:field_placement": "small:3,9"
    }])
    context_dict = ({
        'title':
        "Collection %s" % (coll_id),
        'coll_id':
        coll_id,
        'type_id':
        '_list',
        'orig_id':
        'orig_list_id',
        'continuation_url':
        entitydata_list_type_url(coll_id, "_list"),
        'fields': [
            {
                'field_id': 'List_id'  # fields[0]
                ,
                'field_label': 'Id',
                'field_render_type': 'Slug',
                'field_name': 'entity_id',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_value_type': 'annal:Slug'
                # , 'field_value':      (Supplied separately, below)
                ,
                'options': []
            },
            {
                'field_id': 'List_type'  # fields[1]
                ,
                'field_label': 'List display type',
                'field_render_type': 'Enum_choice',
                'field_name': 'List_type',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_value_type': 'annal:List_type',
                'field_value': 'List',
                'options': []  # ['list', 'grid']
            },
            {
                'field_id': 'List_label'  # fields[2]
                ,
                'field_label': 'Label',
                'field_render_type': 'Text',
                'field_name': 'List_label',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Text'
                # , 'field_value':      (Supplied separately, below)
                ,
                'options': []
            },
            {
                'field_id': 'List_comment'  # fields[3]
                ,
                'field_label': 'Help',
                'field_render_type': 'Textarea',
                'field_name': 'List_comment',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Longtext'
                # , 'field_value':      (Supplied separately, below)
                ,
                'options': []
            },
            {
                'field_id': 'List_default_type'  # fields[4]
                ,
                'field_label': 'Record type',
                'field_render_type': 'Type',
                'field_name': 'List_default_type',
                'field_placement': get_placement_classes('small:0,6'),
                'field_value_type': 'annal:Type',
                'field_value': 'Default_type',
                'options': []
            },
            {
                'field_id': 'List_default_view'  # fields[5]
                ,
                'field_label': 'View',
                'field_render_type': 'View',
                'field_name': 'List_default_view',
                'field_placement': get_placement_classes('small:6,6'),
                'field_value_type': 'annal:View',
                'field_value': 'Default_view',
                'options': []
            },
            {
                'field_id': 'List_entity_selector'  # fields[6]
                ,
                'field_label': 'Selector',
                'field_render_type': 'Text',
                'field_name': 'List_entity_selector',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Text',
                'field_value': 'ALL',
                'options': []
            },
            {
                'field_id': 'List_target_type'  # fields[7]
                ,
                'field_label': 'Record type URI',
                'field_render_type': 'Identifier',
                'field_name': 'List_target_type',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Identifier',
                'field_value': '',
                'options': []
            },
            {
                "field_id": "List_repeat_fields"  # fields[8]
                ,
                'field_label': 'Fields',
                'field_render_type': 'RepeatGroupRow',
                'field_name': 'List_repeat_fields',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Field_group',
                'field_value': list_fields,
                'options': []
            }
        ]
    })
    if list_id:
        context_dict['fields'][0]['field_value'] = list_id
        context_dict['fields'][2]['field_value'] = '%s %s/%s' % (
            update, coll_id, list_id)
        context_dict['fields'][3]['field_value'] = '%s help for %s/%s' % (
            update, coll_id, list_id)
        context_dict['orig_id'] = list_id
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict
def entitydata_context_data(entity_id=None,
                            orig_id=None,
                            coll_id="testcoll",
                            type_id="testtype",
                            type_ids=[],
                            action=None,
                            update="Entity",
                            view_label="Default record view"):
    if entity_id:
        entity_label = '%s %s/%s/%s' % (update, coll_id, type_id, entity_id)
        entity_descr = '%s coll %s, type %s, entity %s' % (update, coll_id,
                                                           type_id, entity_id)
    else:
        entity_label = '%s data ... (%s/%s)' % (update, coll_id, type_id)
        entity_descr = '%s description ... (%s/%s)' % (update, coll_id,
                                                       type_id)
    context_dict = ({
        'title':
        "%s - %s - Collection %s" % (entity_label, view_label, coll_id),
        'heading':
        view_label,
        'coll_id':
        'testcoll',
        'type_id':
        'testtype',
        'orig_id':
        'orig_entity_id',
        'fields': [
            context_field_row(
                {
                    'field_label':
                    'Id',
                    'field_id':
                    'Entity_id',
                    'field_name':
                    'entity_id',
                    'field_render_type':
                    'EntityId',
                    'field_placement':
                    get_placement_classes('small:0,12;medium:0,6'),
                    'field_value_mode':
                    'Value_direct',
                    'field_value_type':
                    "annal:Slug"
                    # , 'field_value':      (Supplied separately)
                    ,
                    'options': []
                },
                {
                    'field_label':
                    'Type',
                    'field_id':
                    'Entity_type',
                    'field_name':
                    'entity_type',
                    'field_render_type':
                    'EntityTypeId',
                    'field_value_type':
                    "annal:Slug",
                    'field_placement':
                    get_placement_classes('small:0,12;medium:6,6'),
                    'field_value_mode':
                    'Value_direct'
                    # , 'field_value':      (Supplied separately)
                    ,
                    'options': []
                }),
            context_field_row({
                'field_label':
                'Label',
                'field_id':
                'Entity_label',
                'field_name':
                'Entity_label',
                'field_render_type':
                'Text',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_value_mode':
                'Value_direct',
                'field_value_type':
                "annal:Text",
                'field_value':
                entity_label,
                'options': []
            }),
            context_field_row({
                'field_label':
                'Comment',
                'field_id':
                'Entity_comment',
                'field_name':
                'Entity_comment',
                'field_render_type':
                'Markdown',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_value_mode':
                'Value_direct',
                'field_value_type':
                "annal:Richtext",
                'field_value':
                entity_descr,
                'options': []
            })
        ],
        'continuation_url':
        entitydata_list_type_url("testcoll", type_id)
    })
    if entity_id:
        context_dict['fields'][0]['row_field_descs'][0][
            'field_value'] = entity_id
        context_dict['fields'][0]['row_field_descs'][1][
            'field_value'] = "_type/" + type_id if valid_id(type_id) else None
        context_dict['orig_id'] = entity_id
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict
Пример #25
0
def recordtype_entity_view_context_data(coll_id="testcoll",
                                        type_id=None,
                                        orig_id=None,
                                        type_ids=[],
                                        action=None,
                                        update="RecordType"):
    context_dict = ({
        'title':
        "Collection %s" % (coll_id),
        'coll_id':
        coll_id,
        'type_id':
        '_type',
        'orig_id':
        'orig_type_id',
        'fields': [
            {
                'field_label': 'Id',
                'field_name': 'entity_id',
                'field_render_type': 'EntityId',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_id': 'Type_id',
                'field_value_type': 'annal:Slug'
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            },
            {
                'field_label': 'Label',
                'field_name': 'Type_label',
                'field_render_type': 'Text',
                'field_placement': get_placement_classes('small:0,12'),
                'field_id': 'Type_label',
                'field_value_type': 'annal:Text',
                'field_value':
                '%s data ... (%s/%s)' % (update, coll_id, type_id),
                'options': []
            },
            {
                'field_label':
                'Comment',
                'field_name':
                'Type_comment',
                'field_render_type':
                'Textarea',
                'field_placement':
                get_placement_classes('small:0,12'),
                'field_id':
                'Type_comment',
                'field_value_type':
                'annal:Longtext',
                'field_value':
                '%s description ... (%s/%s)' % (update, coll_id, type_id),
                'options': []
            },
            {
                'field_label': 'URI',
                'field_name': 'Type_uri',
                'field_render_type': 'Identifier',
                'field_placement': get_placement_classes('small:0,12'),
                'field_id': 'Type_uri',
                'field_value_type': 'annal:Identifier'
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            },
            {
                'field_label': 'Default view',
                'field_name': 'Type_view',
                'field_render_type': 'View',
                'field_placement': get_placement_classes('small:0,6'),
                'field_id': 'Type_view',
                'field_value_type': 'annal:View'
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            },
            {
                'field_label': 'Default list',
                'field_name': 'Type_list',
                'field_render_type': 'List',
                'field_placement': get_placement_classes('small:6,6'),
                'field_id': 'Type_list',
                'field_value_type': 'annal:List'
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            }
        ],
        'continuation_url':
        entitydata_list_type_url(coll_id, "_type")
    })
    if type_id:
        type_url = recordtype_url(coll_id=coll_id, type_id=type_id)
        context_dict['fields'][0]['field_value'] = type_id
        context_dict['fields'][1]['field_value'] = '%s %s/%s' % (
            update, coll_id, type_id)
        context_dict['fields'][2][
            'field_value'] = '%s help for %s in collection %s' % (
                update, type_id, coll_id)
        context_dict['fields'][3]['field_value'] = type_url
        context_dict['orig_id'] = type_id
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict
Пример #26
0
 def test_get_placement_classes(self):
     """
     This was a DocTest, but Py3 compatibility....
     """
     self.assertEqual(
         get_placement_classes("medium:0,12"),
         Placement(
             width=LayoutOptions(s=12, m=12, l=12),
             offset=LayoutOptions(s=0, m=0, l=0),
             display=LayoutOptions(s=True, m=True, l=True),
             field='small-12 columns',
             label='small-12 medium-2 columns',
             value='small-12 medium-10 columns'
             )
         )
     self.assertEqual(
         get_placement_classes("large:0,12"),
         Placement(
             width=LayoutOptions(s=12, m=12, l=12),
             offset=LayoutOptions(s=0, m=0, l=0),
             display=LayoutOptions(s=True, m=True, l=True),
             field='small-12 columns',
             label='small-12 medium-2 columns',
             value='small-12 medium-10 columns'
             )
         )
     self.assertEqual(
         get_placement_classes("small:0,12;medium:0,4"),
         Placement(
             width=LayoutOptions(s=12, m=4, l=4),
             offset=LayoutOptions(s=0, m=0, l=0),
             display=LayoutOptions(s=True, m=True, l=True),
             field='small-12 medium-4 columns',
             label='small-12 medium-6 columns',
             value='small-12 medium-6 columns'
             )
         )
     self.assertEqual(
         get_placement_classes("small:0,12; medium:0,4"),
         Placement(
             width=LayoutOptions(s=12, m=4, l=4),
             offset=LayoutOptions(s=0, m=0, l=0),
             display=LayoutOptions(s=True, m=True, l=True),
             field='small-12 medium-4 columns',
             label='small-12 medium-6 columns',
             value='small-12 medium-6 columns'
             )
         )
     self.assertEqual(
         get_placement_classes("small:0,12;medium:0,6;large:0,4"),
         Placement(
             width=LayoutOptions(s=12, m=6, l=4),
             offset=LayoutOptions(s=0, m=0, l=0),
             display=LayoutOptions(s=True, m=True, l=True),
             field='small-12 medium-6 large-4 columns',
             label='small-12 medium-4 large-6 columns',
             value='small-12 medium-8 large-6 columns'
             )
         )
     self.assertEqual(
         get_placement_classes("small:0,6;medium:0,4"),
         Placement(
             width=LayoutOptions(s=6, m=4, l=4),
             offset=LayoutOptions(s=0, m=0, l=0),
             display=LayoutOptions(s=True, m=True, l=True),
             field='small-6 medium-4 columns',
             label='small-12 medium-6 columns',
             value='small-12 medium-6 columns'
             )
         )
     self.assertEqual(
         get_placement_classes("small:0,6;medium:0,4,right"),
         Placement(
             width=LayoutOptions(s=6, m=4, l=4),
             offset=LayoutOptions(s=0, m=0, l=0),
             display=LayoutOptions(s=True, m=True, l=True),
             field='small-6 medium-4 columns right',
             label='small-12 medium-6 columns',
             value='small-12 medium-6 columns'
             )
         )
     self.assertEqual(
         get_placement_classes("small:0,6"),
         Placement(
             width=LayoutOptions(s=6, m=6, l=6),
             offset=LayoutOptions(s=0, m=0, l=0),
             display=LayoutOptions(s=True, m=True, l=True),
             field='small-6 columns',
             label='small-12 medium-4 columns',
             value='small-12 medium-8 columns'
             )
         )
     self.assertEqual(
         get_placement_classes("small:0,12,hide;medium:0,4"),
         Placement(
             width=LayoutOptions(s=12, m=4, l=4),
             offset=LayoutOptions(s=0, m=0, l=0),
             display=LayoutOptions(s=False, m=True, l=True),
             field='small-12 medium-4 columns show-for-medium-up',
             label='small-12 medium-6 columns',
             value='small-12 medium-6 columns'
             )
         )
     return
Пример #27
0
def entitydata_context_data(
        entity_id=None, orig_id=None, coll_id="testcoll", type_id="testtype", type_ids=[],
        action=None, update="Entity", view_label="Default record view"
    ):
    if entity_id:
        entity_label = '%s %s/%s/%s'%(update, coll_id, type_id, entity_id)
        entity_descr = '%s coll %s, type %s, entity %s'%(update, coll_id, type_id, entity_id)
    else:
        entity_label = '%s data ... (%s/%s)'%(update, coll_id, type_id)
        entity_descr = '%s description ... (%s/%s)'%(update, coll_id, type_id)
    context_dict = (
        { 'title':              "%s - %s - Collection %s"%(entity_label, view_label, coll_id)
        , 'heading':            view_label
        , 'coll_id':            'testcoll'
        , 'type_id':            'testtype'
        , 'orig_id':            'orig_entity_id'
        , 'fields':
          [ context_field_row(
              { 'field_label':        'Id'
              , 'field_id':           'Entity_id'
              , 'field_name':         'entity_id'
              , 'field_render_type':  'EntityId'
              , 'field_placement':    get_placement_classes('small:0,12;medium:0,6')
              , 'field_value_mode':   'Value_direct'
              , 'field_value_type':  "annal:Slug"
              # , 'field_value':      (Supplied separately)
              , 'options':            []
              },
              { 'field_label':        'Type'
              , 'field_id':           'Entity_type'
              , 'field_name':         'entity_type'
              , 'field_render_type':  'EntityTypeId'
              , 'field_value_type':  "annal:Slug"
              , 'field_placement':    get_placement_classes('small:0,12;medium:6,6')
              , 'field_value_mode':   'Value_direct'
              # , 'field_value':      (Supplied separately)
              , 'options':            []
              })
          , context_field_row(
              { 'field_label':        'Label'
              , 'field_id':           'Entity_label'
              , 'field_name':         'Entity_label'
              , 'field_render_type':  'Text'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_value_mode':   'Value_direct'
              , 'field_value_type':  "annal:Text"
              , 'field_value':        entity_label
              , 'options':            []
              })
          , context_field_row(
              { 'field_label':        'Comment'
              , 'field_id':           'Entity_comment'
              , 'field_name':         'Entity_comment'
              , 'field_render_type':  'Markdown'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_value_mode':   'Value_direct'
              , 'field_value_type':  "annal:Richtext"
              , 'field_value':        entity_descr
              , 'options':            []
              })
          ]
        , 'continuation_url':   entitydata_list_type_url("testcoll", type_id)
        })
    if entity_id:
        context_dict['fields'][0]['row_field_descs'][0]['field_value'] = entity_id
        context_dict['fields'][0]['row_field_descs'][1]['field_value'] = "_type/"+type_id if valid_id(type_id) else None
        context_dict['orig_id']     = entity_id
    if orig_id:
        context_dict['orig_id']     = orig_id
    if action:  
        context_dict['action']      = action
    return context_dict
Пример #28
0
from tests                  import init_annalist_test_site
from tests                  import TestHost, TestHostUri, TestBasePath, TestBaseUri, TestBaseDir
from AnnalistTestCase       import AnnalistTestCase

from entity_testentitydata  import entity_url

#   -----------------------------------------------------------------------------
#
#   Test data
#
#   -----------------------------------------------------------------------------

tokenset_context = Context(
    { 'field':
      { 'field_placement':      get_placement_classes("small:0,12")
      , 'field_name':           "test_field"
      , 'field_label':          "test label"
      , 'field_placeholder':    "(test placeholder)"
      , 'field_value':          ["aa", "bb", "cc"]
      }
    # , 'repeat':
    #   { 'repeat_prefix':        "prefix_"
    #   }
    , 'repeat_prefix':        "tokprefix_"
    })

intvalue_context = Context(
    { 'field':
      { 'field_placement':      get_placement_classes("small:0,12")
      , 'field_name':           "test_field"
Пример #29
0
def entitydata_recordtype_view_context_data(
        entity_id=None, orig_id=None, coll_id="testcoll", type_id="testtype", type_uri=None, type_ids=[],
        action=None, update="Entity", view_label="Type definition"
    ):
    if entity_id:
        entity_label = '%s %s/%s/%s'%(update, coll_id, type_id, entity_id)
        entity_descr = '%s coll %s, type %s, entity %s'%(update, coll_id, type_id, entity_id)
    else:
        entity_label = '%s data ... (%s/%s)'%(update, coll_id, type_id)
        entity_descr = '%s description ... (%s/%s)'%(update, coll_id, type_id)
    context_dict = (
        { 'title':              "%s - %s - Collection %s"%(entity_label, view_label, coll_id)
        , 'heading':            view_label
        , 'coll_id':            coll_id
        , 'type_id':            type_id
        , 'orig_id':            'orig_entity_id'
        , 'fields':
          [ context_field_row(
              { 'field_label':        'Type Id'
              , 'field_name':         'entity_id'
              , 'field_placement':    get_placement_classes('small:0,12;medium:0,6')
              , 'field_id':           'Type_id'
              , 'field_value_mode':   'Value_direct'
              , 'field_value_type':  'annal:Slug'
              # , 'field_value':      (Supplied separately)
              , 'options':            []
              })
          , context_field_row(
              { 'field_label':        'Label'
              , 'field_name':         'Type_label'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_id':           'Type_label'
              , 'field_value_mode':   'Value_direct'
              , 'field_value_type':  'annal:Text'
              , 'field_value':        entity_label
              , 'options':            []
              })
          , context_field_row(
              { 'field_label':        'Comment'
              , 'field_name':         'Type_comment'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_id':           'Type_comment'
              , 'field_value_mode':   'Value_direct'
              , 'field_value_type':  'annal:Richtext'
              , 'field_value':        entity_descr
              , 'options':            []
              })
          , context_field_row(
              { 'field_label':        'Type URI'
              , 'field_name':         'Type_uri'
              , 'field_placement':    get_placement_classes('small:0,12')
              , 'field_id':           'Type_uri'
              , 'field_value_mode':   'Value_direct'
              , 'field_value_type':  'annal:Identifier'
              , 'field_value':        ""
              , 'options':            []
              })
          ]
        , 'continuation_url':   entitydata_list_type_url(coll_id, type_id)
        })
    if entity_id:
        context_dict['fields'][0]['row_field_descs'][0]['field_value'] = entity_id
        context_dict['orig_id']                  = entity_id
    if type_uri:
        context_dict['fields'][3]['row_field_descs'][0]['field_value'] = type_uri
    if orig_id:
        context_dict['orig_id']     = orig_id
    if action:  
        context_dict['action']      = action
    return context_dict
Пример #30
0
def entitydata_context_data(entity_id=None,
                            orig_id=None,
                            type_id="testtype",
                            type_ids=[],
                            action=None,
                            update="Entity"):
    context_dict = ({
        'title':
        "Collection testcoll",
        'coll_id':
        'testcoll',
        'type_id':
        'testtype',
        'orig_id':
        'orig_entity_id',
        'fields': [
            {
                'field_label': 'Id',
                'field_id': 'Entity_id',
                'field_name': 'entity_id',
                'field_render_type': 'EntityId',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_value_type': 'annal:Slug'
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            },
            {
                'field_label': 'Type',
                'field_id': 'Entity_type',
                'field_name': 'entity_type',
                'field_render_type': 'EntityTypeId',
                'field_placement':
                get_placement_classes('small:0,12;medium:6,6'),
                'field_value_type': 'annal:Slug'
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            },
            {
                'field_label': 'Label',
                'field_id': 'Entity_label',
                'field_name': 'Entity_label',
                'field_render_type': 'Text',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Text',
                'field_value': '%s data ... (testcoll/testtype)' % (update),
                'options': []
            },
            {
                'field_label': 'Comment',
                'field_id': 'Entity_comment',
                'field_name': 'Entity_comment',
                'field_render_type': 'Textarea',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Longtext',
                'field_value':
                '%s description ... (testcoll/testtype)' % (update),
                'options': []
            }
        ],
        'continuation_url':
        entitydata_list_type_url("testcoll", type_id)
    })
    if entity_id:
        context_dict['fields'][0]['field_value'] = entity_id
        context_dict['fields'][1]['field_value'] = type_id if valid_id(
            type_id) else None
        context_dict['fields'][2][
            'field_value'] = '%s testcoll/testtype/%s' % (update, entity_id)
        context_dict['fields'][3][
            'field_value'] = '%s coll testcoll, type testtype, entity %s' % (
                update, entity_id)
        context_dict['orig_id'] = entity_id
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict
Пример #31
0
    def __init__(self, 
            collection, recordfield, view_context=None, 
            field_property=None, field_placement=None, 
            group_view=None, group_ids_seen=[],
            field_placement_classes=None
            ):
        """
        Creates a field description value to use in a context value when
        rendering a form.  Values defined here are mentioned in field
        rendering templates.

        The FieldDescription object behaves as a dictionary containing the 
        various field attributes.

        collection      is a collection from which data is being rendered.
                        Used when generating enumerated values.
        recordfield     is a RecordField value or dictionary containing details of
                        the field for which a descriptor is constructed.
        view_context    is a dictionary of additional values that may be used in assembling
                        values to be used when rendering the field.  In particular, a copy 
                        of the view description record provides context for some enumeration 
                        type selections.
        field_property  if supplied, overrides the field property URI from `recordfield`
        field_placement if supplied, overrides field placement from `recordfield`
        group_view      if the field itself references a list of fields, this is a
                        RecordGroup value or dictionary containing the referenced list 
                        of fields.
        group_ids_seen  group ids expanded so far, to check for recursive reference.
        field_classes   if supplied, overrides field placement classes derived from value
                        for `field_placement` string.
        """
        self._collection    = collection
        # log.debug("FieldDescription recordfield: %r"%(recordfield,))
        field_id            = recordfield.get(ANNAL.CURIE.id,         "_missing_id_")
        field_name          = recordfield.get(ANNAL.CURIE.field_name, field_id)  # Field name in form
        field_label         = recordfield.get(RDFS.CURIE.label, "")
        field_property      = field_property  or recordfield.get(ANNAL.CURIE.property_uri, "")
        field_placement     = field_placement or recordfield.get(ANNAL.CURIE.field_placement, "")
        field_placement_c   = field_placement_classes or get_placement_classes(field_placement)
        field_placeholder   = recordfield.get(ANNAL.CURIE.placeholder, "")
        field_render_type   = extract_entity_id(recordfield.get(ANNAL.CURIE.field_render_type, ""))
        field_value_mode    = extract_entity_id(recordfield.get(ANNAL.CURIE.field_value_mode, "@@FieldDescription:value_mode@@"))
        field_ref_type      = extract_entity_id(recordfield.get(ANNAL.CURIE.field_ref_type, None))
        field_entity_type   = recordfield.get(ANNAL.CURIE.field_entity_type, None)
        field_group_ref     = extract_entity_id(recordfield.get(ANNAL.CURIE.group_ref, None))
        self._field_desc    = (
            { 'field_id':                   field_id
            , 'field_name':                 field_name
            , 'field_instance_name':        field_name
            , 'field_render_type':          field_render_type
            , 'field_value_mode':           field_value_mode
            , 'field_value_type':           recordfield.get(ANNAL.CURIE.field_value_type, "")
            , 'field_label':                field_label
            , 'field_help':                 recordfield.get(RDFS.CURIE.comment, "")
            , 'field_property_uri':         field_property
            , 'field_placement':            field_placement_c
            , 'field_placeholder':          field_placeholder
            , 'field_default_value':        recordfield.get(ANNAL.CURIE.default_value, None)
            , 'field_ref_type':             field_ref_type
            , 'field_ref_field':            recordfield.get(ANNAL.CURIE.field_ref_field, None)
            , 'field_ref_restriction':      recordfield.get(ANNAL.CURIE.field_ref_restriction, "ALL")
            , 'field_entity_type':          field_entity_type
            , 'field_choices':              None
            # , 'field_choice_labels':        None
            # , 'field_choice_links':         None
            , 'field_group_ref':            field_group_ref
            , 'group_label':                None
            , 'group_add_label':            None
            , 'group_delete_label':         None
            , 'group_view':                 None
            , 'group_field_descs':          None
            , 'field_render_label':         get_label_renderer(        field_render_type, field_value_mode)
            , 'field_render_view':          get_view_renderer(         field_render_type, field_value_mode)
            , 'field_render_edit':          get_edit_renderer(         field_render_type, field_value_mode)
            , 'field_render_label_view':    get_label_view_renderer(   field_render_type, field_value_mode)
            , 'field_render_label_edit':    get_label_edit_renderer(   field_render_type, field_value_mode)
            , 'field_render_colhead':       get_col_head_renderer(     field_render_type, field_value_mode)
            , 'field_render_colhead_view':  get_col_head_view_renderer(field_render_type, field_value_mode)
            , 'field_render_colhead_edit':  get_col_head_edit_renderer(field_render_type, field_value_mode)
            , 'field_render_colview':       get_col_view_renderer(     field_render_type, field_value_mode)
            , 'field_render_coledit':       get_col_edit_renderer(     field_render_type, field_value_mode)
            , 'field_render_mode':          get_mode_renderer(         field_render_type, field_value_mode)
            , 'field_value_mapper':         get_value_mapper(field_render_type)
            })
        self._field_suffix_index  = 0    # No dup
        self._field_suffix        = ""
        # If field references type, pull in copy of type id and link values
        type_ref = self._field_desc['field_ref_type']
        if type_ref:
            restrict_values = self._field_desc['field_ref_restriction']
            entity_finder   = EntityFinder(collection, selector=restrict_values)
            # Determine subtypes of field entity type, if specified
            # @@TODO: subtype logic here is just pig ugly...
            #         need context to provide info that can be used to calculate supertypes
            #         on-the-fly as needed by the field restriction expression.  E.g. include
            #         collection object in context.
            if field_entity_type and restrict_values:
                field_entity_subtypes = (
                    [ t.get_type_uri()
                      for t in entity_finder.get_collection_uri_subtypes(field_entity_type, altscope="all")
                    ])
                self._field_desc['field_entity_subtypes'] = field_entity_subtypes
                field_view_context = dict(view_context or {}, field={'subtypes': field_entity_subtypes})
            else:
                field_view_context = view_context
            entities        = entity_finder.get_entities_sorted(
                type_id=type_ref, context=field_view_context, altscope="select"
                )
            # Note: the options list may be used more than once, so the id generator
            # returned must be materialized as a list
            # Uses collections.OrderedfDict to preserve entity ordering
            self._field_desc['field_choices'] = collections.OrderedDict()
            if field_render_type in ["Enum_optional", "Enum_choice_opt"]:
                # Add blank choice for optional selections
                self._field_desc['field_choices'][''] = FieldChoice('', label=field_placeholder)
            for e in entities:
                eid = e.get_id()
                val = e.get_type_entity_id()
                if eid != "_initial_values":
                    self._field_desc['field_choices'][val] = FieldChoice(
                        val, label=e.get_label(), link=e.get_view_url_path()
                        )
            # log.debug("FieldDescription: typeref %s: %r"%
            #     (self._field_desc['field_ref_type'], list(self._field_desc['field_choices'].items()))
            #     )
        # If field references group, pull in field details
        if group_view:
            if field_id in group_ids_seen:
                raise Annalist_Error(field_id, "Recursive field reference in field group")
            group_ids_seen = group_ids_seen + [field_id]
            group_label = (field_label or 
                group_view.get(RDFS.CURIE.label, self._field_desc['field_group_ref'])
                )
            add_label    = recordfield.get(ANNAL.CURIE.repeat_label_add, None) or "Add "+field_id
            remove_label = recordfield.get(ANNAL.CURIE.repeat_label_delete, None) or "Remove "+field_id
            group_field_descs = []
            for subfield in group_view[ANNAL.CURIE.group_fields]:
                f = field_description_from_view_field(collection, subfield, view_context, group_ids_seen)
                group_field_descs.append(f)
            self._field_desc.update(
                { 'group_id':           field_id
                , 'group_label':        group_label
                , 'group_add_label':    add_label
                , 'group_delete_label': remove_label
                , 'group_view':         group_view
                , 'group_field_descs':  group_field_descs
                })
        # log.debug("FieldDescription: %s"%field_id)
        # log.info("FieldDescription._field_desc %r"%(self._field_desc,))
        # log.info("FieldDescription.field_placement %r"%(self._field_desc['field_placement'],))
        return
Пример #32
0
    def __init__(self,
                 collection,
                 recordfield,
                 view_context=None,
                 field_property=None,
                 field_placement=None,
                 field_list=None,
                 field_ids_seen=[],
                 field_placement_classes=None):
        """
        Creates a field description value to use in a context value when
        rendering a form.  Values defined here are mentioned in field
        rendering templates.

        The FieldDescription object behaves as a dictionary containing the 
        various field attributes.

        collection      is a collection from which data is being rendered.
        recordfield     is a RecordField value or dictionary containing details of
                        the field for which a descriptor is constructed.
        view_context    is a dictionary of additional values that may be used in assembling
                        values to be used when rendering the field.  In particular, a copy 
                        of the view description record provides context for some enumeration 
                        type selections.
        field_property  if supplied, overrides the field property URI from `recordfield`
        field_placement if supplied, overrides field placement from `recordfield`
        field_list      if the field itself contains or references a list of fields, this is
                        that list of fields.
        field_ids_seen  field ids expanded so far, to check for recursive reference.
        field_placement_classes
                        if supplied, overrides field placement classes derived from value
                        for `field_placement` string.
        """
        self._collection = collection
        # log.debug("FieldDescription recordfield: %r"%(recordfield,))
        field_id = recordfield.get(ANNAL.CURIE.id, "_missing_id_")
        field_name = recordfield.get(ANNAL.CURIE.field_name,
                                     field_id)  # Field name in form
        field_label = recordfield.get(RDFS.CURIE.label, "")
        field_help = recordfield.get(RDFS.CURIE.comment, "")
        field_property = field_property or recordfield.get(
            ANNAL.CURIE.property_uri, "")
        field_placement = field_placement or recordfield.get(
            ANNAL.CURIE.field_placement, "")
        field_placement_c = field_placement_classes or get_placement_classes(
            field_placement)
        field_placeholder = recordfield.get(ANNAL.CURIE.placeholder, "")
        field_tooltip = recordfield.get(ANNAL.CURIE.tooltip, "")
        field_render_type = extract_entity_id(
            recordfield.get(ANNAL.CURIE.field_render_type, ""))
        field_value_mode = extract_entity_id(
            recordfield.get(ANNAL.CURIE.field_value_mode,
                            "@@FieldDescription:value_mode@@"))
        field_ref_type = extract_entity_id(
            recordfield.get(ANNAL.CURIE.field_ref_type, None))
        field_entity_type = recordfield.get(ANNAL.CURIE.field_entity_type,
                                            None)
        field_group_ref = extract_entity_id(
            recordfield.get(ANNAL.CURIE.group_ref, None))
        self._field_desc = ({
            'field_id':
            field_id,
            'field_name':
            field_name,
            'field_instance_name':
            field_name,
            'field_render_type':
            field_render_type,
            'field_value_mode':
            field_value_mode,
            'field_value_type':
            recordfield.get(ANNAL.CURIE.field_value_type, ""),
            'field_label':
            field_label,
            'field_help':
            field_help,
            'field_property_uri':
            field_property,
            'field_placement':
            field_placement_c,
            'field_placeholder':
            field_placeholder,
            'field_tooltip':
            field_tooltip,
            'field_tooltip_test':
            field_tooltip or (field_help) or "",
            'field_default_value':
            recordfield.get(ANNAL.CURIE.default_value, None),
            'field_ref_type':
            field_ref_type,
            'field_ref_field':
            recordfield.get(ANNAL.CURIE.field_ref_field, None),
            'field_ref_restriction':
            recordfield.get(ANNAL.CURIE.field_ref_restriction, "ALL"),
            'field_entity_type':
            field_entity_type,
            'field_choices':
            None,
            'field_group_ref':
            field_group_ref,
            'group_label':
            None,
            'group_add_label':
            None,
            'group_delete_label':
            None,
            'group_field_list':
            None,
            'group_field_descs':
            None,
            'field_renderer':
            FieldRenderer(field_render_type, field_value_mode),
            'field_value_mapper':
            get_value_mapper(field_render_type)  # Used by fieldvaluemap.py
        })
        self._field_suffix_index = 0  # No dup
        self._field_suffix = ""
        # If field references type, pull in copy of type id and link values
        type_ref = self._field_desc['field_ref_type']
        if type_ref:
            restrict_values = self._field_desc['field_ref_restriction']
            entity_finder = EntityFinder(collection, selector=restrict_values)
            entities = entity_finder.get_entities_sorted(type_id=type_ref,
                                                         context=view_context,
                                                         altscope="select")
            # Note: the options list may be used more than once, so the id generator
            # returned must be materialized as a list
            # Uses collections.OrderedfDict to preserve entity ordering
            self._field_desc['field_choices'] = collections.OrderedDict()
            if field_render_type in ["Enum_optional", "Enum_choice_opt"]:
                # Add blank choice for optional selections
                self._field_desc['field_choices'][''] = FieldChoice(
                    '', label=field_placeholder)
            for e in entities:
                eid = e.get_id()
                val = e.get_type_entity_id()
                if eid != layout.INITIAL_VALUES_ID:
                    self._field_desc['field_choices'][val] = FieldChoice(
                        val, label=e.get_label(), link=e.get_view_url_path())
        # If field references or contains field list, pull in field details
        if field_list:
            if field_id in field_ids_seen:
                raise Annalist_Error(
                    field_id, "Recursive field reference in field group")
            field_ids_seen = field_ids_seen + [field_id]
            group_label = field_label
            add_label = recordfield.get(ANNAL.CURIE.repeat_label_add,
                                        None) or "Add " + field_id
            remove_label = recordfield.get(ANNAL.CURIE.repeat_label_delete,
                                           None) or "Remove " + field_id
            group_field_descs = []
            for subfield in field_list:
                f = field_description_from_view_field(collection, subfield,
                                                      view_context,
                                                      field_ids_seen)
                group_field_descs.append(f)
            self._field_desc.update({
                'group_id': field_id,
                'group_label': group_label,
                'group_add_label': add_label,
                'group_delete_label': remove_label,
                'group_field_list': field_list  # Description from field/group
                ,
                'group_field_descs':
                group_field_descs  # Resulting field description list
            })
        # log.debug("FieldDescription: %s"%field_id)
        # log.info("FieldDescription._field_desc %r"%(self._field_desc,))
        # log.info("FieldDescription.field_placement %r"%(self._field_desc['field_placement'],))
        return
Пример #33
0
def recordfield_entity_view_context_data(field_id=None,
                                         orig_id=None,
                                         type_ids=[],
                                         action=None,
                                         update="Field"):
    context_dict = ({
        'title':
        "Collection testcoll",
        'coll_id':
        'testcoll',
        'type_id':
        '_field',
        'orig_id':
        'orig_field_id',
        'fields': [
            {
                'field_label': 'Id',
                'field_id': 'Field_id',
                'field_name': 'entity_id',
                'field_render_type': 'EntityId',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_value_type': 'annal:Slug',
                'field_placeholder': '(field id)'
                # , 'field_value':      (Supplied separately)
                ,
                'options': []
            },
            {
                'field_label': 'Field value type',
                'field_id': 'Field_type',
                'field_name': 'Field_type',
                'field_render_type': 'Identifier',
                'field_placement':
                get_placement_classes('small:0,12;medium:6,6'),
                'field_value_type': 'annal:Identifier',
                'field_placeholder': '(field value type)',
                'field_value': 'annal:Text',
                'options': []
            },
            {
                'field_label': 'Field render type',
                'field_id': 'Field_render',
                'field_name': 'Field_render',
                'field_render_type': 'Enum_choice',
                'field_placement':
                get_placement_classes('small:0,12;medium:0,6'),
                'field_value_type': 'annal:Slug',
                'field_placeholder': '(field render type)',
                'field_value': 'Text',
                'options': []
            },
            {
                'field_label': 'Position/size',
                'field_id': 'Field_placement',
                'field_name': 'Field_placement',
                'field_render_type': 'Placement',
                'field_placement':
                get_placement_classes('small:0,12;medium:6,6'),
                'field_value_type': 'annal:Placement',
                'field_placeholder': '(field position and size)',
                'field_value': '',
                'options': []
            },
            {
                'field_label': 'Label',
                'field_id': 'Field_label',
                'field_name': 'Field_label',
                'field_render_type': 'Text',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Text',
                'field_placeholder': '(field label)',
                'field_value': '%s data ... (testcoll/_field)' % (update),
                'options': []
            },
            {
                'field_label': 'Help',
                'field_id': 'Field_comment',
                'field_name': 'Field_comment',
                'field_render_type': 'Textarea',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Longtext',
                'field_placeholder': '(field usage commentary or help text)',
                'field_value':
                '%s description ... (testcoll/_field)' % (update),
                'options': []
            },
            {
                'field_label': 'Placeholder',
                'field_id': 'Field_placeholder',
                'field_name': 'Field_placeholder',
                'field_render_type': 'Text',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Text',
                'field_placeholder': '(placeholder text)',
                'field_value': '',
                'options': []
            },
            {
                'field_label': 'Property',
                'field_id': 'Field_property',
                'field_name': 'Field_property',
                'field_render_type': 'Identifier',
                'field_placement': get_placement_classes('small:0,12'),
                'field_value_type': 'annal:Identifier',
                'field_placeholder': "(field URI or CURIE)",
                'field_value': '',
                'options': []
            }
        ],
        'continuation_url':
        entitydata_list_type_url("testcoll", "_field")
    })
    if field_id:
        context_dict['fields'][0]['field_value'] = field_id
        context_dict['fields'][4]['field_value'] = '%s testcoll/_field/%s' % (
            update, field_id)
        context_dict['fields'][5][
            'field_value'] = '%s help for %s in collection testcoll' % (
                update, field_id)
        context_dict['orig_id'] = field_id
    if orig_id:
        context_dict['orig_id'] = orig_id
    if action:
        context_dict['action'] = action
    return context_dict