vmesel / pyjobs Goto Github PK
View Code? Open in Web Editor NEWO site de jobs Python
License: Other
O site de jobs Python
License: Other
OBS: Na filtragem do campo de pesquisa, recomendo utilizar o https://github.com/etianen/django-watson para auxiliar em buscas avançadas.
Creio que seria interessante adicionar o docker como opção pra quem quer contribuir com o projeto assim como é feito no speakerfight por exemplo: https://github.com/luanfonceca/speakerfight
Posso ficar a frente disso ...
Quando você se candidata a uma vaga e propositalmente ou por acidente clica no botão de se submeter a vaga novamente acontece um erro 500
Fazer lightning talk da Python Brasil apresentando o PyJobs.
This app is cool!!
There are some planning to build some features in this app.. Or refactoring some piece from this system..
Poderia ter o próprio favicon do python.org que está no github deles
https://github.com/python/pythondotorg/blob/master/static/favicon.ico
Área do Pythonista temos:
Uma feature adicional:
I suggest removing the Telegram API envvar from the tests CI suite, so every time someone forgets to mock this external API call (e.g. 5d0d676), the CI will tell us.
Devemos atualizar o django para o django 2.0 para podermos ter suporte no Python 3.7
Este fix está relacionado a view de visualização de detalhes de vaga
O usuário não deve estar permitido de ver a opção "Ir para a Vaga" enquanto não estiver logado, trocar condicional para cair no "Você precisa estar logado".
Ver como trocar layout do botão para responsivo.
Adicionar PEP8 enquanto o projeto é 'pequeno' e de fácil manutenção.
Precisamos aumentar a cobertura de testes do PyJobs para podermos realizar as nossas migrações de versão e futuros desenvolvimentos de uma maneira melhor. Atualmente a cobertura de testes de nosso código é a seguinte:
pyjobs/__init__.py 0 0 100%
pyjobs/api/resources.py 6 0 100%
pyjobs/core/__init__.py 0 0 100%
pyjobs/core/admin.py 21 4 81%
pyjobs/core/email_utils.py 10 2 80%
pyjobs/core/forms.py 36 3 92%
pyjobs/core/management/__init__.py 0 0 100%
pyjobs/core/management/commands/__init__.py 0 0 100%
pyjobs/core/models.py 131 21 84%
pyjobs/core/newsletter.py 13 5 62%
pyjobs/core/tests/__init__.py 0 0 100%
pyjobs/core/tests/test_forms.py 0 0 100%
pyjobs/core/tests/test_job_model.py 69 0 100%
pyjobs/core/tests/test_job_views.py 57 0 100%
pyjobs/core/tests/test_user_profile_model.py 16 0 100%
pyjobs/core/urls.py 13 2 85%
pyjobs/core/utils.py 29 17 41%
pyjobs/core/views.py 139 91 35%
pyjobs/settings.py 28 0 100%
pyjobs/urls.py 8 0 100%
Precisamos aumentar a cobertura para mais de 80% para todo o sistema, assim ficamos seguros para novas mudanças do Django.
Não sei se é válido, mas talvez seja interessante ter uma pesquisa de vagas no site.
Talvez pesquisar por:
Separar os dois perfis, duplicar as telas de cadastro.
Implementar o uso de versionamento de dependências com o Pipienv.
Agora que já temos os testes de volta a rodar podemos terminar a integração com o Circle-ci, que agora retorna o seguinte erro:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/home/circleci/repo/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/home/circleci/repo/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 308, in execute
settings.INSTALLED_APPS
File "/home/circleci/repo/venv/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
self._setup(name)
File "/home/circleci/repo/venv/lib/python3.6/site-packages/django/conf/__init__.py", line 41, in _setup
self._wrapped = Settings(settings_module)
File "/home/circleci/repo/venv/lib/python3.6/site-packages/django/conf/__init__.py", line 110, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 978, in _gcd_import
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "/home/circleci/repo/pyjobs/settings.py", line 25, in <module>
SECRET_KEY = config('SECRET_KEY')
File "/home/circleci/repo/venv/lib/python3.6/site-packages/decouple.py", line 197, in __call__
return self.config(*args, **kwargs)
File "/home/circleci/repo/venv/lib/python3.6/site-packages/decouple.py", line 77, in __call__
return self.get(*args, **kwargs)
File "/home/circleci/repo/venv/lib/python3.6/site-packages/decouple.py", line 64, in get
raise UndefinedValueError('%s option not found and default value was not defined.' % option)
decouple.UndefinedValueError: SECRET_KEY option not found and default value was not defined.
Exited with code 1
Criar página que permita a empresa ver os pricings e entender as facilidades que são propostas pelo projeto do PyJobs.
Temos de fazer um layout para podermos melhorar o processo de reset de senha! Essa falta de identidade visual neste processo pode causar confusão no usuário e até fazer com que ele se confunda e cancele o procedimento achando que entrou em outro sistema.
Campo deve ter as opções Júnior, Pleno, Sênior
Durante a implementação dos campos para faixa salarial percebi que o projeto não está muito bem estruturado. Por exemplo, temos uma view no aplicativo chamado "core" que cadastra nova vaga e ao mesmo tempo cadastra empresa, e outra view que edita a vaga em um aplicativo chamado "jobs". Neste caso, como sugestão poderíamos ter uma aplicação empresas com views para gerenciamento de empresas e no aplicativo "jobs" ter em uma view apenas o cadastro e edição de vagas.
Adicionar mensagens de erro ao layout da pagina de Login.
Isto é um problema de UX que acaba levando muitos usuários a tentar logar com email e com tentativas errôneas, prejudicando muito a experiência no site!
O tastypie serviu o propósito dele muito bem, mas como queremos avançar com o projeto, devemos incluir o Django Rest Framework como repositório padrão para as nossas APIs. Além de ser um projeto bem mais sólido que o TastyPie, ele conta com as "views" de CRUD já feitas, o que torna o desenvolvimento uma mão na roda!
Qual a licença do projeto?
O arquivo de contributions tem muita importância para o projeto se manter organizado. Preciso sentar a bunda na cadeira e escrever com muito carinho e amor o arquivo de contributions para podermos elevar o nível de qualidade deste código!
Se rodarmos um makemigrations
na branch master
hoje vemos que tem algumas alterações nos modelos que não viraram migrações. Existe alguma razão para isso?
$ docker-compose run --rm web python manage.py makemigrations --dry-run
Starting pyjobs_db_1 ... done
Migrations for 'core':
pyjobs/core/migrations/0023_auto_20190216_1820.py
- Alter field ad_interested on job
- Alter field application_link on job
- Alter field company_email on job
- Alter field company_name on job
- Alter field description on job
- Alter field requirements on job
- Alter field title on job
- Alter field workplace on job
Formatar uma página que receba o recrutador da empresa e que tenha os detalhes do profissional. Se ele gostar do perfil, ele clica em "aprovado". Isto implicaria na mudança do email enviado a empresa que também teria informações reduzidas.
Hoje em dia, não temos controle sobre os jobs que tem links externos apontando, portanto, os usuários não tem como ver pela administração de sua conta.
Temos de melhorar isto de alguma forma! Minha sugestão atual é de colocar uma mensagem informando sobre a falta de cobertura nestes links.
Forçar o uso do https no site todo
Deve haver algum jeito de encontrar as empresas que tenham funcionários pythonistas e que possam indicar a plataforma para os times de RH. Podemos dar incentivos como descontos (caso venhamos a cobrar por vaga) ou algo do gênero.
Adicionar testes enquando o projeto é 'pequeno' e de fácil manutenção.
Implementar reset de senha no PyJobs para a sessão de login!
Seria uma boa adicionar o codecov para manter uma boa cobertura dos testes.
Seria util um feed com vagas semanalmente ou mensalmente.
Área da empresa:
A aparição do site no google pode trazer diversas novas oportunidades para a comunidade Python. Tendo isto em vista, separei as seguintes tarefas:
<h1>
por páginasepararar em dois arquivos libs de desenvolvimento e libs de produção
Estava dando uma olhada no código e vi que possui algumas queries com alguma lógica dentro dos models, o que acha de movê-los para algum manager e assim essa lógica ou query complexa ficar desacoplada?
Exemplo:
https://github.com/vmesel/PyJobs/blob/master/pyjobs/core/models.py#L61
Criar uma API Restful no formato JSON que permita a um usuário com login já cadastrado na plataforma, cadastrar uma vaga para a empresa. Para esta mesma vaga, ter um endpoint com autenticação que retorna os profissionais relacionados a ela.
Reparo que em diversos arquivos temos a leitura de configurações: settings.py
, utils.py
, newsletter.py
e views.py
. Proponho fazer toda a leitura dessas configurações e nos demais lugares ler as configurações de django.conf.settings
. Ou seja:
decouple.config
no settings.py
(removendo essas ocorrências de settings.py
, utils.py
, newsletter.py
e views.py
)# utils.py
from django.conf import settings
from telegram import Bot, TelegramError
def post_telegram_channel(message):
if not settings.TELEGRAM_TOKEN and not settings.TELEGRAM_CHATID:
return False, 'missing_auth_keys'
bot = Bot(settings.TELEGRAM_TOKEN)
try:
bot.send_message(chat_id=settings.TELEGRAM_CHATID, text=message)
except TelegramError:
return False, 'wrong_auth_keys'
return True, 'success'
Isso é importante pois caso haja alguma falha na leitura ou configuração das variáveis isso já é detectado na hora da inicialização do Django, e não no meio da UX.
Atualmente várias partes do projeto encontra-se com código em português, seria interessante que para termos um código mais conciso e de fácil manutenção, utilizar-mos apenas o inglês em nomes de variáveis, funções, classes, etc.
O cadastro de vaga no mobile possui uma péssima experiência:
Labels são mais que a metade do tamanho do campo
Finalização do cadastro é confusa!
Organizar os INSTALLED_APPS de uma forma melhor, separando-os entre apps do django, apps locais e apps de terceiros.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.