Browse Source

move project in calculate gitea

master
serkus01 11 months ago
parent
commit
6561a702c4
38 changed files with 2373 additions and 1 deletions
  1. +7
    -0
      ChangeLog
  2. +28
    -1
      README.md
  3. +29
    -0
      README.txt
  4. BIN
      __pycache__/findfsdb.cpython-36.pyc
  5. BIN
      __pycache__/findfsdb.cpython-38.pyc
  6. BIN
      __pycache__/package.cpython-36.pyc
  7. BIN
      __pycache__/package.cpython-38.pyc
  8. +145
    -0
      client.py
  9. +1
    -0
      config.json
  10. +0
    -0
      dump.eix
  11. BIN
      favicon.png
  12. +85
    -0
      findfsdb.py
  13. +73
    -0
      package.py
  14. +1
    -0
      pkgs.json
  15. +26
    -0
      server.py
  16. BIN
      src/__pycache__/handler.cpython-36.pyc
  17. BIN
      src/__pycache__/handler.cpython-38.pyc
  18. BIN
      src/__pycache__/route.cpython-36.pyc
  19. BIN
      src/__pycache__/route.cpython-38.pyc
  20. +171
    -0
      src/handler.py
  21. +29
    -0
      src/route.py
  22. +6
    -0
      start
  23. +0
    -0
      test.db
  24. BIN
      utils/__pycache__/utils.cpython-36.pyc
  25. BIN
      utils/__pycache__/utils.cpython-38.pyc
  26. +13
    -0
      utils/get_icon.py
  27. +124
    -0
      utils/utils.py
  28. +1
    -0
      view/static/js
  29. +14
    -0
      views/404.html
  30. +23
    -0
      views/README.txt
  31. +559
    -0
      views/blank.html
  32. +70
    -0
      views/index.html
  33. +140
    -0
      views/index.html.old
  34. +12
    -0
      views/license.txt
  35. BIN
      views/navigation-bar-by-jan-kadera.zip
  36. +773
    -0
      views/profile.html
  37. BIN
      views/vertical-css-menus201017.zip
  38. +43
    -0
      xml2json.py

+ 7
- 0
ChangeLog View File

@@ -0,0 +1,7 @@
00.0.002 - Добавлено выдача overlays
00.0.003 - Добавлены: светлая тема, исправлены некоторые недочёты в интефейсе, реализована выдача параметров пакета по принту(выхлоп в терминале), добавлен пункт меня где по задумке будет находится рекомендации и другая инфоормация(информация проектахб возможно видео или летна активновсти вики).
00.0.004 - Наконец-то выводится информация о паекте.
00.0.005 - Добавалены В выдачу информаци о пакете USE флаги, сделан каркас настройки portage конфигов исправлены некоторые мелкие недочеты в коде, исправлена светлая тема.
00.0.006 - Исравлены некоторые, но не все недочёты. Добалена боковая панель, не помню зачем, вспомню допишу. вынесен обработчик запросов к каталог ./src/
00.0.007 - Исправлены пороки UI,
00.0.008 - Добавлен шрифт, поправлен код, Исправлен UI, намётона главная станичка.

+ 28
- 1
README.md View File

@@ -1,2 +1,29 @@
# webport
<div style="text-align: left;">
<h3 align="center">GRUSS ALLE</h3>

</b>ЧТО ЭТО ТАКОЕ:</b>
<p>
Это проект Web GUI для пакетного менеджера Portage(Gentoo, Calculate-linux).
Этот продукт предстовляет из себя клиент-серверное приложение.</p>
<b>Цели:</b>
<p>
Предоставть удобный Гуй portage, для таких утройств как Планшеты, смртфоны,
предоставить удаленный доступ к portage на клиенткой машине
Снизить порог вхождения для новых пользователей на дистрибутивах имеющих в свой основе пакетный менеджер portage</p>



<b>КАК СОБРАТЬ И ЗАПУСТИТЬ:</b>
<ol>
<p>Нужен диструтив использующий portage.</p>
<li>Скачайте дистрибутив проекта<li>
<li>Введите в терминале:</li>
<code>
<i style="color: red;">cd web_pоrt &&
git clone https://github.com/brython-dev/brython.git ./view/static/js/ <i>
<b> или скачайте Brython и распакуйте его в ./view/static/js/ </b>
</code>
<li>Запустите его ./start<li>
<li>Откройте в браузере localhost:8080</li>
</ol>
<div>

+ 29
- 0
README.txt View File

@@ -0,0 +1,29 @@
<div style="text-align: left;">
<h3 align="center">GRUSS ALLE</h3>

</b>ЧТО ЭТО ТАКОЕ:</b>
<p>
Это проект Web GUI для пакетного менеджера Portage(Gentoo, Calcukate-linux).
Этот продукт предстовляет из себя клиент-серверное приложение.</p>
<b>Цели:</b>
<p>
Предоставть удобный Гуй portage, для таких утройств как Планшеты, смртфоны
Предоставить удаленный доступ к portag на клиенткой машине
Снизить порог вхождения для новых пользователей на дистрибутивах имеющих в свой основе пакетный менеджер portage</p>



<b>КАК СОБРАТЬ И ЗАПУСТИТЬ:</b>
<ol>
<p>Нужен диструтив использущий дастрибутив использующий portage.</p>
<li>Скачайте дистрибутив проекта<li>
<li>Введите в терминале:</li>
<code>
<i style="color: red;">cd web_pоrt &&
git clone https://github.com/brython-dev/brython.git ./view/static/js/brython <i>
<b> или скачайте Brython и раскакуйте его в ./view/static/js/brython <b>
</code>
<li>Запустите его ./start<li>
<li>Откройте в браузере localhost:8000</li>
</ol>
<div>

BIN
__pycache__/findfsdb.cpython-36.pyc View File


BIN
__pycache__/findfsdb.cpython-38.pyc View File


BIN
__pycache__/package.cpython-36.pyc View File


BIN
__pycache__/package.cpython-38.pyc View File


+ 145
- 0
client.py View File

@@ -0,0 +1,145 @@
#-*- coding: UTF-8 -*-
#/usr/bin/env python3

from PyQt5.QtCore import QFile, QIODevice, Qt, QTextStream, QUrl
from PyQt5.QtWidgets import (QAction, QApplication, QLineEdit, QMainWindow,
QSizePolicy, QStyle, QTextEdit)
from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkRequest
from PyQt5.QtWebKitWidgets import QWebPage, QWebInspector, QWebView

#import jquery_rc

class MainWindow(QMainWindow):
def __init__(self, url):
super(MainWindow, self).__init__()

self.progress = 0
fd = QFile(":/views/static/js/brython.js")

if fd.open(QIODevice.ReadOnly | QFile.Text):
self.Bryton = QTextStream(fd).readAll()
fd.close()
else:
self.Brython= ''
QNetworkProxyFactory.setUseSystemConfiguration(True)

self.view = QWebView(self)
self.view.load(url)
self.view.loadFinished.connect(self.adjustLocation)
self.view.titleChanged.connect(self.adjustTitle)
self.view.loadProgress.connect(self.setProgress)
self.view.loadFinished.connect(self.finishLoading)
self.inspector = QWebInspector()
self.inspector.setPage(self.view.page())
toolBar = self.addToolBar("Navigation")
toolBar.addAction(self.view.pageAction(QWebPage.Back))
toolBar.addAction(self.view.pageAction(QWebPage.Forward))
toolBar.addAction(self.view.pageAction(QWebPage.Reload))
toolBar.addAction(self.view.pageAction(QWebPage.Stop))
self.setCentralWidget(self.view)
def viewSource(self):
accessManager = self.view.page().networkAccessManager()
request = QNetworkRequest(self.view.url())
reply = accessManager.get(request)
reply.finished.connect(self.slotSourceDownloaded)

def slotSourceDownloaded(self):
reply = self.sender()
self.textEdit = QTextEdit()
self.textEdit.setAttribute(Qt.WA_DeleteOnClose)
self.textEdit.show()
self.textEdit.setPlainText(QTextStream(reply).readAll())
self.textEdit.resize(600, 400)
reply.deleteLater()

def adjustLocation(self):
#self.locationEdit.setText(self.view.url().toString())
print("Change url")
print(self.view.url().toString())
#elf.view.load(self.view.url())
def changeLocation(self):
#url = QUrl.fromUserInput(self.locationEdit.text())
self.view.load(url)
self.view.setFocus()

def adjustTitle(self):
if 0 < self.progress < 100:
self.setWindowTitle("%s (%s%%)" % (self.view.title(), self.progress))
else:
self.setWindowTitle(self.view.title())

def setProgress(self, p):
self.progress = p
self.adjustTitle()

def finishLoading(self):
self.progress = 100
self.adjustTitle()
self.view.page().mainFrame().evaluateJavaScript(self.Brython)

def highlightAllLinks(self):
code = """$('a').each(
function () {
$(this).css('background-color', 'yellow')
}
)"""
self.view.page().mainFrame().evaluateJavaScript(code)

def rotateImages(self, invert):
if invert:
code = """
$('img').each(
function () {
$(this).css('-webkit-transition', '-webkit-transform 2s');
$(this).css('-webkit-transform', 'rotate(180deg)')
}
)"""
else:
code = """
$('img').each(
function () {
$(this).css('-webkit-transition', '-webkit-transform 2s');
$(this).css('-webkit-transform', 'rotate(0deg)')
}
)"""

self.view.page().mainFrame().evaluateJavaScript(code)

def removeGifImages(self):
code = "$('[src*=gif]').remove()"
self.view.page().mainFrame().evaluateJavaScript(code)

def removeInlineFrames(self):
code = "$('iframe').remove()"
self.view.page().mainFrame().evaluateJavaScript(code)

def removeObjectElements(self):
code = "$('object').remove()"
self.view.page().mainFrame().evaluateJavaScript(code)

def removeEmbeddedElements(self):
code = "$('embed').remove()"
self.view.page().mainFrame().evaluateJavaScript(code)


if __name__ == '__main__':

import sys

app = QApplication(sys.argv)

if len(sys.argv) > 1:
url = QUrl(sys.argv[1])
else:
url = QUrl('http://localhost:8000')

browser = MainWindow(url)
browser.show()

sys.exit(app.exec_())

+ 1
- 0
config.json View File

@@ -0,0 +1 @@
{"PORT": 8000, "Lang": "ru", "THEME": "default"}

+ 0
- 0
dump.eix View File


BIN
favicon.png View File

Before After
Width: 16  |  Height: 16  |  Size: 651 B

+ 85
- 0
findfsdb.py View File

@@ -0,0 +1,85 @@
#/usr/bin/env python
# -*- coding: UTF-8 -*-
import os, sys
import json

# создаём разширеную базу пактов с предлизительно структурой
#pkg_list ={"category": [{name: name_pkg, versions:[list_version]}]}
# и клладём это всё в json
#
#

