Commit 2e9dd41902d31147ff2a2c697f362c1502ef5423

Authored by Adabriand Furtado
1 parent a67771c2
Exists in master

Primeira versão do servidor de correção de sinais

corretor.py 0 → 100644
... ... @@ -0,0 +1,55 @@
  1 +import pbclient
  2 +import os
  3 +import pyutil
  4 +
  5 +class Corretor:
  6 +
  7 + def __init__(self, configuration, template_env):
  8 + self.config = configuration
  9 + self.env = template_env
  10 + pbclient.set('endpoint', self.config['PYBOSSA_ENDPOINT'])
  11 + pbclient.set('api_key', self.config['PYBOSSA_API_KEY'])
  12 +
  13 + def __find_project(self, app_short_name):
  14 + projects = pbclient.find_project(short_name=app_short_name)
  15 + return projects[0] if len(projects) > 0 else None
  16 +
  17 + def __setup_project(self, project):
  18 + self.__create_tasks(project)
  19 + self.__update_project_info(project)
  20 +
  21 + def __create_tasks(self, project):
  22 + test_signs = ["ENSINADO", "ENTANTO", "ENTENDIDO"]
  23 + for sign in test_signs:
  24 + task = dict(sign_name=sign)
  25 + pbclient.create_task(project.id, task)
  26 +
  27 + def __update_project_info(self, project):
  28 + template = self.env.get_template('template.html')
  29 + project.info['task_presenter'] = template.render(server=self.config['HOST_ENDPOINT'])
  30 + project.info['thumbnail'] = self.config['HOST_ENDPOINT'] + "/img/thumbnail.png"
  31 + pbclient.update_project(project)
  32 +
  33 + def create_project(self):
  34 + app_short_name = self.config['PYBOSSA_APP_SHORT_NAME']
  35 + project = self.__find_project(app_short_name)
  36 + result_msg = ""
  37 + if (project):
  38 + result_msg = "The project " + app_short_name + " was already created."
  39 + else:
  40 + project = pbclient.create_project(self.config['PYBOSSA_APP_NAME'], app_short_name, self.config['PYBOSSA_APP_DESCRIPTION'])
  41 + if (project):
  42 + self.__setup_project(project)
  43 + result_msg = "The project " + app_short_name + " was created."
  44 + else:
  45 + result_msg = "The project " + app_short_name + " couldn't be created. Check the server log for details."
  46 + pyutil.log(result_msg)
  47 + return result_msg
  48 +
  49 + def update_project(self):
  50 + app_short_name = self.config['PYBOSSA_APP_SHORT_NAME']
  51 + project = self.__find_project(app_short_name)
  52 + self.__update_project_info(project)
  53 + result_msg = "The project " + app_short_name + " was updated."
  54 + pyutil.log(result_msg)
  55 + return result_msg
0 56 \ No newline at end of file
... ...
main.py 0 → 100644
... ... @@ -0,0 +1,55 @@
  1 +# -*- coding: utf-8 -*-
  2 +from flask import Flask, send_from_directory
  3 +from jinja2 import Environment, PackageLoader
  4 +from corretor import Corretor
  5 +import os
  6 +import pyutil
  7 +
  8 +app = Flask(__name__)
  9 +controller = None
  10 +
  11 +@app.route('/<path:path>')
  12 +def send_static_files(path):
  13 + root_dir = os.path.abspath(os.path.dirname(__file__))
  14 + file_dir = os.path.join(root_dir, "view")
  15 + return send_from_directory(file_dir, path)
  16 +
  17 +@app.route("/update_project")
  18 +def update_project():
  19 + try:
  20 + return controller.update_project()
  21 + except:
  22 + pyutil.print_stack_trace()
  23 + raise
  24 +
  25 +@app.route("/create_project")
  26 +def create_project():
  27 + try:
  28 + return controller.create_project()
  29 + except:
  30 + pyutil.print_stack_trace()
  31 + raise
  32 +
  33 +def read_settings(app):
  34 + here = os.path.abspath(__file__)
  35 + config_path = os.path.join(os.path.dirname(here), 'settings_local.py')
  36 + if os.path.exists(config_path):
  37 + app.config.from_pyfile(config_path)
  38 + app.config['HOST_ENDPOINT'] = "http://" + app.config['SERVER_HOST'] + ":" + str(app.config['SERVER_PORT'])
  39 +
  40 +def setup_controller():
  41 + global controller
  42 + read_settings(app)
  43 + env = Environment(loader=PackageLoader('main', 'view'))
  44 + controller = Corretor(app.config, env)
  45 +
  46 +def run():
  47 + setup_controller()
  48 + app.run(port=app.config['SERVER_PORT'])
  49 +
  50 +if __name__ == '__main__':
  51 + try:
  52 + run()
  53 + except:
  54 + pyutil.print_stack_trace()
  55 + raise
0 56 \ No newline at end of file
... ...
pyutil.py 0 → 100644
... ... @@ -0,0 +1,58 @@
  1 +# -*- coding: UTF-8 -*-
  2 +
  3 +import datetime
  4 +import logging
  5 +import os
  6 +import shutil
  7 +import sys
  8 +
  9 +# @def funcao para obter data e hora atual do sistema
  10 +# @param string formato de data e hora
  11 +# @return string retorna data e hora do sistema no momento da chamada
  12 +def getTimeStamp(date_fmt = "%Y-%m-%d %H:%M:%S.%f"):
  13 + if ("%f" in date_fmt):
  14 + # [:-3] remove 3 casas decimais dos milisegundos (ms)
  15 + return datetime.datetime.now().strftime(date_fmt)[:-3]
  16 + else:
  17 + return datetime.datetime.now().strftime(date_fmt)
  18 +
  19 +# @def funcao para gravar log dos eventos em arquivo
  20 +# @param string mensagem a ser salva
  21 +# @param int indice do tipo de log 0: apenas print, 1: debug, 2: info, 3: warn, 4: error, 5: critical
  22 +# @param string caminho completo do arquivo de logs
  23 +# @param string formato de tempo utilizado
  24 +# @return none
  25 +def log(msg = "", log_level = 2, log_file = "events.log"):
  26 + dict_level = {
  27 + 0: ["Print", None, None],
  28 + 1: ["DEBUG", logging.DEBUG, logging.debug],
  29 + 2: ["INFO", logging.INFO, logging.info],
  30 + 3: ["WARNING", logging.WARN, logging.warn],
  31 + 4: ["ERROR", logging.ERROR, logging.error],
  32 + 5: ["CRITICAL", logging.CRITICAL, logging.critical]
  33 + }
  34 + # log_format = "[%(asctime)s.%(msecs).03d] %(levelname)s: <User: %(name)s> <Module: %(module)s> <Function: %(funcName)s>: %(message)s"
  35 + log_format = "[%(asctime)s.%(msecs).03d] %(levelname)s: %(message)s"
  36 + date_fmt = "%Y-%m-%d %H:%M:%S"
  37 + logging.basicConfig(filename = log_file, datefmt = date_fmt, format = log_format, level = dict_level[log_level][1])
  38 + logging.Formatter(fmt = "%(asctime)s", datefmt = date_fmt)
  39 + log_level %= len(dict_level)
  40 + write_mode = dict_level[log_level][2]
  41 + print("[%s] %s: %s" % (getTimeStamp(), dict_level[log_level][0], msg))
  42 + if (write_mode != None):
  43 + write_mode(msg)
  44 + return
  45 +
  46 +# @def funcao para exibir excecao
  47 +# @param string deve ser passado: "__file__" para identificar em qual modulo ocorreu a excecao
  48 +# @return int retorna 1
  49 +def print_stack_trace():
  50 + error = "\n File name: %s\n Function name: %s\n Line code: %s\n Type exception: %s\n Message: %s" % (
  51 + os.path.basename(sys.exc_info()[2].tb_frame.f_code.co_filename),
  52 + sys.exc_info()[2].tb_frame.f_code.co_name,
  53 + sys.exc_info()[2].tb_lineno,
  54 + sys.exc_info()[0].__name__,
  55 + sys.exc_info()[1]
  56 + )
  57 + log(error, 4)
  58 + return 1
