コード例 #1
0
ファイル: actordoc.py プロジェクト: DarioGT/lino
    def get_rst(self):
        #~ from actordoc import get_actor_description
        #~ from django.conf import settings
        #~ from djangosite.dbutils import set_language
        with translation.override(self.language):
            level, cls = resolve_name(self.content[0])
            if isinstance(cls, models.Field):
                fld = cls
                s = ''
                name = str(fld.model) + '.' + fld.name
                title = force_unicode(fld.verbose_name).strip()

                s += "\n.. index::\n   single: "
                s += unicode(
                    _('%(field)s (field in %(model)s)') %
                    dict(field=title, model=model_ref(fld.model)))
                s += '\n\n'
                s += rstgen.header(level, _("%s (field)") % title)
                if len(self.content) > 1:
                    s += '\n'.join(self.content[1:])
                    s += '\n\n'
                return s

            if isinstance(cls, Plugin):
                s = ''
                title = unicode(cls.verbose_name)
                s += "\n.. index::\n   single: "
                s += unicode(_('%s (app)') % title)
                s += '\n\n.. _' + name + ':\n'
                s += '\n'
                s += rstgen.header(level, _("%s (app)") % title)
                return s

            if not isinstance(cls, type):
                raise Exception("%s is not an actor." % self.content[0])

            if issubclass(cls, models.Model):
                model = cls

                s = ''
                name = model_name(model).lower()
                title = force_unicode(model._meta.verbose_name)
                s += "\n.. index::\n   single: "
                s += unicode(
                    _('%(model)s (model in %(app)s)') %
                    dict(model=title, app=model._meta.app_label))

                s += '\n\n'

                s += '\n\n.. _' + name + ':\n'

                s += '\n'
                s += rstgen.header(level, _("%s (model)") % title)

                s += '\n'
                s += '\n:Internal name: ``%s``\n' % full_model_name(cls)
                s += '\n:Implemented by: %s\n' % typeref(cls)
                s += '\n'

                if len(self.content) > 1:
                    s += '\n'.join(self.content[1:])
                    s += '\n\n'

                model_reports = [
                    r for r in dbtables.master_reports if r.model is cls
                ]
                model_reports += [
                    r for r in dbtables.slave_reports if r.model is cls
                ]
                s += rstgen.boldheader(
                    _("Views on %s") % cls._meta.verbose_name)
                s += actors_overview_ul(model_reports)

                s += rstgen.boldheader(
                    _("Fields in %s") % cls._meta.verbose_name)
                s += fields_ul(cls._meta.fields)

                action_list = cls.get_default_table().get_actions()
                action_list = [
                    ba for ba in action_list
                    if not isinstance(ba.action, IGNORED_ACTIONS)
                ]
                if action_list:
                    s += '\n'
                    s += rstgen.boldheader(
                        _("Actions on %s") % cls._meta.verbose_name)
                    s += actions_ul(action_list)

                slave_tables = getattr(cls, '_lino_slaves', {}).values()
                if slave_tables:
                    s += rstgen.boldheader(
                        _("Tables referring to %s") % cls._meta.verbose_name)
                    s += actors_overview_ul(slave_tables)

                return s

            if issubclass(cls, actors.Actor):

                title = force_unicode(cls.label or cls.title)
                indextext = _('%(actor)s (view in %(app)s)') % dict(
                    actor=title, app=cls.app_label)
                name = actor_name(cls)
                #~ if name == 'welfare.reception.waitingvisitors':
                #~ self.debug = True
                #~ print(20130907, name)
                self.index_entries.append(('single', indextext, name, ''))
                #~ self.add_ref_target(name,name)

                s = ''
                s += '\n\n.. _%s:\n\n' % name
                s += rstgen.header(level, _("%s (view)") % title)
                s += '\n:Internal name: ``%s`` (%s)\n' % (cls, typeref(cls))

                if len(self.content) > 1:
                    s += '\n'.join(self.content[1:])
                    s += '\n\n'

                s += '\n\n'
                s += get_actor_description(cls)
                s += '\n\n'
                return s
            raise Exception("Cannot handle actor %r." % cls)
