the method is called in a def post() within a class view:

user_cv = CandidateCV.objects.get(user=request.user)
user_cv_file = str(user_cv.resume).split('/')[-1]
s3upload(user_cv_file)

The file is converted from doc to pdf in server project folder, where
manage.py is.
So probably there is no absolute path.

How can I solve it?


Thanks
*Ronaldo Bahia*
+55 11 3280 6971
+55 11 963 622 581

*Materiais gratuitos para o RH:*
- ROI - Melhorando Indicadores no RH
<http://blog.jobconvo.com/post/110644747055/o-impacto-das-entrevistas-virtuais-no-recrutamento?from=email>
- Manual do Recrutador Moderno
<http://blog.jobconvo.com/post/108666785355/manual-do-recrutador-moderno?from=email>

2017-08-03 1:36 GMT-03:00 "Александр Христюхин (roboslone)" <
[email protected]>:

> Hi,
>
> Are you sure s3file contains absolute path? I can't see where s3upload is
> being called.
>
> Also, you might wanna use os.remove instead of calling subprocess.
> You also might wanna check out PEP-8 and Sphinx for your docstrings.
>
> On 2 Aug 2017, at 02:28, Ronaldo Bahia <[email protected]> wrote:
>
> Hi everyone, can you help me?
> Thanks in advance
>
> Thread: https://stackoverflow.com/questions/45449102/django-
> python-oserror-no-such-file-or-directory-but-file-exists
>
> Code:
>
>
>
> down votefavorite
> <https://stackoverflow.com/questions/45449102/django-python-oserror-no-such-file-or-directory-but-file-exists#>
>
> I'm converting doc and docx files to pdf in the server using unoconv with
> LibreOffice. And I need to upload to S3 the converted file.
>
> I can convert with success the files and I can see them in the server.
>
> But when I try to upload the pdf, I get the error. What am I missing?
>
> Thanks in advance
>
> This works just fine:
>
> import subprocessfrom boto.s3.connection import S3Connection, Bucket, Key
> def doc_to_pdf(user):
>     '''
>     Convert doc or docx to PDF.
>
>     parameter user: is a request.user
>
>     Usage:
>         doc_to_pdf(self.request.user):
>     '''
>
>     user_cv = CandidateCV.objects.get(user=user)
>     user_cv_file = str(user_cv.resume).split('/')[-1] # tem que ser PDF
>     user_cv_filetype = user_cv_file.split('.')[-1]
>
>     if not user_cv_filetype in settings.PDF_FILE_TYPE:
>         # Se não for PDF
>         file_in = user_cv.resume.url
>         file_name = file_in.split('/')[-1]
>         # download
>         urllib.request.urlretrieve(file_in, file_name)
>         file_out = user_cv_file.split('.')[0] + '.pdf'
>
>         # converte para PDF
>         env = os.environ.copy()
>         env['HOME'] = '/tmp'
>         subprocess.Popen(["unoconv","-f", "pdf", "%s" % (file_in)], env = env)
>
>         # Define a path para salvar o documento na S3
>         resume_path = 'resumes/%s/' % str(date.today())
>
>         # key é o nome do arquivo na S3
>         key = '%s%s' % (resume_path, file_out)
>
>         # deleta o arquivo localmente
>         subprocess.call("rm -f %s" % user_cv_file, shell=True)
>
>         # Salva o novo formato no banco
>         user_cv.resume = key
>         user_cv.save()
>
> This is the code in which I get the error in line:
> k_out.set_contents_from_filename(s3file)
>
> def s3upload(s3file):
>
>     # Conecta na AWS S3
>     conn = S3Connection(settings.AWS_ACCESS_KEY_ID, 
> settings.AWS_SECRET_ACCESS_KEY)
>     bucket_out = Bucket(conn, settings.AWS_STORAGE_BUCKET_NAME)
>     k_out = Key(bucket=bucket_out, name=s3file)
>
>     # Define a path para salvar o documento na S3
>     resume_path = 'resumes/%s/' % str(date.today())
>
>     # key é o nome do arquivo na S3
>     key = '%s%s' % (resume_path, s3file)
>     k_out.key = key
>
>     # Salva na AWS S3
>     k_out.set_contents_from_filename(s3file)
>     k_out.make_public()
>
>     # deleta o arquivo localmente
>     subprocess.call("rm -f %s" % s3file, shell=True)
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/django-users/7cecdcdb-7fcf-4f4a-858a-30801fa9cf9b%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/7cecdcdb-7fcf-4f4a-858a-30801fa9cf9b%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Django users" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/django-users/IDKZeRHtxyM/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/django-users/6BC03BEF-B4AD-49AB-8A2A-6EDDAD0DB13F%40gmail.com
> <https://groups.google.com/d/msgid/django-users/6BC03BEF-B4AD-49AB-8A2A-6EDDAD0DB13F%40gmail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAGz5-6gvNNWthLEFfyFicV_7voe75oWKypXP6LxsuzKLeTWzDg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to