diff options
author | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-04-17 18:49:10 (GMT) |
---|---|---|
committer | Rogelio Mita <rogeliomita@activitycentral.com> | 2013-04-17 18:49:10 (GMT) |
commit | 559dac8c0f400198c9c89a9aa09902fb1c44c4e1 (patch) | |
tree | 827e2a101e61db904f0e4a5e21084b21d0793d51 /webapp | |
parent | 6d804429d0531fff6241fa2a7b22d1d18e8c7b7e (diff) |
Cosmetic and refactoring
Diffstat (limited to 'webapp')
-rw-r--r-- | webapp/polls/templates/mustache/field.html | 3 | ||||
-rw-r--r-- | webapp/polls/templates/poll-form.html | 14 | ||||
-rw-r--r-- | webapp/pollster/templates/poll-assignment-form.html | 20 | ||||
-rw-r--r-- | webapp/pollster/templates/pollster-list.html | 2 | ||||
-rw-r--r-- | webapp/pollster/views.py | 16 | ||||
-rw-r--r-- | webapp/sociologist/pollster_urls.py | 6 | ||||
-rw-r--r-- | webapp/sociologist/views.py | 17 | ||||
-rw-r--r-- | webapp/webapp/static/js/dynamic_structure.js | 59 | ||||
-rw-r--r-- | webapp/webapp/templates/base-main.html | 4 |
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ú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ó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 }} + <a href="{% url sociologist:pollster_detach poll_id=poll.id pollster_id=pollster.id %}"> + <i class="icon-resize-full"></i> 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> Asignar encuestas</a></td> + <td><a class="btn" href="{% ng item.action_assign %}"><i class="icon-check"></i> Asignació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> 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> Encuestadores <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="{% url sociologist:pollster_list %}"><i class="icon-list-alt"></i> Listado/Asginación</a></li> + <li><a href="{% url sociologist:pollster_list %}"><i class="icon-list-alt"></i> Listado/Asignación de encuestas</a></li> <li><a href="{% url sociologist:pollster_new %}"><i class="icon-plus"></i> Nuevo</a></li> </ul> </li> |