OSDN Git Service

add lg_id in resource picture
[pettanr/pettanr.git] / app / assets / javascripts / manifest / work / models.js.coffee.erb
index 2cc7fe4..58a9cb4 100644 (file)
 #マニフェスト\r
 @models = {\r
-  scroll: {\r
-    class_name: 'Scroll',\r
-    table_name: 'scrolls',\r
+  folder: {\r
     associations: {\r
       belongs_to: {\r
-        author: {\r
-          id_column: 'author_id'\r
-        }, \r
       },\r
       has_many: {\r
-        scroll_panels: {\r
-          foreign_key: 'scroll_id',\r
-          model: 'scroll_panel',\r
-        }, \r
-        panels: {\r
-          through: 'scroll_panel',\r
-          foreign_key: 'scroll_id',\r
-          model: 'panel',\r
-        }, \r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
+      name: {\r
+        type: 'text',\r
         rules : {\r
-          number: true,\r
+          required: true,\r
         }\r
       },\r
-      title: {\r
+      controller_name: {\r
         type: 'text',\r
         rules : {\r
-          required: true,\r
         }\r
       },\r
-      description: {\r
+      action_name: {\r
         type: 'text',\r
         rules : {\r
         }\r
       },\r
-      visible: {\r
+      category_id: {\r
+        type: 'number',\r
+      },\r
+      t: {\r
         type: 'number',\r
         rules : {\r
           required: true,\r
           number: true,\r
         },\r
-        source: {\r
-          type: 'magic_number',\r
-          key: 'scroll_visible_items',\r
+      },\r
+      parent_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
         },\r
       },\r
-      author_id: {\r
+      lft: {\r
         type: 'number',\r
         rules : {\r
           required: true,\r
           number: true,\r
         },\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
+      rgt: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        },\r
+      },\r
+      depth: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        },\r
       },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
     },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
+  },\r
+  scroll: {\r
+    associations: {\r
+      belongs_to: {\r
+        author: {\r
+        }, \r
       },\r
-      private_list: {\r
-        type: 'private',\r
+      has_many: {\r
+        scroll_panels: {\r
+        }, \r
+        panels: {\r
+          through: 'scroll_panels',\r
+        }, \r
       },\r
-      scroll_panels: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'scroll_panels',\r
-        },\r
+    },\r
+    attributes: {\r
+      title: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
       },\r
-      panels: {\r
-        type: 'has_many_through',\r
-        args: {\r
-          association_name: 'panels',\r
-        },\r
+      description: {\r
+        type: 'text',\r
+        rules : {\r
+        }\r
       },\r
-      by_author: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
+      visible: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
         },\r
-      },\r
-      by_panel: {\r
-        type: 'through_filter',\r
-        args: {\r
-          from: 'panel',\r
-          through: 'scroll_panels',\r
-          filter_key: 'panel_id',\r
+        source: {\r
+          type: 'magic_number',\r
+          args: {\r
+            select_item_name: 'scroll_visible_items',\r
+          },\r
         },\r
       },\r
-      play: {\r
-        type: 'play',\r
-        args: {\r
-          model: 'scroll_panel',\r
-          filter_key: 'scroll_id',\r
+      author_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
         },\r
       },\r
     },\r
   },\r
   scroll_panel: {\r
-    class_name: 'ScrollPanel',\r
-    table_name: 'scroll_panels',\r
     associations: {\r
       belongs_to: {\r
         panel: {\r
-          id_column: 'panel_id'\r
         }, \r
         scroll: {\r
-          id_column: 'scroll_id'\r
         }, \r
       },\r
       has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       scroll_id: {\r
         type: 'number',\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      by_scroll: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'scroll',\r
-          filter_key: 'scroll_id',\r
-        },\r
-      },\r
-      by_panel: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'panel',\r
-          filter_key: 'panel_id',\r
-        },\r
-      },\r
     },\r
   },\r
   comic: {\r
-    class_name: 'Comic',\r
-    table_name: 'comics',\r
     associations: {\r
       belongs_to: {\r
         author: {\r
-          id_column: 'author_id'\r
         }, \r
       },\r
       has_many: {\r
+        comic_stories: {\r
+        }, \r
         stories: {\r
-          foreign_key: 'comic_id',\r
-          model: 'story',\r
+          through: 'comic_stories',\r
         }, \r
       },\r
-      has_many_through: {\r
-      },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       title: {\r
         type: 'text',\r
         rules : {\r
         },\r
         source: {\r
           type: 'magic_number',\r
-          key: 'comic_visible_items',\r
+          args: {\r
+            select_item_name: 'comic_visible_items',\r
+          },\r
         },\r
       },\r
       author_id: {\r
           number: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      stories: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'stories',\r
-        },\r
-      },\r
-      by_author: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
-        },\r
-      },\r
     },\r
   },\r