コード例 #2
0
ファイル: actordoc.py プロジェクト: lino-framework/lino
    def get_rst(self):
        #~ from actordoc import get_actor_description
        #~ from django.conf import settings
        #~ from djangosite.dbutils import set_language
        with translation.override(self.language):
            level, cls = resolve_name(self.content[0])
            if isinstance(cls, models.Field):
                fld = cls
                s = ''
                name = str(fld.model) + '.' + fld.name
                title = force_text(fld.verbose_name).strip()
                
                s += "\n.. index::\n   single: "
                s += str(_('%(field)s (field in %(model)s)') % dict(
                    field=title, model=model_ref(fld.model)))
                s += '\n\n'
                s += rstgen.header(level, _("%s (field)") % title)
                if len(self.content) > 1:
                    s += '\n'.join(self.content[1:])
                    s += '\n\n'
                return s

            if isinstance(cls, Plugin):
                s = ''
                title = str(cls.verbose_name)
                s += "\n.. index::\n   single: "
                s += str(_('%s (app)') % title)
                s += '\n\n.. _' + name + ':\n'
                s += '\n'
                s += rstgen.header(level, _("%s (app)") % title)
                return s

            if not isinstance(cls, type):
                raise Exception("%s is not an actor." % self.content[0])

            if issubclass(cls, models.Model):
                model = cls

                s = ''
                name = model_name(model).lower()
                title = force_text(model._meta.verbose_name)
                s += "\n.. index::\n   single: "
                s += str(_('%(model)s (model in %(app)s)') % dict(
                    model=title, app=model._meta.app_label))

                s += '\n\n'

                s += '\n\n.. _' + name + ':\n'

                s += '\n'
                s += rstgen.header(level, _("%s (model)") % title)

                s += '\n'
                s += '\n:Internal name: ``%s``\n' % full_model_name(cls)
                s += '\n:Implemented by: %s\n' % typeref(cls)
                s += '\n'

                if len(self.content) > 1:
                    s += '\n'.join(self.content[1:])
                    s += '\n\n'

                model_reports = [
                    r for r in kernel.master_tables if r.model is cls]
                model_reports += [r for r in kernel.slave_tables
                                  if r.model is cls]
                s += rstgen.boldheader(_("Views on %s") %
                                       cls._meta.verbose_name)
                s += actors_overview_ul(model_reports)

                s += rstgen.boldheader(_("Fields in %s") %
                                       cls._meta.verbose_name)
                s += fields_ul(cls._meta.fields)

                action_list = cls.get_default_table().get_actions()
                action_list = [
                    ba for ba in action_list
                    if not isinstance(ba.action, IGNORED_ACTIONS)]
                if action_list:
                    s += '\n'
                    s += rstgen.boldheader(_("Actions on %s") %
                                           cls._meta.verbose_name)
                    s += actions_ul(action_list)

                slave_tables = getattr(cls, '_lino_slaves', {}).values()
                if slave_tables:
                    s += rstgen.boldheader(_("Tables referring to %s") %
                                           cls._meta.verbose_name)
                    s += actors_overview_ul(slave_tables)

                return s

            if issubclass(cls, actors.Actor):

                title = force_text(cls.label or cls.title)
                indextext = _('%(actor)s (view in %(app)s)') % dict(
                    actor=title, app=cls.app_label)
                name = actor_name(cls)
                #~ if name == 'welfare.reception.waitingvisitors':
                    #~ self.debug = True
                #~ print(20130907, name)
                self.index_entries.append(('single', indextext, name, ''))
                #~ self.add_ref_target(name,name)

                s = ''
                s += '\n\n.. _%s:\n\n' % name
                s += rstgen.header(level, _("%s (view)") % title)
                s += '\n:Internal name: ``%s`` (%s)\n' % (cls, typeref(cls))

                if len(self.content) > 1:
                    s += '\n'.join(self.content[1:])
                    s += '\n\n'

                s += '\n\n'
                s += get_actor_description(cls)
                s += '\n\n'
                return s
            raise Exception("Cannot handle actor %r." % cls)
