Example #1
0
    def run(self, form):
        assert isinstance(self.data, QueryDict), "Class should have been instantiated with a django QueryDict as 'data'"

        selection = SelectionSearch.get_instance(form)
        data = {API_KEYWORD_MAP.get(k, k): v for k, v in self.data.lists()}
        data["q"] = ["{}#{}".format(q.label, q.query) for q in selection.get_queries()]
        data["ids"] = data.get("ids", selection.get_filters().get("ids", []))
        url = urlencode(data, doseq=True)
        rowlink = ARTICLE_ROWLINK.format(reverse("navigator:project-details", args=[self.project.id]), "{id}")
        table = Datatable(
            SearchResource,
            url="/api/v4/search",
            rowlink=rowlink,
            rowlink_open_in="new",
            checkboxes=True,
            allow_export_via_post=True,
            allow_html_export=True
        )
        table = table.add_arguments(minimal="1")
        table = table.add_arguments(project=str(self.project.id))

        for k, vs in data.items():
            for v in vs:
                table = table.add_arguments(**{k:v})

        return TABLE_TEMPLATE.render({"form": form, "url": url, "table": table})
 def get_context_data(self, **kwargs):
     ctx = super(CodingSchemaListView, self).get_context_data(**kwargs)
     schemas = Datatable(CodingSchemaViewSet, rowlink="./{id}", url_kwargs=dict(project=self.project.id)).hide("highlighters")
     owned_schemas = schemas.filter(project=self.project)
     linked_schemas = schemas.filter(projects_set=self.project)
     ctx.update(locals())
     return ctx
Example #3
0
 def get_context_data(self, **kwargs):
     ctx = super(CodingSchemaListView, self).get_context_data(**kwargs)
     schemas = Datatable(CodingSchemaViewSet, rowlink="./{id}", url_kwargs=dict(project=self.project.id)).hide("highlighters")
     owned_schemas = schemas.filter(project=self.project)
     linked_schemas = schemas.filter(projects_set=self.project)
     ctx.update(locals())
     return ctx
Example #4
0
    def run(self, form):
        assert isinstance(
            self.data, QueryDict
        ), "Class should have been instantiated with a django QueryDict as 'data'"

        selection = SelectionSearch(form)
        data = {API_KEYWORD_MAP.get(k, k): v for k, v in self.data.lists()}
        data["q"] = [
            "{}#{}".format(q.label, q.query) for q in selection.get_queries()
        ]
        data["ids"] = data.get("ids", selection.get_filters().get("ids", []))
        url = urlencode(data, doseq=True)
        rowlink = ARTICLE_ROWLINK.format(
            reverse("navigator:project-details", args=[self.project.id]),
            "{id}")
        table = Datatable(SearchResource,
                          url="/api/v4/search",
                          rowlink=rowlink,
                          rowlink_open_in="new",
                          checkboxes=True,
                          allow_export_via_post=True,
                          allow_html_export=True)
        table = table.add_arguments(minimal="1")
        table = table.add_arguments(project=str(self.project.id))

        for k, vs in data.items():
            for v in vs:
                table = table.add_arguments(**{k: v})

        return TABLE_TEMPLATE.render(
            Context({
                "form": form,
                "url": url,
                "table": table
            }))
Example #5
0
File: query.py Project: BBie/amcat
 def get_saved_queries_table(self):
     table = Datatable(
         QueryViewSet,
         url_kwargs={"project": self.project.id},
         rowlink="{id}"
     )
     table = table.hide("last_saved", "parameters", "project")
     return table
Example #6
0
    def get_context_data(self, **kwargs):
        ctx = super(CodebookListView, self).get_context_data(**kwargs)
        all_codebooks = Datatable(CodebookViewSet, rowlink='./{id}', url_kwargs={"project" : self.project.id}).hide("codes")
        owned_codebooks = all_codebooks.filter(project=self.project).hide("project")
        linked_codebooks = all_codebooks.filter(projects_set=self.project)

        ctx.update(locals())
        return ctx
Example #7
0
    def test_search(self):
        # Resources are not searchable (yet?)
        d = Datatable(ProjectResource)
        self.assertIn('"searching": false', str(d))

        # Articleset viewsets are searchable
        d = Datatable(ArticleSetViewSet, url_kwargs={"project": 1})
        self.assertIn('"searching": true', str(d))