... ...
requirements.txt 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +Flask==0.9
  2 +pybossa-client
0 3 \ No newline at end of file
... ...
settings_local.py.tmpl 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Corretor Server Configuration
  3 +SERVER_HOST = "localhost"
  4 +SERVER_PORT = 8000
  5 +
  6 +# PyBossa Configuration
  7 +PYBOSSA_APP_NAME = "Corretor de Sinais"
  8 +PYBOSSA_APP_SHORT_NAME = "corretor_sinais"
  9 +PYBOSSA_APP_DESCRIPTION = "Esse projeto ajudará a comunidade a melhorar sinais com movimentos complexos."
  10 +PYBOSSA_ENDPOINT = "http://localhost:5000"
  11 +PYBOSSA_API_KEY = "my-api-key"
0 12 \ No newline at end of file
... ...
view/assets/css/main.css 0 → 100644
... ... @@ -0,0 +1,49 @@
  1 +
  2 +header, section, footer, aside, nav, main, article, figure {
  3 + display: block;
  4 +}
  5 +
  6 +header {
  7 + text-align: center;
  8 + margin-bottom: 20px;
  9 + border-bottom: 1px solid rgba(230, 230, 230, 1.0);;
  10 +}
  11 +
  12 +h1, h2, h3, h4,h5, h6 {
  13 + color: rgba(125, 200, 255, 1.0);
  14 + font-family: verdana;
  15 +}
  16 +
  17 +.row {
  18 + margin-left: 1%;
  19 + margin-right: 1%;
  20 +}
  21 +
  22 +.input-group {
  23 + width: 100%;
  24 +}
  25 +
  26 +.btn-info {
  27 + width: 100%;
  28 +}
  29 +
  30 +.btn-file {
  31 + position: relative;
  32 + overflow: hidden;
  33 +}
  34 +
  35 +.btn-file input[type=file] {
  36 + position: absolute;
  37 + top: 0;
  38 + right: 0;
  39 + min-width: 100%;
  40 + min-height: 100%;
  41 + font-size: 100px;
  42 + text-align: right;
  43 + /* filter: alpha(opacity=0); */
  44 + opacity: 0;
  45 + outline: none;
  46 + background: white;
  47 + cursor: inherit;
  48 + display: block;
  49 +}