コード例 #3
0
ファイル: actordoc.py プロジェクト: MaxTyutyunnikov/lino
 def get_rst(self):
     #~ from actordoc import get_actor_description
     #~ from django.conf import settings
     #~ from djangosite.dbutils import set_language
     with translation.override(self.state.document.settings.env.config.language):
     #~ lng = self.state.document.settings.env.config.language
     #~ set_language(lng)
         level, cls = resolve_name(self.content[0])
         if isinstance(cls,models.Field):
             fld = cls
             s = ''
             name = str(fld.model)+'.'+fld.name
             title = force_unicode(fld.verbose_name).strip()
             s += "\n.. index::\n   single: " 
             s += unicode(_('%s (field in "%s")') % (title,fld.model))
             s += '\n\n'
             s += rstgen.header(level,_("The **%s** field") % title)
             if len(self.content) > 1:
                 s += '\n'.join(self.content[1:])
                 s += '\n\n'
             return s
             
         if isinstance(cls,dd.__class__): # it's a module (an app)
             s = ''
             name = app_name(cls)
             app = getattr(cls,'App',None)
             if app is None:
                 title = name
             else:
                 title = unicode(app.verbose_name)
             
             s += "\n.. index::\n   single: " 
             s += unicode(_('%s (app)') % title)
             s += '\n\n.. _'+ name + ':\n'
             s += '\n'
             s += rstgen.header(level,_("The %s app") % title)
             return s
             
         if not isinstance(cls,type):
             raise Exception("%s is not an actor." % self.content[0])
             
         if issubclass(cls,models.Model):
             model = cls
             #~ if full_model_name(cls) == 'newcomers.Broker':
                 #~ self.debug = True
             #~ self.add_model_index_entry(cls)
             
             s = ''
             name = model_name(model).lower()
             title = force_unicode(model._meta.verbose_name)
             s += "\n.. index::\n   single: " 
             s += unicode(_('%s (model in app "%s")') % (title,model._meta.app_label))
             s += '\n\n'
             
             #~ title = unicode(cls._meta.verbose_name)
             #~ indextext = _('%s (%s)') % (full_model_name(cls),title)
             #~ name = model_name(cls)
             #~ self.index_entries.append(('single', indextext, name, ''))
             #~ self.add_ref_target(name,name)
             s += '\n\n.. _'+ name + ':\n'
             
             s += '\n'
             s += rstgen.header(level,_("The %s model") % title)
             #~ print(s)
             #~ s += rstgen.header(3,_('%s (%s)') % (title,full_model_name(cls)))
             s += '\n'
             s += '\n:Internal name: ``%s``\n' % full_model_name(cls)
             s += '\n:Implemented by: %s\n' % typeref(cls)
             s += '\n'
             
             if len(self.content) > 1:
                 s += '\n'.join(self.content[1:])
                 s += '\n\n'
                 
             model_reports = [r for r in dbtables.master_reports if r.model is cls]
             model_reports += [r for r in dbtables.slave_reports if r.model is cls]
             #~ s += rstgen.boldheader(_("Tables on a %s") % cls._meta.verbose_name)
             s += rstgen.boldheader(_("Views on %s") % cls._meta.verbose_name)
             s += actors_overview_ul(model_reports)
                 
             s += rstgen.boldheader(_("Fields in %s") % cls._meta.verbose_name)
             s += fields_ul(cls._meta.fields)
             
             action_list = cls._lino_default_table.get_actions()
             #~ action_list = [ba for ba in action_list if ba.action.sort_index >= 30]
             action_list = [ba for ba in action_list if not isinstance(ba.action,IGNORED_ACTIONS)]
             if action_list:
                 s += '\n'
                 s += rstgen.boldheader(_("Actions on %s") % cls._meta.verbose_name)
                 s += actions_ul(action_list)
                 
             slave_tables = getattr(cls,'_lino_slaves',{}).values()
             if slave_tables:
                 s += rstgen.boldheader(_("Tables referring to %s") % cls._meta.verbose_name)
                 #~ for tb in slave_tables:
                     #~ s += '\n.. _'+ settings.SITE.userdocs_prefix + str(tb) + ':\n'
                 #~ s += '\n'
                 #~ s += rstgen.header(4,_("Slave tables of %s") % cls._meta.verbose_name)
                 
                 #~ s += "\n\n**%s**\n\n" % _("Tables referring to %s") % cls._meta.verbose_name
                 s += actors_overview_ul(slave_tables)
                 
             
             #~ if model_reports:
                 #~ s += '\nMaster tables: %s\n' % rptlist(model_reports)
             #~ if slave_tables:
                 #~ s += '\nSlave tables: %s\n' % rptlist(slave_tables)
 
             return s
             
         if issubclass(cls,actors.Actor):
           
             title = force_unicode(cls.label or cls.title)
             indextext = _('%s (table in module %s)') % (title,cls.app_label)
             name = actor_name(cls)
             #~ if name == 'welfare.reception.waitingvisitors':
                 #~ self.debug = True
             #~ print(20130907, name)
             self.index_entries.append(('single', indextext, name, ''))
             #~ self.add_ref_target(name,name)
             
             s = ''
             s += '\n\n.. _%s:\n\n' % name
             s += rstgen.header(level,_("The %s view") % title)
             s += '\n:Internal name: ``%s`` (%s)\n' % (cls,typeref(cls))
             
             if len(self.content) > 1:
                 s += '\n'.join(self.content[1:])
                 s += '\n\n'
             
             s += '\n\n'
             s += get_actor_description(cls)
             s += '\n\n'
             return s
         raise Exception("Cannot handle actor %r." % cls)