Beispiel #1
0
    def __init__(self, *args, **kwargs):
        super(SaveAsSetForm, self).__init__(*args, **kwargs)

        # Due to the design of (web)scripts, it is not possible to access
        # POST data below. A workaround is used below (navigator stores
        # a request object in the threads local storage) to access it, but
        # should be removed as soon as possible. 
        try:
            from navigator.utils.auth import get_request
            request = get_request()
        except ImportError:
            log.debug("AmCAT Navigator not installed! Wil not set default project / filter on existing sets.")
            return

        if request is None:
            log.debug("AmCAT Navigator not running! Wil not set default project / filter on existing sets.")
            return

        # Try to find out if we're on the Article Selection page
        project_id = request.REQUEST.get("project")

        if project_id is None:
            log.debug("Not on Article Selection page. Can't filter on existing set / default project.")
            return

        project = Project.objects.get(id=project_id)

        self.fields['setproject'].widget = forms.HiddenInput()
        self.fields['setproject'].initial = project
        self.fields['existingset'].queryset = ArticleSet.objects.filter(project=project)
    def run(self):
        sel = SelectionForm(project=self.project, data=self.data)

        if not sel.is_valid():
            # This should not happen when using normal pages (i.e., someone is trying
            # to hack)
            forms.ValidationError("Non-valid values entered.")

        sel.full_clean()
        if sel.use_solr:
            sel.cleaned_data['length'] = 99999999  # Return 'unlimited' results
            sel.cleaned_data['sortColumn'] = None
            sel.cleaned_data['start'] = 0
            sel.cleaned_data['columns'] = []

            articles = solrlib.getArticles(sel.cleaned_data)
        else:
            articles = database.get_queryset(**sel.cleaned_data)

        project = Project.objects.get(id=self.data.get('projects'))

        # Create articleset
        a = ArticleSet.objects.create(project=project,
                                      name=self.data['setname'])
        a.add(*articles)

        # Split all articles
        CreateSentences(dict(articlesets=[a.id])).run()

        # Create codingjob
        coder = User.objects.get(id=self.data['coder'])
        articleschema = CodingSchema.objects.get(id=self.data['articleschema'])
        unitschema = CodingSchema.objects.get(id=self.data['unitschema'])

        if not 'insertuser' in self.data:
            insertuser = auth.get_request().user
        else:
            insertuser = User.objects.get(id=self.data['insertuser'])

        c = CodingJob.objects.create(project=project,
                                     name=self.data['setname'],
                                     articleset=a,
                                     coder=coder,
                                     articleschema=articleschema,
                                     unitschema=unitschema,
                                     insertuser=insertuser)
        html = "<div>Saved as <a href='%s'>coding job %s</a>.</div>"

        return HttpResponse(json.dumps({
            "html":
            html % (reverse("codingjob", args=[project.id, c.id]), c.id),
            "webscriptClassname":
            self.__class__.__name__,
            "webscriptName":
            self.name,
            "doNotAddActionToMainForm":
            True
        }),
                            mimetype='application/json')
Beispiel #3
0
    def save(self, *args, **kargs):
        if self.insert_user_id is None:
            # Import at top causes a circular import, unfortunately
            from navigator.utils.auth import get_request

            # No insert user is set, try to retrieve it
            req = get_request()
            if req is not None:
                self.insert_user_id = req.user.id

        super(Project, self).save(*args, **kargs)
Beispiel #4
0
    def save(self, *args, **kargs):
        if self.insert_user_id is None:
            # Import at top causes a circular import, unfortunately
            from navigator.utils.auth import get_request

            # No insert user is set, try to retrieve it
            req = get_request()
            if req is not None:
                self.insert_user_id = req.user.id

        super(Project, self).save(*args, **kargs)
    def __init__(self, project=None, *args, **kwargs):
        super(AssignCodingJobForm, self).__init__(*args, **kwargs)

        if not project:
            project = Project.objects.get(id=kwargs['data'].get('projects'))

        self.fields['coder'].choices = gen_user_choices(project)
        self.fields['unitschema'].queryset = project.get_codingschemas().filter(isarticleschema=False).distinct()
        self.fields['articleschema'].queryset = project.get_codingschemas().filter(isarticleschema=True).distinct()

        req = auth.get_request()
        if req is not None:
            del self.fields['insertuser']
    def run(self):
        sel = SelectionForm(project=self.project, data=self.data)

        if not sel.is_valid():
            # This should not happen when using normal pages (i.e., someone is trying
            # to hack)
            forms.ValidationError("Non-valid values entered.")

        sel.full_clean()
        if sel.use_solr:
            sel.cleaned_data['length'] = 99999999 # Return 'unlimited' results
            sel.cleaned_data['sortColumn'] = None
            sel.cleaned_data['start'] = 0
            sel.cleaned_data['columns'] = []

            articles = solrlib.getArticles(sel.cleaned_data)
        else:
            articles = database.get_queryset(**sel.cleaned_data)

        project = Project.objects.get(id=self.data.get('projects'))

        # Create articleset
        a = ArticleSet.objects.create(project=project, name=self.data['setname'])
        a.add(*articles)

        # Split all articles 
        CreateSentences(dict(articlesets=[a.id])).run()

        # Create codingjob
        coder = User.objects.get(id=self.data['coder'])
        articleschema = CodingSchema.objects.get(id=self.data['articleschema'])
        unitschema = CodingSchema.objects.get(id=self.data['unitschema'])

        if not 'insertuser' in self.data:
            insertuser = auth.get_request().user
        else:
            insertuser = User.objects.get(id=self.data['insertuser'])

        c = CodingJob.objects.create(project=project, name=self.data['setname'], articleset=a,
                                     coder=coder, articleschema=articleschema, unitschema=unitschema,
                                     insertuser=insertuser)
        html = "<div>Saved as <a href='%s'>coding job %s</a>.</div>"


        return HttpResponse(json.dumps({
            "html" : html % (reverse("codingjob", args=[project.id, c.id]), c.id),
            "webscriptClassname" : self.__class__.__name__,
            "webscriptName" : self.name,
            "doNotAddActionToMainForm" : True            
            
        }), mimetype='application/json')