Example #8
0
    def get_context_data(self, **kwargs):
        ctx = super(CodebookListView, self).get_context_data(**kwargs)
        all_codebooks = Datatable(CodebookViewSet, rowlink='./{id}', url_kwargs={"project" : self.project.id})
        owned_codebooks = all_codebooks.filter(project=self.project)
        linked_codebooks = all_codebooks.filter(projects_set=self.project)

        ctx.update(locals())
        return ctx
Example #9
0
    def get_articlesets_table(self):
        table = Datatable(FavouriteArticleSetViewSet,
                          url_kwargs={"project": self.project.id},
                          rowlink="?sets={id}",
                          checkboxes=True)

        table = table.hide("favourite", "featured", "project", "provenance")
        return table
Example #10
0
File: query.py Project: amcat/amcat
 def get_saved_queries_table(self):
     table = Datatable(
         QueryViewSet,
         url_kwargs={"project": self.project.id},
         rowlink=self.get_query_url("{id}")
     )
     table = table.filter(archived=False)
     table = table.hide("archived", "last_saved", "parameters", "project")
     return table
Example #11
0
File: query.py Project: BBie/amcat
    def get_articlesets_table(self):
        table = Datatable(
            FavouriteArticleSetViewSet,
            url_kwargs={"project": self.project.id},
            rowlink="?sets={id}",
            checkboxes=True
        )

        table = table.hide("favourite", "featured", "project", "provenance")
        return table
Example #12
0
    def test_hide(self):
        d = Datatable(ProjectResource)

        # Nothing hidden by default
        self.assertEqual(set(d.fields), TestDatatable.PROJECT_FIELDS)

        # Hide some fields..
        hide = {"id", "name", "insert_user"}
        d = d.hide(*hide)

        self.assertEqual(set(d.fields), TestDatatable.PROJECT_FIELDS - hide)
Example #13
0
    def test_hide(self):
        d = Datatable(ProjectResource)

        # Nothing hidden by default
        self.assertEqual(set(d.fields), TestDatatable.PROJECT_FIELDS)

        # Hide some fields..
        hide = {"id", "name", "insert_user"}
        d = d.hide(*hide)

        self.assertEqual(set(d.fields), TestDatatable.PROJECT_FIELDS - hide)
Example #14
0
def getDatatable(form, rowlink='article/{id}'):
    from api.rest.datatable import Datatable
    from api.rest.resources import SearchResource
    table = Datatable(SearchResource, rowlink=rowlink)
    
    for field, val in filters_from_form(form):
        table = table.filter(**{field : val})

    for query in queries_from_form(form):
        table = table.add_arguments(q=query.query)

    if form.get('include_all') and form.get('include_all') != 'False':
        table = table.add_arguments(q="*")
    return table
Example #15
0
def getDatatable(form, rowlink='article/{id}', **kwargs):
    from api.rest.datatable import Datatable
    from api.rest.resources import SearchResource
    table = Datatable(SearchResource, rowlink=rowlink, **kwargs)
    
    for field, val in filters_from_form(form):
        table = table.filter(**{field : val})

    for query in queries_from_form(form):
        table = table.add_arguments(q=query.query)

    if form.get('include_all') and form.get('include_all') != 'False':
        table = table.add_arguments(q="*")
    return table
Example #16
0
    def run(self, form):
        selection = SelectionSearch(form)
        data = {API_KEYWORD_MAP.get(k, k): v for k,v in self.data.iterlists()}
        data["q"] = ["{}#{}".format(q.label, q.query) for q in selection.get_queries()]
        url = urllib.urlencode(data, doseq=True)

        table = Datatable(SearchResource, url="/api/v4/search")
        table = table.add_arguments(minimal="1")
        table = table.add_arguments(project=str(self.project.id))

        for k, vs in data.items():
            for v in vs:
                table = table.add_arguments(**{k:v})

        return TABLE_TEMPLATE.render(Context({"form": form, "url": url, "table": table}))
Example #17
0
def view(request, id=None, form=None):
    if id is None:
        return redirect(reverse("navigator:user", args=[request.user.id]))

    try:
        user = User.objects.get(id=id)
    except User.DoesNotExist:
        return HttpResponse("User not found", status=404)

    ref = request.META.get('HTTP_REFERER', '')
    success = ref.endswith(reverse("navigator:user", args=[user.id
                                                           ])) and not form
    form = form or forms.UserDetailsForm(request, instance=user)

    # Generate projects-table javascript
    projects = Datatable(ProjectResource).filter(projectrole__user=user)
    main_active = "Current User" if user == request.user else "Users"

    return render(
        request, "user_view.html", {
            'user': user,
            'form': form,
            'projects': projects,
            'success': success,
            'main_active': main_active
        })