-  story: {\r
-    class_name: 'Story',\r
-    table_name: 'stories',\r
+  comic_story: {\r
     associations: {\r
       belongs_to: {\r
         comic: {\r
-          id_column: 'comic_id'\r
+        }, \r
+        story: {\r
         }, \r
       },\r
       has_many: {\r
-        story_sheets: {\r
-          foreign_key: 'story_id',\r
-          model: 'story_sheet',\r
-        }, \r
-        sheets: {\r
-          through: 'story_sheets',\r
-          foreign_key: 'story_id',\r
-          model: 'sheet',\r
-        }, \r
       },\r
     },\r
     attributes: {\r
-      id: {\r
+      comic_id: {\r
         type: 'number',\r
-        primary_key: 1,\r
         rules : {\r
+          required: true,\r
           number: true,\r
         }\r
       },\r
-      comic_id: {\r
+      story_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      t: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+          min: 0,\r
+        }\r
+      },\r
+      author_id: {\r
         type: 'number',\r
         rules : {\r
+          required: true,\r
           number: true,\r
         }\r
       },\r
+    },\r
+  },\r
+  story: {\r
+    associations: {\r
+      belongs_to: {\r
+      },\r
+      has_many: {\r
+        comic_stories: {\r
+        }, \r
+        comics: {\r
+          through: 'comic_stories',\r
+        }, \r
+        story_sheets: {\r
+        }, \r
+        sheets: {\r
+          through: 'story_sheets',\r
+        }, \r
+      },\r
+    },\r
+    attributes: {\r
       title: {\r
         type: 'text',\r
         rules : {\r
         },\r
         source: {\r
           type: 'magic_number',\r
-          key: 'story_visible_items',\r
-        },\r
-      },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      story_sheets: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'story_sheets',\r
-        },\r
-      },\r
-      sheets: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'sheets',\r
-        },\r
-      },\r
-      by_comic: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'comic',\r
-          filter_key: 'comic_id',\r
-        },\r
-      },\r
-      by_sheet: {\r
-        type: 'through_filter',\r
-        args: {\r
-          from: 'sheet',\r
-          through: 'story_sheets',\r
-          filter_key: 'sheet_id',\r
+          args: {\r
+            select_item_name: 'story_visible_items',\r
+          },\r
         },\r
       },\r
