diff options
Diffstat (limited to 'ishtar')
| -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 | 
4 files changed, 49 insertions, 4 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) | 
