Ejemplo n.º 1
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
Ejemplo n.º 2
0
 def test_Field_InitialValues(self):
     fd = field_description_from_view_field(
         self.testcoll, 
         { ANNAL.CURIE.field_id: "_initial_values" }, 
         {}
         )
     expect_placement = Placement(
         width   = make_field_width(sw=12, mw=12, lw=12),
         offset  = make_field_offset(so=0, mo=0, lo=0),
         display = make_field_display(sd=True, md=True, ld=True),
         field   = 'small-12 columns', 
         label   = 'small-12 medium-2 columns', 
         value   = 'small-12 medium-10 columns'
         )
     expect_field_desc = (
         { 'field_id':                   '_initial_values'
         , 'field_name':                 '_initial_values'
         , 'field_value_type':          ANNAL.CURIE.Text
         , 'field_label':                ''
         , 'field_help':                 '(tooltip text here)'
         , 'field_render_type':          'Text'
         , 'field_value_mode':           'Value_direct'
         , 'field_property_uri':         ''
         , 'field_placeholder':          ''
         , 'field_default_value':        None
         , 'field_placement':            expect_placement
         , 'field_ref_type':             None
         , 'field_choices':              None
         , 'field_ref_restriction':      'ALL'
         , 'field_group_ref':            None
         })
     # print repr(fd)
     self.assertDictionaryMatch(fd, expect_field_desc)
     return
Ejemplo n.º 3
0
 def test_Field_id(self):
     fd = field_description_from_view_field(
         self.testcoll, 
         { ANNAL.CURIE.field_id: "Field_id" }, 
         {}
         )
     expect_placement = Placement(
         width   = make_field_width(sw=12, mw=6, lw=6),
         offset  = make_field_offset(so=0, mo=0, lo=0),
         display = make_field_display(sd=True, md=True, ld=True),
         field = 'small-12 medium-6 columns', 
         label = 'small-12 medium-4 columns', 
         value = 'small-12 medium-8 columns'
         )
     expect_field_desc = (
         { 'field_id':                   'Field_id'
         , 'field_name':                 'entity_id'
         , 'field_value_type':          ANNAL.CURIE.Slug
         , 'field_label':                'Field Id'
         , 'field_render_type':          'EntityId'
         , 'field_value_mode':           'Value_direct'
         , 'field_property_uri':         ANNAL.CURIE.id
         , 'field_placeholder':          '(field id)'
         , 'field_default_value':        None
         , 'field_placement':            expect_placement
         , 'field_ref_type':             None
         , 'field_choices':              None
         , 'field_ref_restriction':      'ALL'
         , 'field_group_ref':            None
         })
     # print repr(fd)
     self.assertDictionaryMatch(fd, expect_field_desc)
     return
Ejemplo n.º 4
0
 def test_Field_InitialValues(self):
     fd = field_description_from_view_field(
         self.testcoll, {ANNAL.CURIE.field_id: "_initial_values"}, {})
     expect_placement = Placement(field='small-12 columns',
                                  label='small-12 medium-2 columns',
                                  value='small-12 medium-10 columns')
     expect_field_desc = ({
         'field_id': '_initial_values',
         'field_name': '_initial_values',
         'field_value_type': ANNAL.CURIE.Text,
         'field_label': '',
         'field_help': '',
         'field_property_uri': '',
         'field_placeholder': '',
         'field_default_value': None,
         'field_placement': expect_placement,
         'field_options_typeref': None,
         'field_choice_links': None,
         'field_restrict_values': 'ALL',
         'field_group_ref': None,
         'field_render_type': 'Text'
     })
     # print repr(fd)
     self.assertDictionaryMatch(fd, expect_field_desc)
     return
Ejemplo n.º 5
0
 def test_Group_field_sel(self):
     fd = field_description_from_view_field(
         self.testcoll, {ANNAL.CURIE.field_id: "Group_field_sel"}, {})
     expect_placement = Placement(field='small-6 columns',
                                  label='small-12 medium-4 columns',
                                  value='small-12 medium-8 columns')
     expect_choice_ids = ([
         'Entity_comment', 'Entity_id', 'Entity_label', 'Entity_type'
     ])
     expect_choice_labels = OrderedDict([(id, id)
                                         for id in expect_choice_ids])
     expect_choice_links = OrderedDict([(id,
                                         entity_url("testcoll", "_field",
                                                    id))
                                        for id in expect_choice_ids])
     expect_field_desc = ({
         'field_id': 'Group_field_sel',
         'field_name': 'Field_id',
         'field_value_type': ANNAL.CURIE.Slug,
         'field_label': 'Field id',
         'field_property_uri': ANNAL.CURIE.field_id,
         'field_placeholder': '(field sel)',
         'field_default_value': '',
         'field_placement': expect_placement,
         'field_options_typeref': '_field',
         'field_choice_labels': expect_choice_labels,
         'field_choice_links': expect_choice_links,
         'field_restrict_values':
         '[annal:field_entity_type] in entity[annal:record_type]',
         'field_group_ref': None,
         'field_render_type': 'Field'
     })
     # print repr(fd)
     self.assertDictionaryMatch(fd, expect_field_desc)
     return
