def edit_doc_keywords(window_info: WindowInfo, doc_id: int, keywords: str): doc = get_object_or_404(UploadDoc.query(window_info), pk=doc_id) doc.keywords.clear() for keyword in [x.strip() for x in keywords.lower().split() if x.strip()]: if keyword: doc.keywords.add(Keyword.get(keyword)) notify(window_info, _('Saved.'), to=WINDOW, timeout=2000)
def handle(self, *args, **options): # require user = None if options['user'] is not None: user = get_user_model().objects.get(username=options['user']) filename = options['filename'] if filename.startswith('file://'): filename = filename[7:] if filename.startswith('http://') or filename.startswith('https://'): parsed_url = urlparse(filename) basename = os.path.basename(parsed_url.path) src_file = tempfile.NamedTemporaryFile() req = requests.get(filename, stream=True) chunk_size = 16384 for chunk in req.iter_content(chunk_size): src_file.write(chunk) else: src_file = open(filename, mode='rb') basename = os.path.basename(filename) obj = UploadDoc(uid=str(uuid.uuid1()), user=user, name=options['name'] or basename) obj.save() process_uploaded_file(obj, src_file, basename) for keyword in options['keyword']: obj.keywords.add(Keyword.get(keyword.lower().strip())) obj.save()
def upload_doc_api(request): user = request.user if request.user.is_authenticated else None if user is None: return HttpResponse(_('You must be logged to upload files.\n'), status=401) elif request.method != 'POST': return HttpResponse(_('Only POST requests are allowed.\n'), status=400) form = UploadApiForm(request.GET) if not form.is_valid(): return HttpResponse(_('You must supply filename, name and keywords in your query.\n'), status=400) tmp_file = tempfile.NamedTemporaryFile(mode='wb', dir=settings.FILE_UPLOAD_TEMP_DIR, delete=False) c = False chunk = request.read(32768) while chunk: tmp_file.write(chunk) c = True chunk = request.read(32768) tmp_file.flush() if not c: os.remove(tmp_file.name) return HttpResponse(_('Empty file. You must POST a valid file.\n'), status=400) # ok, we have the tmp file existing_objs = list(UploadDoc.query(request).filter(name=form.cleaned_data['name'])[0:1]) if existing_objs: doc = existing_objs[0] doc.keywords.clear() else: doc = UploadDoc(uid=str(uuid.uuid1()), name=form.cleaned_data['name'], user=user) doc.save() for keyword in strip_split(form.cleaned_data['keywords'].lower()): doc.keywords.add(Keyword.get(keyword)) scall(request, 'updoc.process_file', to=[SERVER], doc_id=doc.id, filename=tmp_file.name, original_filename=os.path.basename(form.cleaned_data['filename'])) return HttpResponse(_('File successfully uploaded. It will be uncompressed and indexed.\n'), status=200)
def upload(request): """Index view, displaying and processing a form.""" set_websocket_topics(request) if request.method == 'POST': form = MetadatadUploadForm(request.POST) if form.is_valid(): messages.info(request, _('File successfully uploaded')) obj = get_object_or_404(UploadDoc.query(request), id=form.cleaned_data['pk']) obj.name = form.cleaned_data['name'] for keyword in form.cleaned_data['keywords'].lower().split(): obj.keywords.add(Keyword.get(keyword)) obj.save() return HttpResponseRedirect(reverse('upload')) elif 'pk' in form.cleaned_data: obj = get_object_or_404(UploadDoc.query(request), id=form.cleaned_data['pk']) obj.delete() messages.error(request, _('Unable to upload this file')) else: messages.error(request, _('Unable to upload this file')) else: form = FileUploadForm() template_values = {'form': form, 'title': _('Upload a new file'), 'root_host': settings.SERVER_BASE_URL[:-1]} return TemplateResponse(request, 'updoc/upload.html', template_values)
def handle(self, *args, **options): if not args: print('Please provid either a file or a URL ') return 1 # require request = HttpRequest() if options['user'] is None: request.user = AnonymousUser() else: request.user = get_user_model().objects.get(username=options['user']) filename = args[0] if filename.startswith('file://'): filename = filename[7:] if filename.startswith('http://') or filename.startswith('https://'): parsed_url = urlparse(filename) basename = os.path.basename(parsed_url.path) src_file = tempfile.NamedTemporaryFile() req = requests.get(filename, stream=True) chunk_size = 16384 size = 0 for chunk in req.iter_content(chunk_size): src_file.write(chunk) size += len(chunk) else: src_file = open(filename, mode='rb') basename = os.path.basename(filename) size = os.path.getsize(filename) uploaded_file = UploadedFile(file=src_file, name=basename, size=size) obj = process_new_file(uploaded_file, request) if options['name'] is not None: obj.name = options['name'] for keyword in options['keyword']: obj.keywords.add(Keyword.get(keyword.lower().strip())) obj.save()
def edit_doc_keywords(request: SignalRequest, doc_id: int, keywords: str): doc = get_object_or_404(UploadDoc.query(request), pk=doc_id) doc.keywords.clear() for keyword in [x.strip() for x in keywords.lower().split() if x.strip()]: if keyword: doc.keywords.add(Keyword.get(keyword))