def create_db():
pkg_list ={}
port_dir =["/var/lib/layman/", "/usr/portage"]
if not os.path.exists('./pkgs.json'):
print("Create ramdb")
pkg_name =""
all_pkgs = []
with open('./pkgs.json', 'a') as fn:
for p in port_dir:
for d, dirs, files in os.walk(p):
for f in files:
if f.endswith('.ebuild'):
#print(d +"/" + f)
pkg_name =""
try:
#ver=int(f.replace('.ebuild', '').split('-')[-1][0])
for pn in f.replace('.ebuild', '').split('-')[:-1]:
pkg_name = pkg_name + pn + "-"
except TypeError:
for pn in f.replace('.ebuild', '').split('-')[:-2]:
pkg_name = pkg_name + pn + "-"
except Exception as e:
print(e)

if not pkg_name[:-1] in all_pkgs:

print(str(d.split("/")[-2] +"/" + d.split("/")[-1] +"\n"))
all_pkgs.append(str(d.split("/")[-2] +"/" + d.split("/")[-1]))

if d.split("/")[-2] not in pkg_list.keys():
pkg_list[str(d.split("/")[-2])] = []
pkg_list[d.split("/")[-2]].append(d.split('/')[-1])
print([d.split("/")[-2]])
else:
if d.split('/')[-1] not in pkg_list[d.split('/')[-2]]:
pkg_list[d.split("/")[-2]].append(d.split('/')[-1])
print([d.split('/')[-1]])

fn.write(json.dumps({"all_pkgs": all_pkgs,"Catalog": pkg_list}))
#print(len(pkg_list))

print("Found:\t"+ str(len(pkg_list.keys())) + " category\n" + str(len(all_pkgs)) +"packages\n")

def on_find(p_v):
if not os.path.exists('./pkgs.json'):
create_db()
p = []
ret_p =""
ret = {}
with open('./pkgs.json', 'r') as fn:
#data = fn.read()
pkg_list= fn.read()
"""
pkg_list = data.split("\n")
for i in pkg_list:
if p_v in i and not i in p:
print(i)
p.append(str(i))
#ret_p = ret_p +"\t" + i
print("Find in template:\t" + str(len(p)))
"""
#ret = {"Name": ret_p.split("\t")}
#print(ret_p)
print(p)
return pkg_list #json.dumps(ret)

if __name__ == '__main__':
if not os.path.exists('./pkgs.txt'):
create_db()
if len(sys.argv) >=2:
on_find(sys.argv[1])
else:
print("No element to find")


+ 73
- 0
package.py View File

@@ -0,0 +1,73 @@
# -*- coding: UTF-8 -*-
#!/usr/bin/env python.3.7
import json
try:
import portage
portage.root
portge = portage.db[portage.root]["porttree"].dbapi
except Exception as e:
print("Not Found Portage")
from utils.utils import sort_inatll_pkg
#ПЛАН:
#
# API PORTAGE IN SEARCH
class Package():
def __init__(self):
self.Cat =[]
self.pkg = {}
self.Category =""
self.Name = ""
self.version =""
self.USE =""
self.Description = ""
self.Home_page =""
self.repository = ""

def search(self, r_p):
try:
pametrs = ["HOMEPAGE", "IUSE","DESCRIPTION", "repository", "LICENSE"]
#print(r_p)
p_list = portge.xmatch('match-all', r_p)
m_list = portge.xmatch('match-visible', r_p)
#print(m_list)
#print(len(p_list))
if len(p_list) != 0:
for l in p_list:
params = portge.aux_get(l, pametrs)
if str(self.Cat) in self.Category and str(l).split('/')[1].split('-')[0] in self.Name:
self.version = self.version + " " + str(l.replace(l.split("/")[0] + "/"+ r_p, ""))
if not l in m_list:
self.version = str(self.version) +"[M]"
else:
self.version = str(self.version) +"[U]"
#version + " " + str(l).split('/')[1].split('-')[:-1]
else:
self.Category= str(self.Cat)
#Name =str(l).split('/')[1].split('-')[0]

self.Name = l.split("/")[0] +"/" + r_p
self.version = str(l.replace(l.split("/")[0] + "/"+r_p, ""))
if not l in m_list:
self.version = str(self.version) + "[M]"
else:
self.version = str(self.version) +"[U]"

self.USE = params[1]
self.Description = params[2]
self.Home_page = params[0]
self.repository = params[3]
else:
self.Name = "Package is not Found"

#print(Category + "\n" + Name + "\n" + version +"\n" + USE + "\n" + Description + "\n" + Home_page +"\n")
#p_list = str(Category + "\n" + Name + "\n" + version +"\n" + USE + "\n" + Description + "\n" + Home_page +"\n")
except Exception as e:
print(str(e))
p_list = " ERROR IN Package "
self.pkg = {"Category": self.Category, "Name": self.Name,"version": self.version.split(" "), "USE":self.USE.split(" "), "Description": self.Description, "Home_page":self.Home_page, 'repo': str(self.repository) }
print(self.pkg)
return self.pkg

+ 1
- 0
pkgs.json
File diff suppressed because it is too large
View File


+ 26
- 0
server.py View File

@@ -0,0 +1,26 @@
# -*- coding: UTF-8 -*-
#!/usr/bin/env pyton3
from http.server import HTTPServer
from src.handler import Handler as Handler
import os, sys, json
#PORT_NUMBER = 8000
from findfsdb import create_db
from utils.utils import load_config
def run():
create_db()
config = load_config()
if len(config) ==0:
print("конфиг пустой")
try:
print(config['PORT'])
except KeyError:
print("KeyError")
except KeyboardInterrupt:
pass

server = HTTPServer(('', config['PORT']), Handler)
print ('Started HTTP Server on port ' , config['PORT'])
server.serve_forever()
if __name__ == '__main__':
run()

BIN
src/__pycache__/handler.cpython-36.pyc View File


BIN
src/__pycache__/handler.cpython-38.pyc View File


BIN
src/__pycache__/route.cpython-36.pyc View File


BIN
src/__pycache__/route.cpython-38.pyc View File


+ 171
- 0
src/handler.py View File

@@ -0,0 +1,171 @@

#!/usr/bin/env python3.7

import json
#from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
from http.server import BaseHTTPRequestHandler
import os
from io import BytesIO
from utils.utils import get_list_overlays, load_config, write_config, sort_inatll_pkg, scan_config_portage
from package import Package
from findfsdb import on_find
from src.route import Router
#repl = '<?xml version=\'1.0\' encoding=\'utf-8\'?>\n<!DOCTYPE repositories SYSTEM "http://www.gentoo.org/dtd/repositories.dtd">'
class Handler(BaseHTTPRequestHandler):

def r_403(self):
self.send_response(403)
self.end_headers()
print(self.client_address)
def r_404(self):
self.send_response(404)
self.end_headers()
print(self.client_address)

def route(self):
if self.path in route:
return true
else:
return false

def parse_url(self):
pass

def do_GET(self):
self.r_t =""
#print(Router.parse_url(self))
#print("data:\t" + self.rfile.read())
#request = Router.parse_url(self).decode('utf-8')
if self.client_address[0] == '127.0.0.1' or self.client_address[0].startswith('10.0'):
self.send_response(200)
self.end_headers()
if self.path =="/":
#content_len = int(self.headers(['Content-Length']))
#post_body = self.rfile.read('content_len')
#data = json.loads(post_body)
#print(data)
with open('./views/index.html', 'tr') as f:
self.r_t=f.read()
print(self.client_address)

elif self.path == '/main':
print(self.rfile/read())
with open("./README.txt", 'r') as f:
self.r_t = str(f.read())

elif self.path == '/ovelays':
overlays = get_list_overlays()
#print(ovls)
if overlays: # == "":
overlays ="Error"

self.r_t=json.dumps({"repositories": overlays})
elif self.path == "/favicon.ico":
with open('./favicon.png', 'rb') as f:
self.r_t = f.read()
elif self.path == '/logo.png':
pass

elif self.path.startswith( "/static/"):
self.r_static()
self.send_response(200)
#print(self.r_t)

elif self.path == '/get_dump_list':
try:
with open('./pkgs.json', 'r') as fn:
data = fn.read()
pkg_list = json.load
s(data)
print(pkg_list)
except Exception (e):
print(str(e))
self.r_t = json.dumps({"dump_portage": pkg_list})
elif self.path.startswith("/?st_app="):
#config = load_config()
#param = self.path.replace("/?st_app=", "")
#list_param = param.split(',')
#print(list_param)
for i in list_param:
if i.startswith('port'):
port = int(i.split('=')[1])
elif i.startswith('Lang'):
Lang = i.split('=')[1]
write_config(port, Lang)
print(config)
print(param)

elif self.path == 'find':
param = request['params']['name']
pk_list = []
search_result = {}
#if len(param.split('/')) == 2:
# param = param.split('/')[1]
#p_list = on_find(param)
#print(p_list)
#if len(p_list) == 0:
# print("Never Found")
# self.r_t = str(json.dumps({"Package_result": p_list}))
#else:
#for p in p_list:
#print(p)
if len(param.split("/")) == 2:
pk_list.append(Package().search(param.split("/")[1]))
else:
pk_list.append(Package().search(param))
#print(pk)
search_result = {"Package_result": pk_list}
self.r_t = str(json.dumps(search_result))

elif self.path == "get_settings_app":

self.r_t = str(json.dumps(load_config()))

elif self.path == 'get_portage':

#self.r_t = str(sort_inatll_pkg())
self.r_t = str(json.dumps(scan_config_portage()))

elif '.py?' in self.path:
print("loading")
self.path = "/static/app" + str(self.path.split('?')[0])
print(self.path)
self.r_static()

else:
self.send_response(404)
self.end_headers()
print(str(self.client_address[0]) +"\t" + str(404))

# Send the html message
#self.wfile.write(bytes(self.r_t, "utf-8"))
try:
return self.wfile.write(self.r_t)
except TypeError:
#print("TypeError")
return self.wfile.write(bytes(self.r_t, 'utf-8'))
else:
self.r_403()

def r_static(self):
if os.path.exists('./views/' + self.path):
#self.send_response(200)
#self.end_headers()
with open('./views/' + self.path, 'tr') as f:
self.r_t=f.read()
else:
self.send_response(404)
self.end_headers()
def do_POST(self):
self._set_headers()
content_len = int(self.headers.getheader('content-length', 0))
post_body = self.rfile.read(content_len)
data = json.loads(post_body)
print(data)

+ 29
- 0
src/route.py View File

@@ -0,0 +1,29 @@
# -*- codding: utf-8 -*-
#!/usr/bin/env python3
from io import StringIO ## for Python 3
from http.server import BaseHTTPRequestHandler
import json
class Router(BaseHTTPRequestHandler):
def __int__(self):
self.p_list = []
self.r_t = ""
pass
def route(self):
if self.path in route:
return true
else:
return false
def parse_url(request):
print("request.rfile:\t" + str(request.rfile.read()))
#return json.loads(str(request.rfile.read()))

