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')
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')
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']
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')