Example #18
0
    def test_fields(self):
        d = Datatable(ProjectResource)
        self.assertEqual(set(d.fields), TestDatatable.PROJECT_FIELDS)

        # Test order of fields.
        class TestSerializer(AmCATModelSerializer):
            class Meta:
                model = Project
                fields = ('name', 'description', 'id')

        class TestResource(AmCATResource):
            model = Project
            serializer_class = TestSerializer

        d = Datatable(TestResource)
        self.assertEqual(('name', 'description', 'id'), tuple(d.fields))
Example #19
0
def index(request):
    """Show unfinished jobs"""
    jobs = Datatable(CodingJobResource)
    jobs = jobs.rowlink_reverse("annotator:annotator-codingjob",
                                args=[9999999999])
    jobs = jobs.filter(coder=request.user).hide(
        'coder', 'articleset', 'unitschema',
        'articleschema')  #.filter(status='unfinished')

    ctx = locals()
    ctx.update({
        'context': request.user,
        'selected': 'unfinished jobs',
    })

    return render(request, 'codingjobs.html', locals())
Example #20
0
 def test_viewset(self):
     """Can ViewSets also be used?"""
     dt = Datatable(CodingSchemaFieldViewSet, url_kwargs={"project": 1})
     self.assertTrue(dt.url.startswith("/api/v4/projects/1/codingschemafields/"))
     self.assertEqual(set(dt.fields), {
         'id', 'codingschema', 'fieldnr', 'label', 'required', 'fieldtype',
         'codebook', 'split_codebook', 'default',
     })
Example #21
0
def index(request, coder=None):
    """
    Show unfinished jobs
    """
    coder = coder if coder is not None else request.user

    jobs = Datatable(CodingJobResource, rowlink='/annotator/codingjob/{id}')
    jobs = jobs.filter(coder=coder).hide('coder',)#.filter(status='unfinished')

    ctx = locals()
    ctx.update({
        'menu' : CODINGJOB_MENU,
        'context' : coder,
        'selected' : 'unfinished jobs'
    })

    return render(request, 'navigator/report/codingjobs.html', locals())
Example #22
0
def index(request, coder=None):
    """
    Show unfinished jobs
    """
    is_firefox = "Firefox" in request.META["HTTP_USER_AGENT"]

    coder = coder if coder is not None else request.user

    jobs = Datatable(CodingJobResource, rowlink="/annotator/codingjob/{id}")
    jobs = jobs.filter(coder=coder).hide(
        "coder", "articleset", "unitschema", "articleschema"
    )  # .filter(status='unfinished')

    ctx = locals()
    ctx.update({"menu": CODINGJOB_MENU, "context": coder, "selected": "unfinished jobs"})

    return render(request, "codingjobs.html", locals())
Example #23
0
def index(request, coder=None):
    """
    Show unfinished jobs
    """
    coder = coder if coder is not None else request.user

    jobs = Datatable(CodingJobResource, rowlink='/annotator/codingjob/{id}')
    jobs = jobs.filter(coder=coder).hide('coder',
                                         )  #.filter(status='unfinished')

    ctx = locals()
    ctx.update({
        'menu': CODINGJOB_MENU,
        'context': coder,
        'selected': 'unfinished jobs'
    })

    return render(request, 'navigator/report/codingjobs.html', locals())
Example #24
0
 def get_codingjobs_table(self):
     table = Datatable(CodingJobViewSet,
                       url_kwargs={
                           "project": self.project.id
                       },
                       rowlink="?jobs={id}",
                       checkboxes=True).filter(archived=False).hide(
                           "articleset", "archived", "insertuser")
     return table
Example #25
0
def codebooks(request, project):
    """
    Codebooks-tab.
    """
    owned_codebooks = Datatable(
        CodebookResource, rowlink='./codebook/{id}').filter(project=project)
    linked_codebooks = (Datatable(
        CodebookResource,
        rowlink='./codebook/{id}').filter(projects_set=project))

    can_import = True  #project.can_update(request.user)
    can_create = True  #Codebook.can_create(request.user) and project.can_update(request.user)

    deleted = session_pop(request.session, "deleted_codebook")

    context = project
    menu = PROJECT_MENU
    selected = "codebooks"
    return render(request, "navigator/project/codebooks.html", locals())