"""
def do_GET(self):
pass
def do_POST(self):
pass
"""

+ 6
- 0
start View File

@@ -0,0 +1,6 @@
#/bin/bash
#rm ./gpo-repositories.xml
#wget http://gpo.zugaina.org/lst/gpo-repositories.xml &&
python3 server.py

#python client.py

+ 0
- 0
test.db View File


BIN
utils/__pycache__/utils.cpython-36.pyc View File


BIN
utils/__pycache__/utils.cpython-38.pyc View File


+ 13
- 0
utils/get_icon.py View File

@@ -0,0 +1,13 @@
# -*- codding: UFT-8 -*-
#/usr/bin/env python3
import requests
from PIL import Image
from io import StringIO
#req = requests.get('https://api.github.com/events')
payload = {'s': '16'}
req = requests.get('https://iconbird.com/png/download.php?id=15895', params=payload)
#print(r.content)

i = Image.open(StringIO(req.content))

i.save('image')

+ 124
- 0
utils/utils.py View File

@@ -0,0 +1,124 @@
# -*- coding: UTF-8 -*-
#!/usr/bin/env python3
'__autor__'== 'serkus'
import os, sys, json
from urllib import request
#import xml
import xml.etree.ElementTree as ET
#Проверяем пользователь ROOT или нет
def is_root():
return os.geteuid() == 0
#Читаем Файл посторочно
def read_configs(filename):
param = {}
if os.path.exists(filename):
with open(filename) as f:
for line in f:
print(line)
else:
print("Path is not Found")

#получаем список оверлеев

def get_list_overlays():
overlays =""
url = "https://api.gentoo.org/overlays/repositories.xml"
response = request.urlopen(url)
overlays = []
overlay = {}
root = ET.fromstring(response.read())
#print(root.tag)
#print(root.attrib)
name = ""
description = ""
homepage = ""
for child in root.findall('repo'):
name = child.find('name').text
#try:
description = child.find('description').text
#except AttributeError:
# description = "У overlay нет описания"
try:
homepage = child.find('homepage').text
except AttributeError:
homepage = "У overlay нет домашней странички"
overlay = dict(name=name, description=description, homepage=homepage)

overlays.append(overlay)
#print(str(overlays))
print(len(overlays))
#f=open('./overlays.json', 'a')
#f.write(json.dumps({"repositories": overlays}))
#f.close()

return overlays


def xml_element_to_dict(elem):
"Convert XML Element to a simple dict"
inner = dict(elem.attrib)
children = list(map(xml_element_to_dict, list(elem)))
text = elem.text and elem.text.strip()
if text:
inner['@text'] = text
if children:
inner['@children'] = children
return {elem.tag: inner}

def xml2json(xmldata):
pass
#doc = ET.parse(xmldata)
#root = root = ET.fromstring(xmldata)

def write_config(port=8000, Lang='ru', theme="default"):
conf = dict(PORT=port, Lang=Lang, THEME=theme)
with open('./config.json', 'w') as f:
json.dump(conf, f)
return conf

def read_config():
with open('./config.json', 'r') as f:
conf = json.load(f)
return conf

def load_config():
conf = {}
if not os.path.exists("./config.json"):
write_config()
else:
conf = read_config()
return conf

#SORT IN INTALL PAKAGES
#'/var/db/pkg/'
def sort_inatll_pkg():
INSTALL = []
path = '/var/db/pkg'
for d, dirs, files in os.walk(path):
for f in files:
if f.endswith('.ebuild'):
INSTALL.append(f.replace('.ebuild', ""))
#print(str(len(INSTALL)))
return json.dumps({'install_pkgs':INSTALL})

def scan_config_portage():
dir_root ="/etc/portage"
config = {}
i = 0
dr = {}
data = {}
pf={}
for d, dirs, files in os.walk(dir_root):
print(str(d))
i=i+1
for fl in files:
with open(d + "/" +fl) as f:
pf[str(d.split('/')[-1]) + "/"+ fl]= f.read().split('\n')
str(d.split('/')[-1])
print(dr)
config = {'portage': pf}
print("config:\t" + str(config))
return config

+ 1
- 0
view/static/js

@@ -0,0 +1 @@
Subproject commit 8ec046485ccdcfcee73c114fc9e3186882ed6ccf

+ 14
- 0
views/404.html View File

@@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Page is not Found</title>
<style type="text/css">
h1{ display: flex; }
</style>
</head>
<body>
<h1>404 page is NOT Found</h1>
</body>
</html>

+ 23
- 0
views/README.txt View File

@@ -0,0 +1,23 @@
GRUSS ALLE

ЧТО ЭТО ТАКОЕ:
Это проект Web GUI для пакетного менеджера Portage(Gentoo, Calcukate-linux).
Этот продукт предстовляет из себя клиент-серверное приложение.
Цели:
Предоставить удобный Гуй portage, для таких утройств как Планшеты, смартфоны.
Предоставить удаленный доступ к portagу на клиентской машине.
Снизить порог вхождения для новых пользователей на дистрибутивах имеющих в свой основе пакетный менеджер portageю



КАК СОБРАТЬ И ЗАПУСТИТЬ:

1.Нужен диструтив использущий дистрибутив использующий portage.
2.Скачайте дистрибутив проекта.
3.Введите в терминале:
cd web_pоrt &&
git clone https://github.com/brython-dev/brython.git ./view/static/js/brython
скачайте Brython и распакуйте его в ./view/static/js/brython

4.Запустите ./start
5.Откройте в браузере localhost:8080

+ 559
- 0
views/blank.html View File