... ...
view/img/blender.svg 0 → 100644
... ... @@ -0,0 +1,235 @@
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
  3 +<svg
  4 + xmlns:dc="http://purl.org/dc/elements/1.1/"
  5 + xmlns:cc="http://web.resource.org/cc/"
  6 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  7 + xmlns:svg="http://www.w3.org/2000/svg"
  8 + xmlns="http://www.w3.org/2000/svg"
  9 + xmlns:xlink="http://www.w3.org/1999/xlink"
  10 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  11 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  12 + width="48"
  13 + height="48"
  14 + id="svg7854"
  15 + sodipodi:version="0.32"
  16 + inkscape:version="0.44+devel"
  17 + version="1.0"
  18 + sodipodi:docbase="/home/jimmac/gfx/ximian/art/icons/application-icons/blender/scalable"
  19 + sodipodi:docname="blender.svg"
  20 + inkscape:output_extension="org.inkscape.output.svg.inkscape"
  21 + sodipodi:modified="true">
  22 + <defs
  23 + id="defs7856">
  24 + <linearGradient
  25 + inkscape:collect="always"
  26 + id="linearGradient39171">
  27 + <stop
  28 + style="stop-color:white;stop-opacity:1;"
  29 + offset="0"
  30 + id="stop39173" />
  31 + <stop
  32 + style="stop-color:white;stop-opacity:0;"
  33 + offset="1"
  34 + id="stop39175" />
  35 + </linearGradient>
  36 + <linearGradient
  37 + id="linearGradient39155">
  38 + <stop
  39 + style="stop-color:white;stop-opacity:1;"
  40 + offset="0"
  41 + id="stop39157" />
  42 + <stop
  43 + style="stop-color:#dadada;stop-opacity:1;"
  44 + offset="1"
  45 + id="stop39159" />
  46 + </linearGradient>
  47 + <linearGradient
  48 + inkscape:collect="always"
  49 + id="linearGradient35500">
  50 + <stop
  51 + style="stop-color:white;stop-opacity:1;"
  52 + offset="0"
  53 + id="stop35502" />
  54 + <stop
  55 + style="stop-color:white;stop-opacity:0;"
  56 + offset="1"
  57 + id="stop35504" />
  58 + </linearGradient>
  59 + <linearGradient
  60 + inkscape:collect="always"
  61 + id="linearGradient35488">
  62 + <stop
  63 + style="stop-color:black;stop-opacity:1;"
  64 + offset="0"
  65 + id="stop35490" />
  66 + <stop
  67 + style="stop-color:black;stop-opacity:0;"
  68 + offset="1"
  69 + id="stop35492" />
  70 + </linearGradient>
  71 + <linearGradient
  72 + inkscape:collect="always"
  73 + id="linearGradient3564">
  74 + <stop
  75 + style="stop-color:white;stop-opacity:1;"
  76 + offset="0"
  77 + id="stop3566" />
  78 + <stop
  79 + style="stop-color:white;stop-opacity:0;"
  80 + offset="1"
  81 + id="stop3568" />
  82 + </linearGradient>
  83 + <linearGradient
  84 + inkscape:collect="always"
  85 + xlink:href="#linearGradient3564"
  86 + id="linearGradient34576"
  87 + gradientUnits="userSpaceOnUse"
  88 + x1="185.9903"
  89 + y1="193.33229"
  90 + x2="190.46461"
  91 + y2="-458.05771"
  92 + gradientTransform="matrix(6.818845e-2,0,0,6.818845e-2,22.51112,27.02885)" />
  93 + <radialGradient
  94 + inkscape:collect="always"
  95 + xlink:href="#linearGradient35488"
  96 + id="radialGradient35494"
  97 + cx="28.019106"
  98 + cy="38.98439"
  99 + fx="28.019106"
  100 + fy="38.98439"
  101 + r="15.467961"
  102 + gradientTransform="matrix(1,0,0,0.342857,0,25.61831)"
  103 + gradientUnits="userSpaceOnUse" />
  104 + <linearGradient
  105 + inkscape:collect="always"
  106 + xlink:href="#linearGradient35500"
  107 + id="linearGradient35506"
  108 + x1="21.204315"
  109 + y1="21.699249"
  110 + x2="20.155914"
  111 + y2="-26.908371"
  112 + gradientUnits="userSpaceOnUse" />
  113 + <linearGradient
  114 + inkscape:collect="always"
  115 + xlink:href="#linearGradient39155"
  116 + id="linearGradient39161"
  117 + x1="31.1875"
  118 + y1="18.875"
  119 + x2="29.875"
  120 + y2="34.375"
  121 + gradientUnits="userSpaceOnUse" />
  122 + <radialGradient
  123 + inkscape:collect="always"
  124 + xlink:href="#linearGradient39171"
  125 + id="radialGradient39177"
  126 + cx="26.109201"
  127 + cy="19.668886"
  128 + fx="26.109201"
  129 + fy="19.668886"
  130 + r="20.278975"
  131 + gradientTransform="matrix(1.647222,0,0,1.26792,-15.47413,-5.79794)"
  132 + gradientUnits="userSpaceOnUse" />
  133 + </defs>
  134 + <sodipodi:namedview
  135 + id="base"
  136 + pagecolor="#ffffff"
  137 + bordercolor="#e0e0e0"
  138 + borderopacity="1"
  139 + gridtolerance="10000"
  140 + guidetolerance="10"
  141 + objecttolerance="10"
  142 + inkscape:pageopacity="0.0"
  143 + inkscape:pageshadow="2"
  144 + inkscape:zoom="1"
  145 + inkscape:cx="45.643444"
  146 + inkscape:cy="21.909141"
  147 + inkscape:document-units="px"
  148 + inkscape:current-layer="layer1"
  149 + width="48px"
  150 + height="48px"
  151 + inkscape:showpageshadow="false"
  152 + inkscape:window-width="1046"
  153 + inkscape:window-height="975"
  154 + inkscape:window-x="404"
  155 + inkscape:window-y="135"
  156 + showgrid="false" />
  157 + <metadata
  158 + id="metadata7859">
  159 + <rdf:RDF>
  160 + <cc:Work
  161 + rdf:about="">
  162 + <dc:format>image/svg+xml</dc:format>
  163 + <dc:type
  164 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  165 + <dc:creator>
  166 + <cc:Agent>
  167 + <dc:title>Jakub Steiner</dc:title>
  168 + </cc:Agent>
  169 + </dc:creator>
  170 + <dc:source>http://jimmac.musichall.cz</dc:source>
  171 + <cc:license
  172 + rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
  173 + </cc:Work>
  174 + <cc:License
  175 + rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
  176 + <cc:permits
  177 + rdf:resource="http://web.resource.org/cc/Reproduction" />
  178 + <cc:permits
  179 + rdf:resource="http://web.resource.org/cc/Distribution" />
  180 + <cc:requires
  181 + rdf:resource="http://web.resource.org/cc/Notice" />
  182 + <cc:permits
  183 + rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
  184 + <cc:requires
  185 + rdf:resource="http://web.resource.org/cc/ShareAlike" />
  186 + <cc:requires
  187 + rdf:resource="http://web.resource.org/cc/SourceCode" />
  188 + </cc:License>
  189 + </rdf:RDF>
  190 + </metadata>
  191 + <g
  192 + inkscape:label="Layer 1"
  193 + inkscape:groupmode="layer"
  194 + id="layer1">
  195 + <path
  196 + sodipodi:type="arc"
  197 + style="opacity:0.54857142;color:black;fill:url(#radialGradient35494);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
  198 + id="path35486"
  199 + sodipodi:cx="28.019106"
  200 + sodipodi:cy="38.98439"
  201 + sodipodi:rx="15.467961"
  202 + sodipodi:ry="5.3033009"
  203 + d="M 43.487067 38.98439 A 15.467961 5.3033009 0 1 1 12.551145,38.98439 A 15.467961 5.3033009 0 1 1 43.487067 38.98439 z"
  204 + transform="matrix(1.274286,0,0,1.377124,-7.569123,-16.70193)" />
  205 + <path
  206 + style="fill:#f57900;fill-rule:evenodd;stroke:#ce5c00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
  207 + id="path2482"
  208 + d="M 16.048489,28.093447 C 16.058272,28.670129 16.244963,29.791349 16.519605,30.670872 C 17.101171,32.525009 18.086445,34.24353 19.458731,35.757368 C 20.866219,37.310486 22.59725,38.560595 24.598046,39.447128 C 26.703403,40.378701 28.982841,40.854616 31.34818,40.850869 C 33.713519,40.845862 35.992781,40.362183 38.09714,39.423852 C 40.09716,38.528564 41.828183,37.275461 43.23468,35.718335 C 44.603887,34.198491 45.587256,32.477221 46.168769,30.622077 C 46.463031,29.683724 46.64569,28.732685 46.722007,27.776769 C 46.795321,26.837463 46.764043,25.893258 46.630178,24.952977 C 46.370197,23.117378 45.733884,21.39613 44.757526,19.825397 C 43.861985,18.383698 42.709718,17.120857 41.340258,16.058422 C 41.340258,16.058422 41.342254,16.05644 41.342254,16.05644 C 41.342254,16.05644 27.513796,5.4367205 27.513796,5.4367205 C 27.502032,5.4269448 27.491273,5.4171691 27.47851,5.4083763 C 26.569507,4.7124499 25.043735,4.7144005 24.046782,5.4132603 C 23.036112,6.1189624 22.954961,7.2225216 23.851255,7.9614749 C 25.75103,9.4612382 27.643323,11.029515 29.553623,12.529094 C 29.553623,12.529094 12.001942,12.517388 12.001942,12.517388 C 10.007257,12.517388 8.8336816,13.465303 8.5865478,14.851071 C 8.3684707,16.073907 9.3344691,17.5892 11.066569,17.5892 C 14.023142,17.593062 17.00868,17.582341 19.975784,17.576483 C 19.975784,17.576483 4.074061,29.340645 4.074061,29.340645 C 4.0535343,29.356288 4.0330076,29.369972 4.0124809,29.385615 C 2.5150612,30.534004 2.0292858,32.444937 2.9725001,33.654008 C 3.9323324,34.883598 5.9702654,34.884596 7.4872289,33.660013 C 7.4872289,33.660013 16.164822,26.557915 16.164822,26.557915 C 16.164822,26.557915 16.039712,27.517739 16.048489,28.093447 z "
  209 + sodipodi:nodetypes="csssssssssscccsscccscccssccc" />
  210 + <path
  211 + sodipodi:type="arc"
  212 + style="opacity:1;color:black;fill:url(#linearGradient39161);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
  213 + id="path39153"
  214 + sodipodi:cx="31.1875"
  215 + sodipodi:cy="25.75"
  216 + sodipodi:rx="11.5625"
  217 + sodipodi:ry="10.125"
  218 + d="M 42.75 25.75 A 11.5625 10.125 0 1 1 19.625,25.75 A 11.5625 10.125 0 1 1 42.75 25.75 z"
  219 + transform="matrix(0.821621,0,0,0.839506,5.875686,3.882724)" />
  220 + <path
  221 + style="opacity:0.48571429;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient34576);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
  222 + d="M 25.796988,6.0267804 C 25.392136,6.0273334 24.978369,6.1524748 24.701716,6.3464071 C 24.701002,6.3471213 24.700295,6.3478355 24.699581,6.348542 C 24.419372,6.5441945 24.362722,6.7165481 24.354375,6.8088145 C 24.346027,6.901081 24.341136,6.9760921 24.54403,7.143362 C 24.563021,7.1590969 24.581497,7.1754384 24.599428,7.1923712 C 24.723686,7.2933997 30.303822,11.83132 30.303822,11.83132 C 30.67748,12.135411 30.819662,12.641552 30.659019,13.095735 C 30.498384,13.549926 30.069597,13.478467 29.587845,13.480018 C 23.953703,13.531155 11.978175,13.499193 11.978175,13.499193 C 11.025208,13.499831 9.6308955,14.015986 9.5646031,15.084954 C 9.5010407,16.109901 10.473909,16.542453 11.142862,16.542453 C 11.142862,16.542453 19.973265,16.525405 19.973265,16.525405 C 20.461629,16.524814 20.896122,16.746937 21.053731,17.20916 C 21.211341,17.671391 21.057056,17.74072 20.670067,18.038599 C 20.670067,18.038599 4.7693731,30.244334 4.7693731,30.244334 C 4.7679524,30.245762 4.7665317,30.247183 4.7651111,30.248596 C 4.7010736,30.29739 4.6803396,30.310852 4.703316,30.293351 C 4.1496404,30.717969 3.8072063,31.274071 3.6847449,31.770052 C 3.5622912,32.266033 3.6381548,32.6526 3.8722651,32.952698 C 4.3510984,33.566111 5.6416386,33.684809 6.7702766,32.773702 C 6.7702766,32.773702 15.443001,25.675712 15.443001,25.675712 C 15.804956,25.37996 16.310759,25.335106 16.719112,25.562543 C 17.127457,25.78998 17.355624,26.243625 17.294743,26.707061 C 17.294743,26.707061 17.182241,27.687106 17.188193,28.07722 C 17.38055,30.713627 18.636521,32.992215 20.303559,34.99196 C 23.181305,38.164769 27.152949,39.548245 31.34583,39.711879 C 35.54925,39.667941 39.531614,38.049451 42.388094,34.953602 C 47.607012,28.567735 46.329831,21.589702 40.640768,16.960375 C 36.144381,13.301557 31.427481,9.8791653 26.819821,6.340018 C 26.815528,6.3365009 26.811266,6.3329454 26.807035,6.3293668 C 26.79987,6.3244751 26.792767,6.319499 26.785725,6.314446 C 26.575182,6.1532581 26.201079,6.0262199 25.796988,6.0267804 z "
  223 + id="path3562"
  224 + sodipodi:nodetypes="cssssscscczccsccssssccscccccscssc" />
  225 + <path
  226 + style="fill:#3465a4;fill-rule:evenodd;stroke:none;stroke-width:1.0074476;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
  227 + id="path2478"
  228 + d="M 26.007076,24.754048 C 26.081541,23.392891 26.746369,22.191393 27.745781,21.340777 C 28.729299,20.504594 30.049996,19.99403 31.492657,19.99403 C 32.9344,19.99403 34.255098,20.504594 35.238386,21.340777 C 36.238901,22.191393 36.902925,23.39199 36.978261,24.753147 C 37.055437,26.153999 36.495461,27.454723 35.514011,28.418097 C 34.513495,29.399506 33.086912,30.0156 31.492657,30.0156 C 29.897485,30.0156 28.470901,29.399506 27.470432,28.418097 C 26.487971,27.454723 25.929925,26.153999 26.007076,24.754048 z " />
  229 + <path
  230 + style="opacity:0.52;fill:url(#radialGradient39177);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
  231 + d="M 25.8125,6.03125 C 25.407648,6.0318028 24.964153,6.1498177 24.6875,6.34375 C 24.407291,6.5394023 24.352097,6.7202336 24.34375,6.8125 C 24.335401,6.9047665 24.328356,6.9889801 24.53125,7.15625 C 24.550242,7.1719849 24.575819,7.1705672 24.59375,7.1875 C 24.718008,7.2885283 30.3125,11.84375 30.3125,11.84375 C 30.686158,12.147841 30.816893,12.639567 30.65625,13.09375 C 30.495615,13.547941 30.075502,13.467199 29.59375,13.46875 C 23.959608,13.519887 11.96875,13.5 11.96875,13.5 C 11.015783,13.500638 9.6287924,14.024782 9.5625,15.09375 C 9.4989378,16.118697 10.487297,16.53125 11.15625,16.53125 C 11.15625,16.531249 19.96875,16.53125 19.96875,16.53125 C 20.457114,16.530658 20.904891,16.756527 21.0625,17.21875 C 21.220109,17.680981 21.043239,17.733371 20.65625,18.03125 C 20.65625,18.03125 4.78125,30.25 4.78125,30.25 C 4.7798295,30.251429 4.7514206,30.248587 4.75,30.25 C 4.6859626,30.298794 4.6957736,30.298751 4.71875,30.28125 C 4.1650742,30.705869 3.8099614,31.285269 3.6875,31.78125 C 3.5650464,32.277231 3.6408897,32.637402 3.875,32.9375 C 4.3538333,33.550913 5.652612,33.692357 6.78125,32.78125 C 6.7812501,32.781251 15.4375,25.6875 15.4375,25.6875 C 15.799455,25.391747 16.310397,25.335063 16.71875,25.5625 C 17.127095,25.789936 17.342131,26.255314 17.28125,26.71875 C 17.28125,26.718749 17.181548,27.672386 17.1875,28.0625 C 17.282479,29.364256 17.639116,30.584325 18.176539,31.726734 C 20.799917,36.321089 27.770982,19.392853 44.1875,21.03125 C 43.339652,19.54368 42.151282,18.185293 40.65625,16.96875 C 36.159865,13.309932 31.42016,9.8828973 26.8125,6.34375 C 26.805335,6.3388584 26.788292,6.317553 26.78125,6.3125 C 26.570707,6.1513121 26.216591,6.0306895 25.8125,6.03125 z "
  232 + id="path39166"
  233 + sodipodi:nodetypes="csssscsccsscsccssssscsscccsssc" />
  234 + </g>
  235 +</svg>
