def delete(request, project_id, family_group_slug): project = get_object_or_404(Project, project_id=project_id) if not project.can_admin(request.user): return HttpResponse("Unauthorized") family_group = get_object_or_404(FamilyGroup, project=project, slug=family_group_slug) if request.method == 'POST': if request.POST.get('confirm') == 'yes': delete_xbrowse_model(family_group) return redirect('family_groups', project_id) return render( request, 'family_group/delete.html', { 'project': project, 'family_group': family_group, 'new_page_url': '/project/{}/analysis_group/{}'.format( project.seqr_project.guid, family_group.seqr_analysis_group.guid) if project.seqr_project and family_group.seqr_analysis_group else None, })
def delete_tag(request, project_id, tag_name, tag_title): """Deletes the tag with the given tag_name and tag_title. Args: request: Django HTTP request object project_id: seqr project ID string tag_name: name of the tag to edit tag_title: title of the tag to edit """ project = get_object_or_404(Project, project_id=project_id) if not project.can_admin(request.user): raise PermissionDenied tag_name = urllib.unquote(tag_name) tag_title = urllib.unquote(tag_title) try: tag = ProjectTag.objects.get(project=project, tag=tag_name, title=tag_title) delete_xbrowse_model(tag) except ObjectDoesNotExist as e: return HttpResponse( "Error: tag not found: %s - %s. Maybe it's already been deleted? " % (tag_name, tag_title)) else: return redirect('project_home', project_id=project_id)
def delete_family(project_id, family_id): """ Delete a project and perform any cleanup (ie. deleting from datastore and removing temp files) """ family = Family.objects.get(project__project_id=project_id, family_id=family_id) for individual in family.get_individuals(): update_xbrowse_model(individual, family=None) get_mall(project_id).variant_store.delete_family(project_id, family_id) delete_xbrowse_model(family)
def delete_family(project_id, family_id): """ Delete a project and perform any cleanup (ie. deleting from datastore and removing temp files) """ family = Family.objects.get(project__project_id=project_id, family_id=family_id) for individual in family.get_individuals(): update_xbrowse_model(individual, family=None) get_mall(project_id).variant_store.delete_family(project_id, family_id) delete_xbrowse_model(family)
def delete(request, slug): _gene_list = get_object_or_404(GeneList, slug=slug) authorized = False if _gene_list.owner == request.user: authorized = True if not authorized: raise PermissionDenied if request.method == 'POST': delete_xbrowse_model(_gene_list) return redirect('gene_lists_home') return render(request, 'gene_lists/delete.html', { 'gene_list': _gene_list, })
def delete(request, project_id, family_group_slug): project = get_object_or_404(Project, project_id=project_id) if not project.can_admin(request.user): return HttpResponse("Unauthorized") family_group = get_object_or_404(FamilyGroup, project=project, slug=family_group_slug) if request.method == 'POST': if request.POST.get('confirm') == 'yes': delete_xbrowse_model(family_group) return redirect('family_groups', project_id) return render(request, 'family_group/delete.html', { 'project': project, 'family_group': family_group, 'new_page_url': '/project/{}/analysis_group/{}'.format(project.seqr_project.guid, family_group.seqr_analysis_group.guid) if project.seqr_project and family_group.seqr_analysis_group else None, })
def delete_individuals(request, project_id): error = None project = get_object_or_404(Project, project_id=project_id) if not project.can_admin(request.user): raise PermissionDenied indiv_id_list = request.POST.get('to_delete').split('|') to_delete = [] for indiv_id in indiv_id_list: for i in Individual.objects.filter(project=project, indiv_id=indiv_id): to_delete.append(i) family_ids = set() for individual in to_delete: family_ids.add(individual.family.family_id) delete_xbrowse_model(individual) for family_id in family_ids: if len(Individual.objects.filter(family__family_id=family_id)) == 0: families = Family.objects.filter(family_id=family_id) if families: delete_xbrowse_model(families[0]) try: settings.EVENTS_COLLECTION.insert({ 'event_type': 'delete_individuals', 'date': timezone.now(), 'project_id': project_id, 'individuals': ", ".join([i.indiv_id for i in to_delete]), 'username': request.user.username, 'email': request.user.email, }) except Exception as e: logging.error("Error while logging add_variant_tag event: %s" % e) if error: return server_utils.JSONResponse({'is_error': True, 'error': error}) else: return redirect('edit_individuals', project.project_id)
def delete(request, slug): _gene_list = get_object_or_404(GeneList, slug=slug) authorized = False if _gene_list.owner == request.user: authorized = True if not authorized: raise PermissionDenied if request.method == 'POST': delete_xbrowse_model(_gene_list) return redirect('gene_lists_home') return render(request, 'gene_lists/delete.html', { 'gene_list': _gene_list, 'new_page_url': '/gene_lists/{}'.format(_gene_list.seqr_locus_list.guid) if _gene_list.seqr_locus_list else None, })
def edit(request, slug): gene_list = get_object_or_404(GeneList, slug=slug) authorized = False if gene_list.owner == request.user: authorized = True if not authorized: raise PermissionDenied if request.method == 'POST': form = GeneListForm(request.POST) if form.is_valid(): update_xbrowse_model(gene_list, slug=form.cleaned_data['slug'], name=form.cleaned_data['name'], description=form.cleaned_data['description'], is_public=form.cleaned_data['is_public'], last_updated=datetime.datetime.now()) for gene_list_item in GeneListItem.objects.filter( gene_list=gene_list): delete_xbrowse_model(gene_list_item) for gene_id in form.cleaned_data['gene_ids']: create_xbrowse_model(GeneListItem, gene_list=gene_list, gene_id=gene_id) return redirect('gene_list', slug=gene_list.slug) else: form = GeneListForm( initial={ 'name': gene_list.name, 'description': gene_list.description, 'is_public': gene_list.is_public, 'genes': '\n'.join( [g['symbol'] for g in gene_list.get_genes()]), }) return render(request, 'gene_lists/edit.html', { 'form': form, 'gene_list': gene_list, })
def delete_individuals(request, project_id): error = None project = get_object_or_404(Project, project_id=project_id) if not project.can_admin(request.user): raise PermissionDenied indiv_id_list = request.POST.get('to_delete').split('|') to_delete = [] for indiv_id in indiv_id_list: for i in Individual.objects.filter(project=project, indiv_id=indiv_id): to_delete.append(i) family_ids = set() for individual in to_delete: family_ids.add(individual.family.family_id) delete_xbrowse_model(individual) for family_id in family_ids: if len(Individual.objects.filter(family__family_id=family_id)) == 0: families = Family.objects.filter(family_id=family_id) if families: delete_xbrowse_model(families[0]) try: if not settings.DEBUG: settings.EVENTS_COLLECTION.insert({ 'event_type': 'delete_individuals', 'date': timezone.now(), 'project_id': project_id, 'individuals': ", ".join([i.indiv_id for i in to_delete]), 'username': request.user.username, 'email': request.user.email, }) except Exception as e: logging.error("Error while logging add_variant_tag event: %s" % e) if error: return server_utils.JSONResponse({'is_error': True, 'error': error}) else: return redirect('edit_individuals', project.project_id)
def edit(request, slug): gene_list = get_object_or_404(GeneList, slug=slug) authorized = False if gene_list.owner == request.user: authorized = True if not authorized: raise PermissionDenied if request.method == 'POST': form = GeneListForm(request.POST) if form.is_valid(): update_xbrowse_model(gene_list, slug=form.cleaned_data['slug'], name=form.cleaned_data['name'], description=form.cleaned_data['description'], is_public=form.cleaned_data['is_public'], last_updated = datetime.datetime.now()) for gene_list_item in GeneListItem.objects.filter(gene_list=gene_list): delete_xbrowse_model(gene_list_item) for gene_id in form.cleaned_data['gene_ids']: create_xbrowse_model(GeneListItem, gene_list=gene_list, gene_id=gene_id) return redirect('gene_list', slug=gene_list.slug) else: form = GeneListForm(initial={ 'name': gene_list.name, 'description': gene_list.description, 'is_public': gene_list.is_public, 'genes': '\n'.join([g['symbol'] for g in gene_list.get_genes()]), }) return render(request, 'gene_lists/edit.html', { 'form': form, 'gene_list': gene_list, 'new_page_url': '/gene_lists/{}'.format(gene_list.seqr_locus_list.guid) if gene_list.seqr_locus_list else None, })
def delete_tag(request, project_id, tag_name, tag_title): """Deletes the tag with the given tag_name and tag_title. Args: request: Django HTTP request object project_id: seqr project ID string tag_name: name of the tag to edit tag_title: title of the tag to edit """ project = get_object_or_404(Project, project_id=project_id) if not project.can_admin(request.user): raise PermissionDenied tag_name = urllib.unquote(tag_name) tag_title = urllib.unquote(tag_title) try: tag = ProjectTag.objects.get(project=project, tag=tag_name, title=tag_title) delete_xbrowse_model(tag) except ObjectDoesNotExist as e: return HttpResponse("Error: tag not found: %s - %s. Maybe it's already been deleted? " % (tag_name, tag_title)) else: return redirect('project_home', project_id=project_id)