Ejemplo n.º 6
0
 def get_view_choices_field(self, viewinfo):
     """
     Returns a bound_field object that displays as a view-choice selection drop-down.
     """
     # @@TODO: Possibly create FieldValueMap and return map_entity_to_context value?
     #         or extract this logic and share?
     field_description = field_description_from_view_field(
         viewinfo.collection, {ANNAL.CURIE.field_id: "View_choice"}, None)
     entityvals = {
         field_description.get_field_property_uri(): viewinfo.view_id
     }
     return bound_field(field_description, entityvals)
Ejemplo n.º 7
0
 def get_list_choices_field(self, listinfo):
     """
     Returns a bound_field object that displays as a list-choice selection drop-down.
     """
     # @@TODO: Possibly create FieldValueMap and return map_entity_to_context value? 
     #         or extract this logic and share?  See also entityedit view choices
     field_description = field_description_from_view_field(
         listinfo.collection, 
         { ANNAL.CURIE.field_id: "List_choice"
         , ANNAL.CURIE.field_placement: "small:0,12;medium:0,9" },
         {}
         )
     entityvals = { field_description['field_property_uri']: listinfo.list_id }
     return bound_field(field_description, entityvals)
Ejemplo n.º 8
0
 def get_list_choices_field(self, listinfo):
     """
     Returns a bound_field object that displays as a list-choice selection drop-down.
     """
     # @@TODO: Possibly create FieldValueMap and return map_entity_to_context value?
     #         or extract this logic and share?  See also entityedit view choices
     field_description = field_description_from_view_field(
         listinfo.collection, {
             ANNAL.CURIE.field_id: "List_choice",
             ANNAL.CURIE.field_placement: "small:0,12;medium:5,5"
         }, {})
     entityvals = {
         field_description['field_property_uri']: listinfo.list_id
     }
     return bound_field(field_description, entityvals)
Ejemplo n.º 9
0
 def test_Group_field_sel(self):
     fd = field_description_from_view_field(
         self.testcoll, 
         { ANNAL.CURIE.field_id: "Group_field_sel" }, 
         {}
         )
     expect_placement = Placement(
         width   = make_field_width(sw=12, mw=6, lw=6),
         offset  = make_field_offset(so=0, mo=0, lo=0),
         display = make_field_display(sd=True, md=True, ld=True),
         field='small-12 medium-6 columns', 
         label='small-12 medium-4 columns', 
         value='small-12 medium-8 columns'
         )
     # expect_choice_id_labels = (
     #     [ ('Entity_comment',  "Comment")
     #     , ('Entity_id',       "Id"     )
     #     , ('Entity_label',    "Label"  )
     #     , ('Entity_type',     "Type"   )
     #     ])
     expect_choices = OrderedDict(
         [ (fc.id, fc) 
           for fc in no_selection("(field sel)") + 
                     get_site_default_entity_fields_linked("testcoll") 
         ])
     expect_field_desc = (
         { 'field_id':                   'Group_field_sel'
         , 'field_name':                 'Field_id'
         , 'field_value_type':           ANNAL.CURIE.Slug
         , 'field_label':                'Field id'
         , 'field_render_type':          'Enum_optional'
         , 'field_value_mode':           'Value_direct'
         , 'field_property_uri':         ANNAL.CURIE.field_id
         , 'field_placeholder':          '(field sel)'
         , 'field_default_value':        ''
         , 'field_placement':            expect_placement
         , 'field_ref_type':             '_field'
         , 'field_choices':              expect_choices
         , 'field_ref_restriction':      'entity[annal:record_type] subtype [annal:field_entity_type]'
         , 'field_group_ref':            None
         })
     # print repr(fd)
     self.assertDictionaryMatch(fd, expect_field_desc)
     return
