def create(self, validated_data): node = Node(**validated_data) try: node.save() except ValidationValueError as e: raise InvalidModelValueError(detail=e.message) return node
def create(self, validated_data): request = self.context['request'] user = request.user if 'template_from' in validated_data: template_from = validated_data.pop('template_from') template_node = Node.load(key=template_from) if template_node is None: raise exceptions.NotFound if not template_node.has_permission(user, 'read', check_parent=False): raise exceptions.PermissionDenied validated_data.pop('creator') changed_data = {template_from: validated_data} node = template_node.use_as_template(auth=get_user_auth(request), changes=changed_data) else: node = Node(**validated_data) try: node.save() except ValidationValueError as e: raise InvalidModelValueError(detail=e.message) if is_truthy(request.GET.get('inherit_contributors')) and validated_data['parent'].has_permission(user, 'write'): auth = get_user_auth(request) parent = validated_data['parent'] contributors = [] for contributor in parent.contributors: if contributor is not user: contributors.append({ 'user': contributor, 'permissions': parent.get_permissions(contributor), 'visible': parent.get_visible(contributor) }) node.add_contributors(contributors, auth=auth, log=True, save=True) return node
def create(self, validated_data): node = Node(**validated_data) node.is_folder = True node.category = '' try: node.save() except ValidationValueError as e: raise InvalidModelValueError(detail=e.message) return node
def create(self, validated_data): node = Node(**validated_data) node.is_collection = True node.category = '' try: node.save() except ValidationValueError as e: raise InvalidModelValueError(detail=e.message) except NodeStateError: raise ser.ValidationError('Each user cannot have more than one Bookmark collection.') return node
def create(self, validated_data): node = Node(**validated_data) node.is_collection = True node.category = '' try: node.save() except ValidationValueError as e: raise InvalidModelValueError(detail=e.message) except NodeStateError: raise ser.ValidationError('Each user cannot have more than one Bookmark collection.') return node
def create(self, validated_data): request = self.context['request'] user = request.user if 'template_from' in validated_data: template_from = validated_data.pop('template_from') template_node = Node.load(key=template_from) if template_node is None: raise exceptions.NotFound if not template_node.has_permission( user, 'read', check_parent=False): raise exceptions.PermissionDenied validated_data.pop('creator') changed_data = {template_from: validated_data} node = template_node.use_as_template(auth=get_user_auth(request), changes=changed_data) else: node = Node(**validated_data) try: node.save() except ValidationValueError as e: raise InvalidModelValueError(detail=e.message) if is_truthy(request.GET.get('inherit_contributors') ) and validated_data['parent'].has_permission( user, 'write'): auth = get_user_auth(request) parent = validated_data['parent'] contributors = [] for contributor in parent.contributors: if contributor is not user: contributors.append({ 'user': contributor, 'permissions': parent.get_permissions(contributor), 'visible': parent.get_visible(contributor) }) if not contributor.is_registered: node.add_unregistered_contributor( fullname=contributor.fullname, email=contributor.email, auth=auth, permissions=parent.get_permissions(contributor), existing_user=contributor) node.add_contributors(contributors, auth=auth, log=True, save=True) return node
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)) 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() print('Added new institution: {}'.format(new_inst.institution_id)) return new_inst, True
def create(self, validated_data): request = self.context['request'] user = request.user Node = apps.get_model('osf.Node') tag_instances = [] if 'tags' in validated_data: tags = validated_data.pop('tags') for tag in tags: tag_instance, created = Tag.objects.get_or_create(name=tag, defaults=dict(system=False)) tag_instances.append(tag_instance) if 'template_from' in validated_data: template_from = validated_data.pop('template_from') template_node = Node.load(template_from) if template_node is None: raise exceptions.NotFound if not template_node.has_permission(user, 'read', check_parent=False): raise exceptions.PermissionDenied validated_data.pop('creator') changed_data = {template_from: validated_data} node = template_node.use_as_template(auth=get_user_auth(request), changes=changed_data) else: node = Node(**validated_data) try: node.save() except ValidationError as e: raise InvalidModelValueError(detail=e.messages[0]) if len(tag_instances): node.tags.add(*tag_instances) if is_truthy(request.GET.get('inherit_contributors')) and validated_data['parent'].has_permission(user, 'write'): auth = get_user_auth(request) parent = validated_data['parent'] contributors = [] for contributor in parent.contributor_set.exclude(user=user): contributors.append({ 'user': contributor.user, 'permissions': parent.get_permissions(contributor.user), 'visible': contributor.visible }) if not contributor.user.is_registered: node.add_unregistered_contributor( fullname=contributor.user.fullname, email=contributor.user.email, auth=auth, permissions=parent.get_permissions(contributor.user), existing_user=contributor.user ) node.add_contributors(contributors, auth=auth, log=True, save=True) return node
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
def create(self, validated_data): if 'template_from' in validated_data: request = self.context['request'] user = request.user template_from = validated_data.pop('template_from') template_node = Node.load(key=template_from) if template_node is None: raise exceptions.NotFound if not template_node.has_permission(user, 'read', check_parent=False): raise exceptions.PermissionDenied validated_data.pop('creator') changed_data = {template_from: validated_data} node = template_node.use_as_template(auth=get_user_auth(request), changes=changed_data) else: node = Node(**validated_data) try: node.save() except ValidationValueError as e: raise InvalidModelValueError(detail=e.message) return node
def create(self, validated_data): node = Node(**validated_data) node.save() return node
def create(self, validated_data): node = Node(**validated_data) node.save() return node