diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-11-03 00:10:50 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-11-03 00:10:50 +0100 |
commit | 348dfe5ac1cf5acf426519e93bcd01256d7cf89e (patch) | |
tree | af62a3421d113dd6226499c9a514f7ccbc301ddb | |
parent | bf6c739cbe56681874c3fd36c437b71cbcae381a (diff) | |
download | Ishtar-348dfe5ac1cf5acf426519e93bcd01256d7cf89e.tar.bz2 Ishtar-348dfe5ac1cf5acf426519e93bcd01256d7cf89e.zip |
Archaeological files: alow edition of planning service address
-rw-r--r-- | archaeological_files_pdl/forms.py | 6 | ||||
-rw-r--r-- | ishtar_common/templates/ishtar/organization_form.html | 109 | ||||
-rw-r--r-- | ishtar_common/views.py | 6 |
3 files changed, 117 insertions, 4 deletions
diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py index 8682bd2c9..659d22d68 100644 --- a/archaeological_files_pdl/forms.py +++ b/archaeological_files_pdl/forms.py @@ -214,11 +214,13 @@ class PersonOrgaForm(forms.Form): label=self.ORGA_LABEL, required=False, initial=initial.get(self.ORGA_FIELD, None), - widget=widgets.JQueryAutoComplete( + widget=widgets.JQueryPersonOrganization( reverse_lazy('autocomplete-organization', args=[self.ORGA_TYPE.pk]), + reverse_lazy('organization_create'), + model=models.Organization, limit={'organization_type': [self.ORGA_TYPE.pk]}, - associated_model=models.Organization, + js_template='ishtar/blocks/JQueryCorporationPerson.js', new=True), validators=[valid_id(models.Organization)]) diff --git a/ishtar_common/templates/ishtar/organization_form.html b/ishtar_common/templates/ishtar/organization_form.html index 207116c21..3a2d37846 100644 --- a/ishtar_common/templates/ishtar/organization_form.html +++ b/ishtar_common/templates/ishtar/organization_form.html @@ -1,10 +1,16 @@ -{% load i18n %}<table class='organization'> +{% load i18n %}{% load url from future %} +<div id='orga-form'> +<form id='dyn-form-organization' method='post'> +{% csrf_token %} +{% for hidden in form.hidden_fields %}{{hidden}}{% endfor %} +<input type='hidden' name='hidden_organization_pk' id='hidden_organization_pk' value='{{object.pk}}'/> +<input type='hidden' name='hidden_organization_lbl' id='hidden_organization_lbl' value="{{object}}"/> +<table class='organization'> <tr> <th><label>{{form.name.label}}</label></th> <td>{{form.name}}</td> </tr> </table> -{% for hidden in form.hidden_fields %}{{hidden}}{% endfor %} <table class='organization-address'> <tr> <th><label>{{form.organization_type.label}}</label></th> @@ -27,4 +33,103 @@ <td>{{form.town}}</td> </tr> </table> +<div> +<input type='submit' id='btn-modify-organization' value="{% trans "Modify"%}"/> +<input type='submit' id='btn-new-organization' value="{% trans "New"%}"/> +<input type='submit' id='btn-save-organization' value="{% trans "Save"%}"/> +<input type='submit' id='btn-cancel-organization' value="{% trans "Cancel"%}"/> +</div> +</form> +</div> +<script type="text/javascript"><!--// + +function checkPendingRequest(todo) { + window.setTimeout(function () { + if ($.active > 0) { + window.setTimeout(checkPendingRequest(todo), 250); + } else { + todo(); + } + }, 250); +}; + +person_save_callback = function(){ + var item_id = $('#hidden_organization_pk').val(); + + var url = edit_url; + $('#id_' + parent_id).val(null); + if (item_id){ + url = edit_url+item_id; + $('#id_'+parent_id).val(item_id); + } + $("#id_select_"+parent_id).trigger('autocompletechange'); + $.get(url , function( data ) { + $( "#div-"+parent_id ).html( data ); + var lbl = $('#hidden_organization_lbl').val(); + $('#id_select_' + parent_id).val(lbl); + }); +}; + +person_new_callback = function(){ + var url = edit_url; + $('#id_'+parent_id).val(null); + $('#id_select_'+parent_id).val(null); +} +$(function() { + disable_organization = function(){ + $("#orga-form :input[type='text'], #orga-form textarea, #orga-form select").prop("disabled", true); + $("#btn-save-organization").hide(); + $("#btn-cancel-organization").hide(); + $("#btn-modify-organization").show(); + $("#btn-new-organization").show(); + $("#orga-form").removeClass('selected'); + } + enable_organization = function(){ + $("#orga-form :input[type='text'], #orga-form textarea, #orga-form select").prop("disabled", false); + $("#btn-save-organization").show(); + $("#btn-cancel-organization").show(); + $("#btn-modify-organization").hide(); + $("#btn-new-organization").hide(); + $("#orga-form").addClass('selected'); + } + + checkPendingRequest(disable_organization); + + $("#btn-modify-organization").on('click', function(){ + {% if object %}submit_url = "{% url 'organization_edit' object.pk %}"; + {% else %}submit_url = "{% url 'organization_create' %}";{% endif %} + enable_organization(); + return false; + }); + $("#btn-new-organization").on('click', function(){ + submit_url = "{% url 'organization_create' %}"; + $("#orga-form").find("input[type=text], textarea, input[type=hidden]").val(""); + enable_organization(); + person_new_callback(); + return false; + }); + $("#btn-cancel-organization").on('click', function(){ + person_save_callback(); + disable_organization(); + return false; + }); + $("#btn-save-organization").on('click', function(){ + var form = $("#dyn-form-organization"); + $.ajax({ + url: submit_url, + type: 'post', + data: form.serialize(), + dataType: 'html', + success: function(data) { + $("#orga-form").parent().html(data); + person_save_callback(); + disable_organization(); + return false; + } + }); + return false; + }); + +}); +//--></script> diff --git a/ishtar_common/views.py b/ishtar_common/views.py index ad8b10f35..c2b12e53f 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1147,6 +1147,9 @@ class OrganizationCreate(LoginRequiredMixin, CreateView): kwargs.update({'prefix': self.form_class.form_prefix}) return kwargs + def get_success_url(self): + return reverse('organization_edit', args=[self.object.pk]) + class OrganizationEdit(LoginRequiredMixin, UpdateView): model = models.Organization @@ -1159,6 +1162,9 @@ class OrganizationEdit(LoginRequiredMixin, UpdateView): kwargs.update({'prefix': self.form_class.form_prefix}) return kwargs + def get_success_url(self): + return reverse('organization_edit', args=[self.object.pk]) + class OrganizationPersonCreate(LoginRequiredMixin, CreateView): model = models.Person |