Ejemplo n.º 10
0
 def test_Field_id(self):
     fd = field_description_from_view_field(
         self.testcoll, {ANNAL.CURIE.field_id: "Field_id"}, {})
     expect_placement = Placement(field='small-6 columns',
                                  label='small-12 medium-4 columns',
                                  value='small-12 medium-8 columns')
     expect_field_desc = ({
         'field_id': 'Field_id',
         'field_name': 'entity_id',
         'field_value_type': ANNAL.CURIE.Slug,
         'field_label': 'Id',
         'field_property_uri': ANNAL.CURIE.id,
         'field_placeholder': '(field id)',
         'field_default_value': None,
         'field_placement': expect_placement,
         'field_options_typeref': None,
         'field_choice_links': None,
         'field_restrict_values': 'ALL',
         'field_group_ref': None,
         'field_render_type': 'EntityId'
     })
     # print repr(fd)
     self.assertDictionaryMatch(fd, expect_field_desc)
     return
Ejemplo n.º 11
0
 def test_View_fields(self):
     fd = field_description_from_view_field(
         self.testcoll, 
         { ANNAL.CURIE.field_id: "View_fields" }, 
         {}
         )
     expect_placement = Placement(
         width   = make_field_width(sw=12, mw=12, lw=12),
         offset  = make_field_offset(so=0, mo=0, lo=0),
         display = make_field_display(sd=True, md=True, ld=True),
         field = 'small-12 columns', 
         label = 'small-12 medium-2 columns', 
         value = 'small-12 medium-10 columns'
         )
     expect_field_desc = (
         { 'field_id':               'View_fields'
         , 'field_name':             'View_fields'
         , 'field_value_type':       ANNAL.CURIE.View_field
         , 'field_label':            'Fields'
         , 'field_render_type':      'Group_Seq_Row'
         , 'field_value_mode':       'Value_direct'
         , 'field_property_uri':     ANNAL.CURIE.view_fields
         , 'field_placeholder':      '(repeat field description)'
         , 'field_default_value':    None
         , 'field_placement':        expect_placement
         , 'field_ref_type':         None
         , 'field_choices':          None
         , 'field_ref_restriction':  'ALL'
         , 'field_group_ref':        'View_field_group'
         })
     self.assertDictionaryMatch(fd, expect_field_desc)
     self.assertEqual(fd['field_render_type'], "Group_Seq_Row")
     # self.assertEqual(fd['field_render_colhead'], "field/annalist_head_any.html")
     # self.assertEqual(fd['field_render_colview'], "field/annalist_item_none.html")
     self.assertIsInstance(fd['field_render_colhead'], ModeWrapValueRenderer)
     self.assertIsInstance(fd['field_render_colview'], ModeWrapValueRenderer)
     self.assertIsInstance(fd['field_render_view'], ModeWrapValueRenderer)
     self.assertIsInstance(fd['field_render_edit'], ModeWrapValueRenderer)
     expect_group_details = (
         { 'group_id':           "View_fields"
         , 'group_label':        "Fields"
         , 'group_add_label':    "Add field"
         , 'group_delete_label': "Remove selected field(s)"
         })
     self.assertDictionaryMatch(fd, expect_group_details)
     self.assertEqual(len(fd['group_field_descs']), 3)
     # Field type selector
     expect_field0_placement = Placement(
         width   = make_field_width(sw=12, mw=4, lw=4),
         offset  = make_field_offset(so=0, mo=0, lo=0),
         display = make_field_display(sd=True, md=True, ld=True),
         field='small-12 medium-4 columns', 
         label='small-12 medium-6 columns', 
         value='small-12 medium-6 columns'
         )
     expect_field0_desc = (
         { 'field_id':                   'View_field_sel'
         , 'field_name':                 'Field_id'
         , 'field_value_type':           ANNAL.CURIE.Slug
         , 'field_label':                'Field id'
         , 'field_render_type':          'Enum_optional'
         , 'field_value_mode':           'Value_direct'
         , 'field_property_uri':         ANNAL.CURIE.field_id
         , 'field_placement':            expect_field0_placement
         })
     self.assertDictionaryMatch(fd['group_field_descs'][0], expect_field0_desc)
     # Field property URI
     expect_field1_placement = Placement(
         width   = make_field_width(sw=12, mw=4, lw=4),
         offset  = make_field_offset(so=0, mo=4, lo=4),
         display = make_field_display(sd=True, md=True, ld=True),
         field='small-12 medium-4 columns', 
         label='small-12 medium-6 columns', 
         value='small-12 medium-6 columns'
         )
     expect_field1_desc = (
         { 'field_id':                   'View_field_property'
         , 'field_name':                 'Field_property'
         , 'field_value_type':          ANNAL.CURIE.Identifier
         , 'field_label':                'Property URI'
         , 'field_render_type':          'Identifier'
         , 'field_value_mode':           'Value_direct'
         , 'field_property_uri':         ANNAL.CURIE.property_uri
         , 'field_placement':            expect_field1_placement
         })
     self.assertDictionaryMatch(fd['group_field_descs'][1], expect_field1_desc)
     # Field placement (within group)
     expect_field2_placement = Placement(
         width   = make_field_width(sw=12, mw=4, lw=4),
         offset  = make_field_offset(so=0, mo=8, lo=8),
         display = make_field_display(sd=True, md=True, ld=True),
         field='small-12 medium-4 columns', 
         label='small-12 medium-6 columns', 
         value='small-12 medium-6 columns'
         )
     expect_field2_desc = (
         { 'field_id':                   'View_field_placement'
         , 'field_name':                 'Field_placement'
         , 'field_value_type':          ANNAL.CURIE.Placement
         , 'field_label':                'Position/size'
         , 'field_render_type':          'Placement'
         , 'field_value_mode':           'Value_direct'
         , 'field_property_uri':         ANNAL.CURIE.field_placement
         , 'field_placement':            expect_field2_placement
         })
     self.assertDictionaryMatch(fd['group_field_descs'][2], expect_field2_desc)
     return
