Esempio n. 1
0
def add_tag(request, project_id):
    """For HTTP GET requests, this view generates the html page for creating a tag.
    For HTTP POST, it saves the submitted changes.

    Args:
        request: Django HTTP request object
        project_id: seqr project ID string
    """
    project = get_object_or_404(Project, project_id=project_id)
    if not project.can_admin(request.user):
        raise PermissionDenied

    error = None
    if request.method == 'POST':
        form = AddTagForm(project, request.POST)
        if form.is_valid():
            create_xbrowse_model(ProjectTag,
                                 project=project,
                                 tag=form.cleaned_data['tag'],
                                 title=form.cleaned_data['title'])
            return redirect('project_home', project_id=project_id)
        else:
            error = server_utils.form_error_string(form)
    else:
        form = AddTagForm(project)

    return render(request, 'project/add_or_edit_tag.html', {
        'project': project,
        'form': form,
        'error': error,
    })
Esempio n. 2
0
def add_tag(request, project_id):
    """For HTTP GET requests, this view generates the html page for creating a tag.
    For HTTP POST, it saves the submitted changes.

    Args:
        request: Django HTTP request object
        project_id: seqr project ID string
    """
    project = get_object_or_404(Project, project_id=project_id)
    if not project.can_admin(request.user):
        raise PermissionDenied

    error = None
    if request.method == 'POST':
        form = AddTagForm(project, request.POST)
        if form.is_valid():
            create_xbrowse_model(
                ProjectTag,
                project=project,
                tag=form.cleaned_data['tag'],
                title=form.cleaned_data['title'])
            return redirect('project_home', project_id=project_id)
        else:
            error = server_utils.form_error_string(form)
    else:
        form = AddTagForm(project)

    return render(request, 'project/add_or_edit_tag.html', {
        'project': project,
        'form': form,
        'error': error,
    })
Esempio n. 3
0
def add(request):
    if request.method == 'POST':
        form = GeneListForm(request.POST)
        if form.is_valid():
            unique_slug = form.cleaned_data['slug']
            while GeneList.objects.filter(slug=unique_slug):
                unique_slug += "_"

            new_list = create_xbrowse_model(
                GeneList,
                slug=unique_slug,
                name=form.cleaned_data['name'],
                description=form.cleaned_data['description'],
                is_public=form.cleaned_data['is_public'],
                owner=request.user,
                last_updated=datetime.datetime.now(),
            )
            for gene_id in form.cleaned_data['gene_ids']:
                create_xbrowse_model(GeneListItem,
                                     gene_list=new_list,
                                     gene_id=gene_id)
            return redirect('gene_list', slug=new_list.slug)
    else:
        form = GeneListForm()

    return render(request, 'gene_lists/add.html', {
        'form': form,
    })
Esempio n. 4
0
    def handle(self, *args, **options):
        if 'project_id' not in options:
            print '\n'
            print 'Creates a project in Seqr.\n'
            print 'Please provide a project ID as an argument. Optionally, provide a more human-readable project name as a second argument. '
            print 'Example: python manage.py add_project 1kg\n'
            sys.exit()

        project_id = options['project_id']
        if "." in project_id:
            sys.exit("ERROR: A '.' in the project ID is not supported")

        if Project.objects.filter(project_id=project_id).exists():
            print '\nSorry, I am unable to create that project since it exists already\n'
            sys.exit()

        project_name = options.get('project_name') or project_id
        print(
            'Creating project with id "%(project_id)s" and name "%(project_name)s"'
            % locals())

        try:
            create_xbrowse_model(Project,
                                 project_id=project_id,
                                 project_name=project_name,
                                 created_date=timezone.now())
        except Exception as e:
            print('\nError creating project:', e, '\n')
            sys.exit()
Esempio n. 5
0
def add(request):
    if request.method == 'POST':
        form = GeneListForm(request.POST)
        if form.is_valid():
            unique_slug = form.cleaned_data['slug']
            while GeneList.objects.filter(slug=unique_slug):
                unique_slug += "_"

            new_list = create_xbrowse_model(GeneList,
                slug=unique_slug,
                name=form.cleaned_data['name'],
                description=form.cleaned_data['description'],
                is_public=form.cleaned_data['is_public'],
                owner=request.user,
                last_updated=datetime.datetime.now(),
            )
            for gene_id in form.cleaned_data['gene_ids']:
                create_xbrowse_model(GeneListItem, gene_list=new_list, gene_id=gene_id)
            return redirect('gene_list', slug=new_list.slug)
    else:
        form = GeneListForm()

    return render(request, 'gene_lists/add.html', {
        'form': form,
        'new_page_url': '/gene_lists',
    })
Esempio n. 6
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,
    })
Esempio n. 7
0
def add_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 = json.loads(request.POST.get('indiv_id_list'), '[]')
    for indiv_id in indiv_id_list:
        if Individual.objects.filter(project=project, indiv_id=indiv_id).exists():
            error = "Indiv ID %s already exists" % indiv_id

    if not error:
        for indiv_id in indiv_id_list:
            create_xbrowse_model(Individual, project=project, indiv_id=indiv_id)

    if True:
        return server_utils.JSONResponse({'is_error': True, 'error': error})
    else:
        return server_utils.JSONResponse({'is_error': False})
Esempio n. 8
0
def add_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 = json.loads(request.POST.get('indiv_id_list'), '[]')
    for indiv_id in indiv_id_list:
        if Individual.objects.filter(project=project, indiv_id=indiv_id).exists():
            error = "Indiv ID %s already exists" % indiv_id

    if not error:
        for indiv_id in indiv_id_list:
            create_xbrowse_model(Individual, project=project, indiv_id=indiv_id)

    if True:
        return server_utils.JSONResponse({'is_error': True, 'error': error})
    else:
        return server_utils.JSONResponse({'is_error': False})
Esempio n. 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,
        'new_page_url': '/gene_lists/{}'.format(gene_list.seqr_locus_list.guid) if gene_list.seqr_locus_list else None,
    })
Esempio n. 10
0
    def handle(self, *args, **options):
        if 'project_id' not in options:
            print '\n'
            print 'Creates a project in Seqr.\n'
            print 'Please provide a project ID as an argument. Optionally, provide a more human-readable project name as a second argument. '
            print 'Example: python manage.py add_project 1kg\n'
            sys.exit()

        project_id = options['project_id']
        if "." in project_id:
            sys.exit("ERROR: A '.' in the project ID is not supported")

        if Project.objects.filter(project_id=project_id).exists():
            print '\nSorry, I am unable to create that project since it exists already\n'
            sys.exit()
        
        project_name = options.get('project_name') or project_id
        print('Creating project with id "%(project_id)s" and name "%(project_name)s"' % locals())

        try:
            create_xbrowse_model(Project, project_id=project_id, project_name=project_name, created_date=timezone.now())
        except Exception as e:
            print('\nError creating project:', e, '\n')
            sys.exit()