예제 #1
0
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,
        })
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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,
    })
예제 #6
0
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,
    })
예제 #7
0
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)
예제 #8
0
파일: views.py 프로젝트: macarthur-lab/seqr
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,
    })
예제 #9
0
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,
    })
예제 #10
0
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)
예제 #11
0
파일: views.py 프로젝트: macarthur-lab/seqr
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,
    })
예제 #12
0
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)