Beispiel #7
0
    def run(self):
        sel = SelectionForm(project=self.project, data=self.data)

        if not sel.is_valid():
            # This should not happen when using normal pages (i.e., someone is trying
            # to hack)
            forms.ValidationError("Non-valid values entered.")

        articles = list(keywordsearch.get_ids(self.data))

        # Create articleset
        a = ArticleSet.create_set(project=self.project,
                                  articles=articles,
                                  name=self.data['setname'],
                                  favourite=False)

        # Split all articles
        CreateSentences(dict(articlesets=[a.id])).run()

        # Create codingjob
        coder = User.objects.get(id=self.data['coder'])
        articleschema = CodingSchema.objects.get(id=self.data['articleschema'])
        unitschema = CodingSchema.objects.get(id=self.data['unitschema'])

        if not 'insertuser' in self.data:
            insertuser = auth.get_request().user
        else:
            insertuser = User.objects.get(id=self.data['insertuser'])

        c = CodingJob.objects.create(project=self.project,
                                     name=self.data['setname'],
                                     articleset=a,
                                     coder=coder,
                                     articleschema=articleschema,
                                     unitschema=unitschema,
                                     insertuser=insertuser)
        html = "<div>Saved as <a href='%s'>coding job %s</a>.</div>"

        return HttpResponse(json.dumps({
            "html":
            html % (reverse("coding job-details", args=[self.project.id, c.id
                                                        ]), c.id),
            "webscriptClassname":
            self.__class__.__name__,
            "webscriptName":
            self.name,
            "doNotAddActionToMainForm":
            True
        }),
                            mimetype='application/json')
    def __init__(self, project=None, *args, **kwargs):
        super(AssignCodingJobForm, self).__init__(*args, **kwargs)

        if not project:
            project = Project.objects.get(id=kwargs['data'].get('projects'))

        self.fields['coder'].choices = gen_user_choices(project)
        self.fields['unitschema'].queryset = project.get_codingschemas(
        ).filter(isarticleschema=False).distinct()
        self.fields['articleschema'].queryset = project.get_codingschemas(
        ).filter(isarticleschema=True).distinct()

        req = auth.get_request()
        if req is not None:
            del self.fields['insertuser']
Beispiel #9
0
    def __init__(self, *args, **kwargs):
        project = kwargs.pop("project", None)
        super(SaveAsSetForm, self).__init__(*args, **kwargs)

        # Due to the design of (web)scripts, it is not possible to access
        # POST data below. A workaround is used below (navigator stores
        # a request object in the threads local storage) to access it, but
        # should be removed as soon as possible.
        try:
            from navigator.utils.auth import get_request
            request = get_request()
        except ImportError:
            log.debug(
                "AmCAT Navigator not installed! Wil not set default project / filter on existing sets."
            )
            return

        if request is None:
            log.debug(
                "AmCAT Navigator not running! Wil not set default project / filter on existing sets."
            )
            return

        # Try to find out if we're on the Article Selection page
        if project:
            project_id = project.id
        else:
            project_id = request.REQUEST.get("project")

        if project_id is None:
            log.debug(
                "Not on Article Selection page. Can't filter on existing set / default project."
            )
            return

        project = Project.objects.get(id=project_id)

        self.fields['setproject'].widget = forms.HiddenInput()
        self.fields['setproject'].initial = project
        self.fields['existingset'].queryset = ArticleSet.objects.filter(
            project=project)
    def run(self):
        sel = SelectionForm(project=self.project, data=self.data)

        if not sel.is_valid():
            # This should not happen when using normal pages (i.e., someone is trying
            # to hack)
            forms.ValidationError("Non-valid values entered.")

        articles = list(keywordsearch.get_ids(self.data))

        # Create articleset
        a = ArticleSet.create_set(project=self.project, articles=articles, name=self.data['setname'], favourite=False)

        # Split all articles 
        CreateSentences(dict(articlesets=[a.id])).run()

        # Create codingjob
        coder = User.objects.get(id=self.data['coder'])
        articleschema = CodingSchema.objects.get(id=self.data['articleschema'])
        unitschema = CodingSchema.objects.get(id=self.data['unitschema'])

        if not 'insertuser' in self.data:
            insertuser = auth.get_request().user
        else:
            insertuser = User.objects.get(id=self.data['insertuser'])

        c = CodingJob.objects.create(project=self.project, name=self.data['setname'], articleset=a,
                                     coder=coder, articleschema=articleschema, unitschema=unitschema,
                                     insertuser=insertuser)
        html = "<div>Saved as <a href='%s'>coding job %s</a>.</div>"


        return HttpResponse(json.dumps({
            "html" : html % (reverse("coding job-details", args=[self.project.id, c.id]), c.id),
            "webscriptClassname" : self.__class__.__name__,
            "webscriptName" : self.name,
            "doNotAddActionToMainForm" : True            
            
        }), mimetype='application/json')