Example #26
0
def index(request, coder=None):
    """
    Show unfinished jobs
    """
    is_firefox = "Firefox" in request.META["HTTP_USER_AGENT"]

    coder = coder if coder is not None else request.user

    jobs = Datatable(CodingJobResource, rowlink='/annotator/codingjob/{id}')
    jobs = jobs.filter(coder=coder).hide('coder', 'articleset', 'unitschema', 'articleschema')#.filter(status='unfinished')

    ctx = locals()
    ctx.update({
        'menu' : CODINGJOB_MENU,
        'context' : coder,
        'selected' : 'unfinished jobs'
    })

    return render(request, 'codingjobs.html', locals())
Example #27
0
def schemas(request, project):
    """
    Codingschemas-tab
    """
    owned_schemas = Datatable(CodingSchemaResource,
                              rowlink='./schema/{id}').filter(project=project)
    linked_schemas = (Datatable(
        CodingSchemaResource,
        rowlink='./schema/{id}').filter(projects_set=project))

    ctx = {
        'owned_schemas': owned_schemas,
        'linked_schemas': linked_schemas,
        'menu': PROJECT_MENU,
        'selected': 'codingschemas',
        'context': project,
        'deleted': session_pop(request.session, "deleted_schema"),
    }

    return render(request, "navigator/project/schemas.html", ctx)
Example #28
0
def scrape_articles(request, project):
    scripts = (Datatable(ScraperResource,
                         rowlink="./scrape-articles/{id}").hide(
                             'module', 'class_name', 'username', 'password',
                             'run_daily', 'articleset'))

    return table_view(request,
                      project,
                      scripts,
                      selected='article sets',
                      template='navigator/project/scrape.html')
Example #29
0
def index(request, coder=None):
    """
    Show unfinished jobs
    """
    is_firefox = "Firefox" in request.META["HTTP_USER_AGENT"]

    coder = coder if coder is not None else request.user

    jobs = Datatable(CodingJobResource, rowlink='/annotator/codingjob/{id}')
    jobs = jobs.filter(coder=coder).hide(
        'coder', 'articleset', 'unitschema',
        'articleschema')  #.filter(status='unfinished')

    ctx = locals()
    ctx.update({
        'menu': CODINGJOB_MENU,
        'context': coder,
        'selected': 'unfinished jobs'
    })

    return render(request, 'codingjobs.html', locals())
Example #30
0
    def run(self, form):
        selection = SelectionSearch(form)
        data = {API_KEYWORD_MAP.get(k, k): v for k, v in self.data.iterlists()}
        data["q"] = [
            "{}#{}".format(q.label, q.query) for q in selection.get_queries()
        ]
        url = urllib.urlencode(data, doseq=True)

        table = Datatable(SearchResource, url="/api/v4/search")
        table = table.add_arguments(minimal="1")
        table = table.add_arguments(project=str(self.project.id))

        for k, vs in data.items():
            for v in vs:
                table = table.add_arguments(**{k: v})

        return TABLE_TEMPLATE.render(
            Context({
                "form": form,
                "url": url,
                "table": table
            }))
Example #31
0
    def test_filter(self):
        d = Datatable(UserResource)
        s = '/api/v4/user?format=json'

        # No filter
        self.assertEqual(d.url, s)

        # One filter
        d = d.filter(id=1)
        self.assertEqual(d.url, s + "&id=1")

        # Multiple filters
        d = d.filter(id=2)
        self.assertEqual(d.url, s + "&id=1&id=2")

        d = Datatable(UserResource).filter(id=[1, 2])
        self.assertEqual(d.url, s + "&id=1&id=2")

        # Test can allow illegal filter field as extra_arg

        d = Datatable(UserResource).add_arguments(q=[1, 2])
        self.assertEqual(d.url, s + "&q=1&q=2")
Example #32
0
    def test_order_by(self):
        d = Datatable(ProjectResource).order_by("name")
        self.assertTrue("name" in str(d))
        self.assertTrue('["name", "asc"]' in str(d))
        self.assertTrue('["name", "desc"]' in str(d.order_by("-name")))

        with self.assertRaises(ValueError):
            d.order_by("bla")

        with self.assertRaises(ValueError):
            d.order_by("?name")