... ...
view/img/thumbnail.png 0 → 100644

7.33 KB

view/index.html 0 → 100644
... ... @@ -0,0 +1,62 @@
  1 +<!DOCTYPE html>
  2 + <head>
  3 + <title>Corretor de Sinais</title>
  4 + <meta charset="utf-8">
  5 + <meta name="viewport" content="width=device-width, initial-scale=1">
  6 + <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  7 + <link rel="stylesheet" href="assets/css/main.css">
  8 + </head>
  9 + <body>
  10 + <div class="container">
  11 + <header>
  12 + <h1>Corretor de Sinais</h1>
  13 + </header>
  14 + <div class="row">
  15 + <p>
  16 + <div class="col-sm-6">
  17 + <video id="video_1" src="videos/video1.mp4" preload="metadata" width="100%" controls><source type="video/mp4"></video>
  18 + </div>
  19 + </p>
  20 + <p>
  21 + <div class="col-sm-6">
  22 + <video id="video_2" src="videos/video1.mp4" preload="metadata" width="100%" controls><source type="video/mp4"></video>
  23 + </div>
  24 + </p>
  25 + </div>
  26 + <div class="row">
  27 + <p>
  28 + <div class="col-sm-6">
  29 + <a href="#" class="btn btn-info btn-md">Download Video <span class="glyphicon glyphicon-download-alt"></span></a>
  30 + </div>
  31 + </p>
  32 + <p>
  33 + <div class="col-sm-6" >
  34 + <a href="#" class="btn btn-info btn-md">Download Video <span class="glyphicon glyphicon-download-alt"></span></a>
  35 + </div>
  36 + </p>
  37 + </div>
  38 + <div class="row">
  39 + <p>
  40 + <div class="col-sm-6" >
  41 + <a href="#" class="btn btn-primary btn-md" style="width: 100%">Blend File <img src="img/blender.svg" style="width: 15px"> <span class="glyphicon glyphicon-download-alt"></a>
  42 + </div>
  43 + </p>
  44 + <p>
  45 + <div class="col-sm-6" >
  46 + <div class="input-group">
  47 + <input type="text" class="form-control" placeholder="File to send...">
  48 + <span class="input-group-btn">
  49 + <button class="btn btn-primary btn-md active" type="button">Send</button>
  50 + </span>
  51 + </div>
  52 + </div>
  53 + </p>
  54 + </div>
  55 + </div>
  56 + <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  57 + <script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
  58 + <script type="text/javascript">
  59 + // $('#form').ajaxSubmit({success: ..., error: ...})
  60 + </script>
  61 + </body>
  62 +</html>
