def schema_relationshiptype_editcreate(request, graph_slug, relationshiptype_id=None): graph = get_object_or_404(Graph, slug=graph_slug) if relationshiptype_id: empty_relationshiptype = get_object_or_404(RelationshipType, id=relationshiptype_id) else: empty_relationshiptype = RelationshipType() initial = {"arity_source": None, "arity_target": None} for field_name in ["source", "name", "target", "inverse"]: if field_name in request.GET: initial[field_name] = request.GET.get(field_name) form = RelationshipTypeForm(initial=initial, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(instance=empty_relationshiptype) if request.POST: data = request.POST.copy() form = RelationshipTypeForm(data=data, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(data=data, instance=empty_relationshiptype) if form.is_valid() and formset.is_valid(): with transaction.commit_on_success(): relationshiptype = form.save(commit=False) if (relationshiptype.source.schema != graph.schema or relationshiptype.target.schema != graph.schema): raise ValidationError("Operation not allowed") relationshiptype.schema = graph.schema relationshiptype.save() instances = formset.save(commit=False) for instance in instances: instance.relationship = relationshiptype instance.save() redirect_url = reverse("schema_edit", args=[graph.slug]) return redirect(redirect_url) return render_to_response('schemas_item_edit.html', {"graph": graph, "item_type_label": _("Allowed Relationship"), "item_type": "relationship", "item_type_id": relationshiptype_id, "form": form, "fields_to_hide": ["plural_name", "inverse", "plural_inverse", "arity_source", "arity_target", "validation", "inheritance"], "formset": formset}, context_instance=RequestContext(request))
def schema_relationshiptype_editcreate(request, graph_slug, relationshiptype_id=None): graph = get_object_or_404(Graph, slug=graph_slug) if relationshiptype_id: empty_relationshiptype = get_object_or_404(RelationshipType, id=relationshiptype_id) else: empty_relationshiptype = RelationshipType() initial = {"arity_source": None, "arity_target": None} for field_name in ["source", "name", "target", "inverse"]: if field_name in request.GET: initial[field_name] = request.GET.get(field_name) form = RelationshipTypeForm(initial=initial, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(instance=empty_relationshiptype) if request.POST: data = request.POST.copy() form = RelationshipTypeForm(data=data, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(data=data, instance=empty_relationshiptype) if form.is_valid() and formset.is_valid(): with transaction.commit_on_success(): relationshiptype = form.save(commit=False) if (relationshiptype.source.schema != graph.schema or relationshiptype.target.schema != graph.schema): raise ValidationError("Operation not allowed") relationshiptype.schema = graph.schema relationshiptype.save() instances = formset.save(commit=False) for instance in instances: instance.relationship = relationshiptype instance.save() redirect_url = reverse("schema_edit", args=[graph.slug]) return redirect(redirect_url) return render_to_response('schemas_item_edit.html', { "graph": graph, "item_type_label": _("Allowed Relationship"), "item_type": "relationship", "item_type_id": relationshiptype_id, "form": form, "fields_to_hide": [ "plural_name", "inverse", "plural_inverse", "arity_source", "arity_target", "validation", "inheritance" ], "formset": formset }, context_instance=RequestContext(request))
def schema_relationshiptype_editcreate(request, graph_slug, relationshiptype_id=None): graph = get_object_or_404(Graph, slug=graph_slug) # We get the modal variable as_modal = bool(request.GET.get("asModal", False)) # We get the schema main view url schema_main_url = reverse("schema_edit", args=[graph.slug]) if relationshiptype_id: empty_relationshiptype = get_object_or_404(RelationshipType, id=relationshiptype_id) add_url = reverse("schema_relationshiptype_edit", args=[graph_slug, relationshiptype_id]) else: empty_relationshiptype = RelationshipType() add_url = reverse("schema_relationshiptype_create", args=[graph_slug]) initial = {"arity_source": None, "arity_target": None} for field_name in ["source", "name", "target", "inverse"]: if field_name in request.GET: initial[field_name] = request.GET.get(field_name) form = RelationshipTypeForm(initial=initial, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(instance=empty_relationshiptype) changed_props = request.session.get('schema_changed_props', None) deleted_props = request.session.get('schema_deleted_props', None) if changed_props: del request.session['schema_changed_props'] if deleted_props: del request.session['schema_deleted_props'] if request.POST: data = request.POST.copy() as_modal = bool(data.get("asModal", False)) form = RelationshipTypeForm(data=data, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(data=data, instance=empty_relationshiptype) if form.is_valid() and formset.is_valid(): with transaction.atomic(): relationshiptype = form.save(commit=False) if (relationshiptype.source.schema != graph.schema or relationshiptype.target.schema != graph.schema): raise ValidationError("Operation not allowed") relationshiptype.schema = graph.schema relationshiptype.save() instances = formset.save(commit=False) for instance in instances: instance.relationship = relationshiptype instance.save() schema_modified = False if formset.deleted_objects: schema_modified = True deleted_props = [] for prop_type in formset.deleted_objects: deleted_props.append({'key': prop_type.key}) request.session['schema_deleted_props'] = deleted_props if formset.changed_objects: changed_props = [] for prop_type, prop_dict in formset.changed_objects: if 'key' in prop_dict: schema_modified = True for data in formset.cleaned_data: if 'key' in data and 'id' in data and \ data['key'] == prop_type.key: changed_props.append({ 'key': data['id'].key, 'new_key': data['key'] }) request.session['schema_changed_props'] = changed_props if schema_modified: redirect_url = \ reverse("schema_relationshiptype_properties_mend", args=[graph.slug, relationshiptype.id]) action = "schema_relationship_editcreate" else: redirect_url = reverse("schema_edit", args=[graph.slug]) action = "schema_main" if as_modal: response = {'type': 'data', 'action': action} return HttpResponse(json.dumps(response), status=200, content_type='application/json') else: return redirect(redirect_url) if as_modal: base_template = 'empty.html' render = render_to_string else: base_template = 'base.html' render = render_to_response broader_context = {"graph": graph, "item_type_label": _("Allowed Relationship"), "item_type": "relationship", "item_type_id": relationshiptype_id, "form": form, "fields_to_hide": ["plural_name", "inverse", "plural_inverse", "arity_source", "arity_target", "validation", "inheritance"], "formset": formset, "base_template": base_template, "add_url": add_url, "schema_main_url": schema_main_url, "as_modal": as_modal} response = render('schemas_item_edit.html', broader_context, context_instance=RequestContext(request)) if as_modal: response = {'type': 'html', 'action': 'schema_relationship_editcreate', 'html': response} return HttpResponse(json.dumps(response), status=200, content_type='application/json') else: return response
def schema_relationshiptype_editcreate(request, graph_slug, relationshiptype_id=None): graph = get_object_or_404(Graph, slug=graph_slug) if relationshiptype_id: empty_relationshiptype = get_object_or_404(RelationshipType, id=relationshiptype_id) else: empty_relationshiptype = RelationshipType() initial = {"arity_source": None, "arity_target": None} for field_name in ["source", "name", "target", "inverse"]: if field_name in request.GET: initial[field_name] = request.GET.get(field_name) form = RelationshipTypeForm(initial=initial, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(instance=empty_relationshiptype) changed_props = request.session.get('schema_changed_props', None) deleted_props = request.session.get('schema_deleted_props', None) if changed_props: del request.session['schema_changed_props'] if deleted_props: del request.session['schema_deleted_props'] if request.POST: data = request.POST.copy() form = RelationshipTypeForm(data=data, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(data=data, instance=empty_relationshiptype) if form.is_valid() and formset.is_valid(): with transaction.atomic(): relationshiptype = form.save(commit=False) if (relationshiptype.source.schema != graph.schema or relationshiptype.target.schema != graph.schema): raise ValidationError("Operation not allowed") relationshiptype.schema = graph.schema relationshiptype.save() instances = formset.save(commit=False) for instance in instances: instance.relationship = relationshiptype instance.save() schema_modified = False if formset.deleted_objects: schema_modified = True deleted_props = [] for prop_type in formset.deleted_objects: deleted_props.append({'key': prop_type.key}) request.session['schema_deleted_props'] = deleted_props if formset.changed_objects: changed_props = [] for prop_type, prop_dict in formset.changed_objects: if 'key' in prop_dict: schema_modified = True for data in formset.cleaned_data: if 'key' in data and 'id' in data and \ data['key'] == prop_type.key: changed_props.append({ 'key': data['id'].key, 'new_key': data['key'] }) request.session['schema_changed_props'] = changed_props if schema_modified: redirect_url = \ reverse("schema_relationshiptype_properties_mend", args=[graph.slug, relationshiptype.id]) else: redirect_url = reverse("schema_edit", args=[graph.slug]) return redirect(redirect_url) return render_to_response('schemas_item_edit.html', {"graph": graph, "item_type_label": _("Allowed Relationship"), "item_type": "relationship", "item_type_id": relationshiptype_id, "form": form, "fields_to_hide": ["plural_name", "inverse", "plural_inverse", "arity_source", "arity_target", "validation", "inheritance"], "formset": formset}, context_instance=RequestContext(request))
def schema_relationshiptype_editcreate(request, graph_slug, relationshiptype_id=None): graph = get_object_or_404(Graph, slug=graph_slug) # We get the modal variable as_modal = bool(request.GET.get("asModal", False)) # We get the schema main view url schema_main_url = reverse("schema_edit", args=[graph.slug]) if relationshiptype_id: empty_relationshiptype = get_object_or_404(RelationshipType, id=relationshiptype_id) add_url = reverse("schema_relationshiptype_edit", args=[graph_slug, relationshiptype_id]) else: empty_relationshiptype = RelationshipType() add_url = reverse("schema_relationshiptype_create", args=[graph_slug]) initial = {"arity_source": None, "arity_target": None} for field_name in ["source", "name", "target", "inverse"]: if field_name in request.GET: initial[field_name] = request.GET.get(field_name) form = RelationshipTypeForm(initial=initial, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(instance=empty_relationshiptype) changed_props = request.session.get('schema_changed_props', None) deleted_props = request.session.get('schema_deleted_props', None) if changed_props: del request.session['schema_changed_props'] if deleted_props: del request.session['schema_deleted_props'] if request.POST: data = request.POST.copy() as_modal = bool(data.get("asModal", False)) form = RelationshipTypeForm(data=data, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(data=data, instance=empty_relationshiptype) if form.is_valid() and formset.is_valid(): with transaction.atomic(): relationshiptype = form.save(commit=False) if (relationshiptype.source.schema != graph.schema or relationshiptype.target.schema != graph.schema): raise ValidationError("Operation not allowed") relationshiptype.schema = graph.schema relationshiptype.save() instances = formset.save(commit=False) for instance in instances: instance.relationship = relationshiptype instance.save() schema_modified = False if formset.deleted_objects: schema_modified = True deleted_props = [] for prop_type in formset.deleted_objects: deleted_props.append({'key': prop_type.key}) request.session['schema_deleted_props'] = deleted_props if formset.changed_objects: changed_props = [] for prop_type, prop_dict in formset.changed_objects: if 'key' in prop_dict: schema_modified = True for data in formset.cleaned_data: if 'key' in data and 'id' in data and \ data['key'] == prop_type.key: changed_props.append({ 'key': data['id'].key, 'new_key': data['key'] }) request.session['schema_changed_props'] = changed_props if schema_modified: redirect_url = \ reverse("schema_relationshiptype_properties_mend", args=[graph.slug, relationshiptype.id]) action = "schema_relationship_editcreate" else: redirect_url = reverse("schema_edit", args=[graph.slug]) action = "schema_main" if as_modal: response = {'type': 'data', 'action': action} return HttpResponse(json.dumps(response), status=200, content_type='application/json') else: return redirect(redirect_url) if as_modal: base_template = 'empty.html' render = render_to_string else: base_template = 'base.html' render = render_to_response broader_context = { "graph": graph, "item_type_label": _("Allowed Relationship"), "item_type": "relationship", "item_type_id": relationshiptype_id, "form": form, "fields_to_hide": [ "plural_name", "inverse", "plural_inverse", "arity_source", "arity_target", "validation", "inheritance" ], "formset": formset, "base_template": base_template, "add_url": add_url, "schema_main_url": schema_main_url, "as_modal": as_modal } response = render('schemas_item_edit.html', broader_context, context_instance=RequestContext(request)) if as_modal: response = { 'type': 'html', 'action': 'schema_relationship_editcreate', 'html': response } return HttpResponse(json.dumps(response), status=200, content_type='application/json') else: return response
def schema_relationshiptype_editcreate(request, graph_slug, relationshiptype_id=None): graph = get_object_or_404(Graph, slug=graph_slug) if relationshiptype_id: empty_relationshiptype = get_object_or_404(RelationshipType, id=relationshiptype_id) else: empty_relationshiptype = RelationshipType() initial = {"arity_source": None, "arity_target": None} for field_name in ["source", "name", "target", "inverse"]: if field_name in request.GET: initial[field_name] = request.GET.get(field_name) form = RelationshipTypeForm(initial=initial, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(instance=empty_relationshiptype) changed_props = request.session.get('schema_changed_props', None) deleted_props = request.session.get('schema_deleted_props', None) if changed_props: del request.session['schema_changed_props'] if deleted_props: del request.session['schema_deleted_props'] if request.POST: data = request.POST.copy() form = RelationshipTypeForm(data=data, schema=graph.schema, instance=empty_relationshiptype) formset = RelationshipTypeFormSet(data=data, instance=empty_relationshiptype) if form.is_valid() and formset.is_valid(): with transaction.commit_on_success(): relationshiptype = form.save(commit=False) if (relationshiptype.source.schema != graph.schema or relationshiptype.target.schema != graph.schema): raise ValidationError("Operation not allowed") relationshiptype.schema = graph.schema relationshiptype.save() instances = formset.save(commit=False) for instance in instances: instance.relationship = relationshiptype instance.save() schema_modified = False if formset.deleted_objects: schema_modified = True deleted_props = [] for prop_type in formset.deleted_objects: deleted_props.append({'key': prop_type.key}) request.session['schema_deleted_props'] = deleted_props if formset.changed_objects: changed_props = [] for prop_type, prop_dict in formset.changed_objects: if 'key' in prop_dict: schema_modified = True for data in formset.cleaned_data: if 'key' in data and 'id' in data and \ data['key'] == prop_type.key: changed_props.append({ 'key': data['id'].key, 'new_key': data['key'] }) request.session['schema_changed_props'] = changed_props if schema_modified: redirect_url = \ reverse("schema_relationshiptype_properties_mend", args=[graph.slug, relationshiptype.id]) else: redirect_url = reverse("schema_edit", args=[graph.slug]) return redirect(redirect_url) return render_to_response('schemas_item_edit.html', { "graph": graph, "item_type_label": _("Allowed Relationship"), "item_type": "relationship", "item_type_id": relationshiptype_id, "form": form, "fields_to_hide": [ "plural_name", "inverse", "plural_inverse", "arity_source", "arity_target", "validation", "inheritance" ], "formset": formset }, context_instance=RequestContext(request))