Example #33
0
def all(request, coder):
    """
    Show all (including finished) jobs
    """
    jobs = Datatable(CodingJobResource).filter(coder=coder)

    ctx = locals()
    ctx.update({
        'jobs': jobs,
        'menu': CODINGJOB_MENU,
        'context': coder,
        'selected': 'all jobs'
    })

    return render(request, 'navigator/report/codingjobs.html', ctx)
Example #34
0
def schema(request, schema, project):
    fields = (Datatable(CodingSchemaFieldResource).filter(
        codingschema=schema).hide('codingschema'))

    return table_view(
        request,
        project,
        fields,
        'codingschemas',
        template="navigator/project/schema.html",
        schema=schema,
        is_new=session_pop(request.session,
                           "schema_{}_is_new".format(schema.id), False),
        is_edited=session_pop(request.session,
                              "schema_{}_edited".format(schema.id), False))
Example #35
0
def users_view(request, project):
    """
    View all users affiliated with this project. Also render a form
    to add users to the project (if permissions are met).
    """
    users = Datatable(ProjectRoleResource, rowlink='./user/{user_id}')\
            .filter(project=project).hide('project', 'id')

    if request.user.get_profile().haspriv('manage_project_users', project):
        add_user = forms.ProjectRoleForm(project)

    ctx = dict(locals())
    ctx.update({'menu': PROJECT_MENU, 'selected': 'users', 'context': project})

    return render(request, 'navigator/project/users.html', ctx)
Example #36
0
    def test_order_by(self):
        d = Datatable(ProjectResource).order_by("name")
        self.assertTrue("name" in str(d))
        self.assertTrue('["name", "asc"]' in str(d))
        self.assertTrue('["name", "desc"]' in str(d.order_by("-name")))

        with self.assertRaises(ValueError):
            d.order_by("bla")

        with self.assertRaises(ValueError):
            d.order_by("?name")
Example #37
0
def view_codingjob(request, codingjob, project):
    """
    View and edit a codingjob
    """
    form = forms.CodingJobForm(data=(request.POST or None), instance=codingjob)
    articles = Datatable(ArticleMetaResource)\
                    .filter(articleset=codingjob.articleset.id)\
                    .hide("section", "pagenr", "byline", "metastring", "url")\
                    .hide("project", "medium", "text", "uuid")

    if form.is_valid() and form.save():
        return redirect(reverse(codingjobs, args=[project.id]))

    ctx = locals()
    ctx.update(dict(menu=PROJECT_MENU, context=project))

    return render(request, 'navigator/project/edit_codingjob.html', ctx)
Example #38
0
def analysedsentence(request, project, sentence, rulesetid=None):

    tokens = (sentence.tokens.all().select_related(
        "word", "word__word",
        "word__lemma").prefetch_related("triples", "triples__child",
                                        "triples__parent",
                                        "triples__relation"))

    soh = SOHServer(url="http://localhost:3030/x")
    tree = syntaxtree.SyntaxTree(soh, tokens)
    parsetree = tree.visualise().getHTMLObject()
    menu = PROJECT_MENU
    context = project

    rulesets = Datatable(RuleSet).rowlink_reverse(
        "analysedsentence-ruleset",
        args=[project.id, sentence.id,
              "{id}"])  #, rowlink="./upload-articles/{id}")

    if rulesetid:
        ruleset = RuleSet.objects.get(pk=rulesetid)
        trees = []
        ruleset_error = None

        tree.apply_lexicon(ruleset.lexicon_codebook, ruleset.lexicon_language)
        parsetree = tree.visualise().getHTMLObject()
        grey_rel = lambda triple: ({
            'color': 'grey'
        } if 'rel_' in triple.predicate else {})

        for rule in ruleset.rules.all():
            try:
                tree.apply_rule(rule)
                if rule.display:
                    trees.append(
                        (rule, tree.visualise(
                            triple_args_function=grey_rel).getHTMLObject()))
            except Exception, e:
                ruleset_error = "Exception processing rule {rule.order}: {rule.label}\n\n{e}".format(
                    **locals())
                break

        if not ruleset_error:
            finaltree = tree.visualise(
                triple_args_function=grey_rel).getHTMLObject()