... ...
view/template.html 0 → 100644
... ... @@ -0,0 +1,108 @@
  1 +<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
  2 +<link rel="stylesheet" href="{{ server }}/assets/css/main.css">
  3 +
  4 +<div class="row">
  5 + <div id="finish" class="alert alert-success" style="display: none;">
  6 + <strong>Parabéns!</strong> <span id="i18n_congratulations_text">Você
  7 + completou todas as tarefas disponíveis!</span> <br />
  8 + <div class="alert-actions">
  9 + <a class="btn small" href="/">Voltar</a> <a class="btn small"
  10 + href="/project">ou, olhar outros projetos</a>
  11 + </div>
  12 + </div>
  13 +</div>
  14 +
  15 +<div id="main-container" class="container">
  16 + <h1>Nome do Sinala: <span id="sign-name"></span></h1>
  17 + <div class="row">
  18 + <p>
  19 + <div class="col-sm-6">
  20 + <video id="avatar-video" src="" preload="metadata" width="100%"
  21 + controls autoplay loop>
  22 + <source type="video/mp4">
  23 + </video>
  24 + </div>
  25 + </p>
  26 + <p>
  27 + <div class="col-sm-6">
  28 + <video id="ref-video" src="" preload="metadata" width="100%" controls
  29 + autoplay loop>
  30 + <source type="video/mp4">
  31 + </video>
  32 + </div>
  33 + </p>
  34 + </div>
  35 + <div class="row">
  36 + <p>
  37 + <div class="col-sm-6">
  38 + <a id="avatar-video-link" href="#" class="btn btn-info btn-md"
  39 + download>Download do Vídeo do Avatar <span
  40 + class="glyphicon glyphicon-download-alt"></span></a>
  41 + </div>
  42 + </p>
  43 + <p>
  44 + <div class="col-sm-6">
  45 + <a id="ref-video-link" class="btn btn-info btn-md" download>Download
  46 + do Vídeo de Referência<span class="glyphicon glyphicon-download-alt"></span>
  47 + </a>
  48 + </div>
  49 + </p>
  50 + </div>
  51 + <div class="row">
  52 + <p>
  53 + <div class="col-sm-6">
  54 + <a id="blend-link" href="#" class="btn btn-primary btn-md" style="width: 100%"
  55 + download>Download do Arquivo Blend<img
  56 + src="{{ server }}/img/blender.svg" style="width: 15px"> <span
  57 + class="glyphicon glyphicon-download-alt"></a>
  58 + </div>
  59 + </p>
  60 + <p>
  61 + <div class="col-sm-6">
  62 + <div class="input-group">
  63 + <input type="text" class="form-control"
  64 + placeholder="File to send..."> <span
  65 + class="input-group-btn">
  66 + <button id="finish-button" class="btn btn-primary btn-md active" type="button">Send</button>
  67 + </span>
  68 + </div>
  69 + </div>
  70 + </p>
  71 + </div>
  72 +</div>
  73 +
  74 +<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  75 +<script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
  76 +<script type="text/javascript">
  77 + var base_url = "{{ server }}/videos/"
  78 +
  79 + function saveAnswer(task, deferred) {
  80 + pybossa.saveTask(task.id, "OK").done(function() {
  81 + deferred.resolve();
  82 + });
  83 + }
  84 +
  85 + pybossa.presentTask(function(task, deferred) {
  86 + if (!$.isEmptyObject(task)) {
  87 + var sign_name = task.info.sign_name;
  88 + var blend_link = base_url + sign_name + ".blend";
  89 + var avatar_vid_link = base_url + sign_name + "_AVATAR.webm";
  90 + var ref_vid_link = base_url + sign_name + "_REF.webm";
  91 +
  92 + $("#sign-name").text(sign_name);
  93 + $("#avatar-video").attr("src", avatar_vid_link);
  94 + $("#ref-video").attr("src", ref_vid_link);
  95 + $("#avatar-video-link").attr("href", avatar_vid_link);
  96 + $("#ref-video-link").attr("href", ref_vid_link);
  97 + $("#blend-link").attr("href", blend_link);
  98 +
  99 + $("#finish-button").off("click").on("click", function(evt) {
  100 + saveAnswer(task, deferred);
  101 + });
  102 + } else {
  103 + $("#main-container").hide();
  104 + $("#finish").fadeIn(500);
  105 + }
  106 + });
  107 + pybossa.run('corretor_sinais');
  108 +</script>