@@ -0,0 +1,559 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" type="image/png" sizes="16x16" href="../plugins/images/favicon.png">
<title>Ample Admin Template - The Ultimate Multipurpose admin template</title>
<!-- Bootstrap Core CSS -->
<link href="bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Menu CSS -->
<link href="../plugins/bower_components/sidebar-nav/dist/sidebar-nav.min.css" rel="stylesheet">
<!-- animation CSS -->
<link href="css/animate.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/style.css" rel="stylesheet">
<!-- color CSS -->
<link href="css/colors/blue-dark.css" id="theme" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="fix-header">
<!-- ============================================================== -->
<!-- Preloader -->
<!-- ============================================================== -->
<div class="preloader">
<svg class="circular" viewBox="25 25 50 50">
<circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10" />
</svg>
</div>
<!-- ============================================================== -->
<!-- Wrapper -->
<!-- ============================================================== -->
<div id="wrapper">
<!-- ============================================================== -->
<!-- Topbar header - style you can find in pages.scss -->
<!-- ============================================================== -->
<nav class="navbar navbar-default navbar-static-top m-b-0">
<div class="navbar-header">
<div class="top-left-part">
<!-- Logo -->
<a class="logo" href="index.html">
<!-- Logo icon image, you can use font-icon also --><b>
<!--This is dark logo icon--><img src="../plugins/images/admin-logo.png" alt="home" class="dark-logo" /><!--This is light logo icon--><img src="../plugins/images/admin-logo-dark.png" alt="home" class="light-logo" />
</b>
<!-- Logo text image you can use text also --><span class="hidden-xs">
<!--This is dark logo text--><img src="../plugins/images/admin-text.png" alt="home" class="dark-logo" /><!--This is light logo text--><img src="../plugins/images/admin-text-dark.png" alt="home" class="light-logo" />
</span> </a>
</div>
<!-- /Logo -->
<!-- Search input and Toggle icon -->
<ul class="nav navbar-top-links navbar-left">
<li><a href="javascript:void(0)" class="open-close waves-effect waves-light visible-xs"><i class="ti-close ti-menu"></i></a></li>
<li class="dropdown">
<a class="dropdown-toggle waves-effect waves-light" data-toggle="dropdown" href="#"> <i class="mdi mdi-gmail"></i>
<div class="notify"> <span class="heartbit"></span> <span class="point"></span> </div>
</a>
<ul class="dropdown-menu mailbox animated bounceInDown">
<li>
<div class="drop-title">You have 4 new messages</div>
</li>
<li>
<div class="message-center">
<a href="#">
<div class="user-img"> <img src="../plugins/images/users/pawandeep.jpg" alt="user" class="img-circle"> <span class="profile-status online pull-right"></span> </div>
<div class="mail-contnet">
<h5>Pavan kumar</h5> <span class="mail-desc">Just see the my admin!</span> <span class="time">9:30 AM</span> </div>
</a>
<a href="#">
<div class="user-img"> <img src="../plugins/images/users/sonu.jpg" alt="user" class="img-circle"> <span class="profile-status busy pull-right"></span> </div>
<div class="mail-contnet">
<h5>Sonu Nigam</h5> <span class="mail-desc">I've sung a song! See you at</span> <span class="time">9:10 AM</span> </div>
</a>
<a href="#">
<div class="user-img"> <img src="../plugins/images/users/arijit.jpg" alt="user" class="img-circle"> <span class="profile-status away pull-right"></span> </div>
<div class="mail-contnet">
<h5>Arijit Sinh</h5> <span class="mail-desc">I am a singer!</span> <span class="time">9:08 AM</span> </div>
</a>
<a href="#">
<div class="user-img"> <img src="../plugins/images/users/pawandeep.jpg" alt="user" class="img-circle"> <span class="profile-status offline pull-right"></span> </div>
<div class="mail-contnet">
<h5>Pavan kumar</h5> <span class="mail-desc">Just see the my admin!</span> <span class="time">9:02 AM</span> </div>
</a>
</div>
</li>
<li>
<a class="text-center" href="javascript:void(0);"> <strong>See all notifications</strong> <i class="fa fa-angle-right"></i> </a>
</li>
</ul>
<!-- /.dropdown-messages -->
</li>
<!-- .Task dropdown -->
<li class="dropdown">
<a class="dropdown-toggle waves-effect waves-light" data-toggle="dropdown" href="#"> <i class="mdi mdi-check-circle"></i>
<div class="notify"><span class="heartbit"></span><span class="point"></span></div>
</a>
<ul class="dropdown-menu dropdown-tasks animated slideInUp">
<li>
<a href="#">
<div>
<p> <strong>Task 1</strong> <span class="pull-right text-muted">40% Complete</span> </p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%"> <span class="sr-only">40% Complete (success)</span> </div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<p> <strong>Task 2</strong> <span class="pull-right text-muted">20% Complete</span> </p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%"> <span class="sr-only">20% Complete</span> </div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<p> <strong>Task 3</strong> <span class="pull-right text-muted">60% Complete</span> </p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%"> <span class="sr-only">60% Complete (warning)</span> </div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<p> <strong>Task 4</strong> <span class="pull-right text-muted">80% Complete</span> </p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%"> <span class="sr-only">80% Complete (danger)</span> </div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a class="text-center" href="#"> <strong>See All Tasks</strong> <i class="fa fa-angle-right"></i> </a>
</li>
</ul>
</li>
<!-- .Megamenu -->
<li class="mega-dropdown"> <a class="dropdown-toggle waves-effect waves-light" data-toggle="dropdown" href="#"><span class="hidden-xs">Mega</span> <i class="icon-options-vertical"></i></a>
<ul class="dropdown-menu mega-dropdown-menu animated bounceInDown">
<li class="col-sm-3">
<ul>
<li class="dropdown-header">Forms Elements</li>
<li><a href="form-basic.html">Basic Forms</a></li>
<li><a href="form-layout.html">Form Layout</a></li>
<li><a href="form-advanced.html">Form Addons</a></li>
<li><a href="form-material-elements.html">Form Material</a></li>
<li><a href="form-float-input.html">Form Float Input</a></li>
<li><a href="form-upload.html">File Upload</a></li>
<li><a href="form-mask.html">Form Mask</a></li>
<li><a href="form-img-cropper.html">Image Cropping</a></li>
<li><a href="form-validation.html">Form Validation</a></li>
</ul>
</li>
<li class="col-sm-3">
<ul>
<li class="dropdown-header">Advance Forms</li>
<li><a href="form-dropzone.html">File Dropzone</a></li>
<li><a href="form-pickers.html">Form-pickers</a></li>
<li><a href="form-wizard.html">Form-wizards</a></li>
<li><a href="form-typehead.html">Typehead</a></li>
<li><a href="form-xeditable.html">X-editable</a></li>
<li><a href="form-summernote.html">Summernote</a></li>
<li><a href="form-bootstrap-wysihtml5.html">Bootstrap wysihtml5</a></li>
<li><a href="form-tinymce-wysihtml5.html">Tinymce wysihtml5</a></li>
</ul>
</li>
<li class="col-sm-3">
<ul>
<li class="dropdown-header">Table Example</li>
<li><a href="basic-table.html">Basic Tables</a></li>
<li><a href="table-layouts.html">Table Layouts</a></li>
<li><a href="data-table.html">Data Table</a></li>
<li><a href="bootstrap-tables.html">Bootstrap Tables</a></li>
<li><a href="responsive-tables.html">Responsive Tables</a></li>
<li><a href="editable-tables.html">Editable Tables</a></li>
<li><a href="foo-tables.html">FooTables</a></li>
<li><a href="jsgrid.html">JsGrid Tables</a></li>
</ul>
</li>
<li class="col-sm-3">
<ul>
<li class="dropdown-header">Charts</li>
<li> <a href="flot.html">Flot Charts</a> </li>
<li><a href="morris-chart.html">Morris Chart</a></li>
<li><a href="chart-js.html">Chart-js</a></li>
<li><a href="peity-chart.html">Peity Charts</a></li>
<li><a href="knob-chart.html">Knob Charts</a></li>
<li><a href="sparkline-chart.html">Sparkline charts</a></li>
<li><a href="extra-charts.html">Extra Charts</a></li>
</ul>
</li>
</ul>
</li>
<!-- /.Megamenu -->
</ul>
<ul class="nav navbar-top-links navbar-right pull-right">
<li>
<form role="search" class="app-search hidden-sm hidden-xs m-r-10">
<input type="text" placeholder="Search..." class="form-control"> <a href=""><i class="fa fa-search"></i></a> </form>
</li>
<li class="dropdown">
<a class="dropdown-toggle profile-pic" data-toggle="dropdown" href="#"> <img src="../plugins/images/users/varun.jpg" alt="user-img" width="36" class="img-circle"><b class="hidden-xs">Steave</b><span class="caret"></span> </a>
<ul class="dropdown-menu dropdown-user animated flipInY">
<li>
<div class="dw-user-box">
<div class="u-img"><img src="../plugins/images/users/varun.jpg" alt="user" /></div>
<div class="u-text">
<h4>Steave Jobs</h4>
<p class="text-muted">varun@gmail.com</p><a href="profile.html" class="btn btn-rounded btn-danger btn-sm">View Profile</a></div>
</div>
</li>
<li role="separator" class="divider"></li>
<li><a href="#"><i class="ti-user"></i> My Profile</a></li>
<li><a href="#"><i class="ti-wallet"></i> My Balance</a></li>
<li><a href="#"><i class="ti-email"></i> Inbox</a></li>
<li role="separator" class="divider"></li>
<li><a href="#"><i class="ti-settings"></i> Account Setting</a></li>
<li role="separator" class="divider"></li>
<li><a href="#"><i class="fa fa-power-off"></i> Logout</a></li>
</ul>
<!-- /.dropdown-user -->
</li>
<!-- /.dropdown -->
</ul>
</div>
<!-- /.navbar-header -->
<!-- /.navbar-top-links -->
<!-- /.navbar-static-side -->
</nav>
<!-- End Top Navigation -->
<!-- ============================================================== -->
<!-- Left Sidebar - style you can find in sidebar.scss -->
<!-- ============================================================== -->
<div class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav slimscrollsidebar">
<div class="sidebar-head">
<h3><span class="fa-fw open-close"><i class="ti-menu hidden-xs"></i><i class="ti-close visible-xs"></i></span> <span class="hide-menu">Navigation</span></h3> </div>
<ul class="nav" id="side-menu">
<li class="user-pro">
<a href="#" class="waves-effect"><img src="../plugins/images/users/varun.jpg" alt="user-img" class="img-circle"> <span class="hide-menu"> Steve Gection<span class="fa arrow"></span></span>
</a>
<ul class="nav nav-second-level collapse" aria-expanded="false" style="height: 0px;">
<li><a href="javascript:void(0)"><i class="ti-user"></i> <span class="hide-menu">My Profile</span></a></li>
<li><a href="javascript:void(0)"><i class="ti-wallet"></i> <span class="hide-menu">My Balance</span></a></li>
<li><a href="javascript:void(0)"><i class="ti-email"></i> <span class="hide-menu">Inbox</span></a></li>
<li><a href="javascript:void(0)"><i class="ti-settings"></i> <span class="hide-menu">Account Setting</span></a></li>
<li><a href="javascript:void(0)"><i class="fa fa-power-off"></i> <span class="hide-menu">Logout</span></a></li>
</ul>
</li>
<li> <a href="index.html" class="waves-effect"><i class="mdi mdi-av-timer fa-fw" data-icon="v"></i> <span class="hide-menu"> Dashboard <span class="fa arrow"></span> <span class="label label-rouded label-inverse pull-right">4</span></span></a>
<ul class="nav nav-second-level">
<li> <a href="index.html"><i class=" fa-fw">1</i><span class="hide-menu">Dashboard 1</span></a> </li>
<li> <a href="index2.html"><i class=" fa-fw">2</i><span class="hide-menu">Dashboard 2</span></a> </li>
<li> <a href="index3.html"><i class=" fa-fw">3</i><span class="hide-menu">Dashboard 3</span></a> </li>
</ul>
</li>
<li> <a href="#" class="waves-effect"><i class="mdi mdi-format-color-fill fa-fw"></i> <span class="hide-menu">UI Elements<span class="fa arrow"></span> <span class="label label-rouded label-info pull-right">20</span> </span></a>
<ul class="nav nav-second-level">
<li><a href="panels-wells.html"><i data-icon="&#xe026;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Panels and Wells</span></a></li>
<li><a href="panel-ui-block.html"><i data-icon="&#xe025;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Panels With BlockUI</span></a></li>
<li><a href="buttons.html"><i class="ti-layout-menu fa-fw"></i> <span class="hide-menu">Buttons</span></a></li>
<li><a href="sweatalert.html"><i class="ti-alert fa-fw"></i> <span class="hide-menu">Sweat alert</span></a></li>
<li><a href="typography.html"><i data-icon="k" class="linea-icon linea-software fa-fw"></i> <span class="hide-menu">Typography</span></a></li>
<li><a href="grid.html"><i data-icon="&#xe009;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Grid</span></a></li>
<li><a href="tabs.html"><i class="ti-layers fa-fw"></i> <span class="hide-menu">Tabs</span></a></li>
<li><a href="tab-stylish.html"><i class=" ti-layers-alt fa-fw"></i> <span class="hide-menu">Stylish Tabs</span></a></li>
<li><a href="modals.html"><i data-icon="&#xe026;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Modals</span></a></li>
<li><a href="progressbars.html"><i class="ti-line-double fa-fw"></i> <span class="hide-menu">Progress Bars</span></a></li>
<li><a href="notification.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Notifications</span></a></li>
<li><a href="carousel.html"><i class="ti-layout-slider fa-fw"></i> <span class="hide-menu">Carousel</span></a></li>
<li><a href="list-style.html"><i data-icon="&#xe00b;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">List & Media object</span></a></li>
<li><a href="user-cards.html"><i class="ti-user fa-fw"></i> <span class="hide-menu">User Cards</span></a></li>
<li><a href="timeline.html"><i data-icon="/" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Timeline</span></a></li>
<li><a href="timeline-horizontal.html"><i class="ti-layout-list-thumb fa-fw"></i> <span class="hide-menu">Horizontal Timeline</span></a></li>
<li><a href="nestable.html"><i class="ti-layout-accordion-separated fa-fw"></i> <span class="hide-menu">Nesteble</span></a></li>
<li><a href="range-slider.html"><i class=" ti-layout-slider-alt fa-fw"></i> <span class="hide-menu">Range Slider</span></a></li>
<li><a href="tooltip-stylish.html"><i class="ti-comments-smiley fa-fw"></i> <span class="hide-menu">Stylish Tooltip</span></a></li>
<li><a href="bootstrap.html"><i class="ti-rocket fa-fw"></i> <span class="hide-menu">Bootstrap UI</span></a></li>
</ul>
</li>
<li> <a href="#" class="waves-effect active"><i class="mdi mdi-content-copy fa-fw"></i> <span class="hide-menu">Sample Pages<span class="fa arrow"></span><span class="label label-rouded label-warning pull-right">30</span></span></a>
<ul class="nav nav-second-level">
<li><a href="starter-page.html"><i class="ti-layout-width-default fa-fw"></i> <span class="hide-menu">Starter Page</span></a></li>
<li><a href="blank.html"><i class="ti-layout-sidebar-left fa-fw"></i> <span class="hide-menu">Blank Page</span></a></li>
<li><a href="javascript:void(0)" class="waves-effect"><i class="ti-email fa-fw"></i> <span class="hide-menu">Email Templates</span><span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li> <a href="../email-templates/basic.html"><i class="fa-fw">B</i> <span class="hide-menu">Basic</span></a></li>
<li> <a href="../email-templates/alert.html"><i class="ti-alert fa-fw"></i> <span class="hide-menu">Alert</span></a></li>
<li> <a href="../email-templates/billing.html"><i class="ti-wallet fa-fw"></i> <span class="hide-menu">Billing</span></a></li>
<li> <a href="../email-templates/password-reset.html"><i class="ti-more fa-fw"></i> <span class="hide-menu">Reset Pwd</span></a></li>
</ul>
</li>
<li><a href="javascript:void(0)" class="waves-effect"><i class="ti-lock fa-fw"></i><span class="hide-menu">Authentication</span><span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a href="login.html"><i class="fa-fw">L</i> <span class="hide-menu">Login Page</span></a></li>
<li><a href="login2.html"><i class="fa-fw">L</i> <span class="hide-menu">Login v2</span></a></li>
<li><a href="register.html"><i class="fa-fw">R</i> <span class="hide-menu">Register</span></a></li>
<li><a href="register2.html"><i class="fa-fw">R</i> <span class="hide-menu">Register v2</span></a></li>
<li><a href="register3.html"><i class="fa-fw">3</i> <span class="hide-menu">3 Step Registration</span></a></li>
<li><a href="recoverpw.html"><i class="fa-fw">R</i> <span class="hide-menu">Recover Password</span></a></li>
<li><a href="lock-screen.html"><i class="fa-fw">L</i> <span class="hide-menu">Lock Screen</span></a></li>
</ul>
</li>
<li><a href="javascript:void(0)" class="waves-effect"><i class="ti-info-alt fa-fw"></i><span class="hide-menu">Error Pages</span><span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a href="400.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 400</span></a></li>
<li><a href="403.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 403</span></a></li>
<li><a href="404.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 404</span></a></li>
<li><a href="500.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 500</span></a></li>
<li><a href="503.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 503</span></a></li>
</ul>
</li>
<li><a href="lightbox.html"><i class="fa-fw">L</i> <span class="hide-menu">Lightbox Popup</span></a></li>
<li><a href="treeview.html"><i class="fa-fw">T</i> <span class="hide-menu">Treeview</span></a></li>
<li><a href="search-result.html"><i class="fa-fw">S</i> <span class="hide-menu">Search Result</span></a></li>
<li><a href="utility-classes.html"><i class="fa-fw">U</i> <span class="hide-menu">Utility Classes</span></a></li>
<li><a href="custom-scroll.html"><i class="fa-fw">C</i> <span class="hide-menu">Custom Scrolls</span></a></li>
<li><a href="animation.html"><i class="fa-fw">A</i> <span class="hide-menu">Animations</span></a></li>
<li><a href="profile.html"><i class="fa-fw">P</i> <span class="hide-menu">Profile</span></a></li>
<li><a href="invoice.html"><i class="fa-fw">I</i> <span class="hide-menu">Invoice</span></a></li>
<li><a href="faq.html"><i class="fa-fw">F</i> <span class="hide-menu">FAQ</span></a></li>
<li><a href="gallery.html"><i class="fa-fw">G</i> <span class="hide-menu">Gallery</span></a></li>
<li><a href="pricing.html"><i class="fa-fw">P</i> <span class="hide-menu">Pricing</span></a></li>
</ul>
</li>
<li><a href="inbox.html" class="waves-effect"><i class="mdi mdi-apps fa-fw"></i> <span class="hide-menu">Apps<span class="fa arrow"></span></span></a>
<ul class="nav nav-second-level">
<li><a href="chat.html"><i class="ti-comments-smiley fa-fw"></i><span class="hide-menu">Chat-message</span></a></li>
<li><a href="javascript:void(0)" class="waves-effect"><i class="ti-desktop fa-fw"></i><span class="hide-menu">Inbox</span><span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li> <a href="inbox.html"><i class="ti-email fa-fw"></i><span class="hide-menu">Mail box</span></a></li>
<li> <a href="inbox-detail.html"><i class="ti-layout-media-left-alt fa-fw"></i><span class="hide-menu">Inbox detail</span></a></li>
<li> <a href="compose.html"><i class="ti-layout-media-center-alt fa-fw"></i><span class="hide-menu">Compose mail</span></a></li>
</ul>
</li>
<li><a href="javascript:void(0)" class="waves-effect"><i class="ti-user fa-fw"></i><span class="hide-menu">Contacts</span><span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li> <a href="contact.html"><i class="icon-people fa-fw"></i><span class="hide-menu">Contact1</span></a></li>
<li> <a href="contact2.html"><i class="icon-user-follow fa-fw"></i><span class="hide-menu">Contact2</span></a></li>
<li> <a href="contact-detail.html"><i class="icon-user-following fa-fw"></i><span class="hide-menu">Contact Detail</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="devider"></li>
<li> <a href="forms.html" class="waves-effect"><i class="mdi mdi-clipboard-text fa-fw"></i> <span class="hide-menu">Forms<span class="fa arrow"></span></span></a>
<ul class="nav nav-second-level">
<li><a href="form-basic.html"><i class="fa-fw">B</i><span class="hide-menu">Basic Forms</span></a></li>
<li><a href="form-layout.html"><i class="fa-fw">L</i><span class="hide-menu">Form Layout</span></a></li>
<li><a href="form-advanced.html"><i class="fa-fw">A</i><span class="hide-menu">Form Addons</span></a></li>
<li><a href="form-material-elements.html"><i class="fa-fw">M</i><span class="hide-menu">Form Material</span></a></li>
<li><a href="form-float-input.html"><i class="fa-fw">F</i><span class="hide-menu">Form Float Input</span></a></li>
<li><a href="form-upload.html"><i class="fa-fw">U</i><span class="hide-menu">File Upload</span></a></li>
<li><a href="form-mask.html"><i class="fa-fw">M</i><span class="hide-menu">Form Mask</span></a></li>
<li><a href="form-img-cropper.html"><i class="fa-fw">C</i><span class="hide-menu">Image Cropping</span></a></li>
<li><a href="form-validation.html"><i class="fa-fw">V</i><span class="hide-menu">Form Validation</span></a></li>
<li><a href="form-dropzone.html"><i class="fa-fw">D</i><span class="hide-menu">File Dropzone</span></a></li>
<li><a href="form-pickers.html"><i class="fa-fw">P</i><span class="hide-menu">Form-pickers</span></a></li>
<li><a href="form-wizard.html"><i class="fa-fw">W</i><span class="hide-menu">Form-wizards</span></a></li>
<li><a href="form-typehead.html"><i class="fa-fw">T</i><span class="hide-menu">Typehead</span></a></li>
<li><a href="form-xeditable.html"><i class="fa-fw">X</i><span class="hide-menu">X-editable</span></a></li>
<li><a href="form-summernote.html"><i class="fa-fw">S</i><span class="hide-menu">Summernote</span></a></li>
<li><a href="form-bootstrap-wysihtml5.html"><i class=" fa-fw">W</i><span class="hide-menu">Bootstrap wysihtml5</span></a></li>
<li><a href="form-tinymce-wysihtml5.html"><i class="fa-fw">T</i><span class="hide-menu">Tinymce wysihtml5</span></a></li>
</ul>
</li>
<li> <a href="tables.html" class="waves-effect"><i class="mdi mdi-table fa-fw"></i> <span class="hide-menu">Tables<span class="fa arrow"></span><span class="label label-rouded label-danger pull-right">9</span></span></a>
<ul class="nav nav-second-level">
<li><a href="basic-table.html"><i class="fa-fw">B</i><span class="hide-menu">Basic Tables</span></a></li>
<li><a href="table-layouts.html"><i class="fa-fw">L</i><span class="hide-menu">Table Layouts</span></a></li>
<li><a href="data-table.html"><i class="fa-fw">D</i><span class="hide-menu">Data Table</span></a></li>
<li><a href="bootstrap-tables.html"><i class="fa-fw">B</i><span class="hide-menu">Bootstrap Tables</span></a></li>
<li><a href="responsive-tables.html"><i class="fa-fw">R</i><span class="hide-menu">Responsive Tables</span></a></li>
<li><a href="editable-tables.html"><i class="fa-fw">E</i><span class="hide-menu">Editable Tables</span></a></li>
<li><a href="foo-tables.html"><i class="fa-fw">F</i><span class="hide-menu">FooTables</span></a></li>
<li><a href="jsgrid.html"><i class="fa-fw">J</i><span class="hide-menu">JsGrid Tables</span></a></li>
</ul>
</li>
<li> <a href="#" class="waves-effect"><i class="mdi mdi-chart-bar fa-fw"></i> <span class="hide-menu">Charts<span class="fa arrow"></span></span></a>
<ul class="nav nav-second-level">
<li> <a href="flot.html"><i class="fa-fw">F</i><span class="hide-menu">Flot Charts</span></a> </li>
<li><a href="morris-chart.html"><i class="fa-fw">M</i><span class="hide-menu">Morris Chart</span></a></li>
<li><a href="chart-js.html"><i class="fa-fw">P</i><span class="hide-menu">Chart-js</span></a></li>
<li><a href="peity-chart.html"><i class="fa-fw">P</i><span class="hide-menu">Peity Charts</span></a></li>
<li><a href="chartist-js.html"><i class="fa-fw">C</i><span class="hide-menu">Chartist-js</span></a></li>
<li><a href="knob-chart.html"><i class="fa-fw">K</i><span class="hide-menu">Knob Charts</span></a></li>
<li><a href="sparkline-chart.html"><i class="fa-fw">S</i><span class="hide-menu">Sparkline charts</span></a></li>
<li><a href="extra-charts.html"><i class="fa-fw">E</i><span class="hide-menu">Extra Charts</span></a></li>
</ul>
</li>
<li class="devider"></li>
<li> <a href="widgets.html" class="waves-effect"><i class="mdi mdi-settings fa-fw"></i> <span class="hide-menu">Widgets</span></a> </li>
<li> <a href="#" class="waves-effect"><i class="mdi mdi-emoticon fa-fw"></i> <span class="hide-menu">Icons<span class="fa arrow"></span></span></a>
<ul class="nav nav-second-level">
<li> <a href="fontawesome.html"><i class="fa-fw">F</i><span class="hide-menu">Font awesome</span></a> </li>
<li> <a href="themifyicon.html"><i class="fa-fw">T</i><span class="hide-menu">Themify Icons</span></a> </li>
<li> <a href="simple-line.html"><i class="fa-fw">S</i><span class="hide-menu">Simple line Icons</span></a> </li>
<li> <a href="material-icons.html"><i class="fa-fw">M</i><span class="hide-menu">Material Icons</span></a> </li>
<li><a href="linea-icon.html"><i class="fa-fw">L</i><span class="hide-menu">Linea Icons</span></a></li>
<li><a href="weather.html"><i class="fa-fw">W</i><span class="hide-menu">Weather Icons</span></a></li>
</ul>
</li>
<li> <a href="map-google.html" class="waves-effect"><i class="mdi mdi-google-maps fa-fw"></i><span class="hide-menu">Google Map</span></a> </li>
<li> <a href="map-vector.html" class="waves-effect"><i class="mdi mdi-map-marker fa-fw"></i><span class="hide-menu">Vector Map</span></a> </li>
<li> <a href="calendar.html" class="waves-effect"><i class="mdi mdi-calendar-check fa-fw"></i> <span class="hide-menu">Calendar</span></a></li>
<li> <a href="javascript:void(0)" class="waves-effect"><i class="mdi mdi-checkbox-multiple-marked-outline fa-fw"></i> <span class="hide-menu">Multi-Level Dropdown<span class="fa arrow"></span></span></a>
<ul class="nav nav-second-level">
<li> <a href="javascript:void(0)"><i data-icon="/" class="linea-icon linea-basic fa-fw"></i><span class="hide-menu">Second Level Item</span></a> </li>
<li> <a href="javascript:void(0)"><i data-icon="7" class="linea-icon linea-basic fa-fw"></i><span class="hide-menu">Second Level Item</span></a> </li>
<li> <a href="javascript:void(0)" class="waves-effect"><i data-icon="&#xe008;" class="linea-icon linea-basic fa-fw"></i><span class="hide-menu">Third Level </span><span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li> <a href="javascript:void(0)"><i class=" fa-fw">T</i><span class="hide-menu">Third Level Item</span></a> </li>
<li> <a href="javascript:void(0)"><i class=" fa-fw">M</i><span class="hide-menu">Third Level Item</span></a> </li>
<li> <a href="javascript:void(0)"><i class=" fa-fw">R</i><span class="hide-menu">Third Level Item</span></a> </li>
<li> <a href="javascript:void(0)"><i class=" fa-fw">G</i><span class="hide-menu">Third Level Item</span></a> </li>
</ul>
</li>
</ul>
</li>
<li><a href="login.html" class="waves-effect"><i class="mdi mdi-logout fa-fw"></i> <span class="hide-menu">Log out</span></a></li>
<li class="devider"></li>
<li><a href="documentation.html" class="waves-effect"><i class="fa fa-circle-o text-danger"></i> <span class="hide-menu">Documentation</span></a></li>
<li><a href="gallery.html" class="waves-effect"><i class="fa fa-circle-o text-info"></i> <span class="hide-menu">Gallery</span></a></li>
<li><a href="faq.html" class="waves-effect"><i class="fa fa-circle-o text-success"></i> <span class="hide-menu">Faqs</span></a></li>
</ul>
</div>
</div>
<!-- ============================================================== -->
<!-- End Left Sidebar -->
<!-- ============================================================== -->
<!-- ============================================================== -->
<!-- Page Content -->
<!-- ============================================================== -->
<div id="page-wrapper">
<div class="container-fluid">
<div class="row bg-title">
<div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
<h4 class="page-title">Starter Page</h4> </div>
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
<button class="right-side-toggle waves-effect waves-light btn-info btn-circle pull-right m-l-20"><i class="ti-settings text-white"></i></button>
<a href="javascript: void(0);" target="_blank" class="btn btn-danger pull-right m-l-20 hidden-xs hidden-sm waves-effect waves-light">Buy Admin Now</a>
<ol class="breadcrumb">
<li><a href="#">Dashboard</a></li>
<li class="active">Starter Page</li>
</ol>
</div>
<!-- /.col-lg-12 -->
</div>
<div class="row">
<div class="col-md-12">
<div class="white-box">
<h3 class="box-title">Blank Starter page</h3> </div>
</div>
</div>
<!-- ============================================================== -->
<!-- Right sidebar -->
<!-- ============================================================== -->
<!-- .right-sidebar -->
<div class="right-sidebar">
<div class="slimscrollright">
<div class="rpanel-title"> Service Panel <span><i class="ti-close right-side-toggle"></i></span> </div>
<div class="r-panel-body">
<ul id="themecolors" class="m-t-20">
<li><b>With Light sidebar</b></li>
<li><a href="javascript:void(0)" data-theme="default" class="default-theme">1</a></li>
<li><a href="javascript:void(0)" data-theme="green" class="green-theme">2</a></li>
<li><a href="javascript:void(0)" data-theme="gray" class="yellow-theme">3</a></li>
<li><a href="javascript:void(0)" data-theme="blue" class="blue-theme">4</a></li>
<li><a href="javascript:void(0)" data-theme="purple" class="purple-theme">5</a></li>
<li><a href="javascript:void(0)" data-theme="megna" class="megna-theme">6</a></li>
<li><b>With Dark sidebar</b></li>
<br/>
<li><a href="javascript:void(0)" data-theme="default-dark" class="default-dark-theme">7</a></li>
<li><a href="javascript:void(0)" data-theme="green-dark" class="green-dark-theme">8</a></li>
<li><a href="javascript:void(0)" data-theme="gray-dark" class="yellow-dark-theme">9</a></li>
<li><a href="javascript:void(0)" data-theme="blue-dark" class="blue-dark-theme working">10</a></li>
<li><a href="javascript:void(0)" data-theme="purple-dark" class="purple-dark-theme">11</a></li>
<li><a href="javascript:void(0)" data-theme="megna-dark" class="megna-dark-theme">12</a></li>
</ul>
<ul class="m-t-20 all-demos">
<li><b>Choose other demos</b></li>
</ul>
<ul class="m-t-20 chatonline">
<li><b>Chat option</b></li>
<li>
<a href="javascript:void(0)"><img src="../plugins/images/users/varun.jpg" alt="user-img" class="img-circle"> <span>Varun Dhavan <small class="text-success">online</small></span></a>
</li>
<li>
<a href="javascript:void(0)"><img src="../plugins/images/users/genu.jpg" alt="user-img" class="img-circle"> <span>Genelia Deshmukh <small class="text-warning">Away</small></span></a>
</li>
<li>
<a href="javascript:void(0)"><img src="../plugins/images/users/ritesh.jpg" alt="user-img" class="img-circle"> <span>Ritesh Deshmukh <small class="text-danger">Busy</small></span></a>
</li>
<li>
<a href="javascript:void(0)"><img src="../plugins/images/users/arijit.jpg" alt="user-img" class="img-circle"> <span>Arijit Sinh <small class="text-muted">Offline</small></span></a>
</li>
<li>
<a href="javascript:void(0)"><img src="../plugins/images/users/govinda.jpg" alt="user-img" class="img-circle"> <span>Govinda Star <small class="text-success">online</small></span></a>
</li>
<li>
<a href="javascript:void(0)"><img src="../plugins/images/users/hritik.jpg" alt="user-img" class="img-circle"> <span>John Abraham<small class="text-success">online</small></span></a>
</li>
<li>
<a href="javascript:void(0)"><img src="../plugins/images/users/john.jpg" alt="user-img" class="img-circle"> <span>Hritik Roshan<small class="text-success">online</small></span></a>
</li>
<li>
<a href="javascript:void(0)"><img src="../plugins/images/users/pawandeep.jpg" alt="user-img" class="img-circle"> <span>Pwandeep rajan <small class="text-success">online</small></span></a>
</li>
</ul>
</div>
</div>
</div>
<!-- ============================================================== -->
<!-- End Right sidebar -->
<!-- ============================================================== -->
</div>
<!-- /.container-fluid -->
<footer class="footer text-center"> 2017 &copy; Ample Admin brought to you by themedesigner.in </footer>
</div>
<!-- ============================================================== -->
<!-- End Page Content -->
<!-- ============================================================== -->
</div>
<!-- /#wrapper -->
<!-- jQuery -->
<script src="../plugins/bower_components/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="bootstrap/dist/js/bootstrap.min.js"></script>
<!-- Menu Plugin JavaScript -->
<script src="../plugins/bower_components/sidebar-nav/dist/sidebar-nav.min.js"></script>
<!--slimscroll JavaScript -->
<script src="js/jquery.slimscroll.js"></script>
<!--Wave Effects -->
<script src="js/waves.js"></script>
<!-- Custom Theme JavaScript -->
<script src="js/custom.min.js"></script>
<!--Style Switcher -->
<script src="../plugins/bower_components/styleswitcher/jQuery.style.switcher.js"></script>
</body>
</html>

