def edit_family_cause(request, project_id, family_id): error = None project = get_object_or_404(Project, project_id=project_id) family = get_object_or_404(Family, project=project, family_id=family_id) if not project.can_admin(request.user): raise PermissionDenied causal_variants = list(CausalVariant.objects.filter(family=family)) if request.GET.get('variant'): xpos, ref, alt = request.GET['variant'].split('|') c = CausalVariant.objects.get_or_create( family=family, xpos=int(xpos), ref=ref, alt=alt, )[0] causal_variants = list(CausalVariant.objects.filter(family=family)) if request.method == 'POST': form = EditFamilyCauseForm(family, request.POST) if form.is_valid(): CausalVariant.objects.filter(family=family).delete() for v_str in request.POST.getlist('variants'): xpos, ref, alt = v_str.split('|') CausalVariant.objects.create( family=family, xpos=int(xpos), ref=ref, alt=alt, ) update_xbrowse_model(family, analysis_status='S', causal_inheritance_mode=form. cleaned_data['inheritance_mode']) return redirect('family_home', project_id=project.project_id, family_id=family.family_id) else: error = server_utils.form_error_string(form) else: form = EditFamilyForm(family) variants = [] for c in causal_variants: variants.append( get_datastore(project).get_single_variant(project_id, family_id, c.xpos, c.ref, c.alt)) return render( request, 'family/edit_cause.html', { 'project': project, 'family': family, 'error': error, 'form': form, 'variants': [v.toJSON() for v in variants], })
def edit_family_cause(request, project_id, family_id): error = None project = get_object_or_404(Project, project_id=project_id) family = get_object_or_404(Family, project=project, family_id=family_id) if not project.can_admin(request.user): raise PermissionDenied causal_variants = list(CausalVariant.objects.filter(family=family)) if request.GET.get('variant'): xpos, ref, alt = request.GET['variant'].split('|') c = CausalVariant.objects.get_or_create( family=family, xpos=int(xpos), ref=ref, alt=alt, )[0] causal_variants = list(CausalVariant.objects.filter(family=family)) if request.method == 'POST': form = EditFamilyCauseForm(family, request.POST) if form.is_valid(): CausalVariant.objects.filter(family=family).delete() for v_str in request.POST.getlist('variants'): xpos, ref, alt = v_str.split('|') CausalVariant.objects.create( family=family, xpos=int(xpos), ref=ref, alt=alt, ) update_xbrowse_model( family, analysis_status = 'S', causal_inheritance_mode = form.cleaned_data['inheritance_mode']) return redirect('family_home', project_id=project.project_id, family_id=family.family_id) else: error = server_utils.form_error_string(form) else: form = EditFamilyForm(family) variants = [] for c in causal_variants: variants.append(get_datastore(project).get_single_variant(project_id, family_id, c.xpos, c.ref, c.alt)) return render(request, 'family/edit_cause.html', { 'project': project, 'family': family, 'error': error, 'form': form, 'variants': [v.toJSON() for v in variants], })