Ejemplo n.º 12
0
 def test_View_fields(self):
     fd = field_description_from_view_field(
         self.testcoll, {ANNAL.CURIE.field_id: "View_fields"}, {})
     expect_placement = Placement(field='small-12 columns',
                                  label='small-12 medium-2 columns',
                                  value='small-12 medium-10 columns')
     expect_field_desc = ({
         'field_id': 'View_fields',
         'field_name': 'View_fields',
         'field_value_type': ANNAL.CURIE.Field_group,
         'field_label': 'Fields',
         'field_property_uri': ANNAL.CURIE.view_fields,
         'field_placeholder': '(repeat field description)',
         'field_default_value': None,
         'field_placement': expect_placement,
         'field_options_typeref': None,
         'field_choice_labels': None,
         'field_choice_links': None,
         'field_restrict_values': 'ALL',
         'field_group_ref': 'View_field_group'
     })
     self.assertDictionaryMatch(fd, expect_field_desc)
     self.assertEqual(fd['field_render_type'], "RepeatGroupRow")
     self.assertEqual(fd['field_render_colhead'],
                      "field/annalist_head_any.html")
     self.assertEqual(fd['field_render_colview'],
                      "field/annalist_item_none.html")
     self.assertIsInstance(fd['field_render_view'], RenderRepeatGroup)
     self.assertIsInstance(fd['field_render_edit'], RenderRepeatGroup)
     expect_group_details = ({
         'group_id':
         "View_fields",
         'group_label':
         "Fields",
         'group_add_label':
         "Add field",
         'group_delete_label':
         "Remove selected field(s)"
     })
     self.assertDictionaryMatch(fd, expect_group_details)
     self.assertEqual(len(fd['group_field_descs']), 3)
     # Field type selector
     expect_field0_placement = Placement(field='small-12 medium-4 columns',
                                         label='small-12 medium-6 columns',
                                         value='small-12 medium-6 columns')
     expect_field0_desc = ({
         'field_id': 'Group_field_sel',
         'field_name': 'Field_id',
         'field_value_type': ANNAL.CURIE.Slug,
         'field_label': 'Field id',
         'field_render_type': 'Field',
         'field_property_uri': ANNAL.CURIE.field_id,
         'field_placement': expect_field0_placement
     })
     self.assertDictionaryMatch(fd['group_field_descs'][0],
                                expect_field0_desc)
     # Field property URI
     expect_field1_placement = Placement(field='small-12 medium-4 columns',
                                         label='small-12 medium-6 columns',
                                         value='small-12 medium-6 columns')
     expect_field1_desc = ({
         'field_id': 'Group_field_property',
         'field_name': 'Field_property',
         'field_value_type': ANNAL.CURIE.Identifier,
         'field_label': 'Property',
         'field_render_type': 'Identifier',
         'field_property_uri': ANNAL.CURIE.property_uri,
         'field_placement': expect_field1_placement
     })
     self.assertDictionaryMatch(fd['group_field_descs'][1],
                                expect_field1_desc)
     # Field placement (within group)
     expect_field2_placement = Placement(field='small-12 medium-4 columns',
                                         label='small-12 medium-6 columns',
                                         value='small-12 medium-6 columns')
     expect_field2_desc = ({
         'field_id': 'Group_field_placement',
         'field_name': 'Field_placement',
         'field_value_type': ANNAL.CURIE.Placement,
         'field_label': 'Position/size',
         'field_render_type': 'Placement',
         'field_property_uri': ANNAL.CURIE.field_placement,
         'field_placement': expect_field2_placement
     })
     self.assertDictionaryMatch(fd['group_field_descs'][2],
                                expect_field2_desc)
     return