summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ishtar/furnitures/forms.py19
-rw-r--r--ishtar/furnitures/menus.py2
-rw-r--r--ishtar/furnitures/urls.py6
-rw-r--r--ishtar/furnitures/views.py26
-rw-r--r--static/js/ishtar.js2
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/',