Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorRogelio Mita <rogeliomita@activitycentral.com>2013-04-17 18:49:10 (GMT)
committer Rogelio Mita <rogeliomita@activitycentral.com>2013-04-17 18:49:10 (GMT)
commit559dac8c0f400198c9c89a9aa09902fb1c44c4e1 (patch)
tree827e2a101e61db904f0e4a5e21084b21d0793d51 /webapp
parent6d804429d0531fff6241fa2a7b22d1d18e8c7b7e (diff)
Cosmetic and refactoring
Diffstat (limited to 'webapp')
-rw-r--r--webapp/polls/templates/mustache/field.html3
-rw-r--r--webapp/polls/templates/poll-form.html14
-rw-r--r--webapp/pollster/templates/poll-assignment-form.html20
-rw-r--r--webapp/pollster/templates/pollster-list.html2
-rw-r--r--webapp/pollster/views.py16
-rw-r--r--webapp/sociologist/pollster_urls.py6
-rw-r--r--webapp/sociologist/views.py17
-rw-r--r--webapp/webapp/static/js/dynamic_structure.js59
-rw-r--r--webapp/webapp/templates/base-main.html4
9 files changed, 115 insertions, 26 deletions
diff --git a/webapp/polls/templates/mustache/field.html b/webapp/polls/templates/mustache/field.html
index 26cd90f..2a4b130 100644
--- a/webapp/polls/templates/mustache/field.html
+++ b/webapp/polls/templates/mustache/field.html
@@ -68,9 +68,8 @@
</div>
-
<label class="dependence_label"><b>Dependencia</b>:</label>
- <div class="dependence"></div>
+ <div class="dependence" style="border: 1px dotted black; padding: 2px;"></div>
<div class="WFieldAddOptionButton_container" style="margin: 5px;"></div>
diff --git a/webapp/polls/templates/poll-form.html b/webapp/polls/templates/poll-form.html
index b81d911..9fbcc1a 100644
--- a/webapp/polls/templates/poll-form.html
+++ b/webapp/polls/templates/poll-form.html
@@ -12,9 +12,17 @@
<form id="poll_form" class="form-inline" action="" method="post">{% csrf_token %}
{% if not poll.is_open %}
- <div class="well">
- Encuestador: {{ poll.get_pollster.username }}
- </div>
+ {% with pollster=poll.get_pollster %}
+ {% if pollster %}
+ <div class="well">
+ Encuestador: {{ pollster.username }}
+ </div>
+ {% else %}
+ <div class="well">
+ La encuesta no esta asignada a ning&uacute;n encuestador
+ </div>
+ {% endif %}
+ {% endwith %}
{% endif %}
{% if poll.id %}
diff --git a/webapp/pollster/templates/poll-assignment-form.html b/webapp/pollster/templates/poll-assignment-form.html
index 9330558..93c6330 100644
--- a/webapp/pollster/templates/poll-assignment-form.html
+++ b/webapp/pollster/templates/poll-assignment-form.html
@@ -7,8 +7,8 @@
<div class="center">
<h2>Asignaci&oacute;n de encuestas</h2>
</div>
-{{polls_unassigned}}
- <form id="pollster_assignment_form" class="form-inline" action="" method="post">{% csrf_token %}
+
+ <form id="pollster_assignment_form" class="form-inline span8 well well-small" action="" method="post">{% csrf_token %}
<div class="ps-form-toolbar btn-toolbar clearfix">
<div class="btn-group">
@@ -17,7 +17,7 @@
</div>
</div>
- <fieldset class="well">
+ <fieldset class="well well-small">
<input type="hidden" name="pollster_id" value="{{ pollster.id }}" />
@@ -39,4 +39,18 @@
</div>
</form>
+ <div class="well well-small span4">
+ <h4>Asignadas</h3>
+ <ul>
+ {% for poll in assigned_to_pollster %}
+ <li>
+ {{ poll.name }}&nbsp;
+ <a href="{% url sociologist:pollster_detach poll_id=poll.id pollster_id=pollster.id %}">
+ <i class="icon-resize-full"></i>&nbsp;Desasociar
+ </a>
+ </li>
+ {% endfor %}
+ </ul>
+ </div>
+
{% endblock %} \ No newline at end of file
diff --git a/webapp/pollster/templates/pollster-list.html b/webapp/pollster/templates/pollster-list.html
index 23fb12c..db307ca 100644
--- a/webapp/pollster/templates/pollster-list.html
+++ b/webapp/pollster/templates/pollster-list.html
@@ -24,7 +24,7 @@
<tr ng-repeat="item in pagedItems[currentPage] | orderBy:sortingOrder:reverse">
<td>{% ng item.username %}</td>
<td>{% ng item.email %}</td>
- <td><a class="btn" href="{% ng item.action_assign %}"><i class="icon-check"></i>&nbsp;Asignar encuestas</a></td>
+ <td><a class="btn" href="{% ng item.action_assign %}"><i class="icon-check"></i>&nbsp;Asignaci&oacute;n de encuestas</a></td>
</tr>
</tbody>
{% include "paginator_footer.html" %}
diff --git a/webapp/pollster/views.py b/webapp/pollster/views.py
index e1c3792..0eb8a18 100644
--- a/webapp/pollster/views.py
+++ b/webapp/pollster/views.py
@@ -4,9 +4,7 @@ from django.views.generic.edit import FormView
from django.http import HttpResponseRedirect, Http404
from django.core.urlresolvers import reverse
from django.contrib import messages
-from django.utils.decorators import method_decorator
-from utils.decorators import superuser_required
from utils.forms import BadFormValidation
from pollster.forms import PollsterForm, PollAsignationForm
@@ -70,10 +68,6 @@ class PollsterListView(ListView):
template_name = "pollster-list.html"
context_object_name = "pollsters"
- @method_decorator(superuser_required)
- def dispatch(self, *args, **kwargs):
- return super(PollsterListView, self).dispatch(*args, **kwargs)
-
def get_queryset(self, *args, **kwargs):
return [
{
@@ -90,10 +84,6 @@ class PollsterFormView(FormView):
template_name = "pollster-form.html"
form_class = PollsterForm
- @method_decorator(superuser_required)
- def dispatch(self, *args, **kwargs):
- return super(PollsterFormView, self).dispatch(*args, **kwargs)
-
def form_valid(self, form):
try:
form.save()
@@ -115,7 +105,6 @@ class PollAsignationFormView(FormView):
form_class = PollAsignationForm
pollster = None
- @method_decorator(superuser_required)
def dispatch(self, *args, **kwargs):
_id = kwargs.get('id', None)
@@ -129,7 +118,10 @@ class PollAsignationFormView(FormView):
context = super(PollAsignationFormView, self).get_context_data(
**kwargs)
- context.update({'pollster': self.pollster})
+ context.update({
+ 'pollster': self.pollster,
+ 'assigned_to_pollster': Poll.assigned_to_pollster(self.pollster)
+ })
return context
diff --git a/webapp/sociologist/pollster_urls.py b/webapp/sociologist/pollster_urls.py
index faccbf6..377879f 100644
--- a/webapp/sociologist/pollster_urls.py
+++ b/webapp/sociologist/pollster_urls.py
@@ -14,4 +14,10 @@ urlpatterns = patterns(
PollAsignationFormView.as_view(),
name="poll_assignment"
),
+ url(
+ r'^pollster_detach/(?P<poll_id>[0-9A-Fa-f]{24})/'
+ '(?P<pollster_id>[0-9A-Fa-f]{24})/$',
+ 'sociologist.views.pollster_detach',
+ name="pollster_detach"
+ )
)
diff --git a/webapp/sociologist/views.py b/webapp/sociologist/views.py
index 60f00ef..808fad7 100644
--- a/webapp/sociologist/views.py
+++ b/webapp/sociologist/views.py
@@ -1 +1,16 @@
-# Create your views here.
+from bson import ObjectId
+
+from django.http import HttpResponseRedirect
+from django.core.urlresolvers import reverse
+
+from utils.mongo_connection import get_db
+
+
+def pollster_detach(request, poll_id, pollster_id):
+ get_db().polls.update(
+ {"_id": ObjectId(poll_id)},
+ {"$unset": {"pollster": ""}},
+ )
+ return HttpResponseRedirect(
+ reverse('sociologist:poll_assignment', kwargs={'id': pollster_id})
+ )
diff --git a/webapp/webapp/static/js/dynamic_structure.js b/webapp/webapp/static/js/dynamic_structure.js
index 2d6257f..3f556bb 100644
--- a/webapp/webapp/static/js/dynamic_structure.js
+++ b/webapp/webapp/static/js/dynamic_structure.js
@@ -2,6 +2,59 @@ TEMPLATES = {};
/// METHODS FOR OPTIONS ///
+jQuery.fn.selText = function() {
+
+ var range,
+ selection,
+ obj = this[0],
+ type = {
+ func:'function',
+ obj:'object'
+ },
+ // Convenience
+ is = function(type, o){
+ return typeof o === type;
+ };
+
+ if(is(type.obj, obj.ownerDocument)
+ && is(type.obj, obj.ownerDocument.defaultView)
+ && is(type.func, obj.ownerDocument.defaultView.getSelection)){
+
+ selection = obj.ownerDocument.defaultView.getSelection();
+
+ if(is(type.func, selection.setBaseAndExtent)){
+ // Chrome, Safari - nice and easy
+ selection.setBaseAndExtent(obj, 0, obj, $(obj).contents().size());
+ }
+ else if(is(type.func, obj.ownerDocument.createRange)){
+
+ range = obj.ownerDocument.createRange();
+
+ if(is(type.func, range.selectNodeContents)
+ && is(type.func, selection.removeAllRanges)
+ && is(type.func, selection.addRange)){
+ // Mozilla
+ range.selectNodeContents(obj);
+ selection.removeAllRanges();
+ selection.addRange(range);
+ }
+ }
+ }
+ else if(is(type.obj, document.body) && is(type.obj, document.body.createTextRange)) {
+
+ range = document.body.createTextRange();
+
+ if(is(type.obj, range.moveToElementText) && is(type.obj, range.select)){
+ // IE most likely
+ range.moveToElementText(obj);
+ range.select();
+ }
+ }
+
+ // Chainable
+ return this;
+}
+
var factoryOptionDefault = function(group_order, field_widget, id, default_value) {
var field_order = parseInt(field_widget.find(".field_order").attr("value"));
@@ -53,7 +106,7 @@ var get_opt_thumb = function(poll_id, img_name){
var thumb = "";
$.ajax({
- url: "/polls/option/thumb/" + poll_id + "/" + img_name + "/",
+ url: "/manager/polls/option/thumb/" + poll_id + "/" + img_name + "/",
success: function(result) {
thumb = result;
},
@@ -105,7 +158,9 @@ var factoryImageOptionThumbnail = function(id, value, container, group_order, fi
});
// Draggable option ID to droppable dependence field
- option.find(".draggable").draggable({'helper': 'clone'});
+ option.find(".draggable")
+ .draggable({'helper': 'clone'})
+ .click(function() { $(this).selText().addClass("selected"); });
row_fluid.append(option);
container.append(row_fluid);
diff --git a/webapp/webapp/templates/base-main.html b/webapp/webapp/templates/base-main.html
index ba7d1ac..3ee16f9 100644
--- a/webapp/webapp/templates/base-main.html
+++ b/webapp/webapp/templates/base-main.html
@@ -51,7 +51,7 @@
<div class="navbar-inner">
<div class="container">
<button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"></button>
- <a class="brand" href="#">Sitema de encuestas</a>
+ <a class="brand" href="{% url index as index_url %}"><i class="icon-white icon-home"></i>&nbsp;Sitema de encuestas</a>
<div class="nav-collapse collapse">
<ul class="nav">
@@ -69,7 +69,7 @@
<li class="dropdown {% if 'pollsters' in request.path %}active{% endif %}">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-white icon-group"></i>&nbsp;Encuestadores&nbsp;<b class="caret"></b></a>
<ul class="dropdown-menu">
- <li><a href="{% url sociologist:pollster_list %}"><i class="icon-list-alt"></i>&nbsp;Listado/Asginaci&oacute;n</a></li>
+ <li><a href="{% url sociologist:pollster_list %}"><i class="icon-list-alt"></i>&nbsp;Listado/Asignaci&oacute;n de encuestas</a></li>
<li><a href="{% url sociologist:pollster_new %}"><i class="icon-plus"></i>&nbsp;Nuevo</a></li>
</ul>
</li>