-      by_author: {\r
-        type: 'element_filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
-        },\r
-      },\r
-      play: {\r
-        type: 'play',\r
-        args: {\r
-          model: 'story_sheet',\r
-          filter_key: 'story_id',\r
-        },\r
+      author_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
       },\r
     },\r
   },\r
   story_sheet: {\r
-    class_name: 'StorySheet',\r
-    table_name: 'story_sheets',\r
     associations: {\r
       belongs_to: {\r
         story: {\r
-          id_column: 'story_id'\r
         }, \r
         sheet: {\r
-          id_column: 'sheet_id'\r
         }, \r
       },\r
       has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       story_id: {\r
         type: 'number',\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      by_story: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'story',\r
-          filter_key: 'story_id',\r
-        },\r
-      },\r
-      by_sheet: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'sheet',\r
-          filter_key: 'sheet_id',\r
-        },\r
-      },\r
     },\r
   },\r
   sheet: {\r
-    class_name: 'Sheet',\r
-    table_name: 'sheets',\r
     associations: {\r
       belongs_to: {\r
         author: {\r
-          id_column: 'author_id'\r
         }, \r
       },\r
       has_many: {\r
         story_sheets: {\r
-          foreign_key: 'story_id',\r
-          model: 'story_sheet',\r
         }, \r
         stories: {\r
           through: 'story_sheets',\r
-          foreign_key: 'sheet_id',\r
-          model: 'story',\r
         }, \r
         sheet_panels: {\r
-          foreign_key: 'sheet_id',\r
-          model: 'sheet_panel',\r
         }, \r
         panels: {\r
           through: 'sheet_panels',\r
-          foreign_key: 'sheet_id',\r
-          model: 'panel',\r
         }, \r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       caption: {\r
         type: 'text',\r
         rules : {\r
         },\r
         source: {\r
           type: 'magic_number',\r
-          key: 'sheet_visible_items',\r
+          args: {\r
+            select_item_name: 'sheet_visible_items',\r
+          },\r
         },\r
       },\r
       author_id: {\r
           number: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      story_sheets: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'story_sheets',\r
-        },\r
-      },\r
-      stories: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'stories',\r
-        },\r
-      },\r
-      sheet_panels: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'sheet_panels',\r
-        },\r
-      },\r
-      panels: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'panels',\r
-        },\r
-      },\r
-      by_story: {\r
-        type: 'through_filter',\r
-        args: {\r
-          from: 'story',\r
-          through: 'story_sheets',\r
-          filter_key: 'story_id',\r
-        },\r
-      },\r
-      by_panel: {\r
-        type: 'through_filter',\r
-        args: {\r
-          from: 'panel',\r
-          through: 'sheet_panels',\r
-          filter_key: 'panel_id',\r
-        },\r
-      },\r
-      by_author: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
-        },\r
-      },\r
-      play: {\r
-        type: 'play',\r
-        args: {\r
-          model: 'sheet_panel',\r
-          filter_key: 'sheet_id',\r
-        },\r
-      },\r
     },\r
   },\r
   sheet_panel: {\r
-    class_name: 'SheetPanel',\r
-    table_name: 'sheet_panels',\r
     associations: {\r
       belongs_to: {\r
         sheet: {\r
-          id_column: 'sheet_id'\r
         }, \r
         panel: {\r
-          id_column: 'panel_id'\r
         }, \r
       },\r
       has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       sheet_id: {\r
         type: 'number',\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      by_sheet: {\r
-        type: 'filter',\r
-        args: {\r
-          association_name: 'sheet_panels',\r
-          from: 'sheet',\r
-          filter_key: 'sheet_id',\r
-        },\r
-      },\r
-      by_panel: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'panel',\r
-          filter_key: 'panel_id',\r
-        },\r
-      },\r
     },\r
   },\r
   panel: {\r
-    class_name: 'Panel',\r
-    table_name: 'panels',\r
     associations: {\r
       belongs_to: {\r
         author: {\r
-          id_column: 'author_id'\r
         }, \r
       },\r
       has_many: {\r
         scroll_panels: {\r
-          foreign_key: 'panel_id',\r
-          model: 'scroll_panel',\r
         }, \r
         scrolls: {\r
           through: 'scroll_panels',\r
-          foreign_key: 'panel_id',\r
-          model: 'scroll',\r
         }, \r
         sheet_panels: {\r
-          foreign_key: 'panel_id',\r
-          model: 'sheet_panel',\r
         }, \r
         sheets: {\r
           through: 'sheet_panels',\r
-          foreign_key: 'panel_id',\r
-          model: 'sheet',\r
         }, \r
         panel_pictures: {\r
-          foreign_key: 'panel_id',\r
-          model: 'panel_picture',\r
         }, \r
         speech_balloons: {\r
-          foreign_key: 'panel_id',\r
-          model: 'speech_balloon',\r
         }, \r
         ground_pictures: {\r
-          foreign_key: 'panel_id',\r
-          model: 'ground_picture',\r
         }, \r
         ground_colors: {\r
-          foreign_key: 'panel_id',\r
-          model: 'ground_color',\r
         }, \r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       width: {\r
         type: 'number',\r
         rules : {\r
         },\r
         source: {\r
           type: 'magic_number',\r
-          key: 'panel_visible_items',\r
+          args: {\r
+            select_item_name: 'panel_visible_items',\r
+          },\r
         },\r
       },\r
       author_id: {\r
           number: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
     },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
+  },\r
+  panel_picture: {\r
+    associations: {\r
+      belongs_to: {\r
+        panel: {\r
+        }, \r
       },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      scroll_panels: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'scroll_panels',\r
-        },\r
-      },\r
-      scrolls: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'scrolls',\r
-        },\r
-      },\r
-      sheet_panels: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'sheet_panels',\r
-        },\r
-      },\r
-      sheets: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'sheets',\r
-        },\r
-      },\r
-      panel_pictures: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'panel_pictures',\r
-        },\r
-      },\r
-      speech_balloons: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'speech_balloons',\r
-        },\r
-      },\r
-      ground_pictures: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'ground_pictures',\r
-        },\r
-      },\r
-      ground_colors: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'ground_colors',\r
-        },\r
-      },\r
-      by_scroll: {\r
-        type: 'through_filter',\r
-        args: {\r
-          from: 'scroll',\r
-          through: 'scroll_panels',\r
-          filter_key: 'scroll_id',\r
-        },\r
-      },\r
-      by_sheet: {\r
-        type: 'through_filter',\r
-        args: {\r
-          from: 'sheet',\r
-          through: 'sheet_panels',\r
-          filter_key: 'sheet_id',\r
-        },\r
-      },\r
-      by_author: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
-        },\r
-      },\r
-      by_speech_balloon_template: {\r
-        type: 'through_filter',\r
-        args: {\r
-          from: 'speech_balloon_template',\r
-          through: 'speech_balloons',\r
-          filter_key: 'speech_balloon_template_id',\r
-        },\r
-      },\r
-    },\r
-  },\r
-  panel_picture: {\r
-    class_name: 'PanelPicture',\r
-    table_name: 'panel_pictures',\r
-    associations: {\r
-      belongs_to: {\r
-        panel: {\r
-          id_column: 'panel_id'\r
-        }, \r
-      },\r
-      has_many: {\r
+      has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       panel_id: {\r
         type: 'number',\r
         rules : {\r
           min: 0,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      by_panel: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'panel',\r
-          filter_key: 'panel_id',\r
-        },\r
-      },\r
-      by_author: {\r
-        type: 'element_filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
-        },\r
-      },\r
     },\r
   },\r
   speech_balloon: {\r
-    class_name: 'SpeechBalloon',\r
-    table_name: 'speech_balloons',\r
-    extend: 'classname', \r
     associations: {\r
       belongs_to: {\r
         panel: {\r
-          id_column: 'panel_id'\r
+        }, \r
+        speech_balloon_template: {\r
         }, \r
       },\r
       has_many: {\r
       },\r
       has_one: {\r
         balloon: {\r
-          foreign_key: 'speech_balloon_id',\r
-          model: 'balloon',\r
         }, \r
         speech: {\r
-          foreign_key: 'speech_balloon_id',\r
-          model: 'speech',\r
         }, \r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       panel_id: {\r
         type: 'number',\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      classname: {\r
+      speech_balloon_template_module_name: {\r
         type: 'text',\r
         rules : {\r
           required: true,\r
           min: 0,\r
         }\r
       },\r
-      settings: {\r
+      speech_balloon_template_settings: {\r
         type: 'text',\r
         rules : {\r
         }\r
         rules : {\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      by_panel: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'panel',\r
-          filter_key: 'panel_id',\r
-        },\r
-      },\r
-      by_speech_balloon_template: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'speech_balloon_template',\r
-          filter_key: 'speech_balloon_template_id',\r
-        },\r
-      },\r
-      by_author: {\r
-        type: 'element_filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
-        },\r
-      },\r
     },\r
   }, \r
   balloon: {\r
-    class_name: 'Balloon',\r
-    table_name: 'balloons',\r
     associations: {\r
       belongs_to: {\r
         speech_balloon: {\r
-          id_column: 'speech_balloon_id'\r
         }, \r
         system_picture: {\r
-          id_column: 'system_picture_id'\r
+        }, \r
+        speech_balloon_template: {\r
         }, \r
       },\r
       has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
+      speech_balloon_id: {\r
         type: 'number',\r
-        primary_key: 1,\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      speech_balloon_id: {\r
+      speech_balloon_template_id: {\r
         type: 'number',\r
         rules : {\r
+          required: true,\r
           number: true,\r
         }\r
       },\r
+      speech_balloon_template_module_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
       system_picture_id: {\r
         type: 'number',\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      settings: {\r
+      speech_balloon_template_settings: {\r
         type: 'text',\r
         rules : {\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      by_panel: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'panel',\r
-          filter_key: 'panel_id',\r
-        },\r
-      },\r
-      by_speech_balloon_template: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'speech_balloon_template',\r
-          filter_key: 'speech_balloon_template_id',\r
-        },\r
-      },\r
-      by_author: {\r
-        type: 'element_filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
-        },\r
-      },\r
     },\r
   },\r
   speech: {\r
-    class_name: 'Speech',\r
-    table_name: 'speeches',\r
     associations: {\r
       belongs_to: {\r
         speech_balloon: {\r
-          id_column: 'speech_balloon_id'\r
         }, \r
         writing_format: {\r
-          id_column: 'writing_format_id'\r
+        }, \r
+        speech_balloon_template: {\r
         }, \r
       },\r
       has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
+      speech_balloon_id: {\r
         type: 'number',\r
-        primary_key: 1,\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      speech_balloon_id: {\r
+      speech_balloon_template_id: {\r
         type: 'number',\r
         rules : {\r
+          required: true,\r
           number: true,\r
         }\r
       },\r
+      speech_balloon_template_module_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
       writing_format_id: {\r
         type: 'number',\r
         source: {\r
           type: 'model',\r
-          key: 'writing_format_items',\r
         },\r
         rules : {\r
           required: true,\r
           number: true,\r
         }\r
       },\r
+      writing_format_module_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
       content: {\r
         type: 'text',\r
         rules : {\r
         },\r
         source: {\r
           type: 'magic_number',\r
-          key: 'speech_font_size_items',\r
+          args: {\r
+            select_item_name: 'speech_font_size_items',\r
+          },\r
         },\r
       },\r
       text_align: {\r
         },\r
         source: {\r
           type: 'magic_number',\r
-          key: 'speech_text_align_items',\r
+          args: {\r
+            select_item_name: 'speech_text_align_items',\r
+          },\r
         },\r
       },\r
       fore_color: {\r
         rules : {\r
         }\r
       },\r
-      settings: {\r
+      speech_balloon_template_settings: {\r
         type: 'text',\r
         rules : {\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      by_speech_balloon: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'speech_balloon',\r
-          includes: {speech_balloon: {panel: {}}},\r
-          filter_key: 'speech_balloon_id',\r
-        },\r
-      },\r
-      by_writing_format: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'writing_format',\r
-          filter_key: 'writing_format_id',\r
-        },\r
+      writing_format_settings: {\r
+        type: 'text',\r
+        rules : {\r
+        }\r
       },\r
     },\r
   },\r
   ground_picture: {\r
-    class_name: 'GroundPicture',\r
-    table_name: 'ground_pictures',\r
     associations: {\r
       belongs_to: {\r
         panel: {\r
-          id_column: 'panel_id'\r
         }, \r
       },\r
       has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       panel_id: {\r
         type: 'number',\r
         rules : {\r
         },\r
         source: {\r
           type: 'magic_number',\r
-          key: 'ground_picture_repeat_items',\r
+          args: {\r
+            select_item_name: 'ground_picture_repeat_items',\r
+          },\r
         },\r
       },\r
       x: {\r
           min: 0,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      by_panel: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'panel',\r
-          filter_key: 'panel_id',\r
-        },\r
-      },\r
-      by_author: {\r
-        type: 'element_filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
-        },\r
-      },\r
     },\r
   },\r
   ground_color: {\r
-    class_name: 'GroundColor',\r
-    table_name: 'ground_colors',\r
     associations: {\r
       belongs_to: {\r
         panel: {\r
-          id_column: 'panel_id'\r
         }, \r
       },\r
       has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       panel_id: {\r
         type: 'number',\r
         rules : {\r
         },\r
         source: {\r
           type: 'magic_number',\r
-          key: 'ground_color_orientation_items',\r
+          args: {\r
+            select_item_name: 'ground_color_orientation_items',\r
+          },\r
         },\r
       },\r
       xy: {\r
           min: 0,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      by_panel: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'panel',\r
-          filter_key: 'panel_id',\r
-        },\r
-      },\r
-      by_author: {\r
-        type: 'element_filter',\r
-        args: {\r
-          from: 'author',\r
-          filter_key: 'author_id',\r
-        },\r
-      },\r
     },\r
   },\r
   original_picture: {\r
-    class_name: 'OriginalPicture',\r
-    table_name: 'original_pictures',\r
     associations: {\r
       belongs_to: {\r
         artist: {\r
-          id_column: 'artist_id'\r
         }, \r
       },\r
       has_many: {\r
         pictures: {\r
-          foreign_key: 'original_picture_id',\r
-          model: 'picture',\r
         }, \r
       },\r
       has_one: {\r
         resource_picture: {\r
-          foreign_key: 'original_picture_id',\r
-          model: 'resource_picture',\r
         }, \r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       ext: {\r
         type: 'text',\r
         rules : {\r
       stopped_at: {\r
         type: 'datetime',\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
     },\r
   },\r
   picture: {\r
-    class_name: 'Picture',\r
-    table_name: 'pictures',\r
     associations: {\r
       belongs_to: {\r
         license: {\r
-          id_column: 'license_id'\r
         }, \r
         artist: {\r
-          id_column: 'artist_id'\r
+        }, \r
+        system_picture: {\r
         }, \r
       },\r
       has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       original_picture_id: {\r
         type: 'number',\r
         rules : {\r
           required: true,\r
         }\r
       },\r
-      artist_name: {\r
-        type: 'text',\r
+      system_picture_id: {\r
+        type: 'number',\r
         rules : {\r
           required: true,\r
+          number: true,\r
         }\r
       },\r
-      credit: {\r
+      license_group_settings: {\r
         type: 'text',\r
         rules : {\r
         }\r
       },\r
-      settings: {\r
+      credit_picture_settings: {\r
         type: 'text',\r
         rules : {\r
         }\r
       },\r
-      classname: {\r
+      license_settings: {\r
         type: 'text',\r
         rules : {\r
-          required: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
+      license_group_module_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
       },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
     }\r
   },\r
   resource_picture: {\r
-    class_name: 'ResourcePicture',\r
-    table_name: 'resource_pictures',\r
     associations: {\r
       belongs_to: {\r
         original_picture: {\r
-          id_column: 'original_picture_id'\r
+        }, \r
+        license_group: {\r
         }, \r
         license: {\r
-          id_column: 'license_id'\r
         }, \r
         artist: {\r
-          id_column: 'artist_id'\r
+        }, \r
+        system_picture: {\r
         }, \r
       },\r
       has_many: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       original_picture_id: {\r
         type: 'number',\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      revision: {\r
-        type: 'number',\r
-        rules : {\r
-          required: true,\r
-          number: true,\r
-        }\r
-      },\r
       ext: {\r
         type: 'text',\r
         rules : {\r
           number: true,\r
         }\r
       },\r
+      license_group_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
       license_id: {\r
         type: 'number',\r
         rules : {\r
           required: true,\r
         }\r
       },\r
-      artist_name: {\r
-        type: 'text',\r
+      system_picture_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      license_group_id: {\r
+        type: 'number',\r
         rules : {\r
           required: true,\r
+          number: true,\r
         }\r
       },\r
-      credit: {\r
+      license_group_settings: {\r
         type: 'text',\r
         rules : {\r
         }\r
       },\r
-      settings: {\r
+      credit_picture_settings: {\r
+        type: 'text',\r
+        rules : {\r
+        }\r
+      },\r
+      license_settings: {\r
         type: 'text',\r
         rules : {\r
         }\r
           number: true,\r
         }\r
       },\r
-      classname: {\r
+      license_group_module_name: {\r
         type: 'text',\r
         rules : {\r
           required: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      private_list: {\r
-        type: 'private',\r
-      },\r
-      by_license: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'license',\r
-          filter_key: 'license_id',\r
-        },\r
-      },\r
-      by_artist: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'artist',\r
-          filter_key: 'artist_id',\r
-        },\r
-      },\r
     },\r
   },\r
-  speech_balloon_template: {\r
-    class_name: 'SpeechBalloonTemplate',\r
-    table_name: 'speech_balloon_templates',\r
+  original_picture_license_group: {\r
     associations: {\r
       belongs_to: {\r
-        system_picture: {\r
-          id_column: 'system_picture_id'\r
+        original_picture: {\r
+        }, \r
+        license_group: {\r
         }, \r
       },\r
       has_many: {\r
-        speech_balloons: {\r
-          foreign_key: 'speech_balloon_template_id',\r
-          model: 'speech_balloon',\r
-        }, \r
-        panels: {\r
-          through: 'speech_balloons',\r
-          foreign_key: 'speech_balloon_template_id',\r
-          model: 'panel',\r
-        }, \r
       },\r
       has_one: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
+      original_picture_id: {\r
         type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
-      name: {\r
-        type: 'text',\r
         rules : {\r
           required: true,\r
+          number: true,\r
         }\r
       },\r
-      classname: {\r
-        type: 'text',\r
+      license_group_id: {\r
+        type: 'number',\r
         rules : {\r
           required: true,\r
+          number: true,\r
         }\r
+        source: {\r
+          type: 'model',\r
+        },\r
       },\r
-      caption: {\r
-        type: 'text',\r
-        rules : {\r
+    },\r
+  },\r
+  original_picture_license: {\r
+    associations: {\r
+      belongs_to: {\r
+        original_picture: {\r
+        }, \r
+        license: {\r
+        }, \r
+        system_picture: {\r
+        }, \r
+      },\r
+      has_many: {\r
+      },\r
+      has_one: {\r
+      },\r
+    },\r
+    attributes: {\r
+      original_picture_id: {\r
+        type: 'number',\r
+        rules : {\r
           required: true,\r
+          number: true,\r
         }\r
       },\r
-      t: {\r
+      license_group_id: {\r
         type: 'number',\r
+        source: {\r
+          type: 'model',\r
+        },\r
         rules : {\r
           required: true,\r
           number: true,\r
-          min: 0,\r
         }\r
       },\r
-      system_picture_id: {\r
+      license_id: {\r
         type: 'number',\r
+        source: {\r
+          type: 'filter',\r
+          args: {\r
+            resource_list_name: 'by_license_group',\r
+            filter_column_name: 'license_group_id',\r
+          },\r
+        },\r
         rules : {\r
           required: true,\r
           number: true,\r
         }\r
       },\r
-      settings: {\r
+      license_settings: {\r
+        type: 'text',\r
+        rules : {\r
+        }\r
+      },\r
+      license_group_module_name: {\r
         type: 'text',\r
         rules : {\r
           required: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
+    },\r
+  },\r
+  speech_balloon_template: {\r
+    associations: {\r
+      belongs_to: {\r
+        system_picture: {\r
+        }, \r
+      },\r
+      has_many: {\r
+        speech_balloons: {\r
+        }, \r
+        panels: {\r
+          through: 'speech_balloons',\r
+        }, \r
+      },\r
+      has_one: {\r
       },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
     },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
+    attributes: {\r
+      name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      module_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
       },\r
-      select_items: {\r
-        type: 'system_resource',\r
+      caption: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
       },\r
-      speech_balloons: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'speech_balloons',\r
-        },\r
+      t: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+          min: 0,\r
+        }\r
       },\r
-      panels: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'panels',\r
-        },\r
+      system_picture_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      settings: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
       },\r
     },\r
   },\r
   writing_format: {\r
-    class_name: 'WritingFormat',\r
-    table_name: 'writing_formats',\r
     associations: {\r
       belongs_to: {\r
         system_picture: {\r
-          id_column: 'system_picture_id'\r
         }, \r
       },\r
       has_many: {\r
         speeches: {\r
-          foreign_key: 'writing_format_id',\r
-          model: 'speech',\r
         }, \r
       },\r
       has_one: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       name: {\r
         type: 'text',\r
         rules : {\r
           required: true,\r
         }\r
       },\r
-      classname: {\r
+      module_name: {\r
         type: 'text',\r
         rules : {\r
           required: true,\r
           required: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      select_items: {\r
-        type: 'system_resource',\r
-      },\r
-      speeches: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'speeches',\r
-        },\r
-      },\r
-      by_system_picture: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'system_picture',\r
-          filter_key: 'system_picture_id',\r
-        },\r
-      },\r
     },\r
   },\r
   license_group: {\r
-    class_name: 'LicenseGroup',\r
-    table_name: 'license_groups',\r
     associations: {\r
       belongs_to: {\r
       },\r
       has_many: {\r
+        resource_pictures: {\r
+        }, \r
         licenses: {\r
-          foreign_key: 'license_group_id',\r
-          model: 'license',\r
         }, \r
       },\r
       has_one: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       name: {\r
         type: 'text',\r
         rules : {\r
           required: true,\r
         }\r
       },\r
-      classname: {\r
+      module_name: {\r
         type: 'text',\r
         rules : {\r
           required: true,\r
           required: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      select_items: {\r
-        type: 'system_resource',\r
-      },\r
-      licenses: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'licenses',\r
-        },\r
-      },\r
     },\r
   },\r
   license: {\r
-    class_name: 'License',\r
-    table_name: 'licenses',\r
     associations: {\r
       belongs_to: {\r
         license_group: {\r
-          id_column: 'license_group_id'\r
         }, \r
         system_picture: {\r
-          id_column: 'system_picture_id'\r
         }, \r
       },\r
       has_many: {\r
         resource_pictures: {\r
-          foreign_key: 'license_id',\r
-          model: 'resource_picture',\r
         }, \r
       },\r
       has_one: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
+      license_group_id: {\r
         type: 'number',\r
-        primary_key: 1,\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      license_group_id: {\r
-        type: 'number',\r
+      license_group_module_name: {\r
+        type: 'text',\r
         rules : {\r
-          number: true,\r
+          required: true,\r
         }\r
       },\r
       name: {\r
           required: true,\r
         }\r
       },\r
-      settings: {\r
+      license_group_settings: {\r
         type: 'text',\r
         rules : {\r
         }\r
       },\r
-      credit_pictures: {\r
+      credit_picture_settings: {\r
         type: 'text',\r
         rules : {\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      resource_pictures: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'resource_pictures',\r
-        },\r
-      },\r
-      by_license_group: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'license_group',\r
-          filter_key: 'license_group_id',\r
-        },\r
-      },\r
-      by_system_picture: {\r
-        type: 'filter',\r
-        args: {\r
-          from: 'system_picture',\r
-          filter_key: 'system_picture_id',\r
-        },\r
-      },\r
     },\r
   },\r
   author: {\r
-    class_name: 'Author',\r
-    table_name: 'authors',\r
     associations: {\r
       belongs_to: {\r
       },\r
       has_many: {\r
         scrolls: {\r
-          foreign_key: 'author_id',\r
-          model: 'scroll',\r
         }, \r
         comics: {\r
-          foreign_key: 'author_id',\r
-          model: 'comic',\r
         }, \r
         stories: {\r
-          foreign_key: 'author_id',\r
-          model: 'story',\r
         }, \r
         sheets: {\r
-          foreign_key: 'author_id',\r
-          model: 'sheet',\r
         }, \r
         panels: {\r
-          foreign_key: 'author_id',\r
-          model: 'panel',\r
         }, \r
       },\r
       has_one: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       name: {\r
         type: 'text',\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      scrolls: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'scrolls',\r
-        },\r
-      },\r
-      comics: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'comics',\r
-        },\r
-      },\r
-      stories: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'stories',\r
-        },\r
-      },\r
-      sheets: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'sheets',\r
-        },\r
-      },\r
-      panels: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'panels',\r
-        },\r
-      },\r
-      panel_pictures: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'panel_pictures',\r
-        },\r
-      },\r
-      speech_balloons: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'speech_balloons',\r
-        },\r
-      },\r
-      ground_pictures: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'ground_pictures',\r
-        },\r
-      },\r
-      ground_colors: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'ground_colors',\r
-        },\r
-      },\r
     },\r
   },\r
   artist: {\r
-    class_name: 'Artist',\r
-    table_name: 'artists',\r
     associations: {\r
       belongs_to: {\r
       },\r
       has_many: {\r
         resource_pictures: {\r
-          foreign_key: 'artist_id',\r
-          model: 'resource_picture',\r
         }, \r
       },\r
       has_one: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       name: {\r
         type: 'text',\r
         rules : {\r
           number: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
-      },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
-    },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
-      },\r
-      resource_pictures: {\r
-        type: 'has_many',\r
-        args: {\r
-          association_name: 'resource_pictures',\r
-        },\r
-      },\r
     },\r
   },\r
   system_picture: {\r
-    class_name: 'SystemPicture',\r
-    table_name: 'system_pictures',\r
     associations: {\r
       belongs_to: {\r
       },\r
       has_many: {\r
         balloons: {\r
-          foreign_key: 'system_picture_id',\r
-          model: 'balloon',\r
         }, \r
-        balloon_templates: {\r
-          foreign_key: 'system_picture_id',\r
-          model: 'balloon_template',\r
+        speech_balloon_templates: {\r
         }, \r
         licenses: {\r
-          foreign_key: 'system_picture_id',\r
-          model: 'license',\r
+        }, \r
+        writing_formats: {\r
         }, \r
       },\r
       has_one: {\r
       },\r
     },\r
     attributes: {\r
-      id: {\r
-        type: 'number',\r
-        primary_key: 1,\r
-        rules : {\r
-          number: true,\r
-        }\r
-      },\r
       ext: {\r
         type: 'text',\r
         rules : {\r
           required: true,\r
         }\r
       },\r
-      created_at: {\r
-        type: 'datetime',\r
+    },\r
+  },\r
+  ###############################################################\r
+  #\r
+  # extend models\r
+  #\r
+  ################################################################\r
+  circle_speech_balloon_speech_balloon: {\r
+    attributes: {\r
+    },\r
+  },\r
+  circle_speech_balloon_balloon: {\r
+    attributes: {\r
+    },\r
+  },\r
+  circle_speech_balloon_speech: {\r
+    attributes: {\r
+    },\r
+  },\r
+  plain_speech_balloon_speech_balloon: {\r
+    attributes: {\r
+    },\r
+  },\r
+  plain_speech_balloon_balloon: {\r
+    attributes: {\r
+    },\r
+  },\r
+  plain_speech_balloon_speech: {\r
+    attributes: {\r
+    },\r
+  },\r
+  square_speech_balloon_speech_balloon: {\r
+    attributes: {\r
+    },\r
+  },\r
+  square_speech_balloon_balloon: {\r
+    attributes: {\r
+    },\r
+  },\r
+  square_speech_balloon_speech: {\r
+    attributes: {\r
+    },\r
+  },\r
+  test_speech_balloon_speech_balloon: {\r
+    attributes: {\r
+      a: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  test_speech_balloon_balloon: {\r
+    attributes: {\r
+      b: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  test_speech_balloon_speech: {\r
+    attributes: {\r
+      c: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
       },\r
-      updated_at: {\r
-        type: 'datetime',\r
-      }\r
     },\r
-    lists: {\r
-      public_list: {\r
-        type: 'public',\r
+  },\r
+  pettanr_creative_commons_v30_licenses_license: {\r
+    attributes: {\r
+      open: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      commercial: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      official: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      attribution: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      derive: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      thumbnail: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      gif_convert: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      reverse: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      sync_vh: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      overlap: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_creative_commons_v30_licenses_credit_picture: {\r
+    attributes: {\r
+      source_url_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      source_url_off_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_creative_commons_v30_licenses_attribute: {\r
+    attributes: {\r
+      artist_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      caption: {\r
+        type: 'text',\r
+        rules : {\r
+        }\r
+      },\r
+      artist_url: {\r
+        type: 'text',\r
+        rules : {\r
+        }\r
+      },\r
+      source_url: {\r
+        type: 'text',\r
+        rules : {\r
+        }\r
+      },\r
+      more_permission_url: {\r
+        type: 'text',\r
+        rules : {\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_pettan_commons_v01_licenses_license: {\r
+    attributes: {\r
+      open: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      commercial: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      official: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      attribution: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      derive: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      thumbnail: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      gif_convert: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      reverse: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      sync_vh: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      overlap: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_pettan_commons_v01_licenses_credit_picture: {\r
+    attributes: {\r
+      source_url_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      source_url_off_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_pettan_commons_v01_licenses_attribute: {\r
+    attributes: {\r
+      artist_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      caption: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      sources: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_pettan_protected_v01_licenses_license: {\r
+    attributes: {\r
+      open: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      commercial: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      official: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      attribution: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      derive: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      thumbnail: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      gif_convert: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      reverse: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      sync_vh: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      overlap: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      trackback: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_pettan_protected_v01_licenses_credit_picture: {\r
+    attributes: {\r
+      source_url_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      source_url_off_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_pettan_protected_v01_licenses_attribute: {\r
+    attributes: {\r
+      artist_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      caption: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      sources: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_pettan_public_v01_licenses_license: {\r
+    attributes: {\r
+      open: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      commercial: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      official: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      attribution: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      derive: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      thumbnail: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      gif_convert: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      reverse: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      sync_vh: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      overlap: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      trackback: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_pettan_public_v01_licenses_credit_picture: {\r
+    attributes: {\r
+      source_url_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_pettan_public_v01_licenses_attribute: {\r
+    attributes: {\r
+      artist_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      caption: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      sources: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_public_domain_v01_licenses_license: {\r
+    attributes: {\r
+      open: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      commercial: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      official: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      attribution: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      derive: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      thumbnail: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      gif_convert: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      reverse: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      sync_vh: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      overlap: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      trackback: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_public_domain_v01_licenses_credit_picture: {\r
+    attributes: {\r
+      source_url_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      source_url_off_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_public_domain_v01_licenses_attribute: {\r
+    attributes: {\r
+      artist_name: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      source_url: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      note: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_unknown_v01_licenses_license: {\r
+    attributes: {\r
+      open: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      commercial: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      official: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      attribution: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      derive: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      thumbnail: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      gif_convert: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      reverse: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      sync_vh: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      overlap: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      trackback: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_unknown_v01_licenses_credit_picture: {\r
+    attributes: {\r
+      source_url_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+      source_url_off_btn_id: {\r
+        type: 'number',\r
+        rules : {\r
+          required: true,\r
+          number: true,\r
+        }\r
+      },\r
+    },\r
+  },\r
+  pettanr_unknown_v01_licenses_attribute: {\r
+    attributes: {\r
+      source_url: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
+      },\r
+      note: {\r
+        type: 'text',\r
+        rules : {\r
+          required: true,\r
+        }\r
       },\r
     },\r
   },\r