+ 70
- 0
views/index.html View File

@@ -0,0 +1,70 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>UI portage</title>
<link rel="stylesheet" href="/static/css/default.css">
<link rel="stylesheet" type="text/css" href="/static/css/photon.css">

<script src="/static/js/brython.js"></script>
<script src="/static/js/brython_stdlib.js"></script>
<script src="/static/app/app.py" type="text/python3"></script>
<!--<script src="/static/app/ui.py" type="text/python3"></script>-->
<script type="text/javascript">

window.onload = function() {setTimeout(function (){
document.getElementById('splash').style.display="none";
document.getElementById('main').style.display ="block";

}, 3000);
brython();
//document.getElementById('home').style.background='coral';
};
</script>
</head>
<body >

<div id="splash" class="splash">
<div class="block">

<div class="lds-facebook"><div></div><div></div><div></div></div>
<h3 id="h_spl" name="h_spl" style=" color: #AAA;">Идёт Обработка</h3>
</div>
<!--
<div class="console">
<p class="terminal">Идёт загрузка ......</p>
</div>
-->
</div>
<div align="center" id="main" class="window">
<header class="toolbar toolbar-header">
<h1 class="title"></h1>
<div class="toolbar-actions">
<li class="list-group-header">
<input id="inS" name="inS" class="form-control" type="text" placeholder="Введите имя пакета">
<button id="submit_search">Поиск</button>
<button id="debug">Отладка</button>
</li>
</div>
</header>
<div id="link_panel" class="tab-group">
<div id={item[0]} class="tab-item" b-code="for item in menu_port.items():" >{item[1]}</div>

