Beispiel #1
0
        def breadcrumbs(request, context={}, resolver_match=None, path=None):
            if path.endswith('/'):
                path = path[:-1]

            if path != request.path:
                return

            obj = context['object']
            breadcrumb_list = []
            while isinstance(obj, IndexableFedoraObject):
                object_id = id_from_path(obj.pk, initkwargs.get('fedora_prefix', None))
                if object_id:
                    breadcrumb_list.insert(0, (
                        reverse('%s:%s' % (resolver_match.app_name, resolver_match.url_name),
                                kwargs={'id': object_id}),
                        str(rdf2lang(obj.title))
                    ))
                else:
                    # reached root of the portion of repository given by fedora_prefix
                    break

                parent_id = obj.fedora_parent_uri
                if parent_id:
                    obj = FedoraObject.objects.get(pk=parent_id)
                else:
                    # reached root of the repository
                    break

            return breadcrumb_list
Beispiel #2
0
 def _get_title():
     try:
         idd = id
         if fedora_prefix:
             idd = fedora_prefix + '/' + idd
         return rdf2lang(FedoraObject.objects.get(pk=idd).title,
                         lang=lang)
     except:
         import traceback
         traceback.print_exc()
         return None
Beispiel #3
0
    def _format_value(self, value):
        from fedoralink_ui.templatetags.fedoralink_tags import rdf2lang

        if isinstance(value, StringLikeList):
            # TODO: implement correctly multi-valued fields !!!
            print("Bad implementation - implement correctly multi-valued fields!")
            if len(value)>0:
                value = value[0]
            else:
                value = None

        if isinstance(value, FedoraObject):
            if DC.title in value.metadata:
                value = (rdf2lang(value.metadata[DC.title]), str(value.id))
            else:
                value = (str(value.id), str(value.id))

        return value
Beispiel #4
0
    def _format_value(self, value):
        from fedoralink_ui.templatetags.fedoralink_tags import rdf2lang

        if isinstance(value, StringLikeList):
            # TODO: implement correctly multi-valued fields !!!
            print("Bad implementation - implement correctly multi-valued fields!")
            if len(value)>0:
                value = value[0]
            else:
                value = None

        if isinstance(value, FedoraObject):
            if DC.title in value.metadata:
                value = (rdf2lang(value.metadata[DC.title]), str(value.id))
            else:
                value = (str(value.id), str(value.id))

        return value
Beispiel #5
0
def cache_breadcrumbs(obj):
    if getattr(settings, 'USE_BREADCRUMBS'):
        from django.core.cache import cache
        from fedoralink_ui.templatetags.fedoralink_tags import rdf2lang
        import django.utils.translation

        lang = django.utils.translation.get_language()

        if cache.get('title__%s/__%s' % (obj.local_id, lang)):
            return

        local_id = obj.local_id
        prefix = obj.id[:-len(local_id)]
        ids = local_id.split('/')
        ids = [prefix + '/'.join(ids[:k]) for k in range(1, len(ids) + 1)]
        for found_obj in DCObject.objects.filter(pk__in=ids):
            cache.set('title__%s__%s' % (found_obj.local_id, lang),
                      rdf2lang(found_obj.title, lang=lang), 3600)