Example #39
0
def codingjobs(request, project):
    """
    Coding-jobs tab
    """
    cdjobs = (Datatable(CodingJobResource, rowlink='./codingjob/{id}').filter(
        project=project).hide('project').order_by("-insertdate"))

    deleted = session_pop(request.session, "deleted_codingjob")
    added = session_pop(request.session, "added_codingjob")
    if added:
        added = [CodingJob.objects.get(pk=i) for i in added]

    return table_view(request,
                      project,
                      cdjobs,
                      'codingjobs',
                      template="navigator/project/codingjobs.html",
                      added=added,
                      deleted=deleted)
Example #40
0
def upload_article(request, project):
    plugin_type = UploadScript.get_plugin_type()
    #scripts = (Datatable(PluginResource, rowlink="./upload-articles/{id}")
    #           .filter(plugin_type=plugin_type)
    #           .hide('id', 'class_name', 'plugin_type'))

    scripts = (Datatable(
        PluginResource,
        rowlink="./upload-articles/{id}").filter(plugin_type=plugin_type).hide(
            'id', 'plugin_type'))

    can_create_plugin = False  #Plugin.can_create(request.user)

    return table_view(request,
                      project,
                      scripts,
                      selected='article sets',
                      template='navigator/project/upload.html',
                      can_create_plugin=can_create_plugin,
                      plugin_type=plugin_type)
Example #41
0
def preprocessing(request, project):
    """
    Codebooks-tab.
    """
    table = Datatable(AnalysedArticleResource).filter(
        article__articlesets_set__project=project)

    form = AssignParsing.options_form(request.POST or None)
    form.fields['articleset'].queryset = ArticleSet.objects.filter(
        pk__in=project.all_articlesets())

    if form.is_valid():
        assigned_n = AssignParsing(form).run()
        assigned_plugin = form.cleaned_data["plugin"]
        assigned_set = form.cleaned_data["articleset"]

    context = project
    menu = PROJECT_MENU
    selected = "preprocessing"
    return render(request, "navigator/project/preprocessing.html", locals())
Example #42
0
    def test_filter(self):
        d = Datatable(UserResource)
        s = '/api/v4/user?format=json'

        # No filter
        self.assertEqual(d.url, s)

        # One filter
        d = d.filter(id=1)
        self.assertEqual(d.url, s + "&id=1")

        # Multiple filters
        d = d.filter(id=2)
        self.assertEqual(d.url, s + "&id=1&id=2")

        d = Datatable(UserResource).filter(id=[1, 2])
        self.assertEqual(d.url, s + "&id=1&id=2")

        # Test can allow illegal filter field as extra_arg

        d = Datatable(UserResource).add_arguments(q=[1, 2])
        self.assertEqual(d.url, s + "&q=1&q=2")
Example #43
0
def view(request, user=None, form=None):
    if user is None:
        return redirect(reverse(view, args=[request.user.id]))

    ref = request.META.get('HTTP_REFERER', '')
    success = ref.endswith(reverse(view, args=[user.id])) and not form
    form = form or forms.UserDetailsForm(request, instance=user)

    # Generate projects-table javascript
    projects = Datatable(ProjectResource).filter(projectrole__user=user)
    menu = None if user == request.user else USER_MENU

    return render(
        request, "navigator/user/view.html", {
            'user': user,
            'form': form,
            'projects': projects,
            'success': success,
            'menu': menu
        })
Example #44
0
 def test_get_name(self):
     d = Datatable(ProjectResource).filter(id=[1, "#$^"])
     self.assertTrue(len(d.get_name()) >= 1)
     self.assertFalse(re.match(r'[^0-9A-Za-z_:.-]', d.get_name()))
     self.assertTrue(re.match(r'^[A-Za-z]', d.get_name()))
Example #45
0
 def test_js(self):
     d = Datatable(ProjectResource)
     js = d.get_js()
Example #46
0
 def get_datatable(self, **kwargs):
     """Create the Datatable object"""
     table = Datatable(self.get_resource(), rowlink=self.get_rowlink(), **kwargs)
     table = self.filter_table(table)
     return table
Example #47
0
def index(request):
    all_schemas = Datatable(CodingSchemaResource, options=dict(iDisplayLength=10))
    own_schemas = all_schemas.filter(project__in=request.user.projects)

    return render(request, 'navigator/schemas/index.html', locals())