</div>
<div id="conteiner" class="window-content"></div>
<!-- <iframe id="py_console" src="http://brython.info/console.html" width="800" height="400"></iframe> -->

</body>

</html>

+ 140
- 0
views/index.html.old View File

@@ -0,0 +1,140 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>UI portage</title>
<link rel="stylesheet" href="/static/css/default.css">
<link rel="stylesheet" type="text/css" href="/static/css/photon.css">
<style>
</style>
<!--<script src="https%3A%2F%2Fyastatic.net%2Fjquery%2F3.3.1%2Fjquery.min.js"></script> -->
<script src="/static/js/src/brython.js"></script>
<script src="/static/js/src/brython_stdlib.js"></script>
<script src="/static/app/app.py" type="text/python3"></script>
<script src="/static/app/ui.py" type="text/python3"></script>
<script type="text/javascript">
function Draw_animate()
{ var cntx = document.getElementById("logo").getContext("2d");
}
window.onload = function() {setTimeout(function (){ document.getElementById('splash').style.zIndex='0'; document.getElementById('main').style.zIndex='1'; }, 3000); brython(); document.getElementById('home').style.background='coral'; }
</script>
</head>
<body >
<div id="splash" class="splash">
<div class="block">
<canvas id="logo"></canvas>
<!--<img src="http://start.calculate-linux.ru/img/start/logo.png"/>
<img src="http://hpunix.org/images/content/vyshel-calculate-linux-desktop-12.jpg"/> -->
<h3 id="h_spl" name="h_spl" style=" color: #AAA;">Загрузка</h3>
</div>
<div class="console">
<canvas id="logo"></canvas>
<p class="terminal">Идёт загрузка ......</p>
</div>
</div>
<div align="center" id="main" class="main">
<div class="nav_panel">
<!--
<div id ="search_fld" class="search_fld">
<b id="btnSclose" style="color: aqua;float: inline-end;">x</b>
<!--<img style=" width: 128px; height: 64px; " src="http://start.calculate-linux.ru/img/start/logo.png"/>
<input id="inS" name="inS" type="text"/>
<a id="mybutton" href="#" class="btn">
<svg width="32" height="32" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/
<title>Search</title>
<g>
<title>Search</title>
<g id="svg_13">
<rect fill="none" stroke="#FFFFFF" x="50.53428" y="41.61474" width="0" height="0.51828" id="svg_3"/>
<circle id="svg_7" r="5.27195" cy="13.4337" cx="12.41675" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="null" stroke="#FFFFFF" fill="none"/>
<rect transform="matrix(0.396913, 0.354698, -0.372542, 0.377901, 21.4156, -9.71215)" id="svg_11" height="4.88048" width="20.27983" y="41.66855" x="29.76409" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="null" stroke="#FFFFFF" fill="none"/>
</g>
</g>
</svg>
</a>
</div>-->
<ul id="nav_memu" class="nav_memu">
<!--<li><a href="#"><b>|||</b></a></li> -->
<li b-code="for item in catalog:"><a id={item} href="#">{item}</a></li>
</ul>
</div>
<ul id="link_panel" class="link_panel">
<li b-code="for item in menu_port.items():"><a id={item[0]} href="#">{item[1]}</a></li>
<div id="search_fld" class="search_fld">
<b id="btnSclose" style="color: aqua;float: inline-end;"></b>
<!--<img style=" width: 128px; height: 64px; " src="http://start.calculate-linux.ru/img/start/logo.png"/> -->
<input id="inS" name="inS" type="text"/>
<a id="mybutton" href="#" class="btn">
<svg width="32" height="32" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<title>Search</title>
<g>
<title>Search</title>
<g id="svg_13">
<rect fill="none" stroke="#FFFFFF" x="50.53428" y="41.61474" width="0" height="0.51828" id="svg_3"/>
<circle id="svg_7" r="5.27195" cy="13.4337" cx="12.41675" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="null" stroke="#FFFFFF" fill="none"/>
<rect transform="matrix(0.396913, 0.354698, -0.372542, 0.377901, 21.4156, -9.71215)" id="svg_11" height="4.88048" width="20.27983" y="41.66855" x="29.76409" stroke-linecap="null" stroke-linejoin="null" stroke-dasharray="null" stroke-width="null" stroke="#FFFFFF" fill="none"/>
</g>
</g>
</svg>
</a>
<!--
<div id="progress_bar" style=" width: 50%; border: 1px solid coral;"></div>
-->
</div>
</ul>
<div id="pack_list" class="pack_list">
</div>
</div>
</div>
</body>
</html>

