summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit348dfe5ac1cf5acf426519e93bcd01256d7cf89e (patch)
treeaf62a3421d113dd6226499c9a514f7ccbc301ddb
parentbf6c739cbe56681874c3fd36c437b71cbcae381a (diff)
downloadIshtar-348dfe5ac1cf5acf426519e93bcd01256d7cf89e.tar.bz2
Ishtar-348dfe5ac1cf5acf426519e93bcd01256d7cf89e.zip
Archaeological files: alow edition of planning service address
-rw-r--r--archaeological_files_pdl/forms.py6
-rw-r--r--ishtar_common/templates/ishtar/organization_form.html109
-rw-r--r--ishtar_common/views.py6
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