本文整理汇总了Python中website.models.Institution.load方法的典型用法代码示例。如果您正苦于以下问题:Python Institution.load方法的具体用法?Python Institution.load怎么用?Python Institution.load使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类website.models.Institution
的用法示例。
在下文中一共展示了Institution.load方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: authenticate
# 需要导入模块: from website.models import Institution [as 别名]
# 或者: from website.models.Institution import load [as 别名]
def authenticate(self, request):
try:
payload = jwt.decode(
jwe.decrypt(request.body, settings.JWE_SECRET),
settings.JWT_SECRET,
options={'verify_exp': False},
algorithm='HS256'
)
except (jwt.InvalidTokenError, TypeError):
raise AuthenticationFailed
# The JWT `data` payload is expected in the following structure.
#
# {"provider": {
# "idp": "https://login.circle.edu/idp/shibboleth",
# "id": "CIR",
# "user": {
# "middleNames": "",
# "familyName": "",
# "givenName": "",
# "fullname": "Circle User",
# "suffix": "",
# "username": "[email protected]"
# }
# }}
data = json.loads(payload['data'])
provider = data['provider']
institution = Institution.load(provider['id'])
if not institution:
raise AuthenticationFailed('Invalid institution id specified "{}"'.format(provider['id']))
username = provider['user']['username']
fullname = provider['user']['fullname']
user, created = get_or_create_user(fullname, username, reset_password=False)
if created:
user.given_name = provider['user'].get('givenName')
user.middle_names = provider['user'].get('middleNames')
user.family_name = provider['user'].get('familyName')
user.suffix = provider['user'].get('suffix')
user.date_last_login = datetime.utcnow()
user.save()
# User must be saved in order to have a valid _id
user.register(username)
send_mail(
to_addr=user.username,
mail=WELCOME_OSF4I,
mimetype='html',
user=user
)
if institution not in user.affiliated_institutions:
user.affiliated_institutions.append(institution)
user.save()
return user, None
示例2: update_or_create
# 需要导入模块: from website.models import Institution [as 别名]
# 或者: from website.models.Institution import load [as 别名]
def update_or_create(inst_data):
inst = Institution.load(inst_data['_id'])
if inst:
for key, val in inst_data.iteritems():
setattr(inst.node, inst.attribute_map[key], val)
changed_fields = inst.node.save()
if changed_fields:
print('Updated {}: {}'.format(inst.name, changed_fields))
update_institution(inst)
return inst, False
else:
inst = Institution(None)
inst_data = {inst.attribute_map[k]: v for k, v in inst_data.iteritems()}
new_inst = Node(**inst_data)
new_inst.save()
inst = Institution.load(new_inst.institution_id)
print('Added new institution: {}'.format(new_inst.institution_id))
update_institution(inst)
return new_inst, True
示例3: get_institutions_to_add_remove
# 需要导入模块: from website.models import Institution [as 别名]
# 或者: from website.models.Institution import load [as 别名]
def get_institutions_to_add_remove(self, institutions, new_institutions):
diff = relationship_diff(
current_items={inst._id: inst for inst in institutions},
new_items={inst['_id']: inst for inst in new_institutions}
)
insts_to_add = []
for inst_id in diff['add']:
inst = Institution.load(inst_id)
if not inst:
raise exceptions.NotFound(detail='Institution with id "{}" was not found'.format(inst_id))
insts_to_add.append(inst)
return insts_to_add, diff['remove'].values()
示例4: update
# 需要导入模块: from website.models import Institution [as 别名]
# 或者: from website.models.Institution import load [as 别名]
def update(self, instance, validated_data):
node = instance
user = self.context['request'].user
inst = validated_data.get('institution_id', None)
if inst:
inst = Institution.load(inst)
if not inst:
raise exceptions.NotFound
if not inst.auth(user):
raise exceptions.PermissionDenied
node.primary_institution = inst
node.save()
return node
示例5: update_or_create
# 需要导入模块: from website.models import Institution [as 别名]
# 或者: from website.models.Institution import load [as 别名]
def update_or_create(inst_data):
inst = Institution.load(inst_data['_id'])
if inst:
for key, val in inst_data.iteritems():
inst.key = val
changed_fields = inst.save()
if changed_fields:
print('Updated {}: {}'.format(inst.name, changed_fields))
return inst, False
else:
new_inst = Institution(**inst_data)
new_inst.save()
print('Added new institution: {}'.format(new_inst._id))
return new_inst, True
示例6: update
# 需要导入模块: from website.models import Institution [as 别名]
# 或者: from website.models.Institution import load [as 别名]
def update(self, instance, validated_data):
node = instance
user = self.context['request'].user
inst = validated_data.get('institution_id', None)
if inst:
inst = Institution.load(inst)
if not inst:
raise exceptions.NotFound
try:
node.add_primary_institution(inst=inst, user=user)
except UserNotAffiliatedError:
raise exceptions.ValidationError(detail='User not affiliated with institution')
node.save()
return node
node.remove_primary_institution(user)
node.save()
return node