小编Anu*_*rag的帖子

python social auth和django,用Facebook api 2.4发送电子邮件

我在我的django项目中使用python social auth来提供Facebook登录功能.我可以在弹出窗口中看到Facebook提供的电子邮件.但它在我的部分管道中变得空洞.相同的代码与我的其他Facebook应用程序正常工作,除了api版本之外设置完全相同(以前它是2.3,现在是2.4).没有选项可以将Facebook api版本更改为2.3.我的python-social-auth版本是0.2.12以下是我的设置文件中的相关数据

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email',]
FACEBOOK_EXTENDED_PERMISSIONS = ['email',]
SOCIAL_AUTH_USERNAME_IS_FULL_EMAIL = True
SOCIAL_AUTH_PROTECTED_USER_FIELDS = ['email',]
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/'
SOCIAL_AUTH_LOGIN_ERROR_URL = '/'

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.user.get_username',
    'home.pipeline.require_email',
    'social.pipeline.social_auth.associate_by_email',  # <--- enable this one
    'social.pipeline.user.create_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details',
    'home.pipeline.send_welcome_mail',
)

SOCIAL_AUTH_FACEBOOK_KEY = os.environ['SOCIAL_AUTH_FACEBOOK_KEY']
SOCIAL_AUTH_FACEBOOK_SECRET = os.environ['SOCIAL_AUTH_FACEBOOK_SECRET']
Run Code Online (Sandbox Code Playgroud)

这是我的自定义部分管道功能

@partial
def require_email(strategy, backend, uid, details, user=None, *args, **kwargs):
    print details
    #some stuff......
Run Code Online (Sandbox Code Playgroud)

此功能打印空电子邮件ID,如下所示

{'username': u'Anurag Jain', 'fullname': u'Anurag Jain', 'last_name': u'Jain', 'email': '', 'first_name': u'Anurag'}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题.

django facebook-graph-api python-social-auth

5
推荐指数
1
解决办法
672
查看次数

通过 SSH 连接到远程服务器并在虚拟环境中运行命令

我正在尝试执行远程服务器上的脚本。该脚本激活虚拟环境,然后执行一些命令。现在我想直接从我的 mac 终端执行这个脚本。这是脚本的内容

cd ~/workdir/
workon myvirtualenv
source ~/prodStuff/envVars 
git pull origin master
supervisorctl -u admin -p password restart gunicorn
supervisorctl -u admin -p password status
deactivate
Run Code Online (Sandbox Code Playgroud)

当我登录服务器并执行它时,该脚本运行良好。但是当我尝试从 mac 终端执行相同的操作时,它给出了以下错误

/home/ubuntu/scripts/deploy_code.sh: line 2: workon: command not found
Run Code Online (Sandbox Code Playgroud)

所以本质上,我无法切换到虚拟环境。这是我用来从终端执行脚本的命令

ssh prodserver ". /home/ubuntu/scripts/deploy_code.sh"
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我解决这个问题,我将不胜感激。

谢谢

ssh virtualenv

5
推荐指数
1
解决办法
8375
查看次数

Celery任务在发送给rabbitmq经纪人后丢失了

我遇到一个奇怪的问题,我的一些任务在发送给经纪人后会被删除.这种情况发生在大约十分之一的任务中.我已经检查过没有老芹菜工人在完成任务.

我使用数据库支持的后端和花来监视丢失的任务,但在apply_async之后返回的task_id不存在于数据库或花中.它的状态总是待定.

然后我用celery信号找出发生了什么.我发现对于丢失的任务,只触发before_task_publish和after_task_publish信号.发布此任务没有任何痕迹.

这些是我的信号

@before_task_publish.connect
def before_task_publish_handler(sender=None, headers=None, body=None, **kwargs):
# information about task are located in headers for task messages
# using the task protocol version 2.
  logger.info("BEFORE TASK SENT  id:"+body['id'])



@after_task_publish.connect
def after_task_publish_handler(sender=None, headers=None, body=None, exchange=None, routing_key=None, **kwargs):
# information about task are located in headers for task messages
# using the task protocol version 2.
    logger.info("AFTER TASK SENT  id:"+body['id'])


@task_prerun.connect
def task_prerun_handler(sender=None, task_id=None, task=None, **kwargs):
  logger.info("TASK PRERUN with TASK_ID:"+str(task_id))
Run Code Online (Sandbox Code Playgroud)

这是我在日志中发现的

$ cat gunicorn-access.log | grep …
Run Code Online (Sandbox Code Playgroud)

rabbitmq celery celery-task

5
推荐指数
1
解决办法
710
查看次数

使用django-storage上传静态文件时有选择地应用AWS Headers

我想根据我的文件类型和文件名模式选择性地应用AWS标头,同时将它们上传到S3源.我正在使用django-storage与django 1.8.12

我可以在django- storages 文档中看到设置AWS_HEADERS ,但我似乎无法找到在某些文件上应用此设置的方法.如果有人可以指导我,我将不胜感激

django amazon-s3 django-storage

3
推荐指数
1
解决办法
482
查看次数

更改android numberpicker分隔线颜色

在此处输入图片说明

我想将上面显示的数字选择器的分隔线颜色(蓝色)更改为透明。我尝试了很多事情,比如

number_picker.setDividerDrawable(getResources().getDrawable(R.color.transparent));
number_picker.setShowDividers(NumberPicker.SHOW_DIVIDER_NONE);
Run Code Online (Sandbox Code Playgroud)

我也试过设置 android:divider in xml 但没有一个工作

然后我尝试使用样式设置它,但是当我将以下条目放入我的样式时,它说所需的最低版本为 14,而我的应用程序的最低版本为 11

<style name="AppTheme" parent="@android:style/Widget.DeviceDefault.DatePicker">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:divider">@color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

谁能建议我如何实现这一目标?

android transparent divider numberpicker

2
推荐指数
1
解决办法
1万
查看次数