diff --git a/.gitignore b/.gitignore
index 8c5ba00..6efe315 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,12 @@
.*
-*~
!.gitignore
!.gitempty
+*~
*.log
*.pyc
+validador.conf
+validador.wsgi
settings_local.py
env/
+videos/
tmp/
diff --git a/validador.py b/validador.py
index 56be5ff..262a059 100644
--- a/validador.py
+++ b/validador.py
@@ -4,24 +4,26 @@ from werkzeug import secure_filename
import pbclient
import os
import pyutil
+import requests
+import tempfile
class Validador:
-
+
def __init__(self, configuration, template_env):
self.config = configuration
self.env = template_env
self.__setup_pb_client()
-
+
def __setup_pb_client(self):
- pbclient.set('endpoint', self.config['PYBOSSA_ENDPOINT'])
+ pbclient.set('endpoint', self.config['PYBOSSA_ENDPOINT'])
pbclient.set('api_key', self.config['PYBOSSA_API_KEY'])
-
+
def __find_project(self, app_short_name):
projects = pbclient.find_project(short_name=app_short_name)
return projects[0] if len(projects) > 0 else None
-
+
def __setup_project(self, project):
- self.__create_tasks(project)
+ #self.__create_tasks(project)
self.__update_project_info(project)
def __create_tasks(self, project):
@@ -29,16 +31,16 @@ class Validador:
for sign in test_signs:
task = dict(sign_name=sign, submission_date=pyutil.get_date_now())
pbclient.create_task(project.id, task)
-
- def __update_project_info(self, project):
+
+ def __update_project_info(self, project):
template = self.env.get_template('template.html')
project.info['task_presenter'] = template.render(server=self.config['HOST_STATIC_FILES_ENDPOINT'], server_backend=self.config['HOST_ENDPOINT'], app_shortname=self.config['PYBOSSA_APP_SHORT_NAME'])
project.info['thumbnail'] = self.config['HOST_STATIC_FILES_ENDPOINT'] + "/img/thumbnail.png"
project.info['sched'] = "incremental"
+ project.info['published'] = True
project.allow_anonymous_contributors = False
- #project.published = True
pbclient.update_project(project)
-
+
def create_project(self):
app_short_name = self.config['PYBOSSA_APP_SHORT_NAME']
project = self.__find_project(app_short_name)
@@ -50,30 +52,30 @@ class Validador:
if (project):
self.__setup_project(project)
result_msg = "The project " + app_short_name + " was created."
- else:
+ else:
result_msg = "The project " + app_short_name + " couldn't be created. Check the server log for details."
pyutil.log(result_msg)
- return result_msg
+ return result_msg
- def update_project(self):
+ def update_project(self):
app_short_name = self.config['PYBOSSA_APP_SHORT_NAME']
project = self.__find_project(app_short_name)
self.__update_project_info(project)
result_msg = "The project " + app_short_name + " was updated."
pyutil.log(result_msg)
return result_msg
-
+
def __find_task(self, project_id, task_id):
tasks = pbclient.find_tasks(project_id, id=task_id)
return tasks[0] if len(tasks) > 0 else None
-
+
def __find_taskruns(self, project_id, task_id):
return pbclient.find_taskruns(project_id, id=task_id)
-
+
def __number_of_taskruns(self, project_id, task_id):
taskruns = self.__find_taskruns(project_id, task_id)
return len(taskruns)
-
+
def __close_task(self, project_id, task_id):
pyutil.log("Closing the task with ID=" + str(task_id) + ".")
task = self.__find_task(project_id, task_id)
@@ -81,19 +83,44 @@ class Validador:
task.n_answers = number_of_taskruns + 1
pbclient.update_task(task)
return "The task with ID=" + str(task_id) + " was closed."
-
+
+ def get_file(self, url, filename):
+ r = requests.get(url, stream = True)
+ if (r.status_code == 200):
+ with open(filename, 'wb') as f:
+ for chunk in r.iter_content(chunk_size = 1024):
+ if chunk:
+ f.write(chunk)
+ return True
+ return False
+
def finish_task(self):
task_id = request.form['task_id']
project_id = request.form['project_id']
+ sign_name = request.form['sign_name']
+ api_host = self.config['API_HOST']
+ api_dbhost = self.config['API_DB_HOST']
number_of_approval = int(request.form['number_of_approval'])
number_of_avatar_disapproval = int(request.form['number_of_avatar_disapproval'])
number_of_ref_disapproval = int(request.form['number_of_ref_disapproval'])
agreement_number = self.config['AGREEMENT_NUMBER']
result_msg = ""
code = 200
- if (number_of_approval >= agreement_number or number_of_avatar_disapproval >= agreement_number or number_of_ref_disapproval >= agreement_number):
- result_msg = self.__close_task(project_id, task_id)
+ selo = None
+ if (number_of_approval >= agreement_number):
+ selo = 2
+ result_msg = "selo was changed to 2 - especialista"
+ elif(number_of_avatar_disapproval >= agreement_number):
+ selo = 4
+ result_msg = "selo was changed to 4 - invalido_especialista"
+ elif(number_of_ref_disapproval >= agreement_number):
+ selo = 6
+ result_msg = "selo was changed to 6 - invalido_animadores"
else:
result_msg = "The task with ID=" + str(task_id) + " didn't reach the agreement number yet."
+ if (selo != None):
+ values = { "nome": sign_name, "selo": selo, "wikilibras": True, "overwrite": True }
+ r = requests.post(("%s/gsinal" % (api_dbhost)), data = values)
+ result_msg = self.__close_task(project_id, task_id)
pyutil.log(result_msg)
return make_response(result_msg, code)
diff --git a/view/template.html b/view/template.html
index 2292692..5e04dc5 100755
--- a/view/template.html
+++ b/view/template.html
@@ -11,7 +11,7 @@
tarefas disponÃveis!