diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-01-14 15:29:11 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-01-14 15:29:11 +0100 |
commit | 204370cf1dbab2aa6dd93b4de3bde6ac4659c713 (patch) | |
tree | cbd56374b4d7e2d77fc40f5796a0579154c16325 | |
parent | e61592aa2270f6feb11c85402b5c1db975590818 (diff) | |
download | Ishtar-204370cf1dbab2aa6dd93b4de3bde6ac4659c713.tar.bz2 Ishtar-204370cf1dbab2aa6dd93b4de3bde6ac4659c713.zip |
Modification of operations (refs #16)
-rw-r--r-- | ishtar/furnitures/forms.py | 19 | ||||
-rw-r--r-- | ishtar/furnitures/menus.py | 2 | ||||
-rw-r--r-- | ishtar/furnitures/urls.py | 6 | ||||
-rw-r--r-- | ishtar/furnitures/views.py | 26 | ||||
-rw-r--r-- | static/js/ishtar.js | 2 |
5 files changed, 50 insertions, 5 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index 5bb1af6a9..c393bb3df 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -683,6 +683,14 @@ class OperationWizard(Wizard): data, files) return form +class OperationFormSelection(forms.Form): + form_label = _("Operation") + associated_models = {'pk':models.Operation} + currents = {'pk':models.Operation} + pk = forms.IntegerField(label=_("Operation"), + widget=widgets.JQueryAutoComplete(reverse_lazy('autocomplete-operation'), + associated_model=models.Operation), + validators=[models.valid_id(models.Operation)]) class OperationFormGeneral(forms.Form): @@ -797,5 +805,14 @@ operation_creation_wizard = OperationWizard([ ('refs-operation_creation', OperationFormReference), ('towns-operation_creation', SelectedTownFormSet), ('remains-operation_creation', RemainFormSet), - ('final-file_creation', FinalForm)], + ('final-operation_creation', FinalForm)], url_name='operation_creation',) + +operation_modification_wizard = OperationWizard([ + ('selec-operation_modification', OperationFormSelection), + ('general-operation_modification', OperationFormGeneral), + ('refs-operation_modification', OperationFormReference), + ('towns-operation_modification', SelectedTownFormSet), + ('remains-operation_modification', RemainFormSet), + ('final-operation_modification', FinalForm)], + url_name='operation_modification',) diff --git a/ishtar/furnitures/menus.py b/ishtar/furnitures/menus.py index fb15745f3..bfa04e0bf 100644 --- a/ishtar/furnitures/menus.py +++ b/ishtar/furnitures/menus.py @@ -71,6 +71,8 @@ class Menu: childs=[ MenuItem('operation_creation', _(u"Operation creation"), access_controls=['add_operation', 'add_own_operation']), + MenuItem('operation_modification', _(u"Operation modification"), + access_controls=['change_operation', 'change_own_operation']), ]), ] self.items = {} diff --git a/ishtar/furnitures/urls.py b/ishtar/furnitures/urls.py index 85071a141..abbe93e35 100644 --- a/ishtar/furnitures/urls.py +++ b/ishtar/furnitures/urls.py @@ -22,7 +22,7 @@ from django.conf.urls.defaults import * from ishtar.urls import BASE_URL from menus import menu from forms import file_creation_wizard, file_modification_wizard,\ - operation_creation_wizard + operation_creation_wizard, operation_modification_wizard urlpatterns, actions = [], [] @@ -33,6 +33,8 @@ urlpatterns = patterns('', file_modification_wizard, name='file_modification'), url(BASE_URL + r'operation_creation/(?P<step>.+)$', operation_creation_wizard, name='operation_creation'), + url(BASE_URL + r'operation_modification/(?P<step>.+)$', + operation_modification_wizard, name='operation_modification'), ) for section in menu.childs: for menu_item in section.childs: @@ -50,6 +52,8 @@ urlpatterns += patterns('ishtar.furnitures.views', name='autocomplete-organization'), url(BASE_URL + r'autocomplete-file/$', 'autocomplete_file', name='autocomplete-file'), + url(BASE_URL + r'autocomplete-operation/$', 'autocomplete_operation', + name='autocomplete-operation'), url(BASE_URL + r'update-current-item/$', 'update_current_item', name='update-current-item'), ) diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index ab0a64560..5a2ba12e4 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -32,8 +32,8 @@ from django.core import serializers from ishtar import settings from menus import menu -from forms import file_creation_wizard, file_modification_wizard,\ - operation_creation_wizard +from forms import file_creation_wizard, file_modification_wizard, \ + operation_creation_wizard, operation_modification_wizard import models def index(request): @@ -122,6 +122,25 @@ def autocomplete_file(request): for file in files]) return HttpResponse(data, mimetype='text/plain') +def autocomplete_operation(request): + if not request.GET.get('term'): + return HttpResponse(mimetype='text/plain') + q = request.GET.get('term') + query = Q() + for q in q.split(' '): + extra = Q(towns__name__icontains=q) + try: + value = int(q) + extra = extra | Q(year=q) | Q(operation_code=q) + except ValueError: + pass + query = query & extra + limit = 15 + operations = models.Operation.objects.filter(query)[:limit] + data = json.dumps([{'id':operation.pk, 'value':unicode(operation)} + for operation in operations]) + return HttpResponse(data, mimetype='text/plain') + def autocomplete_organization(request): if not request.GET.get('term'): return HttpResponse(mimetype='text/plain') @@ -161,3 +180,6 @@ def file_modification(request, dct, obj_id, *args, **kwargs): def operation_creation(request, dct, obj_id, *args, **kwargs): return operation_creation_wizard(request, *args, **kwargs) + +def operation_modification(request, dct, obj_id, *args, **kwargs): + return operation_modification_wizard(request, *args, **kwargs) diff --git a/static/js/ishtar.js b/static/js/ishtar.js index 8f3d88bcf..653525a07 100644 --- a/static/js/ishtar.js +++ b/static/js/ishtar.js @@ -1,7 +1,7 @@ $(document).ready(function(){ $("#main_menu ul ul").hide(); $("#main_menu ul ul .selected").parent().show(); - var items = new Array('file'); + var items = new Array('file', 'operation'); for (idx in items){ $("#current_" + items[idx]).change(function(){ $.post('/' + url_path + 'update-current-item/', |