+ 12
- 0
views/license.txt View File

@@ -0,0 +1,12 @@


<!--
Copyright (c) 2017 by Katy DeCorah (http://codepen.io/katydecorah/pen/HEgwl)


Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-->

BIN
views/navigation-bar-by-jan-kadera.zip View File


+ 773
- 0
views/profile.html View File

@@ -0,0 +1,773 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" type="image/png" sizes="16x16" href="../plugins/images/favicon.png">
<title>Ample Admin Template - The Ultimate Multipurpose admin template</title>
<!-- Bootstrap Core CSS -->
<link href="bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Menu CSS -->
<link href="../plugins/bower_components/sidebar-nav/dist/sidebar-nav.min.css" rel="stylesheet">
<!-- animation CSS -->
<link href="css/animate.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="css/style.css" rel="stylesheet">
<!-- color CSS -->
<link href="css/colors/blue-dark.css" id="theme" rel="stylesheet">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body class="fix-header">
<!-- ============================================================== -->
<!-- Preloader -->
<!-- ============================================================== -->
<div class="preloader">
<svg class="circular" viewBox="25 25 50 50">
<circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10" />
</svg>
</div>
<!-- ============================================================== -->
<!-- Wrapper -->
<!-- ============================================================== -->
<div id="wrapper">
<!-- ============================================================== -->
<!-- Topbar header - style you can find in pages.scss -->
<!-- ============================================================== -->
<nav class="navbar navbar-default navbar-static-top m-b-0">
<div class="navbar-header">
<div class="top-left-part">
<!-- Logo -->
<a class="logo" href="index.html">
<!-- Logo icon image, you can use font-icon also --><b>
<!--This is dark logo icon--><img src="../plugins/images/admin-logo.png" alt="home" class="dark-logo" /><!--This is light logo icon--><img src="../plugins/images/admin-logo-dark.png" alt="home" class="light-logo" />
</b>
<!-- Logo text image you can use text also --><span class="hidden-xs">
<!--This is dark logo text--><img src="../plugins/images/admin-text.png" alt="home" class="dark-logo" /><!--This is light logo text--><img src="../plugins/images/admin-text-dark.png" alt="home" class="light-logo" />
</span> </a>
</div>
<!-- /Logo -->
<!-- Search input and Toggle icon -->
<ul class="nav navbar-top-links navbar-left">
<li><a href="javascript:void(0)" class="open-close waves-effect waves-light visible-xs"><i class="ti-close ti-menu"></i></a></li>
<li class="dropdown">
<a class="dropdown-toggle waves-effect waves-light" data-toggle="dropdown" href="#"> <i class="mdi mdi-gmail"></i>
<div class="notify"> <span class="heartbit"></span> <span class="point"></span> </div>
</a>
<ul class="dropdown-menu mailbox animated bounceInDown">
<li>
<div class="drop-title">You have 4 new messages</div>
</li>
<li>
<div class="message-center">
<a href="#">
<div class="user-img"> <img src="../plugins/images/users/pawandeep.jpg" alt="user" class="img-circle"> <span class="profile-status online pull-right"></span> </div>
<div class="mail-contnet">
<h5>Pavan kumar</h5> <span class="mail-desc">Just see the my admin!</span> <span class="time">9:30 AM</span> </div>
</a>
<a href="#">
<div class="user-img"> <img src="../plugins/images/users/sonu.jpg" alt="user" class="img-circle"> <span class="profile-status busy pull-right"></span> </div>
<div class="mail-contnet">
<h5>Sonu Nigam</h5> <span class="mail-desc">I've sung a song! See you at</span> <span class="time">9:10 AM</span> </div>
</a>
<a href="#">
<div class="user-img"> <img src="../plugins/images/users/arijit.jpg" alt="user" class="img-circle"> <span class="profile-status away pull-right"></span> </div>
<div class="mail-contnet">
<h5>Arijit Sinh</h5> <span class="mail-desc">I am a singer!</span> <span class="time">9:08 AM</span> </div>
</a>
<a href="#">
<div class="user-img"> <img src="../plugins/images/users/pawandeep.jpg" alt="user" class="img-circle"> <span class="profile-status offline pull-right"></span> </div>
<div class="mail-contnet">
<h5>Pavan kumar</h5> <span class="mail-desc">Just see the my admin!</span> <span class="time">9:02 AM</span> </div>
</a>
</div>
</li>
<li>
<a class="text-center" href="javascript:void(0);"> <strong>See all notifications</strong> <i class="fa fa-angle-right"></i> </a>
</li>
</ul>
<!-- /.dropdown-messages -->
</li>
<!-- .Task dropdown -->
<li class="dropdown">
<a class="dropdown-toggle waves-effect waves-light" data-toggle="dropdown" href="#"> <i class="mdi mdi-check-circle"></i>
<div class="notify"><span class="heartbit"></span><span class="point"></span></div>
</a>
<ul class="dropdown-menu dropdown-tasks animated slideInUp">
<li>
<a href="#">
<div>
<p> <strong>Task 1</strong> <span class="pull-right text-muted">40% Complete</span> </p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: 40%"> <span class="sr-only">40% Complete (success)</span> </div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<p> <strong>Task 2</strong> <span class="pull-right text-muted">20% Complete</span> </p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%"> <span class="sr-only">20% Complete</span> </div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<p> <strong>Task 3</strong> <span class="pull-right text-muted">60% Complete</span> </p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%"> <span class="sr-only">60% Complete (warning)</span> </div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a href="#">
<div>
<p> <strong>Task 4</strong> <span class="pull-right text-muted">80% Complete</span> </p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="80" aria-valuemin="0" aria-valuemax="100" style="width: 80%"> <span class="sr-only">80% Complete (danger)</span> </div>
</div>
</div>
</a>
</li>
<li class="divider"></li>
<li>
<a class="text-center" href="#"> <strong>See All Tasks</strong> <i class="fa fa-angle-right"></i> </a>
</li>
</ul>
</li>
<!-- .Megamenu -->
<li class="mega-dropdown"> <a class="dropdown-toggle waves-effect waves-light" data-toggle="dropdown" href="#"><span class="hidden-xs">Mega</span> <i class="icon-options-vertical"></i></a>
<ul class="dropdown-menu mega-dropdown-menu animated bounceInDown">
<li class="col-sm-3">
<ul>
<li class="dropdown-header">Forms Elements</li>
<li><a href="form-basic.html">Basic Forms</a></li>
<li><a href="form-layout.html">Form Layout</a></li>
<li><a href="form-advanced.html">Form Addons</a></li>
<li><a href="form-material-elements.html">Form Material</a></li>
<li><a href="form-float-input.html">Form Float Input</a></li>
<li><a href="form-upload.html">File Upload</a></li>
<li><a href="form-mask.html">Form Mask</a></li>
<li><a href="form-img-cropper.html">Image Cropping</a></li>
<li><a href="form-validation.html">Form Validation</a></li>
</ul>
</li>
<li class="col-sm-3">
<ul>
<li class="dropdown-header">Advance Forms</li>
<li><a href="form-dropzone.html">File Dropzone</a></li>
<li><a href="form-pickers.html">Form-pickers</a></li>
<li><a href="form-wizard.html">Form-wizards</a></li>
<li><a href="form-typehead.html">Typehead</a></li>
<li><a href="form-xeditable.html">X-editable</a></li>
<li><a href="form-summernote.html">Summernote</a></li>
<li><a href="form-bootstrap-wysihtml5.html">Bootstrap wysihtml5</a></li>
<li><a href="form-tinymce-wysihtml5.html">Tinymce wysihtml5</a></li>
</ul>
</li>
<li class="col-sm-3">
<ul>
<li class="dropdown-header">Table Example</li>
<li><a href="basic-table.html">Basic Tables</a></li>
<li><a href="table-layouts.html">Table Layouts</a></li>
<li><a href="data-table.html">Data Table</a></li>
<li><a href="bootstrap-tables.html">Bootstrap Tables</a></li>
<li><a href="responsive-tables.html">Responsive Tables</a></li>
<li><a href="editable-tables.html">Editable Tables</a></li>
<li><a href="foo-tables.html">FooTables</a></li>
<li><a href="jsgrid.html">JsGrid Tables</a></li>
</ul>
</li>
<li class="col-sm-3">
<ul>
<li class="dropdown-header">Charts</li>
<li> <a href="flot.html">Flot Charts</a> </li>
<li><a href="morris-chart.html">Morris Chart</a></li>
<li><a href="chart-js.html">Chart-js</a></li>
<li><a href="peity-chart.html">Peity Charts</a></li>
<li><a href="knob-chart.html">Knob Charts</a></li>
<li><a href="sparkline-chart.html">Sparkline charts</a></li>
<li><a href="extra-charts.html">Extra Charts</a></li>
</ul>
</li>
</ul>
</li>
<!-- /.Megamenu -->
</ul>
<ul class="nav navbar-top-links navbar-right pull-right">
<li>
<form role="search" class="app-search hidden-sm hidden-xs m-r-10">
<input type="text" placeholder="Search..." class="form-control"> <a href=""><i class="fa fa-search"></i></a> </form>
</li>
<li class="dropdown">
<a class="dropdown-toggle profile-pic" data-toggle="dropdown" href="#"> <img src="../plugins/images/users/varun.jpg" alt="user-img" width="36" class="img-circle"><b class="hidden-xs">Steave</b><span class="caret"></span> </a>
<ul class="dropdown-menu dropdown-user animated flipInY">
<li>
<div class="dw-user-box">
<div class="u-img"><img src="../plugins/images/users/varun.jpg" alt="user" /></div>
<div class="u-text">
<h4>Steave Jobs</h4>
<p class="text-muted">varun@gmail.com</p><a href="profile.html" class="btn btn-rounded btn-danger btn-sm">View Profile</a></div>
</div>
</li>
<li role="separator" class="divider"></li>
<li><a href="#"><i class="ti-user"></i> My Profile</a></li>
<li><a href="#"><i class="ti-wallet"></i> My Balance</a></li>
<li><a href="#"><i class="ti-email"></i> Inbox</a></li>
<li role="separator" class="divider"></li>
<li><a href="#"><i class="ti-settings"></i> Account Setting</a></li>
<li role="separator" class="divider"></li>
<li><a href="#"><i class="fa fa-power-off"></i> Logout</a></li>
</ul>
<!-- /.dropdown-user -->
</li>
<!-- /.dropdown -->
</ul>
</div>
<!-- /.navbar-header -->
<!-- /.navbar-top-links -->
<!-- /.navbar-static-side -->
</nav>
<!-- End Top Navigation -->
<!-- ============================================================== -->
<!-- Left Sidebar - style you can find in sidebar.scss -->
<!-- ============================================================== -->
<div class="navbar-default sidebar" role="navigation">
<div class="sidebar-nav slimscrollsidebar">
<div class="sidebar-head">
<h3><span class="fa-fw open-close"><i class="ti-menu hidden-xs"></i><i class="ti-close visible-xs"></i></span> <span class="hide-menu">Navigation</span></h3> </div>
<ul class="nav" id="side-menu">
<li class="user-pro">
<a href="#" class="waves-effect"><img src="../plugins/images/users/varun.jpg" alt="user-img" class="img-circle"> <span class="hide-menu"> Steve Gection<span class="fa arrow"></span></span>
</a>
<ul class="nav nav-second-level collapse" aria-expanded="false" style="height: 0px;">
<li><a href="javascript:void(0)"><i class="ti-user"></i> <span class="hide-menu">My Profile</span></a></li>
<li><a href="javascript:void(0)"><i class="ti-wallet"></i> <span class="hide-menu">My Balance</span></a></li>
<li><a href="javascript:void(0)"><i class="ti-email"></i> <span class="hide-menu">Inbox</span></a></li>
<li><a href="javascript:void(0)"><i class="ti-settings"></i> <span class="hide-menu">Account Setting</span></a></li>
<li><a href="javascript:void(0)"><i class="fa fa-power-off"></i> <span class="hide-menu">Logout</span></a></li>
</ul>
</li>
<li> <a href="index.html" class="waves-effect"><i class="mdi mdi-av-timer fa-fw" data-icon="v"></i> <span class="hide-menu"> Dashboard <span class="fa arrow"></span> <span class="label label-rouded label-inverse pull-right">4</span></span></a>
<ul class="nav nav-second-level">
<li> <a href="index.html"><i class=" fa-fw">1</i><span class="hide-menu">Dashboard 1</span></a> </li>
<li> <a href="index2.html"><i class=" fa-fw">2</i><span class="hide-menu">Dashboard 2</span></a> </li>
<li> <a href="index3.html"><i class=" fa-fw">3</i><span class="hide-menu">Dashboard 3</span></a> </li>
</ul>
</li>
<li> <a href="#" class="waves-effect"><i class="mdi mdi-format-color-fill fa-fw"></i> <span class="hide-menu">UI Elements<span class="fa arrow"></span> <span class="label label-rouded label-info pull-right">20</span> </span></a>
<ul class="nav nav-second-level">
<li><a href="panels-wells.html"><i data-icon="&#xe026;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Panels and Wells</span></a></li>
<li><a href="panel-ui-block.html"><i data-icon="&#xe025;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Panels With BlockUI</span></a></li>
<li><a href="buttons.html"><i class="ti-layout-menu fa-fw"></i> <span class="hide-menu">Buttons</span></a></li>
<li><a href="sweatalert.html"><i class="ti-alert fa-fw"></i> <span class="hide-menu">Sweat alert</span></a></li>
<li><a href="typography.html"><i data-icon="k" class="linea-icon linea-software fa-fw"></i> <span class="hide-menu">Typography</span></a></li>
<li><a href="grid.html"><i data-icon="&#xe009;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Grid</span></a></li>
<li><a href="tabs.html"><i class="ti-layers fa-fw"></i> <span class="hide-menu">Tabs</span></a></li>
<li><a href="tab-stylish.html"><i class=" ti-layers-alt fa-fw"></i> <span class="hide-menu">Stylish Tabs</span></a></li>
<li><a href="modals.html"><i data-icon="&#xe026;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Modals</span></a></li>
<li><a href="progressbars.html"><i class="ti-line-double fa-fw"></i> <span class="hide-menu">Progress Bars</span></a></li>
<li><a href="notification.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Notifications</span></a></li>
<li><a href="carousel.html"><i class="ti-layout-slider fa-fw"></i> <span class="hide-menu">Carousel</span></a></li>
<li><a href="list-style.html"><i data-icon="&#xe00b;" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">List & Media object</span></a></li>
<li><a href="user-cards.html"><i class="ti-user fa-fw"></i> <span class="hide-menu">User Cards</span></a></li>
<li><a href="timeline.html"><i data-icon="/" class="linea-icon linea-basic fa-fw"></i> <span class="hide-menu">Timeline</span></a></li>
<li><a href="timeline-horizontal.html"><i class="ti-layout-list-thumb fa-fw"></i> <span class="hide-menu">Horizontal Timeline</span></a></li>
<li><a href="nestable.html"><i class="ti-layout-accordion-separated fa-fw"></i> <span class="hide-menu">Nesteble</span></a></li>
<li><a href="range-slider.html"><i class=" ti-layout-slider-alt fa-fw"></i> <span class="hide-menu">Range Slider</span></a></li>
<li><a href="tooltip-stylish.html"><i class="ti-comments-smiley fa-fw"></i> <span class="hide-menu">Stylish Tooltip</span></a></li>
<li><a href="bootstrap.html"><i class="ti-rocket fa-fw"></i> <span class="hide-menu">Bootstrap UI</span></a></li>
</ul>
</li>
<li> <a href="#" class="waves-effect active"><i class="mdi mdi-content-copy fa-fw"></i> <span class="hide-menu">Sample Pages<span class="fa arrow"></span><span class="label label-rouded label-warning pull-right">30</span></span></a>
<ul class="nav nav-second-level">
<li><a href="starter-page.html"><i class="ti-layout-width-default fa-fw"></i> <span class="hide-menu">Starter Page</span></a></li>
<li><a href="blank.html"><i class="ti-layout-sidebar-left fa-fw"></i> <span class="hide-menu">Blank Page</span></a></li>
<li><a href="javascript:void(0)" class="waves-effect"><i class="ti-email fa-fw"></i> <span class="hide-menu">Email Templates</span><span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li> <a href="../email-templates/basic.html"><i class="fa-fw">B</i> <span class="hide-menu">Basic</span></a></li>
<li> <a href="../email-templates/alert.html"><i class="ti-alert fa-fw"></i> <span class="hide-menu">Alert</span></a></li>
<li> <a href="../email-templates/billing.html"><i class="ti-wallet fa-fw"></i> <span class="hide-menu">Billing</span></a></li>
<li> <a href="../email-templates/password-reset.html"><i class="ti-more fa-fw"></i> <span class="hide-menu">Reset Pwd</span></a></li>
</ul>
</li>
<li><a href="javascript:void(0)" class="waves-effect"><i class="ti-lock fa-fw"></i><span class="hide-menu">Authentication</span><span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a href="login.html"><i class="fa-fw">L</i> <span class="hide-menu">Login Page</span></a></li>
<li><a href="login2.html"><i class="fa-fw">L</i> <span class="hide-menu">Login v2</span></a></li>
<li><a href="register.html"><i class="fa-fw">R</i> <span class="hide-menu">Register</span></a></li>
<li><a href="register2.html"><i class="fa-fw">R</i> <span class="hide-menu">Register v2</span></a></li>
<li><a href="register3.html"><i class="fa-fw">3</i> <span class="hide-menu">3 Step Registration</span></a></li>
<li><a href="recoverpw.html"><i class="fa-fw">R</i> <span class="hide-menu">Recover Password</span></a></li>
<li><a href="lock-screen.html"><i class="fa-fw">L</i> <span class="hide-menu">Lock Screen</span></a></li>
</ul>
</li>
<li><a href="javascript:void(0)" class="waves-effect"><i class="ti-info-alt fa-fw"></i><span class="hide-menu">Error Pages</span><span class="fa arrow"></span></a>
<ul class="nav nav-third-level">
<li><a href="400.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 400</span></a></li>
<li><a href="403.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 403</span></a></li>
<li><a href="404.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 404</span></a></li>
<li><a href="500.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 500</span></a></li>
<li><a href="503.html"><i class="ti-info-alt fa-fw"></i> <span class="hide-menu">Error 503</span></a></li>
</ul>
</li>
<li><a href="lightbox.html"><i class="fa-fw">L</i> <span class="hide-menu">Lightbox Popup</span></a></li>