From 3d3474a2e1708bc484602324d4734aee8f776c55 Mon Sep 17 00:00:00 2001 From: www Date: Mon, 11 Jan 2021 18:45:03 +0000 Subject: [PATCH] multiple changes --- .dockerignore | 2 + .gitignore | 4 +- Dockerfile.theia | 6 + build_dev_docker_images | 12 + data/stuff.txt | 4 + docker-compose.dev.yml | 75 ++ ep_test.py | 3 +- example1.log | 14 + internfiles/__init__.py | 14 +- settings.py | 53 +- static/icons/fileicon.css | 196 ++++ static/icons/fileicon.eot | Bin 0 -> 47680 bytes static/icons/fileicon.html | 1280 ++++++++++++++++++++++++++ static/icons/fileicon.svg | 1726 ++++++++++++++++++++++++++++++++++++ static/icons/fileicon.ttf | Bin 0 -> 47504 bytes static/icons/fileicon.woff | Bin 0 -> 17044 bytes templates/internfiles.html | 19 +- templates/layout.html | 2 +- test2.py | 16 +- testgetattr.py | 27 +- tests/test_solr.py | 5 + tests/test_wiki.py | 46 + wiki/__init__.py | 94 +- wiki/api.py | 2 +- 24 files changed, 3517 insertions(+), 83 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile.theia create mode 100755 build_dev_docker_images create mode 100644 data/stuff.txt create mode 100644 docker-compose.dev.yml create mode 100644 example1.log create mode 100644 static/icons/fileicon.css create mode 100644 static/icons/fileicon.eot create mode 100644 static/icons/fileicon.html create mode 100644 static/icons/fileicon.svg create mode 100644 static/icons/fileicon.ttf create mode 100644 static/icons/fileicon.woff create mode 100644 tests/test_solr.py create mode 100644 tests/test_wiki.py diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..de3c62b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +_archiv/* +.env/* \ No newline at end of file diff --git a/.gitignore b/.gitignore index 149b8a2..250c0fb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ __pycache__ key.py *.pyc *.yaml -packages/* \ No newline at end of file +packages/* +.eggs/* +*.pyc \ No newline at end of file diff --git a/Dockerfile.theia b/Dockerfile.theia new file mode 100644 index 0000000..eb060e6 --- /dev/null +++ b/Dockerfile.theia @@ -0,0 +1,6 @@ +from theiaide/theia-python:latest +run apt-get update && apt-get -y install libgs-dev +COPY ./requirements.txt . +run pip3 install --upgrade pip && pip3 install -r requirements.txt && pip3 install pytest pylint bandit flake8 black pytest-django six pytest-mock +COPY . . +ENTRYPOINT node /home/theia/src-gen/backend/main.js /home/project/.theia-workspace --hostname=0.0.0.0 \ No newline at end of file diff --git a/build_dev_docker_images b/build_dev_docker_images new file mode 100755 index 0000000..2bbeb9a --- /dev/null +++ b/build_dev_docker_images @@ -0,0 +1,12 @@ +#/bin/bash +export REGISTRY="docker.triton2.fet.at" + +# Build a development Image with Theia and all content +docker build -f Dockerfile.theia -t $REGISTRY/andisdev:latest . +docker push $REGISTRY/andisdev + +# Build Solr Server Image +echo "Building SOLR Server Image Solrfet" +cd services/solr_server +docker build -t $REGISTRY/solrfet:latest . + diff --git a/data/stuff.txt b/data/stuff.txt new file mode 100644 index 0000000..9cd8861 --- /dev/null +++ b/data/stuff.txt @@ -0,0 +1,4 @@ +asdfwef +wefweg + +advgwegfawegewaf awfewfawefgae fgaergae \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..85f9f1f --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,75 @@ +version: '3' +services: + solr: + image: my_fet_solr + build: ./services/solr_server + ports: + - "8980:8983" + volumes: + - data:/var/solr + command: + - solr-precreate + - core + - /opt/solr/server/solr/configsets/fetconfig + solrprotocol: + image: my_fet_solr + build: ./services/solr_server + ports: + - "8980:8983" + volumes: + - data:/var/solr + command: + - solr-precreate + - core + - /opt/solr/server/solr/configsets/fetconfig + etherpadsql: + image: jbergstroem/mariadb-alpine + environment: + SKIP_INNODB: "no" + MYSQL_DATABASE: etherpaddb + MYSQL_USER: user + MYSQL_PASSWORD: hgu + MYSQL_COLLATION: utf8_general_ci + MYSQL_CHARSET: utf8 + volumes: + - ep-mysql-volume:/var/lib/mysql + etherpad: + image: etherpad/etherpad + environment: + DB_TYPE: mysql + DB_HOST: etherpadsql + DB_PORT: 3306 + DB_NAME: etherpaddb + DB_USER: user + DB_PASS: hgu + DB_CHARSET: utf8 + TRUST_PROXY: "true" + REQUIRE_SESSION: "true" + depends_on: + - etherpadsql + volumes: + - ./services/etherpad/APIKEY.txt:/opt/etherpad-lite/APIKEY.txt + ports: + - "9101:9001" + nginx: + image: nginx:alpine + volumes: + - ./services/nginx/default.conf:/etc/nginx/conf.d/default.conf + ports: + - "5000:80" +# bot: +# image: bot +# build: . +# environment: +# TARGET: https://andis.2020.fet.at +# SOLR_HOST: http://solr:8983 +# ports: +# - "5000:5000" + theia: + image: theiaide/theia-python:latest + volumes: + - .:/home/project + - ../packages:/home/packages +volumes: + data: + ep-mysql-volume: diff --git a/ep_test.py b/ep_test.py index 3961352..ed4b5d1 100644 --- a/ep_test.py +++ b/ep_test.py @@ -10,7 +10,8 @@ logger.debug("Starting Test ...") ep=EtherpadLiteLazyAPI( url="http://etherpad:9101", - keyfile="etherpad/APIKEY.txt", + exturl="https://bot.2020.fet.at/etherpad/", + keyfile="services/etherpad/APIKEY.txt", groupmapper="fetwiki" ) diff --git a/example1.log b/example1.log new file mode 100644 index 0000000..8c0b16a --- /dev/null +++ b/example1.log @@ -0,0 +1,14 @@ +INFO:root:sdf +INFO:sdf:sdf3 +INFO:wiki.api:connecting +INFO:wiki.api:apikey: +INFO:wiki.api:Can't get connection to Etherpad Server. Error: HTTP Error 401: Unauthorized +INFO:wiki.api:connecting +INFO:wiki.api:apikey: +INFO:wiki.api:Can't get connection to Etherpad Server. Error: HTTP Error 401: Unauthorized +INFO:wiki.api:connecting +INFO:wiki.api:apikey: +INFO:wiki.api:Can't get connection to Etherpad Server. Error: HTTP Error 401: Unauthorized +INFO:wiki.api:connecting +INFO:wiki.api:apikey: +INFO:wiki.api:Can't get connection to Etherpad Server. Error: HTTP Error 401: Unauthorized diff --git a/internfiles/__init__.py b/internfiles/__init__.py index b0dc2ff..396c801 100644 --- a/internfiles/__init__.py +++ b/internfiles/__init__.py @@ -5,7 +5,7 @@ import re from flask import redirect, url_for, send_from_directory from .pth import pth import bs4 - +from urllib.parse import urljoin bp = Blueprint("internfiles", __name__, url_prefix="/internfiles") @@ -35,9 +35,10 @@ class Folder: def load_file_and_folder(path: str = ""): f, directory = (None, None) path = pth(path) - datapath = pth("/mnt/save/daten") + datapath = pth("./data") filepath = datapath + path - + if not os.path.isdir(datapath): + return None, None if not str(path) == "" and not (filepath in datapath): return None, None @@ -56,14 +57,17 @@ def load_file_and_folder(path: str = ""): def web(path=""): f, d = load_file_and_folder(path) if not f and not d.p == path: - return redirect(url_for("internfiles.web", path=d.p), code=302) + path=urljoin("https://bot.2020.fet.at",url_for(".web", path=d.p)) + print(f"url for :{path}") + return redirect(path, code=302) text = None + print("Accessing internfiles.web path %s"% path) if f and f.endswith(".txt"): text = os.path.abspath(f) with open(os.path.abspath(f), "r", encoding='utf-8') as fh: text = (fh.read()) - text = re.sub("\\n\s*\\n", "
", text) + text = re.sub(r"\\n\s*\\n", "
", text) #text=bs4.BeautifulSoup(text).text elif f: return send_from_directory(str(f - 1), str(f[-1])) diff --git a/settings.py b/settings.py index 27f8658..7b946b0 100644 --- a/settings.py +++ b/settings.py @@ -1,20 +1,41 @@ +'''Settings für das interne Experimentierprojekt + + TARGET '2020.fet.at' + + URL_HOSTNAME 'bot.fet.at' + + SOLR_HOST 'solr:8930' + + ETHERPAD_API + + ETHERPAD_EXT + + ETHERPAD_KEYFILE + + ETHERPAD_GROUP + + CHATFILE Speicherpfad für Chats 'chats.yaml' + + USERFILE Speicerpfad für User 'users.yaml' +''' + import environ -STUFF="sdf" + + env = environ.Env( - SOLR_HOST=(str, "http://localhost:8980"), TARGET=(str, "https://alpha.2020.fet.at") + CHATFILE=(str, "chats.yaml"), + USERFILE=(str, "users.yaml"), + TARGET=(str, "https://alpha.2020.fet.at"), + URL_HOSTNAME=(str, "bot.2020.fet.at"), + SOLR_HOST=(str, "http://solr:8983"), ) +SOLR_HOST = env("SOLR_HOST") +CHATFILE = env("CHATFILE") +USERFILE = env("USERFILE") +TARGET = env("TARGET") +URL_HOSTNAME = env("URL_HOSTNAME") -TARGET=env("TARGET") -SOLR_HOST=env("SOLR_HOST") -env=environ.Env( - CHATFILE=(str,"chats.yaml"), - USERFILE=(str,"users.yaml"), - TARGET=(str,"https://alpha.2020.fet.at"), - URL_HOSTNAME=(str, "bot.2020.fet.at" ), - -) - -CHATFILE= env('CHATFILE') -USERFILE=env('USERFILE') -TARGET=env('TARGET') -URL_HOSTNAME=env('URL_HOSTNAME') \ No newline at end of file +ETHERPAD_API = ("http://etherpad:9001",) +ETHERPAD_EXT = ("https://bot.2020.fet.at/etherpad/",) +ETHERPAD_KEYFILE = ("services/etherpad/APIKEY.txt",) +ETHERPAD_GROUP = "fetwiki" diff --git a/static/icons/fileicon.css b/static/icons/fileicon.css new file mode 100644 index 0000000..3773bf7 --- /dev/null +++ b/static/icons/fileicon.css @@ -0,0 +1,196 @@ + /* + Fileicon icon font: Fileicon + Creation date: 30/08/2016 13:13 + */ + +@font-face { + font-family: "Fileicon"; + src: url("/static/icons/fileicon.eot"); + src: url("/static/icons/fileicon.eot?#iefix") format("embedded-opentype"), + url("/static/icons/fileicon.woff") format("woff"), + url("/static/icons/fileicon.ttf") format("truetype"), + url("/static/icons/fileicon.svg#Fileicon") format("svg"); + font-weight: normal; + font-style: normal; +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: "fileicon"; + src: url("/static/icons/fileicon.svg#Fileicon") format("svg"); + } +} + +[class^="fileicon-"]:before, [class*=" fileicon-"]:before, +[class^="fileicon-"]:after, [class*=" fileicon-"]:after { + font-family: Fileicon; + font-size: 20px; +font-style: normal; +margin-left: 20px; +} + +.fileicon-ae:before { content: "\f100"; } +.fileicon-agenda:before { content: "\f101"; } +.fileicon-ai:before { content: "\f102"; } +.fileicon-ai-1:before { content: "\f103"; } +.fileicon-ai-2:before { content: "\f104"; } +.fileicon-alignment:before { content: "\f105"; } +.fileicon-apk:before { content: "\f106"; } +.fileicon-au:before { content: "\f107"; } +.fileicon-br:before { content: "\f108"; } +.fileicon-browser:before { content: "\f109"; } +.fileicon-browser-1:before { content: "\f10a"; } +.fileicon-browser-10:before { content: "\f10b"; } +.fileicon-browser-11:before { content: "\f10c"; } +.fileicon-browser-12:before { content: "\f10d"; } +.fileicon-browser-13:before { content: "\f10e"; } +.fileicon-browser-14:before { content: "\f10f"; } +.fileicon-browser-15:before { content: "\f110"; } +.fileicon-browser-16:before { content: "\f111"; } +.fileicon-browser-17:before { content: "\f112"; } +.fileicon-browser-18:before { content: "\f113"; } +.fileicon-browser-19:before { content: "\f114"; } +.fileicon-browser-2:before { content: "\f115"; } +.fileicon-browser-20:before { content: "\f116"; } +.fileicon-browser-21:before { content: "\f117"; } +.fileicon-browser-22:before { content: "\f118"; } +.fileicon-browser-23:before { content: "\f119"; } +.fileicon-browser-24:before { content: "\f11a"; } +.fileicon-browser-25:before { content: "\f11b"; } +.fileicon-browser-26:before { content: "\f11c"; } +.fileicon-browser-27:before { content: "\f11d"; } +.fileicon-browser-28:before { content: "\f11e"; } +.fileicon-browser-3:before { content: "\f11f"; } +.fileicon-browser-4:before { content: "\f120"; } +.fileicon-browser-5:before { content: "\f121"; } +.fileicon-browser-6:before { content: "\f122"; } +.fileicon-browser-7:before { content: "\f123"; } +.fileicon-browser-8:before { content: "\f124"; } +.fileicon-browser-9:before { content: "\f125"; } +.fileicon-card:before { content: "\f126"; } +.fileicon-certification:before { content: "\f127"; } +.fileicon-coding:before { content: "\f128"; } +.fileicon-css:before { content: "\f129"; } +.fileicon-doc:before { content: "\f12a"; } +.fileicon-dw:before { content: "\f12b"; } +.fileicon-fi:before { content: "\f12c"; } +.fileicon-file:before { content: "\f12d"; } +.fileicon-file-1:before { content: "\f12e"; } +.fileicon-file-10:before { content: "\f12f"; } +.fileicon-file-11:before { content: "\f130"; } +.fileicon-file-2:before { content: "\f131"; } +.fileicon-file-3:before { content: "\f132"; } +.fileicon-file-4:before { content: "\f133"; } +.fileicon-file-5:before { content: "\f134"; } +.fileicon-file-6:before { content: "\f135"; } +.fileicon-file-7:before { content: "\f136"; } +.fileicon-file-8:before { content: "\f137"; } +.fileicon-file-9:before { content: "\f138"; } +.fileicon-files:before { content: "\f139"; } +.fileicon-files-1:before { content: "\f13a"; } +.fileicon-files-10:before { content: "\f13b"; } +.fileicon-files-11:before { content: "\f13c"; } +.fileicon-files-12:before { content: "\f13d"; } +.fileicon-files-13:before { content: "\f13e"; } +.fileicon-files-14:before { content: "\f13f"; } +.fileicon-files-15:before { content: "\f140"; } +.fileicon-files-2:before { content: "\f141"; } +.fileicon-files-3:before { content: "\f142"; } +.fileicon-files-4:before { content: "\f143"; } +.fileicon-files-5:before { content: "\f144"; } +.fileicon-files-6:before { content: "\f145"; } +.fileicon-files-7:before { content: "\f146"; } +.fileicon-files-8:before { content: "\f147"; } +.fileicon-files-9:before { content: "\f148"; } +.fileicon-folder:before { content: "\f149"; } +.fileicon-folder-1:before { content: "\f14a"; } +.fileicon-folder-10:before { content: "\f14b"; } +.fileicon-folder-11:before { content: "\f14c"; } +.fileicon-folder-2:before { content: "\f14d"; } +.fileicon-folder-3:before { content: "\f14e"; } +.fileicon-folder-4:before { content: "\f14f"; } +.fileicon-folder-5:before { content: "\f150"; } +.fileicon-folder-6:before { content: "\f151"; } +.fileicon-folder-7:before { content: "\f152"; } +.fileicon-folder-8:before { content: "\f153"; } +.fileicon-folder-9:before { content: "\f154"; } +.fileicon-fw:before { content: "\f155"; } +.fileicon-home:before { content: "\f156"; } +.fileicon-home-1:before { content: "\f157"; } +.fileicon-home-2:before { content: "\f158"; } +.fileicon-house:before { content: "\f159"; } +.fileicon-house-1:before { content: "\f15a"; } +.fileicon-house-2:before { content: "\f15b"; } +.fileicon-house-3:before { content: "\f15c"; } +.fileicon-house-4:before { content: "\f15d"; } +.fileicon-house-5:before { content: "\f15e"; } +.fileicon-house-6:before { content: "\f15f"; } +.fileicon-house-7:before { content: "\f160"; } +.fileicon-house-8:before { content: "\f161"; } +.fileicon-id:before { content: "\f162"; } +.fileicon-ipa:before { content: "\f163"; } +.fileicon-jpg:before { content: "\f164"; } +.fileicon-left-align:before { content: "\f165"; } +.fileicon-music-file:before { content: "\f166"; } +.fileicon-newspaper:before { content: "\f167"; } +.fileicon-pdf:before { content: "\f168"; } +.fileicon-php:before { content: "\f169"; } +.fileicon-placeholder:before { content: "\f16a"; } +.fileicon-placeholder-1:before { content: "\f16b"; } +.fileicon-placeholder-10:before { content: "\f16c"; } +.fileicon-placeholder-11:before { content: "\f16d"; } +.fileicon-placeholder-2:before { content: "\f16e"; } +.fileicon-placeholder-3:before { content: "\f16f"; } +.fileicon-placeholder-4:before { content: "\f170"; } +.fileicon-placeholder-5:before { content: "\f171"; } +.fileicon-placeholder-6:before { content: "\f172"; } +.fileicon-placeholder-7:before { content: "\f173"; } +.fileicon-placeholder-8:before { content: "\f174"; } +.fileicon-placeholder-9:before { content: "\f175"; } +.fileicon-png:before { content: "\f176"; } +.fileicon-ppt:before { content: "\f177"; } +.fileicon-pr:before { content: "\f178"; } +.fileicon-ps:before { content: "\f179"; } +.fileicon-ps-1:before { content: "\f17a"; } +.fileicon-report:before { content: "\f17b"; } +.fileicon-report-1:before { content: "\f17c"; } +.fileicon-report-10:before { content: "\f17d"; } +.fileicon-report-11:before { content: "\f17e"; } +.fileicon-report-2:before { content: "\f17f"; } +.fileicon-report-3:before { content: "\f180"; } +.fileicon-report-4:before { content: "\f181"; } +.fileicon-report-5:before { content: "\f182"; } +.fileicon-report-6:before { content: "\f183"; } +.fileicon-report-7:before { content: "\f184"; } +.fileicon-report-8:before { content: "\f185"; } +.fileicon-report-9:before { content: "\f186"; } +.fileicon-server:before { content: "\f187"; } +.fileicon-server-1:before { content: "\f188"; } +.fileicon-server-2:before { content: "\f189"; } +.fileicon-server-3:before { content: "\f18a"; } +.fileicon-server-4:before { content: "\f18b"; } +.fileicon-server-5:before { content: "\f18c"; } +.fileicon-server-6:before { content: "\f18d"; } +.fileicon-server-7:before { content: "\f18e"; } +.fileicon-server-8:before { content: "\f18f"; } +.fileicon-sg:before { content: "\f190"; } +.fileicon-sitemap:before { content: "\f191"; } +.fileicon-sitemap-1:before { content: "\f192"; } +.fileicon-sitemap-2:before { content: "\f193"; } +.fileicon-sitemap-3:before { content: "\f194"; } +.fileicon-storage:before { content: "\f195"; } +.fileicon-storage-1:before { content: "\f196"; } +.fileicon-storage-2:before { content: "\f197"; } +.fileicon-txt:before { content: "\f198"; } +.fileicon-video-file:before { content: "\f199"; } +.fileicon-video-file-1:before { content: "\f19a"; } +.fileicon-video-file-2:before { content: "\f19b"; } +.fileicon-video-file-3:before { content: "\f19c"; } +.fileicon-video-file-4:before { content: "\f19d"; } +.fileicon-video-file-5:before { content: "\f19e"; } +.fileicon-video-file-6:before { content: "\f19f"; } +.fileicon-video-file-7:before { content: "\f1a0"; } +.fileicon-video-file-8:before { content: "\f1a1"; } +.fileicon-viewer:before { content: "\f1a2"; } +.fileicon-xls:before { content: "\f1a3"; } +.fileicon-zip:before { content: "\f1a4"; } \ No newline at end of file diff --git a/static/icons/fileicon.eot b/static/icons/fileicon.eot new file mode 100644 index 0000000000000000000000000000000000000000..e783d0f8a68064599140e2b7940553edc3a76279 GIT binary patch literal 47680 zcmdsg37lM2neRP!zqj_~R&`hJRozvc-n-WBEZqs&2xKE9kgxC?EA@WtIY*RS4v!;aLJs}>1@@&!S7{1ZF3 zZ`r2*{;-M9Ud21V6Bnen*gxZ5xS!CvbI+mcJ+;PlILG(dWxMxn-E!aZFWin>Z^QZe zJzK8d&zSH!jtB7l=Dl0?Y`-&mpIZ=~xD1#+xPRZlLpMD8-F1TS)OQ3yeT26S?fayW zK7NI7{_g~r-6!As&)D<$yB;CBoAFKn{(vwC+cumTc-II`BYzQoBnU42(boRNi|?lSGY{~m@4#J3ZKg3x z?|KLCOK=9Nz_~26W3OUQLma&XiWjgKPM<#gb01xGUQ8`_8l iK+B4|IlF#j%k0=A2$vezc+Wd!melC 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

Hy#Xr{ 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 s{6!A@MGpK$4*W$9{6$%sc}`O`H=2R)`sRX + + + + + + + fileicon WebFont + + + + + + + + +

+ + Font Demo +
+ + +
+ +

Instructions

+ +
    +
  • + 1Copy the "Fonts" files and CSS files to your website CSS folder. +
  • +
  • + 2Add the CSS link to your website source code on header. + + <head> +
    ... +
    <link rel="stylesheet" type="text/css" href="your_website_domain/css_root/fileicon.css"> +
    ... +
    </head> +
    +
  • + +
  • +

    + 3Use the icon class on "display: inline" elements: +
    + Use example: <i class="fileicon-airplane49"></i> or <span class="fileicon-airplane49"></span> +

  • +
+ +
+ + + + +
+ + +
+
.fileicon-ae
+
Author: Retinaicons
+
+ +
+
.fileicon-agenda
+
Author: Retinaicons
+
+ +
+
.fileicon-ai
+
Author: Retinaicons
+
+ +
+
.fileicon-ai-1
+
Author: Retinaicons
+
+ +
+
.fileicon-ai-2
+
Author: Retinaicons
+
+ +
+
.fileicon-alignment
+
Author: Retinaicons
+
+ +
+
.fileicon-apk
+
Author: Retinaicons
+
+ +
+
.fileicon-au
+
Author: Retinaicons
+
+ +
+
.fileicon-br
+
Author: Retinaicons
+
+ +
+
.fileicon-browser
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-1
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-10
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-11
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-12
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-13
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-14
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-15
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-16
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-17
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-18
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-19
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-2
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-20
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-21
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-22
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-23
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-24
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-25
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-26
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-27
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-28
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-3
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-4
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-5
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-6
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-7
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-8
+
Author: Retinaicons
+
+ +
+
.fileicon-browser-9
+
Author: Retinaicons
+
+ +
+
.fileicon-card
+
Author: Retinaicons
+
+ +
+
.fileicon-certification
+
Author: Retinaicons
+
+ +
+
.fileicon-coding
+
Author: Retinaicons
+
+ +
+
.fileicon-css
+
Author: Retinaicons
+
+ +
+
.fileicon-doc
+
Author: Retinaicons
+
+ +
+
.fileicon-dw
+
Author: Retinaicons
+
+ +
+
.fileicon-fi
+
Author: Retinaicons
+
+ +
+
.fileicon-file
+
Author: Retinaicons
+
+ +
+
.fileicon-file-1
+
Author: Retinaicons
+
+ +
+
.fileicon-file-10
+
Author: Retinaicons
+
+ +
+
.fileicon-file-11
+
Author: Retinaicons
+
+ +
+
.fileicon-file-2
+
Author: Retinaicons
+
+ +
+
.fileicon-file-3
+
Author: Retinaicons
+
+ +
+
.fileicon-file-4
+
Author: Retinaicons
+
+ +
+
.fileicon-file-5
+
Author: Retinaicons
+
+ +
+
.fileicon-file-6
+
Author: Retinaicons
+
+ +
+
.fileicon-file-7
+
Author: Retinaicons
+
+ +
+
.fileicon-file-8
+
Author: Retinaicons
+
+ +
+
.fileicon-file-9
+
Author: Retinaicons
+
+ +
+
.fileicon-files
+
Author: Retinaicons
+
+ +
+
.fileicon-files-1
+
Author: Retinaicons
+
+ +
+
.fileicon-files-10
+
Author: Retinaicons
+
+ +
+
.fileicon-files-11
+
Author: Retinaicons
+
+ +
+
.fileicon-files-12
+
Author: Retinaicons
+
+ +
+
.fileicon-files-13
+
Author: Retinaicons
+
+ +
+
.fileicon-files-14
+
Author: Retinaicons
+
+ +
+
.fileicon-files-15
+
Author: Retinaicons
+
+ +
+
.fileicon-files-2
+
Author: Retinaicons
+
+ +
+
.fileicon-files-3
+
Author: Retinaicons
+
+ +
+
.fileicon-files-4
+
Author: Retinaicons
+
+ +
+
.fileicon-files-5
+
Author: Retinaicons
+
+ +
+
.fileicon-files-6
+
Author: Retinaicons
+
+ +
+
.fileicon-files-7
+
Author: Retinaicons
+
+ +
+
.fileicon-files-8
+
Author: Retinaicons
+
+ +
+
.fileicon-files-9
+
Author: Retinaicons
+
+ +
+
.fileicon-folder
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-1
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-10
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-11
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-2
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-3
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-4
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-5
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-6
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-7
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-8
+
Author: Retinaicons
+
+ +
+
.fileicon-folder-9
+
Author: Retinaicons
+
+ +
+
.fileicon-fw
+
Author: Retinaicons
+
+ +
+
.fileicon-home
+
Author: Retinaicons
+
+ +
+
.fileicon-home-1
+
Author: Retinaicons
+
+ +
+
.fileicon-home-2
+
Author: Retinaicons
+
+ +
+
.fileicon-house
+
Author: Retinaicons
+
+ +
+
.fileicon-house-1
+
Author: Retinaicons
+
+ +
+
.fileicon-house-2
+
Author: Retinaicons
+
+ +
+
.fileicon-house-3
+
Author: Retinaicons
+
+ +
+
.fileicon-house-4
+
Author: Retinaicons
+
+ +
+
.fileicon-house-5
+
Author: Retinaicons
+
+ +
+
.fileicon-house-6
+
Author: Retinaicons
+
+ +
+
.fileicon-house-7
+
Author: Retinaicons
+
+ +
+
.fileicon-house-8
+
Author: Retinaicons
+
+ +
+
.fileicon-id
+
Author: Retinaicons
+
+ +
+
.fileicon-ipa
+
Author: Retinaicons
+
+ +
+
.fileicon-jpg
+
Author: Retinaicons
+
+ +
+
.fileicon-left-align
+
Author: Retinaicons
+
+ +
+
.fileicon-music-file
+
Author: Retinaicons
+
+ +
+
.fileicon-newspaper
+
Author: Retinaicons
+
+ +
+
.fileicon-pdf
+
Author: Retinaicons
+
+ +
+
.fileicon-php
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-1
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-10
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-11
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-2
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-3
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-4
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-5
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-6
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-7
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-8
+
Author: Retinaicons
+
+ +
+
.fileicon-placeholder-9
+
Author: Retinaicons
+
+ +
+
.fileicon-png
+
Author: Retinaicons
+
+ +
+
.fileicon-ppt
+
Author: Retinaicons
+
+ +
+
.fileicon-pr
+
Author: Retinaicons
+
+ +
+
.fileicon-ps
+
Author: Retinaicons
+
+ +
+
.fileicon-ps-1
+
Author: Retinaicons
+
+ +
+
.fileicon-report
+
Author: Retinaicons
+
+ +
+
.fileicon-report-1
+
Author: Retinaicons
+
+ +
+
.fileicon-report-10
+
Author: Retinaicons
+
+ +
+
.fileicon-report-11
+
Author: Retinaicons
+
+ +
+
.fileicon-report-2
+
Author: Retinaicons
+
+ +
+
.fileicon-report-3
+
Author: Retinaicons
+
+ +
+
.fileicon-report-4
+
Author: Retinaicons
+
+ +
+
.fileicon-report-5
+
Author: Retinaicons
+
+ +
+
.fileicon-report-6
+
Author: Retinaicons
+
+ +
+
.fileicon-report-7
+
Author: Retinaicons
+
+ +
+
.fileicon-report-8
+
Author: Retinaicons
+
+ +
+
.fileicon-report-9
+
Author: Retinaicons
+
+ +
+
.fileicon-server
+
Author: Retinaicons
+
+ +
+
.fileicon-server-1
+
Author: Retinaicons
+
+ +
+
.fileicon-server-2
+
Author: Retinaicons
+
+ +
+
.fileicon-server-3
+
Author: Retinaicons
+
+ +
+
.fileicon-server-4
+
Author: Retinaicons
+
+ +
+
.fileicon-server-5
+
Author: Retinaicons
+
+ +
+
.fileicon-server-6
+
Author: Retinaicons
+
+ +
+
.fileicon-server-7
+
Author: Retinaicons
+
+ +
+
.fileicon-server-8
+
Author: Retinaicons
+
+ +
+
.fileicon-sg
+
Author: Retinaicons
+
+ +
+
.fileicon-sitemap
+
Author: Retinaicons
+
+ +
+
.fileicon-sitemap-1
+
Author: Retinaicons
+
+ +
+
.fileicon-sitemap-2
+
Author: Retinaicons
+
+ +
+
.fileicon-sitemap-3
+
Author: Retinaicons
+
+ +
+
.fileicon-storage
+
Author: Retinaicons
+
+ +
+
.fileicon-storage-1
+
Author: Retinaicons
+
+ +
+
.fileicon-storage-2
+
Author: Retinaicons
+
+ +
+
.fileicon-txt
+
Author: Retinaicons
+
+ +
+
.fileicon-video-file
+
Author: Retinaicons
+
+ +
+
.fileicon-video-file-1
+
Author: Retinaicons
+
+ +
+
.fileicon-video-file-2
+
Author: Retinaicons
+
+ +
+
.fileicon-video-file-3
+
Author: Retinaicons
+
+ +
+
.fileicon-video-file-4
+
Author: Retinaicons
+
+ +
+
.fileicon-video-file-5
+
Author: Retinaicons
+
+ +
+
.fileicon-video-file-6
+
Author: Retinaicons
+
+ +
+
.fileicon-video-file-7
+
Author: Retinaicons
+
+ +
+
.fileicon-video-file-8
+
Author: Retinaicons
+
+ +
+
.fileicon-viewer
+
Author: Retinaicons
+
+ +
+
.fileicon-xls
+
Author: Retinaicons
+
+ +
+
.fileicon-zip
+
Author: Retinaicons
+
+ + +
+ + + +
+ +
License and attribution:
Font generated by fileicon.com.

Under CC: Retinaicons

+
+
Copy the Attribution License:
+ + + +
+ +
+ +
Examples:
+ +
+

+ + <i class="fileicon-ae"></i> +

+
+ +
+

+ + <i class="fileicon-agenda"></i> +

+
+ +
+

+ + <i class="fileicon-ai"></i> +

+
+ +
+

+ + <i class="fileicon-ai-1"></i> +

+
+ + + +
+ + + + + + + \ No newline at end of file diff --git a/static/icons/fileicon.svg b/static/icons/fileicon.svg new file mode 100644 index 0000000..9f6110e --- /dev/null +++ b/static/icons/fileicon.svg @@ -0,0 +1,1726 @@ + + + + + +Created by FontForge 20120731 at Tue Aug 30 13:13:11 2016 + By Apache +Created by Apache with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/icons/fileicon.ttf b/static/icons/fileicon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4975215e6ad1bfe77196271de3432a5449e61955 GIT binary patch literal 47504 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 JHD~|A{|jx0xv~HN literal 0 HcmV?d00001 diff --git a/static/icons/fileicon.woff b/static/icons/fileicon.woff new file mode 100644 index 0000000000000000000000000000000000000000..89f5d4a0b9240b4dc14d731c222244626dc61ef9 GIT binary patch literal 17044 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 oP?BN -

asdf

-{{dir.p}} +

{{dir.p}}

    +{% for f in dir.dirs %} +
  • . +{{f}}
  • +{% endfor %}
+ + +