DAY08_test_HTML
This commit is contained in:
parent
cedec61862
commit
46fa40c8cb
|
@ -0,0 +1,3 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="PyDocumentationSettings">
|
||||
<option name="format" value="PLAIN" />
|
||||
<option name="myDocStringFormat" value="Plain" />
|
||||
</component>
|
||||
</module>
|
|
@ -0,0 +1,457 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DBNavigator.Project.DataEditorManager">
|
||||
<record-view-column-sorting-type value="BY_INDEX" />
|
||||
<value-preview-text-wrapping value="true" />
|
||||
<value-preview-pinned value="false" />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DataExportManager">
|
||||
<export-instructions>
|
||||
<create-header value="true" />
|
||||
<friendly-headers value="false" />
|
||||
<quote-values-containing-separator value="true" />
|
||||
<quote-all-values value="false" />
|
||||
<value-separator value="" />
|
||||
<file-name value="" />
|
||||
<file-location value="" />
|
||||
<scope value="GLOBAL" />
|
||||
<destination value="FILE" />
|
||||
<format value="EXCEL" />
|
||||
<charset value="GBK" />
|
||||
</export-instructions>
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseBrowserManager">
|
||||
<autoscroll-to-editor value="false" />
|
||||
<autoscroll-from-editor value="true" />
|
||||
<show-object-properties value="true" />
|
||||
<loaded-nodes />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.DatabaseFileManager">
|
||||
<open-files />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.EditorStateManager">
|
||||
<last-used-providers />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ExecutionManager">
|
||||
<retain-sticky-names value="false" />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.MethodExecutionManager">
|
||||
<method-browser />
|
||||
<execution-history>
|
||||
<group-entries value="true" />
|
||||
<execution-inputs />
|
||||
</execution-history>
|
||||
<argument-values-cache />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ObjectDependencyManager">
|
||||
<last-used-dependency-type value="INCOMING" />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ObjectQuickFilterManager">
|
||||
<last-used-operator value="EQUAL" />
|
||||
<filters />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ParserDiagnosticsManager">
|
||||
<diagnostics-history />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
|
||||
<recently-used-interfaces />
|
||||
</component>
|
||||
<component name="DBNavigator.Project.Settings">
|
||||
<connections />
|
||||
<browser-settings>
|
||||
<general>
|
||||
<display-mode value="TABBED" />
|
||||
<navigation-history-size value="100" />
|
||||
<show-object-details value="false" />
|
||||
</general>
|
||||
<filters>
|
||||
<object-type-filter>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="true" />
|
||||
<object-type name="ROLE" enabled="true" />
|
||||
<object-type name="PRIVILEGE" enabled="true" />
|
||||
<object-type name="CHARSET" enabled="true" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||
<object-type name="NESTED_TABLE" enabled="true" />
|
||||
<object-type name="COLUMN" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="true" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||
<object-type name="ARGUMENT" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="true" />
|
||||
<object-type name="CLUSTER" enabled="true" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</object-type-filter>
|
||||
</filters>
|
||||
<sorting>
|
||||
<object-type name="COLUMN" sorting-type="NAME" />
|
||||
<object-type name="FUNCTION" sorting-type="NAME" />
|
||||
<object-type name="PROCEDURE" sorting-type="NAME" />
|
||||
<object-type name="ARGUMENT" sorting-type="POSITION" />
|
||||
</sorting>
|
||||
<default-editors>
|
||||
<object-type name="VIEW" editor-type="SELECTION" />
|
||||
<object-type name="PACKAGE" editor-type="SELECTION" />
|
||||
<object-type name="TYPE" editor-type="SELECTION" />
|
||||
</default-editors>
|
||||
</browser-settings>
|
||||
<navigation-settings>
|
||||
<lookup-filters>
|
||||
<lookup-objects>
|
||||
<object-type name="SCHEMA" enabled="true" />
|
||||
<object-type name="USER" enabled="false" />
|
||||
<object-type name="ROLE" enabled="false" />
|
||||
<object-type name="PRIVILEGE" enabled="false" />
|
||||
<object-type name="CHARSET" enabled="false" />
|
||||
<object-type name="TABLE" enabled="true" />
|
||||
<object-type name="VIEW" enabled="true" />
|
||||
<object-type name="MATERIALIZED VIEW" enabled="true" />
|
||||
<object-type name="INDEX" enabled="true" />
|
||||
<object-type name="CONSTRAINT" enabled="true" />
|
||||
<object-type name="DATASET TRIGGER" enabled="true" />
|
||||
<object-type name="DATABASE TRIGGER" enabled="true" />
|
||||
<object-type name="SYNONYM" enabled="false" />
|
||||
<object-type name="SEQUENCE" enabled="true" />
|
||||
<object-type name="PROCEDURE" enabled="true" />
|
||||
<object-type name="FUNCTION" enabled="true" />
|
||||
<object-type name="PACKAGE" enabled="true" />
|
||||
<object-type name="TYPE" enabled="true" />
|
||||
<object-type name="DIMENSION" enabled="false" />
|
||||
<object-type name="CLUSTER" enabled="false" />
|
||||
<object-type name="DBLINK" enabled="true" />
|
||||
</lookup-objects>
|
||||
<force-database-load value="false" />
|
||||
<prompt-connection-selection value="true" />
|
||||
<prompt-schema-selection value="true" />
|
||||
</lookup-filters>
|
||||
</navigation-settings>
|
||||
<dataset-grid-settings>
|
||||
<general>
|
||||
<enable-zooming value="true" />
|
||||
<enable-column-tooltip value="true" />
|
||||
</general>
|
||||
<sorting>
|
||||
<nulls-first value="true" />
|
||||
<max-sorting-columns value="4" />
|
||||
</sorting>
|
||||
<tracking-columns>
|
||||
<columnNames value="" />
|
||||
<visible value="true" />
|
||||
<editable value="false" />
|
||||
</tracking-columns>
|
||||
</dataset-grid-settings>
|
||||
<dataset-editor-settings>
|
||||
<text-editor-popup>
|
||||
<active value="false" />
|
||||
<active-if-empty value="false" />
|
||||
<data-length-threshold value="100" />
|
||||
<popup-delay value="1000" />
|
||||
</text-editor-popup>
|
||||
<values-actions-popup>
|
||||
<show-popup-button value="true" />
|
||||
<element-count-threshold value="1000" />
|
||||
<data-length-threshold value="250" />
|
||||
</values-actions-popup>
|
||||
<general>
|
||||
<fetch-block-size value="100" />
|
||||
<fetch-timeout value="30" />
|
||||
<trim-whitespaces value="true" />
|
||||
<convert-empty-strings-to-null value="true" />
|
||||
<select-content-on-cell-edit value="true" />
|
||||
<large-value-preview-active value="true" />
|
||||
</general>
|
||||
<filters>
|
||||
<prompt-filter-dialog value="true" />
|
||||
<default-filter-type value="BASIC" />
|
||||
</filters>
|
||||
<qualified-text-editor text-length-threshold="300">
|
||||
<content-types>
|
||||
<content-type name="Text" enabled="true" />
|
||||
<content-type name="Properties" enabled="true" />
|
||||
<content-type name="XML" enabled="true" />
|
||||
<content-type name="DTD" enabled="true" />
|
||||
<content-type name="HTML" enabled="true" />
|
||||
<content-type name="XHTML" enabled="true" />
|
||||
<content-type name="SQL" enabled="true" />
|
||||
<content-type name="PL/SQL" enabled="true" />
|
||||
<content-type name="JSON" enabled="true" />
|
||||
<content-type name="JSON5" enabled="true" />
|
||||
<content-type name="YAML" enabled="true" />
|
||||
</content-types>
|
||||
</qualified-text-editor>
|
||||
<record-navigation>
|
||||
<navigation-target value="VIEWER" />
|
||||
</record-navigation>
|
||||
</dataset-editor-settings>
|
||||
<code-editor-settings>
|
||||
<general>
|
||||
<show-object-navigation-gutter value="false" />
|
||||
<show-spec-declaration-navigation-gutter value="true" />
|
||||
<enable-spellchecking value="true" />
|
||||
<enable-reference-spellchecking value="false" />
|
||||
</general>
|
||||
<confirmations>
|
||||
<save-changes value="false" />
|
||||
<revert-changes value="true" />
|
||||
</confirmations>
|
||||
</code-editor-settings>
|
||||
<code-completion-settings>
|
||||
<filters>
|
||||
<basic-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="false" />
|
||||
<filter-element type="OBJECT" id="view" selected="false" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="false" />
|
||||
<filter-element type="OBJECT" id="index" selected="false" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="false" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="false" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="false" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="false" />
|
||||
<filter-element type="OBJECT" id="function" selected="false" />
|
||||
<filter-element type="OBJECT" id="package" selected="false" />
|
||||
<filter-element type="OBJECT" id="type" selected="false" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="false" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="false" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="false" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</basic-filter>
|
||||
<extended-filter>
|
||||
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||
<filter-element type="OBJECT" id="user" selected="true" />
|
||||
<filter-element type="OBJECT" id="role" selected="true" />
|
||||
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||
<user-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</user-schema>
|
||||
<public-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</public-schema>
|
||||
<any-schema>
|
||||
<filter-element type="OBJECT" id="table" selected="true" />
|
||||
<filter-element type="OBJECT" id="view" selected="true" />
|
||||
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||
<filter-element type="OBJECT" id="index" selected="true" />
|
||||
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||
<filter-element type="OBJECT" id="function" selected="true" />
|
||||
<filter-element type="OBJECT" id="package" selected="true" />
|
||||
<filter-element type="OBJECT" id="type" selected="true" />
|
||||
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||
</any-schema>
|
||||
</extended-filter>
|
||||
</filters>
|
||||
<sorting enabled="true">
|
||||
<sorting-element type="RESERVED_WORD" id="keyword" />
|
||||
<sorting-element type="RESERVED_WORD" id="datatype" />
|
||||
<sorting-element type="OBJECT" id="column" />
|
||||
<sorting-element type="OBJECT" id="table" />
|
||||
<sorting-element type="OBJECT" id="view" />
|
||||
<sorting-element type="OBJECT" id="materialized view" />
|
||||
<sorting-element type="OBJECT" id="index" />
|
||||
<sorting-element type="OBJECT" id="constraint" />
|
||||
<sorting-element type="OBJECT" id="trigger" />
|
||||
<sorting-element type="OBJECT" id="synonym" />
|
||||
<sorting-element type="OBJECT" id="sequence" />
|
||||
<sorting-element type="OBJECT" id="procedure" />
|
||||
<sorting-element type="OBJECT" id="function" />
|
||||
<sorting-element type="OBJECT" id="package" />
|
||||
<sorting-element type="OBJECT" id="type" />
|
||||
<sorting-element type="OBJECT" id="dimension" />
|
||||
<sorting-element type="OBJECT" id="cluster" />
|
||||
<sorting-element type="OBJECT" id="dblink" />
|
||||
<sorting-element type="OBJECT" id="schema" />
|
||||
<sorting-element type="OBJECT" id="role" />
|
||||
<sorting-element type="OBJECT" id="user" />
|
||||
<sorting-element type="RESERVED_WORD" id="function" />
|
||||
<sorting-element type="RESERVED_WORD" id="parameter" />
|
||||
</sorting>
|
||||
<format>
|
||||
<enforce-code-style-case value="true" />
|
||||
</format>
|
||||
</code-completion-settings>
|
||||
<execution-engine-settings>
|
||||
<statement-execution>
|
||||
<fetch-block-size value="100" />
|
||||
<execution-timeout value="20" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<focus-result value="false" />
|
||||
<prompt-execution value="false" />
|
||||
</statement-execution>
|
||||
<script-execution>
|
||||
<command-line-interfaces />
|
||||
<execution-timeout value="300" />
|
||||
</script-execution>
|
||||
<method-execution>
|
||||
<execution-timeout value="30" />
|
||||
<debug-execution-timeout value="600" />
|
||||
<parameter-history-size value="10" />
|
||||
</method-execution>
|
||||
</execution-engine-settings>
|
||||
<operation-settings>
|
||||
<transactions>
|
||||
<uncommitted-changes>
|
||||
<on-project-close value="ASK" />
|
||||
<on-disconnect value="ASK" />
|
||||
<on-autocommit-toggle value="ASK" />
|
||||
</uncommitted-changes>
|
||||
<multiple-uncommitted-changes>
|
||||
<on-commit value="ASK" />
|
||||
<on-rollback value="ASK" />
|
||||
</multiple-uncommitted-changes>
|
||||
</transactions>
|
||||
<session-browser>
|
||||
<disconnect-session value="ASK" />
|
||||
<kill-session value="ASK" />
|
||||
<reload-on-filter-change value="false" />
|
||||
</session-browser>
|
||||
<compiler>
|
||||
<compile-type value="KEEP" />
|
||||
<compile-dependencies value="ASK" />
|
||||
<always-show-controls value="false" />
|
||||
</compiler>
|
||||
<debugger>
|
||||
<debugger-type value="JDBC" />
|
||||
<use-generic-runners value="true" />
|
||||
</debugger>
|
||||
</operation-settings>
|
||||
<ddl-file-settings>
|
||||
<extensions>
|
||||
<mapping file-type-id="VIEW" extensions="vw" />
|
||||
<mapping file-type-id="TRIGGER" extensions="trg" />
|
||||
<mapping file-type-id="PROCEDURE" extensions="prc" />
|
||||
<mapping file-type-id="FUNCTION" extensions="fnc" />
|
||||
<mapping file-type-id="PACKAGE" extensions="pkg" />
|
||||
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
|
||||
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
|
||||
<mapping file-type-id="TYPE" extensions="tpe" />
|
||||
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
|
||||
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
|
||||
</extensions>
|
||||
<general>
|
||||
<lookup-ddl-files value="true" />
|
||||
<create-ddl-files value="false" />
|
||||
<synchronize-ddl-files value="true" />
|
||||
<use-qualified-names value="false" />
|
||||
<make-scripts-rerunnable value="true" />
|
||||
</general>
|
||||
</ddl-file-settings>
|
||||
<general-settings>
|
||||
<regional-settings>
|
||||
<date-format value="MEDIUM" />
|
||||
<number-format value="UNGROUPED" />
|
||||
<locale value="SYSTEM_DEFAULT" />
|
||||
<use-custom-formats value="false" />
|
||||
</regional-settings>
|
||||
<environment>
|
||||
<environment-types>
|
||||
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
|
||||
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
|
||||
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
|
||||
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
|
||||
</environment-types>
|
||||
<visibility-settings>
|
||||
<connection-tabs value="true" />
|
||||
<dialog-headers value="true" />
|
||||
<object-editor-tabs value="true" />
|
||||
<script-editor-tabs value="false" />
|
||||
<execution-result-tabs value="true" />
|
||||
</visibility-settings>
|
||||
</environment>
|
||||
</general-settings>
|
||||
</component>
|
||||
<component name="DBNavigator.Project.StatementExecutionManager">
|
||||
<execution-variables />
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,6 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.7 (316)" project-jdk-type="Python SDK" />
|
||||
</project>
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/315.iml" filepath="$PROJECT_DIR$/.idea/315.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
Binary file not shown.
|
@ -10,7 +10,6 @@ import logging; logging.basicConfig(level=logging.INFO)
|
|||
# INFO 20
|
||||
# DEBUG 10
|
||||
# NOTSET 0
|
||||
# __auther__ = 'lzj'
|
||||
# 导入 logging 模块并使用';'对其全局配置
|
||||
# basicConfig 配置了 level 信息,level 配置为 INFO 信息,即只输出 INFO 级别的信息
|
||||
|
||||
|
|
|
@ -9,8 +9,14 @@ from models import User, Comment, Blog, next_id
|
|||
@get('/')
|
||||
async def index(request):
|
||||
|
||||
users = await User.findAll()
|
||||
# users = await User.findAll()
|
||||
summary = 'XXXXXXXXX啦啦啦啦啦啦啦'
|
||||
blogs = [
|
||||
Blog(id='1', name='AAAAA', summary=summary, created_at=time.time() - 1200),
|
||||
Blog(id='2', name='BBBBB', summary=summary, created_at=time.time() - 3600),
|
||||
Blog(id='3', name='CCCCC', summary=summary, created_at=time.time() - 7200)
|
||||
]
|
||||
return {
|
||||
'__template__': 'test.html',
|
||||
'users': users
|
||||
'__template__': 'blogs.html',
|
||||
'blogs': blogs
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* custom css
|
||||
*/
|
||||
a:hover, a:active {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#vm {
|
||||
display: none;
|
||||
}
|
||||
#loading {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
#error {
|
||||
display: none;
|
||||
margin-bottom: 15px;
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,458 @@
|
|||
// moe.js
|
||||
|
||||
// patch for lower-version IE:
|
||||
|
||||
if (! window.console) {
|
||||
window.console = {
|
||||
log: function() {},
|
||||
info: function() {},
|
||||
error: function () {},
|
||||
warn: function () {},
|
||||
debug: function () {}
|
||||
};
|
||||
}
|
||||
|
||||
// patch for string.trim():
|
||||
|
||||
if (! String.prototype.trim) {
|
||||
String.prototype.trim = function() {
|
||||
return this.replace(/^\s+|\s+$/g, '');
|
||||
};
|
||||
}
|
||||
|
||||
if (! Number.prototype.toDateTime) {
|
||||
var replaces = {
|
||||
'yyyy': function(dt) {
|
||||
return dt.getFullYear().toString();
|
||||
},
|
||||
'yy': function(dt) {
|
||||
return (dt.getFullYear() % 100).toString();
|
||||
},
|
||||
'MM': function(dt) {
|
||||
var m = dt.getMonth() + 1;
|
||||
return m < 10 ? '0' + m : m.toString();
|
||||
},
|
||||
'M': function(dt) {
|
||||
var m = dt.getMonth() + 1;
|
||||
return m.toString();
|
||||
},
|
||||
'dd': function(dt) {
|
||||
var d = dt.getDate();
|
||||
return d < 10 ? '0' + d : d.toString();
|
||||
},
|
||||
'd': function(dt) {
|
||||
var d = dt.getDate();
|
||||
return d.toString();
|
||||
},
|
||||
'hh': function(dt) {
|
||||
var h = dt.getHours();
|
||||
return h < 10 ? '0' + h : h.toString();
|
||||
},
|
||||
'h': function(dt) {
|
||||
var h = dt.getHours();
|
||||
return h.toString();
|
||||
},
|
||||
'mm': function(dt) {
|
||||
var m = dt.getMinutes();
|
||||
return m < 10 ? '0' + m : m.toString();
|
||||
},
|
||||
'm': function(dt) {
|
||||
var m = dt.getMinutes();
|
||||
return m.toString();
|
||||
},
|
||||
'ss': function(dt) {
|
||||
var s = dt.getSeconds();
|
||||
return s < 10 ? '0' + s : s.toString();
|
||||
},
|
||||
's': function(dt) {
|
||||
var s = dt.getSeconds();
|
||||
return s.toString();
|
||||
},
|
||||
'a': function(dt) {
|
||||
var h = dt.getHours();
|
||||
return h < 12 ? 'AM' : 'PM';
|
||||
}
|
||||
};
|
||||
var token = /([a-zA-Z]+)/;
|
||||
Number.prototype.toDateTime = function(format) {
|
||||
var fmt = format || 'yyyy-MM-dd hh:mm:ss'
|
||||
var dt = new Date(this * 1000);
|
||||
var arr = fmt.split(token);
|
||||
for (var i=0; i<arr.length; i++) {
|
||||
var s = arr[i];
|
||||
if (s && s in replaces) {
|
||||
arr[i] = replaces[s](dt);
|
||||
}
|
||||
}
|
||||
return arr.join('');
|
||||
};
|
||||
}
|
||||
|
||||
function encodeHtml(str) {
|
||||
return String(str)
|
||||
.replace(/&/g, '&')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>');
|
||||
}
|
||||
|
||||
// parse query string as object:
|
||||
|
||||
function parseQueryString() {
|
||||
var
|
||||
q = location.search,
|
||||
r = {},
|
||||
i, pos, s, qs;
|
||||
if (q && q.charAt(0)==='?') {
|
||||
qs = q.substring(1).split('&');
|
||||
for (i=0; i<qs.length; i++) {
|
||||
s = qs[i];
|
||||
pos = s.indexOf('=');
|
||||
if (pos <= 0) {
|
||||
continue;
|
||||
}
|
||||
r[s.substring(0, pos)] = decodeURIComponent(s.substring(pos+1)).replace(/\+/g, ' ');
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
function gotoPage(i) {
|
||||
var r = parseQueryString();
|
||||
r.page = i;
|
||||
location.assign('?' + $.param(r));
|
||||
}
|
||||
|
||||
function refresh() {
|
||||
var
|
||||
t = new Date().getTime(),
|
||||
url = location.pathname;
|
||||
if (location.search) {
|
||||
url = url + location.search + '&t=' + t;
|
||||
}
|
||||
else {
|
||||
url = url + '?t=' + t;
|
||||
}
|
||||
location.assign(url);
|
||||
}
|
||||
|
||||
function toSmartDate(timestamp) {
|
||||
if (typeof(timestamp)==='string') {
|
||||
timestamp = parseInt(timestamp);
|
||||
}
|
||||
if (isNaN(timestamp)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
var
|
||||
today = new Date(g_time),
|
||||
now = today.getTime(),
|
||||
s = '1分钟前',
|
||||
t = now - timestamp;
|
||||
if (t > 604800000) {
|
||||
// 1 week ago:
|
||||
var that = new Date(timestamp);
|
||||
var
|
||||
y = that.getFullYear(),
|
||||
m = that.getMonth() + 1,
|
||||
d = that.getDate(),
|
||||
hh = that.getHours(),
|
||||
mm = that.getMinutes();
|
||||
s = y===today.getFullYear() ? '' : y + '年';
|
||||
s = s + m + '月' + d + '日' + hh + ':' + (mm < 10 ? '0' : '') + mm;
|
||||
}
|
||||
else if (t >= 86400000) {
|
||||
// 1-6 days ago:
|
||||
s = Math.floor(t / 86400000) + '天前';
|
||||
}
|
||||
else if (t >= 3600000) {
|
||||
// 1-23 hours ago:
|
||||
s = Math.floor(t / 3600000) + '小时前';
|
||||
}
|
||||
else if (t >= 60000) {
|
||||
s = Math.floor(t / 60000) + '分钟前';
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$(function() {
|
||||
$('.x-smartdate').each(function() {
|
||||
$(this).removeClass('x-smartdate').text(toSmartDate($(this).attr('date')));
|
||||
});
|
||||
});
|
||||
|
||||
// JS Template:
|
||||
|
||||
function Template(tpl) {
|
||||
var
|
||||
fn,
|
||||
match,
|
||||
code = ['var r=[];\nvar _html = function (str) { return str.replace(/&/g, \'&\').replace(/"/g, \'"\').replace(/\'/g, \''\').replace(/</g, \'<\').replace(/>/g, \'>\'); };'],
|
||||
re = /\{\s*([a-zA-Z\.\_0-9()]+)(\s*\|\s*safe)?\s*\}/m,
|
||||
addLine = function (text) {
|
||||
code.push('r.push(\'' + text.replace(/\'/g, '\\\'').replace(/\n/g, '\\n').replace(/\r/g, '\\r') + '\');');
|
||||
};
|
||||
while (match = re.exec(tpl)) {
|
||||
if (match.index > 0) {
|
||||
addLine(tpl.slice(0, match.index));
|
||||
}
|
||||
if (match[2]) {
|
||||
code.push('r.push(String(this.' + match[1] + '));');
|
||||
}
|
||||
else {
|
||||
code.push('r.push(_html(String(this.' + match[1] + ')));');
|
||||
}
|
||||
tpl = tpl.substring(match.index + match[0].length);
|
||||
}
|
||||
addLine(tpl);
|
||||
code.push('return r.join(\'\');');
|
||||
fn = new Function(code.join('\n'));
|
||||
this.render = function (model) {
|
||||
return fn.apply(model);
|
||||
};
|
||||
}
|
||||
|
||||
// extends jQuery.form:
|
||||
|
||||
$(function () {
|
||||
console.log('Extends $form...');
|
||||
$.fn.extend({
|
||||
showFormError: function (err) {
|
||||
return this.each(function () {
|
||||
var
|
||||
$form = $(this),
|
||||
$alert = $form && $form.find('.uk-alert-danger'),
|
||||
fieldName = err && err.data;
|
||||
if (! $form.is('form')) {
|
||||
console.error('Cannot call showFormError() on non-form object.');
|
||||
return;
|
||||
}
|
||||
$form.find('input').removeClass('uk-form-danger');
|
||||
$form.find('select').removeClass('uk-form-danger');
|
||||
$form.find('textarea').removeClass('uk-form-danger');
|
||||
if ($alert.length === 0) {
|
||||
console.warn('Cannot find .uk-alert-danger element.');
|
||||
return;
|
||||
}
|
||||
if (err) {
|
||||
$alert.text(err.message ? err.message : (err.error ? err.error : err)).removeClass('uk-hidden').show();
|
||||
if (($alert.offset().top - 60) < $(window).scrollTop()) {
|
||||
$('html,body').animate({ scrollTop: $alert.offset().top - 60 });
|
||||
}
|
||||
if (fieldName) {
|
||||
$form.find('[name=' + fieldName + ']').addClass('uk-form-danger');
|
||||
}
|
||||
}
|
||||
else {
|
||||
$alert.addClass('uk-hidden').hide();
|
||||
$form.find('.uk-form-danger').removeClass('uk-form-danger');
|
||||
}
|
||||
});
|
||||
},
|
||||
showFormLoading: function (isLoading) {
|
||||
return this.each(function () {
|
||||
var
|
||||
$form = $(this),
|
||||
$submit = $form && $form.find('button[type=submit]'),
|
||||
$buttons = $form && $form.find('button');
|
||||
$i = $submit && $submit.find('i'),
|
||||
iconClass = $i && $i.attr('class');
|
||||
if (! $form.is('form')) {
|
||||
console.error('Cannot call showFormLoading() on non-form object.');
|
||||
return;
|
||||
}
|
||||
if (!iconClass || iconClass.indexOf('uk-icon') < 0) {
|
||||
console.warn('Icon <i class="uk-icon-*>" not found.');
|
||||
return;
|
||||
}
|
||||
if (isLoading) {
|
||||
$buttons.attr('disabled', 'disabled');
|
||||
$i && $i.addClass('uk-icon-spinner').addClass('uk-icon-spin');
|
||||
}
|
||||
else {
|
||||
$buttons.removeAttr('disabled');
|
||||
$i && $i.removeClass('uk-icon-spinner').removeClass('uk-icon-spin');
|
||||
}
|
||||
});
|
||||
},
|
||||
postJSON: function (url, data, callback) {
|
||||
if (arguments.length===2) {
|
||||
callback = data;
|
||||
data = {};
|
||||
}
|
||||
return this.each(function () {
|
||||
var $form = $(this);
|
||||
$form.showFormError();
|
||||
$form.showFormLoading(true);
|
||||
_httpJSON('POST', url, data, function (err, r) {
|
||||
if (err) {
|
||||
$form.showFormError(err);
|
||||
$form.showFormLoading(false);
|
||||
}
|
||||
callback && callback(err, r);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// ajax submit form:
|
||||
|
||||
function _httpJSON(method, url, data, callback) {
|
||||
var opt = {
|
||||
type: method,
|
||||
dataType: 'json'
|
||||
};
|
||||
if (method==='GET') {
|
||||
opt.url = url + '?' + data;
|
||||
}
|
||||
if (method==='POST') {
|
||||
opt.url = url;
|
||||
opt.data = JSON.stringify(data || {});
|
||||
opt.contentType = 'application/json';
|
||||
}
|
||||
$.ajax(opt).done(function (r) {
|
||||
if (r && r.error) {
|
||||
return callback(r);
|
||||
}
|
||||
return callback(null, r);
|
||||
}).fail(function (jqXHR, textStatus) {
|
||||
return callback({'error': 'http_bad_response', 'data': '' + jqXHR.status, 'message': '网络好像出问题了 (HTTP ' + jqXHR.status + ')'});
|
||||
});
|
||||
}
|
||||
|
||||
function getJSON(url, data, callback) {
|
||||
if (arguments.length===2) {
|
||||
callback = data;
|
||||
data = {};
|
||||
}
|
||||
if (typeof (data)==='object') {
|
||||
var arr = [];
|
||||
$.each(data, function (k, v) {
|
||||
arr.push(k + '=' + encodeURIComponent(v));
|
||||
});
|
||||
data = arr.join('&');
|
||||
}
|
||||
_httpJSON('GET', url, data, callback);
|
||||
}
|
||||
|
||||
function postJSON(url, data, callback) {
|
||||
if (arguments.length===2) {
|
||||
callback = data;
|
||||
data = {};
|
||||
}
|
||||
_httpJSON('POST', url, data, callback);
|
||||
}
|
||||
|
||||
// extends Vue:
|
||||
|
||||
if (typeof(Vue)!=='undefined') {
|
||||
Vue.filter('datetime', function (value) {
|
||||
var d = value;
|
||||
if (typeof(value)==='number') {
|
||||
d = new Date(value);
|
||||
}
|
||||
return d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes();
|
||||
});
|
||||
Vue.component('pagination', {
|
||||
template: '<ul class="uk-pagination">' +
|
||||
'<li v-if="! has_previous" class="uk-disabled"><span><i class="uk-icon-angle-double-left"></i></span></li>' +
|
||||
'<li v-if="has_previous"><a v-attr="onclick:\'gotoPage(\' + (page_index-1) + \')\'" href="#0"><i class="uk-icon-angle-double-left"></i></a></li>' +
|
||||
'<li class="uk-active"><span v-text="page_index"></span></li>' +
|
||||
'<li v-if="! has_next" class="uk-disabled"><span><i class="uk-icon-angle-double-right"></i></span></li>' +
|
||||
'<li v-if="has_next"><a v-attr="onclick:\'gotoPage(\' + (page_index+1) + \')\'" href="#0"><i class="uk-icon-angle-double-right"></i></a></li>' +
|
||||
'</ul>'
|
||||
});
|
||||
}
|
||||
|
||||
function redirect(url) {
|
||||
var
|
||||
hash_pos = url.indexOf('#'),
|
||||
query_pos = url.indexOf('?'),
|
||||
hash = '';
|
||||
if (hash_pos >=0 ) {
|
||||
hash = url.substring(hash_pos);
|
||||
url = url.substring(0, hash_pos);
|
||||
}
|
||||
url = url + (query_pos >= 0 ? '&' : '?') + 't=' + new Date().getTime() + hash;
|
||||
console.log('redirect to: ' + url);
|
||||
location.assign(url);
|
||||
}
|
||||
|
||||
// init:
|
||||
|
||||
function _bindSubmit($form) {
|
||||
$form.submit(function (event) {
|
||||
event.preventDefault();
|
||||
showFormError($form, null);
|
||||
var
|
||||
fn_error = $form.attr('fn-error'),
|
||||
fn_success = $form.attr('fn-success'),
|
||||
fn_data = $form.attr('fn-data'),
|
||||
data = fn_data ? window[fn_data]($form) : $form.serialize();
|
||||
var
|
||||
$submit = $form.find('button[type=submit]'),
|
||||
$i = $submit.find('i'),
|
||||
iconClass = $i.attr('class');
|
||||
if (!iconClass || iconClass.indexOf('uk-icon') < 0) {
|
||||
$i = undefined;
|
||||
}
|
||||
$submit.attr('disabled', 'disabled');
|
||||
$i && $i.addClass('uk-icon-spinner').addClass('uk-icon-spin');
|
||||
postJSON($form.attr('action-url'), data, function (err, result) {
|
||||
$i && $i.removeClass('uk-icon-spinner').removeClass('uk-icon-spin');
|
||||
if (err) {
|
||||
console.log('postJSON failed: ' + JSON.stringify(err));
|
||||
$submit.removeAttr('disabled');
|
||||
fn_error ? fn_error() : showFormError($form, err);
|
||||
}
|
||||
else {
|
||||
var r = fn_success ? window[fn_success](result) : false;
|
||||
if (r===false) {
|
||||
$submit.removeAttr('disabled');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
$form.find('button[type=submit]').removeAttr('disabled');
|
||||
}
|
||||
|
||||
$(function () {
|
||||
$('form').each(function () {
|
||||
var $form = $(this);
|
||||
if ($form.attr('action-url')) {
|
||||
_bindSubmit($form);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(function() {
|
||||
if (location.pathname === '/' || location.pathname.indexOf('/blog')===0) {
|
||||
$('li[data-url=blogs]').addClass('uk-active');
|
||||
}
|
||||
});
|
||||
|
||||
function _display_error($obj, err) {
|
||||
if ($obj.is(':visible')) {
|
||||
$obj.hide();
|
||||
}
|
||||
var msg = err.message || String(err);
|
||||
var L = ['<div class="uk-alert uk-alert-danger">'];
|
||||
L.push('<p>Error: ');
|
||||
L.push(msg);
|
||||
L.push('</p><p>Code: ');
|
||||
L.push(err.error || '500');
|
||||
L.push('</p></div>');
|
||||
$obj.html(L.join('')).slideDown();
|
||||
}
|
||||
|
||||
function error(err) {
|
||||
_display_error($('#error'), err);
|
||||
}
|
||||
|
||||
function fatal(err) {
|
||||
_display_error($('#loading'), err);
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
CryptoJS v3.1.2
|
||||
code.google.com/p/crypto-js
|
||||
(c) 2009-2013 by Jeff Mott. All rights reserved.
|
||||
code.google.com/p/crypto-js/wiki/License
|
||||
*/
|
||||
var CryptoJS=CryptoJS||function(e,m){var p={},j=p.lib={},l=function(){},f=j.Base={extend:function(a){l.prototype=this;var c=new l;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},
|
||||
n=j.WordArray=f.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=m?c:4*a.length},toString:function(a){return(a||h).stringify(this)},concat:function(a){var c=this.words,q=a.words,d=this.sigBytes;a=a.sigBytes;this.clamp();if(d%4)for(var b=0;b<a;b++)c[d+b>>>2]|=(q[b>>>2]>>>24-8*(b%4)&255)<<24-8*((d+b)%4);else if(65535<q.length)for(b=0;b<a;b+=4)c[d+b>>>2]=q[b>>>2];else c.push.apply(c,q);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<
|
||||
32-8*(c%4);a.length=e.ceil(c/4)},clone:function(){var a=f.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],b=0;b<a;b+=4)c.push(4294967296*e.random()|0);return new n.init(c,a)}}),b=p.enc={},h=b.Hex={stringify:function(a){var c=a.words;a=a.sigBytes;for(var b=[],d=0;d<a;d++){var f=c[d>>>2]>>>24-8*(d%4)&255;b.push((f>>>4).toString(16));b.push((f&15).toString(16))}return b.join("")},parse:function(a){for(var c=a.length,b=[],d=0;d<c;d+=2)b[d>>>3]|=parseInt(a.substr(d,
|
||||
2),16)<<24-4*(d%8);return new n.init(b,c/2)}},g=b.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var b=[],d=0;d<a;d++)b.push(String.fromCharCode(c[d>>>2]>>>24-8*(d%4)&255));return b.join("")},parse:function(a){for(var c=a.length,b=[],d=0;d<c;d++)b[d>>>2]|=(a.charCodeAt(d)&255)<<24-8*(d%4);return new n.init(b,c)}},r=b.Utf8={stringify:function(a){try{return decodeURIComponent(escape(g.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return g.parse(unescape(encodeURIComponent(a)))}},
|
||||
k=j.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new n.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=r.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,b=c.words,d=c.sigBytes,f=this.blockSize,h=d/(4*f),h=a?e.ceil(h):e.max((h|0)-this._minBufferSize,0);a=h*f;d=e.min(4*a,d);if(a){for(var g=0;g<a;g+=f)this._doProcessBlock(b,g);g=b.splice(0,a);c.sigBytes-=d}return new n.init(g,d)},clone:function(){var a=f.clone.call(this);
|
||||
a._data=this._data.clone();return a},_minBufferSize:0});j.Hasher=k.extend({cfg:f.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){k.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(c,b){return(new a.init(b)).finalize(c)}},_createHmacHelper:function(a){return function(b,f){return(new s.HMAC.init(a,
|
||||
f)).finalize(b)}}});var s=p.algo={};return p}(Math);
|
||||
(function(){var e=CryptoJS,m=e.lib,p=m.WordArray,j=m.Hasher,l=[],m=e.algo.SHA1=j.extend({_doReset:function(){this._hash=new p.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(f,n){for(var b=this._hash.words,h=b[0],g=b[1],e=b[2],k=b[3],j=b[4],a=0;80>a;a++){if(16>a)l[a]=f[n+a]|0;else{var c=l[a-3]^l[a-8]^l[a-14]^l[a-16];l[a]=c<<1|c>>>31}c=(h<<5|h>>>27)+j+l[a];c=20>a?c+((g&e|~g&k)+1518500249):40>a?c+((g^e^k)+1859775393):60>a?c+((g&e|g&k|e&k)-1894007588):c+((g^e^
|
||||
k)-899497514);j=k;k=e;e=g<<30|g>>>2;g=h;h=c}b[0]=b[0]+h|0;b[1]=b[1]+g|0;b[2]=b[2]+e|0;b[3]=b[3]+k|0;b[4]=b[4]+j|0},_doFinalize:function(){var f=this._data,e=f.words,b=8*this._nDataBytes,h=8*f.sigBytes;e[h>>>5]|=128<<24-h%32;e[(h+64>>>9<<4)+14]=Math.floor(b/4294967296);e[(h+64>>>9<<4)+15]=b;f.sigBytes=4*e.length;this._process();return this._hash},clone:function(){var e=j.clone.call(this);e._hash=this._hash.clone();return e}});e.SHA1=j._createHelper(m);e.HmacSHA1=j._createHmacHelper(m)})();
|
|
@ -0,0 +1,3 @@
|
|||
/*! UIkit 2.6.0 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */
|
||||
|
||||
!function(a){"function"==typeof define&&define.amd&&define("uikit-sticky",["uikit"],function(){return jQuery.fn.uksticky||a(window,window.jQuery,window.jQuery.UIkit)}),window&&window.jQuery&&window.jQuery.UIkit&&a(window,window.jQuery,window.jQuery.UIkit)}(function(a,b,c){var d={top:0,bottom:0,clsactive:"uk-active",clswrapper:"uk-sticky",getWidthFrom:""},e=b(window),f=b(document),g=[],h=e.height(),i=function(){for(var a=e.scrollTop(),c=f.height(),d=c-h,i=a>d?d-a:0,j=0;j<g.length;j++)if(g[j].stickyElement.is(":visible")){var k=g[j],l=k.stickyWrapper.offset().top,m=l-k.top-i;if(m>=a)null!==k.currentTop&&(k.stickyElement.css({position:"",top:"",width:""}).parent().removeClass(k.clsactive),k.currentTop=null);else{var n=c-k.stickyElement.outerHeight()-k.top-k.bottom-a-i;n=0>n?n+k.top:k.top,k.currentTop!=n&&(k.stickyElement.css({position:"fixed",top:n,width:k.stickyElement.width()}),"undefined"!=typeof k.getWidthFrom&&k.stickyElement.css("width",b(k.getWidthFrom).width()),k.stickyElement.parent().addClass(k.clsactive),k.currentTop=n)}}},j=function(){h=e.height()},k={init:function(a){var c=b.extend({},d,a);return this.each(function(){var a=b(this);if(!a.data("sticky")){var d=a.attr("id")||"s"+Math.ceil(1e4*Math.random()),e=b("<div></div>").attr("id","sticky-"+d).addClass(c.clswrapper);a.wrapAll(e),"right"==a.css("float")&&a.css({"float":"none"}).parent().css({"float":"right"}),a.data("sticky",!0);var f=a.parent();f.css("height",a.outerHeight()),g.push({top:c.top,bottom:c.bottom,stickyElement:a,currentTop:null,stickyWrapper:f,clsactive:c.clsactive,getWidthFrom:c.getWidthFrom})}})},update:i};return window.addEventListener("scroll",i,!1),window.addEventListener("resize",j,!1),b.fn.uksticky=function(a){return k[a]?k[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void b.error("Method "+a+" does not exist on jQuery.sticky"):k.init.apply(this,arguments)},b(document).on("uk-domready",function(){setTimeout(function(){i(),b("[data-uk-sticky]").each(function(){var a=b(this);a.data("sticky")||a.uksticky(c.Utils.options(a.attr("data-uk-sticky")))})},0)}),b.fn.uksticky});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,90 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
{% macro pagination(url, page) %}
|
||||
<ul class="uk-pagination">
|
||||
{% if page.has_previous %}
|
||||
<li><a href="{{ url }}{{ page.page_index - 1 }}"><i class="uk-icon-angle-double-left"></i></a></li>
|
||||
{% else %}
|
||||
<li class="uk-disabled"><span><i class="uk-icon-angle-double-left"></i></span></li>
|
||||
{% endif %}
|
||||
<li class="uk-active"><span>{{ page.page_index }}</span></li>
|
||||
{% if page.has_next %}
|
||||
<li><a href="{{ url }}{{ page.page_index + 1 }}"><i class="uk-icon-angle-double-right"></i></a></li>
|
||||
{% else %}
|
||||
<li class="uk-disabled"><span><i class="uk-icon-angle-double-right"></i></span></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% endmacro %}
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
{% block meta %}<!-- block meta -->hahahahahaahhah{% endblock %}
|
||||
<title>{% block title %} ? {% endblock %} - Moe Python Webapp</title>
|
||||
<link rel="stylesheet" href="/static/css/uikit.min.css">
|
||||
<link rel="stylesheet" href="/static/css/uikit.gradient.min.css">
|
||||
<link rel="stylesheet" href="/static/css/moe.css" />
|
||||
<script src="/static/js/jquery.min.js"></script>
|
||||
<script src="/static/js/sha1.min.js"></script>
|
||||
<script src="/static/js/uikit.min.js"></script>
|
||||
<script src="/static/js/sticky.min.js"></script>
|
||||
<script src="/static/js/vue.min.js"></script>
|
||||
<script src="/static/js/moe.js"></script>
|
||||
{% block beforehead %}<!-- before head -->{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
<nav class="uk-navbar uk-navbar-attached uk-margin-bottom">
|
||||
<div class="uk-container uk-container-center">
|
||||
<a href="/" class="uk-navbar-brand">NONONONONO</a>
|
||||
<ul class="uk-navbar-nav">
|
||||
<li data-url="blogs"><a href="/"><i class="uk-icon-home"></i> 11111111111</a></li>
|
||||
<li><a target="_blank" href="http://www.bing.com"><i class="uk-icon-book"></i> 2222222222</a></li>
|
||||
<li><a target="_blank" href="https://www.baidu.com"><i class="uk-icon-code"></i> 33333333333</a></li>
|
||||
</ul>
|
||||
<div class="uk-navbar-flip">
|
||||
<ul class="uk-navbar-nav">
|
||||
{% if __user__ %}
|
||||
<li class="uk-parent" data-uk-dropdown>
|
||||
<a href="#0"><i class="uk-icon-user"></i> {{ __user__.name }}</a>
|
||||
<div class="uk-dropdown uk-dropdown-navbar">
|
||||
<ul class="uk-nav uk-nav-navbar">
|
||||
<li><a href="/signout"><i class="uk-icon-sign-out"></i> 登出</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
{% else %}
|
||||
<li><a href="/signin"><i class="uk-icon-sign-in"></i> 登陆</a></li>
|
||||
<li><a href="/register"><i class="uk-icon-edit"></i> 注册</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="uk-container uk-container-center">
|
||||
<div class="uk-grid">
|
||||
<!-- content -->
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
<!-- // content -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="uk-margin-large-top" style="background-color:#eee; border-top:1px solid #ccc;">
|
||||
<div class="uk-container uk-container-center uk-text-center">
|
||||
<div class="uk-panel uk-margin-top uk-margin-bottom">
|
||||
<p>
|
||||
<a target="_blank" href="http://weibo.com/liaoxuefeng" class="uk-icon-button uk-icon-weibo"></a>
|
||||
<a target="_blank" href="https://github.com/michaelliao" class="uk-icon-button uk-icon-github"></a>
|
||||
<a target="_blank" href="http://www.linkedin.com/in/liaoxuefeng" class="uk-icon-button uk-icon-linkedin-square"></a>
|
||||
<a target="_blank" href="https://twitter.com/liaoxuefeng" class="uk-icon-button uk-icon-twitter"></a>
|
||||
</p>
|
||||
<p>Powered by <a href="http://moe.liaoxuefeng.com">Moe Python Webapp</a>. Copyright © 2014. [<a href="/manage/" target="_blank">Manage</a>]</p>
|
||||
<p><a href="http://www.liaoxuefeng.com/" target="_blank">www.liaoxuefeng.com</a>. All rights reserved.</p>
|
||||
<a target="_blank" href="http://www.w3.org/TR/html5/"><i class="uk-icon-html5" style="font-size:64px; color: #444;"></i></a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,38 @@
|
|||
{% extends '__base__.html' %}
|
||||
<!--从__base__.html继承一个blogs.html:-->
|
||||
{% block title %}文章列表{% endblock %}
|
||||
|
||||
{% block beforehead %}
|
||||
|
||||
<script>
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="uk-width-medium-3-4">
|
||||
{% for blog in blogs %}
|
||||
<article class="uk-article">
|
||||
<h2><a href="/blog/{{ blog.id }}">{{ blog.name }}</a></h2>
|
||||
<p class="uk-article-meta">发表于{{ blog.created_at|datetime }}</p>
|
||||
<p>{{ blog.summary }}</p>
|
||||
<p><a href="/blog/{{ blog.id }}">继续阅读 <i class="uk-icon-angle-double-right"></i></a></p>
|
||||
</article>
|
||||
<hr class="uk-article-divider">
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="uk-width-medium-1-4">
|
||||
<div class="uk-panel uk-panel-header">
|
||||
<h3 class="uk-panel-title">友情链接</h3>
|
||||
<ul class="uk-list uk-list-line">
|
||||
<li><i class="uk-icon-thumbs-o-up"></i> <a target="_blank" href="http://www.liaoxuefeng.com/category/0013738748415562fee26e070fa4664ad926c8e30146c67000">编程</a></li>
|
||||
<li><i class="uk-icon-thumbs-o-up"></i> <a target="_blank" href="http://www.liaoxuefeng.com/category/0013738748248885ddf38d8cd1b4803aa74bcda32f853fd000">读书</a></li>
|
||||
<li><i class="uk-icon-thumbs-o-up"></i> <a target="_blank" href="http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000">Python教程</a></li>
|
||||
<li><i class="uk-icon-thumbs-o-up"></i> <a target="_blank" href="http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000">Git教程</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
Loading…
Reference in New Issue