... ...
view/videos/.gitempty 0 → 100644
view/videos/ENSINADO_AVATAR.blend 0 → 100644
No preview for this file type
view/videos/ENSINADO_AVATAR.mp4 0 → 100644
No preview for this file type
view/videos/ENSINADO_AVATAR.webm 0 → 100644
No preview for this file type
view/videos/ENSINADO_REF.mp4 0 → 100644
No preview for this file type
view/videos/ENSINADO_REF.webm 0 → 100644
No preview for this file type
view/videos/ENTANTO_AVATAR.blend 0 → 100644
No preview for this file type
view/videos/ENTANTO_AVATAR.mp4 0 → 100644
No preview for this file type
view/videos/ENTANTO_AVATAR.webm 0 → 100644
No preview for this file type
view/videos/ENTANTO_REF.mp4 0 → 100644
No preview for this file type
view/videos/ENTANTO_REF.webm 0 → 100644
No preview for this file type
view/videos/ENTENDIDO_AVATAR.blend 0 → 100644
No preview for this file type
view/videos/ENTENDIDO_AVATAR.mp4 0 → 100644
No preview for this file type
view/videos/ENTENDIDO_AVATAR.webm 0 → 100644
No preview for this file type
view/videos/ENTENDIDO_REF.mp4 0 → 100644
No preview for this file type
view/videos/ENTENDIDO_REF.webm 0 → 100644
No preview for this file type
views/assets/css/main.css
... ... @@ -1,49 +0,0 @@
1   -
2   -header, section, footer, aside, nav, main, article, figure {
3   - display: block;
4   -}
5   -
6   -header {
7   - text-align: center;
8   - margin-bottom: 20px;
9   - border-bottom: 1px solid rgba(230, 230, 230, 1.0);;
10   -}
11   -
12   -h1, h2, h3, h4,h5, h6 {
13   - color: rgba(125, 200, 255, 1.0);
14   - font-family: verdana;
15   -}
16   -
17   -.row {
18   - margin-left: 1%;
19   - margin-right: 1%;
20   -}
21   -
22   -.input-group {
23   - width: 100%;
24   -}
25   -
26   -.btn-info {
27   - width: 100%;
28   -}
29   -
30   -.btn-file {
31   - position: relative;
32   - overflow: hidden;
33   -}
34   -
35   -.btn-file input[type=file] {
36   - position: absolute;
37   - top: 0;
38   - right: 0;
39   - min-width: 100%;
40   - min-height: 100%;
41   - font-size: 100px;
42   - text-align: right;
43   - /* filter: alpha(opacity=0); */
44   - opacity: 0;
45   - outline: none;
46   - background: white;
47   - cursor: inherit;
48   - display: block;
49   -}
views/img/blender.svg
... ... @@ -1,235 +0,0 @@
1   -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2   -<!-- Created with Inkscape (http://www.inkscape.org/) -->
3   -<svg
4   - xmlns:dc="http://purl.org/dc/elements/1.1/"
5   - xmlns:cc="http://web.resource.org/cc/"
6   - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7   - xmlns:svg="http://www.w3.org/2000/svg"
8   - xmlns="http://www.w3.org/2000/svg"
9   - xmlns:xlink="http://www.w3.org/1999/xlink"
10   - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11   - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12   - width="48"
13   - height="48"
14   - id="svg7854"
15   - sodipodi:version="0.32"
16   - inkscape:version="0.44+devel"
17   - version="1.0"
18   - sodipodi:docbase="/home/jimmac/gfx/ximian/art/icons/application-icons/blender/scalable"
19   - sodipodi:docname="blender.svg"
20   - inkscape:output_extension="org.inkscape.output.svg.inkscape"
21   - sodipodi:modified="true">
22   - <defs
23   - id="defs7856">
24   - <linearGradient
25   - inkscape:collect="always"
26   - id="linearGradient39171">
27   - <stop
28   - style="stop-color:white;stop-opacity:1;"
29   - offset="0"
30   - id="stop39173" />
31   - <stop
32   - style="stop-color:white;stop-opacity:0;"
33   - offset="1"
34   - id="stop39175" />
35   - </linearGradient>
36   - <linearGradient
37   - id="linearGradient39155">
38   - <stop
39   - style="stop-color:white;stop-opacity:1;"
40   - offset="0"
41   - id="stop39157" />
42   - <stop
43   - style="stop-color:#dadada;stop-opacity:1;"
44   - offset="1"
45   - id="stop39159" />
46   - </linearGradient>
47   - <linearGradient
48   - inkscape:collect="always"
49   - id="linearGradient35500">
50   - <stop
51   - style="stop-color:white;stop-opacity:1;"
52   - offset="0"
53   - id="stop35502" />
54   - <stop
55   - style="stop-color:white;stop-opacity:0;"
56   - offset="1"
57   - id="stop35504" />
58   - </linearGradient>
59   - <linearGradient
60   - inkscape:collect="always"
61   - id="linearGradient35488">
62   - <stop
63   - style="stop-color:black;stop-opacity:1;"
64   - offset="0"
65   - id="stop35490" />
66   - <stop
67   - style="stop-color:black;stop-opacity:0;"
68   - offset="1"
69   - id="stop35492" />
70   - </linearGradient>
71   - <linearGradient
72   - inkscape:collect="always"
73   - id="linearGradient3564">
74   - <stop
75   - style="stop-color:white;stop-opacity:1;"
76   - offset="0"
77   - id="stop3566" />
78   - <stop
79   - style="stop-color:white;stop-opacity:0;"
80   - offset="1"
81   - id="stop3568" />
82   - </linearGradient>
83   - <linearGradient
84   - inkscape:collect="always"
85   - xlink:href="#linearGradient3564"
86   - id="linearGradient34576"
87   - gradientUnits="userSpaceOnUse"
88   - x1="185.9903"
89   - y1="193.33229"
90   - x2="190.46461"
91   - y2="-458.05771"
92   - gradientTransform="matrix(6.818845e-2,0,0,6.818845e-2,22.51112,27.02885)" />
93   - <radialGradient
94   - inkscape:collect="always"
95   - xlink:href="#linearGradient35488"
96   - id="radialGradient35494"
97   - cx="28.019106"
98   - cy="38.98439"
99   - fx="28.019106"
100   - fy="38.98439"
101   - r="15.467961"
102   - gradientTransform="matrix(1,0,0,0.342857,0,25.61831)"
103   - gradientUnits="userSpaceOnUse" />
104   - <linearGradient
105   - inkscape:collect="always"
106   - xlink:href="#linearGradient35500"
107   - id="linearGradient35506"
108   - x1="21.204315"
109   - y1="21.699249"
110   - x2="20.155914"
111   - y2="-26.908371"
112   - gradientUnits="userSpaceOnUse" />
113   - <linearGradient
114   - inkscape:collect="always"
115   - xlink:href="#linearGradient39155"
116   - id="linearGradient39161"
117   - x1="31.1875"
118   - y1="18.875"
119   - x2="29.875"
120   - y2="34.375"
121   - gradientUnits="userSpaceOnUse" />
122   - <radialGradient
123   - inkscape:collect="always"
124   - xlink:href="#linearGradient39171"
125   - id="radialGradient39177"
126   - cx="26.109201"
127   - cy="19.668886"
128   - fx="26.109201"
129   - fy="19.668886"
130   - r="20.278975"
131   - gradientTransform="matrix(1.647222,0,0,1.26792,-15.47413,-5.79794)"
132   - gradientUnits="userSpaceOnUse" />
133   - </defs>
134   - <sodipodi:namedview
135   - id="base"
136   - pagecolor="#ffffff"
137   - bordercolor="#e0e0e0"
138   - borderopacity="1"
139   - gridtolerance="10000"
140   - guidetolerance="10"
141   - objecttolerance="10"
142   - inkscape:pageopacity="0.0"
143   - inkscape:pageshadow="2"
144   - inkscape:zoom="1"
145   - inkscape:cx="45.643444"
146   - inkscape:cy="21.909141"
147   - inkscape:document-units="px"
148   - inkscape:current-layer="layer1"
149   - width="48px"
150   - height="48px"
151   - inkscape:showpageshadow="false"
152   - inkscape:window-width="1046"
153   - inkscape:window-height="975"
154   - inkscape:window-x="404"
155   - inkscape:window-y="135"
156   - showgrid="false" />
157   - <metadata
158   - id="metadata7859">
159   - <rdf:RDF>
160   - <cc:Work
161   - rdf:about="">
162   - <dc:format>image/svg+xml</dc:format>
163   - <dc:type
164   - rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
165   - <dc:creator>
166   - <cc:Agent>
167   - <dc:title>Jakub Steiner</dc:title>
168   - </cc:Agent>
169   - </dc:creator>
170   - <dc:source>http://jimmac.musichall.cz</dc:source>
171   - <cc:license
172   - rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
173   - </cc:Work>
174   - <cc:License
175   - rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
176   - <cc:permits
177   - rdf:resource="http://web.resource.org/cc/Reproduction" />
178   - <cc:permits
179   - rdf:resource="http://web.resource.org/cc/Distribution" />
180   - <cc:requires
181   - rdf:resource="http://web.resource.org/cc/Notice" />
182   - <cc:permits
183   - rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
184   - <cc:requires
185   - rdf:resource="http://web.resource.org/cc/ShareAlike" />
186   - <cc:requires
187   - rdf:resource="http://web.resource.org/cc/SourceCode" />
188   - </cc:License>
189   - </rdf:RDF>
190   - </metadata>
191   - <g
192   - inkscape:label="Layer 1"
193   - inkscape:groupmode="layer"
194   - id="layer1">
195   - <path
196   - sodipodi:type="arc"
197   - style="opacity:0.54857142;color:black;fill:url(#radialGradient35494);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
198   - id="path35486"
199   - sodipodi:cx="28.019106"
200   - sodipodi:cy="38.98439"
201   - sodipodi:rx="15.467961"
202   - sodipodi:ry="5.3033009"
203   - d="M 43.487067 38.98439 A 15.467961 5.3033009 0 1 1 12.551145,38.98439 A 15.467961 5.3033009 0 1 1 43.487067 38.98439 z"
204   - transform="matrix(1.274286,0,0,1.377124,-7.569123,-16.70193)" />
205   - <path
206   - style="fill:#f57900;fill-rule:evenodd;stroke:#ce5c00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
207   - id="path2482"
208   - d="M 16.048489,28.093447 C 16.058272,28.670129 16.244963,29.791349 16.519605,30.670872 C 17.101171,32.525009 18.086445,34.24353 19.458731,35.757368 C 20.866219,37.310486 22.59725,38.560595 24.598046,39.447128 C 26.703403,40.378701 28.982841,40.854616 31.34818,40.850869 C 33.713519,40.845862 35.992781,40.362183 38.09714,39.423852 C 40.09716,38.528564 41.828183,37.275461 43.23468,35.718335 C 44.603887,34.198491 45.587256,32.477221 46.168769,30.622077 C 46.463031,29.683724 46.64569,28.732685 46.722007,27.776769 C 46.795321,26.837463 46.764043,25.893258 46.630178,24.952977 C 46.370197,23.117378 45.733884,21.39613 44.757526,19.825397 C 43.861985,18.383698 42.709718,17.120857 41.340258,16.058422 C 41.340258,16.058422 41.342254,16.05644 41.342254,16.05644 C 41.342254,16.05644 27.513796,5.4367205 27.513796,5.4367205 C 27.502032,5.4269448 27.491273,5.4171691 27.47851,5.4083763 C 26.569507,4.7124499 25.043735,4.7144005 24.046782,5.4132603 C 23.036112,6.1189624 22.954961,7.2225216 23.851255,7.9614749 C 25.75103,9.4612382 27.643323,11.029515 29.553623,12.529094 C 29.553623,12.529094 12.001942,12.517388 12.001942,12.517388 C 10.007257,12.517388 8.8336816,13.465303 8.5865478,14.851071 C 8.3684707,16.073907 9.3344691,17.5892 11.066569,17.5892 C 14.023142,17.593062 17.00868,17.582341 19.975784,17.576483 C 19.975784,17.576483 4.074061,29.340645 4.074061,29.340645 C 4.0535343,29.356288 4.0330076,29.369972 4.0124809,29.385615 C 2.5150612,30.534004 2.0292858,32.444937 2.9725001,33.654008 C 3.9323324,34.883598 5.9702654,34.884596 7.4872289,33.660013 C 7.4872289,33.660013 16.164822,26.557915 16.164822,26.557915 C 16.164822,26.557915 16.039712,27.517739 16.048489,28.093447 z "
209   - sodipodi:nodetypes="csssssssssscccsscccscccssccc" />
210   - <path
211   - sodipodi:type="arc"
212   - style="opacity:1;color:black;fill:url(#linearGradient39161);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
213   - id="path39153"
214   - sodipodi:cx="31.1875"
215   - sodipodi:cy="25.75"
216   - sodipodi:rx="11.5625"
217   - sodipodi:ry="10.125"
218   - d="M 42.75 25.75 A 11.5625 10.125 0 1 1 19.625,25.75 A 11.5625 10.125 0 1 1 42.75 25.75 z"
219   - transform="matrix(0.821621,0,0,0.839506,5.875686,3.882724)" />
220   - <path
221   - style="opacity:0.48571429;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient34576);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
222   - d="M 25.796988,6.0267804 C 25.392136,6.0273334 24.978369,6.1524748 24.701716,6.3464071 C 24.701002,6.3471213 24.700295,6.3478355 24.699581,6.348542 C 24.419372,6.5441945 24.362722,6.7165481 24.354375,6.8088145 C 24.346027,6.901081 24.341136,6.9760921 24.54403,7.143362 C 24.563021,7.1590969 24.581497,7.1754384 24.599428,7.1923712 C 24.723686,7.2933997 30.303822,11.83132 30.303822,11.83132 C 30.67748,12.135411 30.819662,12.641552 30.659019,13.095735 C 30.498384,13.549926 30.069597,13.478467 29.587845,13.480018 C 23.953703,13.531155 11.978175,13.499193 11.978175,13.499193 C 11.025208,13.499831 9.6308955,14.015986 9.5646031,15.084954 C 9.5010407,16.109901 10.473909,16.542453 11.142862,16.542453 C 11.142862,16.542453 19.973265,16.525405 19.973265,16.525405 C 20.461629,16.524814 20.896122,16.746937 21.053731,17.20916 C 21.211341,17.671391 21.057056,17.74072 20.670067,18.038599 C 20.670067,18.038599 4.7693731,30.244334 4.7693731,30.244334 C 4.7679524,30.245762 4.7665317,30.247183 4.7651111,30.248596 C 4.7010736,30.29739 4.6803396,30.310852 4.703316,30.293351 C 4.1496404,30.717969 3.8072063,31.274071 3.6847449,31.770052 C 3.5622912,32.266033 3.6381548,32.6526 3.8722651,32.952698 C 4.3510984,33.566111 5.6416386,33.684809 6.7702766,32.773702 C 6.7702766,32.773702 15.443001,25.675712 15.443001,25.675712 C 15.804956,25.37996 16.310759,25.335106 16.719112,25.562543 C 17.127457,25.78998 17.355624,26.243625 17.294743,26.707061 C 17.294743,26.707061 17.182241,27.687106 17.188193,28.07722 C 17.38055,30.713627 18.636521,32.992215 20.303559,34.99196 C 23.181305,38.164769 27.152949,39.548245 31.34583,39.711879 C 35.54925,39.667941 39.531614,38.049451 42.388094,34.953602 C 47.607012,28.567735 46.329831,21.589702 40.640768,16.960375 C 36.144381,13.301557 31.427481,9.8791653 26.819821,6.340018 C 26.815528,6.3365009 26.811266,6.3329454 26.807035,6.3293668 C 26.79987,6.3244751 26.792767,6.319499 26.785725,6.314446 C 26.575182,6.1532581 26.201079,6.0262199 25.796988,6.0267804 z "
223   - id="path3562"
224   - sodipodi:nodetypes="cssssscscczccsccssssccscccccscssc" />
225   - <path
226   - style="fill:#3465a4;fill-rule:evenodd;stroke:none;stroke-width:1.0074476;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none"
227   - id="path2478"
228   - d="M 26.007076,24.754048 C 26.081541,23.392891 26.746369,22.191393 27.745781,21.340777 C 28.729299,20.504594 30.049996,19.99403 31.492657,19.99403 C 32.9344,19.99403 34.255098,20.504594 35.238386,21.340777 C 36.238901,22.191393 36.902925,23.39199 36.978261,24.753147 C 37.055437,26.153999 36.495461,27.454723 35.514011,28.418097 C 34.513495,29.399506 33.086912,30.0156 31.492657,30.0156 C 29.897485,30.0156 28.470901,29.399506 27.470432,28.418097 C 26.487971,27.454723 25.929925,26.153999 26.007076,24.754048 z " />
229   - <path
230   - style="opacity:0.52;fill:url(#radialGradient39177);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
231   - d="M 25.8125,6.03125 C 25.407648,6.0318028 24.964153,6.1498177 24.6875,6.34375 C 24.407291,6.5394023 24.352097,6.7202336 24.34375,6.8125 C 24.335401,6.9047665 24.328356,6.9889801 24.53125,7.15625 C 24.550242,7.1719849 24.575819,7.1705672 24.59375,7.1875 C 24.718008,7.2885283 30.3125,11.84375 30.3125,11.84375 C 30.686158,12.147841 30.816893,12.639567 30.65625,13.09375 C 30.495615,13.547941 30.075502,13.467199 29.59375,13.46875 C 23.959608,13.519887 11.96875,13.5 11.96875,13.5 C 11.015783,13.500638 9.6287924,14.024782 9.5625,15.09375 C 9.4989378,16.118697 10.487297,16.53125 11.15625,16.53125 C 11.15625,16.531249 19.96875,16.53125 19.96875,16.53125 C 20.457114,16.530658 20.904891,16.756527 21.0625,17.21875 C 21.220109,17.680981 21.043239,17.733371 20.65625,18.03125 C 20.65625,18.03125 4.78125,30.25 4.78125,30.25 C 4.7798295,30.251429 4.7514206,30.248587 4.75,30.25 C 4.6859626,30.298794 4.6957736,30.298751 4.71875,30.28125 C 4.1650742,30.705869 3.8099614,31.285269 3.6875,31.78125 C 3.5650464,32.277231 3.6408897,32.637402 3.875,32.9375 C 4.3538333,33.550913 5.652612,33.692357 6.78125,32.78125 C 6.7812501,32.781251 15.4375,25.6875 15.4375,25.6875 C 15.799455,25.391747 16.310397,25.335063 16.71875,25.5625 C 17.127095,25.789936 17.342131,26.255314 17.28125,26.71875 C 17.28125,26.718749 17.181548,27.672386 17.1875,28.0625 C 17.282479,29.364256 17.639116,30.584325 18.176539,31.726734 C 20.799917,36.321089 27.770982,19.392853 44.1875,21.03125 C 43.339652,19.54368 42.151282,18.185293 40.65625,16.96875 C 36.159865,13.309932 31.42016,9.8828973 26.8125,6.34375 C 26.805335,6.3388584 26.788292,6.317553 26.78125,6.3125 C 26.570707,6.1513121 26.216591,6.0306895 25.8125,6.03125 z "
232   - id="path39166"
233   - sodipodi:nodetypes="csssscsccsscsccssssscsscccsssc" />
234   - </g>
235   -</svg>
views/index.html
... ... @@ -1,62 +0,0 @@
1   -<!DOCTYPE html>
2   - <head>
3   - <title>Corretor de Sinais</title>
4   - <meta charset="utf-8">
5   - <meta name="viewport" content="width=device-width, initial-scale=1">
6   - <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
7   - <link rel="stylesheet" href="assets/css/main.css">
8   - </head>
9   - <body>
10   - <div class="container">
11   - <header>
12   - <h1>Corretor de Sinais</h1>
13   - </header>
14   - <div class="row">
15   - <p>
16   - <div class="col-sm-6">
17   - <video id="video_1" src="videos/video1.mp4" preload="metadata" width="100%" controls><source type="video/mp4"></video>
18   - </div>
19   - </p>
20   - <p>
21   - <div class="col-sm-6">
22   - <video id="video_2" src="videos/video1.mp4" preload="metadata" width="100%" controls><source type="video/mp4"></video>
23   - </div>
24   - </p>
25   - </div>
26   - <div class="row">
27   - <p>
28   - <div class="col-sm-6">
29   - <a href="#" class="btn btn-info btn-md">Download Video <span class="glyphicon glyphicon-download-alt"></span></a>
30   - </div>
31   - </p>
32   - <p>
33   - <div class="col-sm-6" >
34   - <a href="#" class="btn btn-info btn-md">Download Video <span class="glyphicon glyphicon-download-alt"></span></a>
35   - </div>
36   - </p>
37   - </div>
38   - <div class="row">
39   - <p>
40   - <div class="col-sm-6" >
41   - <a href="#" class="btn btn-primary btn-md" style="width: 100%">Blend File <img src="img/blender.svg" style="width: 15px"> <span class="glyphicon glyphicon-download-alt"></a>
42   - </div>
43   - </p>
44   - <p>
45   - <div class="col-sm-6" >
46   - <div class="input-group">
47   - <input type="text" class="form-control" placeholder="File to send...">
48   - <span class="input-group-btn">
49   - <button class="btn btn-primary btn-md active" type="button">Send</button>
50   - </span>
51   - </div>
52   - </div>
53   - </p>
54   - </div>
55   - </div>
56   - <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
57   - <script type="text/javascript" src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
58   - <script type="text/javascript">
59   - // $('#form').ajaxSubmit({success: ..., error: ...})
60   - </script>
61   - </body>
62   -</html>
views/videos/.gitempty