Example #1
0
    def test_get_object_or_none(self):
        obj = ShortcutsModel.objects.create(name='test1', datetime=timezone.now(), number=1)
        ShortcutsModel.objects.create(name='test2', datetime=timezone.now(), number=2)
        ShortcutsModel.objects.create(name='test2', datetime=timezone.now(), number=3)

        assert_equal(get_object_or_none(ShortcutsModel, name='test1'), obj)
        assert_is_none(get_object_or_none(ShortcutsModel, name='test3'))
        assert_is_none(get_object_or_none(ShortcutsModel, number='test3'))
        assert_is_none(get_object_or_none(ShortcutsModel, datetime='test3'))

        assert_raises(FieldError, get_object_or_none, ShortcutsModel, non_field='test2')
        assert_raises(MultipleObjectsReturned, get_object_or_none, ShortcutsModel, name='test2')
Example #2
0
    def _create_or_update_single_reverse_related_objects(self, data, key, data_item, model_descriptor):
        rel_object = model_descriptor.related
        model = rel_object.related_model
        field_name = rel_object.field.name
        resource = self._get_resource(model)
        if resource:
            related_obj = get_object_or_none(model, **{field_name: self.inst.pk})
            try:
                if data_item is None:
                    if related_obj:
                        self._delete_reverse_object({resource.pk_field_name: related_obj.pk}, model)
                    setattr(self.inst, model_descriptor.cache_name, None)
                else:
                    if not isinstance(data_item, dict):
                        obj_data = {resource.pk_field_name: force_text(data_item)}
                    else:
                        obj_data = data_item.copy()

                    if not resource.pk_field_name in obj_data and related_obj:
                        obj_data[resource.pk_field_name] = related_obj.pk
                    obj_data[field_name] = self.inst.pk
                    setattr(self.inst, key, self._create_or_update_related_object(obj_data, model))

            except DataInvalidException as ex:
                self.errors[key] = ex.errors
Example #3
0
    def _create_or_update_single_reverse_related_objects(self, data, key, data_item, model_descriptor):
        rel_object = get_related_from_descriptior(model_descriptor)
        model = get_model_from_rel_obj(rel_object)
        field_name = rel_object.field.name
        resource = self._get_resource(model)
        if resource:
            related_obj = get_object_or_none(model, **{field_name: self.inst.pk})
            try:
                if data_item is None:
                    if related_obj:
                        self._delete_reverse_object({resource.pk_field_name: related_obj.pk}, model)
                    setattr(self.inst, model_descriptor.cache_name, None)
                else:
                    if not isinstance(data_item, dict):
                        obj_data = {resource.pk_field_name: force_text(data_item)}
                    else:
                        obj_data = data_item.copy()

                    if resource.pk_field_name not in obj_data and related_obj:
                        obj_data[resource.pk_field_name] = related_obj.pk
                    obj_data[field_name] = self.inst.pk
                    setattr(self.inst, key, self._create_or_update_related_object(obj_data, model))

            except DataInvalidException as ex:
                self.errors[key] = ex.errors
Example #4
0
 def process_event(self, event_dict):
     message_id = event_dict.get('_id', None)
     if message_id:
         message = get_object_or_none(
             EmailMessage,
             extra_sender_data__contains='"_id":"{}"'.format(message_id))
         if message:
             message.change_and_save(last_webhook_received_at=now())
Example #5
0
    def is_valid(self, obj, key, slug=None):
        """
        Check if key is valid token for obj if is the token is deactivated
        """

        token = get_object_or_none(self.model, validating_type=ContentType.objects.get_for_model(obj),
                                   validating_id=obj.pk, is_active=True, key=key, slug=slug)
        return token is not None and not token.is_expired
Example #6
0
 def _get_perm_obj_or_404(self, pk=None):
     """
     If is send parameter pk is returned object according this pk,
     else is returned object from get_obj method, but it search only inside filtered values for current user,
     finally if object is still None is returned according the input key from all objects.
     
     If object does not exist is raised Http404
     """
     if pk:
         obj = get_object_or_none(self.core.model, pk=pk)
     else:
         try:
             obj = self.get_obj(False)
         except Http404:
             obj = get_object_or_none(self.core.model, **self.get_obj_filters())
     if not obj:
         raise Http404
     return obj
Example #7
0
    def _get_perm_obj_or_404(self, pk=None):
        """
        If is send parameter pk is returned object according this pk,
        else is returned object from get_obj method, but it search only inside filtered values for current user,
        finally if object is still None is returned according the input key from all objects.

        If object does not exist is raised Http404
        """
        if pk:
            obj = get_object_or_none(self.core.model, pk=pk)
        else:
            try:
                obj = self.get_obj(False)
            except Http404:
                obj = get_object_or_none(self.core.model, **self.get_obj_filters())
        if not obj:
            raise Http404
        return obj
Example #8
0
def get_user(request):
    if not hasattr(request, '_cached_user'):
        user = auth_token.get_user(request)
        if user.is_authenticated():
            child_user = get_object_or_none(get_current_domain().user_class,
                                            pk=user.pk)
            if child_user is not None:
                user = child_user
            else:
                user = AnonymousUser()
        request._cached_user = user
    return request._cached_user
def send_and_update_sms_states(*ats_requests):
    """
    Higher-level function performing serialization of ATS requests, parsing ATS server response and updating
    SMS messages state according the received response.
    """
    for uniq, state in send_and_parse_response(*ats_requests).items():
        sms = get_object_or_none(config.get_output_sms_model(), pk=uniq)
        if sms:
            sms.state = state if state in config.ATS_STATES.all else config.ATS_STATES.LOCAL_UNKNOWN_ATS_STATE
            sms.sent_at = timezone.now()
            sms.save()
        else:
            raise SMSValidationError(ugettext('SMS with uniq "{}" not found in DB.').format(uniq))
def get_user(request):
    if not hasattr(request, '_cached_user'):
        user = auth_token.get_user(request)
        if user.is_authenticated():
            child_user = get_object_or_none(
                get_current_domain().user_class, pk=user.pk
            )
            if child_user is not None:
                user = child_user
            else:
                user = AnonymousUser()
        request._cached_user = user
    return request._cached_user
Example #11
0
def get_token(request):
    """
    Returns the token model instance associated with the given request token key.
    If no user is retrieved AnonymousToken is returned.
    """
    if (not request.META.get(header_name_to_django(auth_token_settings.HEADER_NAME))
            and settings.MULTIDOMAINS_OVERTAKER_AUTH_COOKIE_NAME):
        ovetaker_auth_token = request.COOKIES.get(settings.MULTIDOMAINS_OVERTAKER_AUTH_COOKIE_NAME)
        token = get_object_or_none(Token, key=ovetaker_auth_token, is_active=True)
        if utils.get_user_from_token(token).is_authenticated():
            return token

    return utils.get_token(request)
Example #12
0
def get_token(request):
    """
    Returns the token model instance associated with the given request token key.
    If no user is retrieved AnonymousToken is returned.
    """
    if (not request.META.get(header_name_to_django(is_core_settings.AUTH_HEADER_NAME)) and
            config.CHAMBER_MULTIDOMAINS_OVERTAKER_AUTH_COOKIE_NAME):
        ovetaker_auth_token = request.COOKIES.get(config.CHAMBER_MULTIDOMAINS_OVERTAKER_AUTH_COOKIE_NAME)
        token = get_object_or_none(Token, key=ovetaker_auth_token, is_active=True)
        if utils.get_user_from_token(token).is_authenticated():
            return token

    return utils.get_token(request)
Example #13
0
    def is_valid(self, obj, key, slug=None):
        """
        Check if key is valid token for obj if is the token is deactivated
        """

        token = get_object_or_none(
            self.model,
            validating_type=ContentType.objects.get_for_model(obj),
            validating_id=obj.pk,
            is_active=True,
            key=key,
            slug=slug)
        return token is not None and not token.is_expired
def send_and_update_sms_states(*ats_requests):
    """
    Higher-level function performing serialization of ATS requests, parsing ATS server response and updating
    SMS messages state according the received response.
    """
    for uniq, state in send_and_parse_response(*ats_requests).items():
        sms = get_object_or_none(config.get_output_sms_model(), pk=uniq)
        if sms:
            sms.state = state if state in config.ATS_STATES.all else config.ATS_STATES.LOCAL_UNKNOWN_ATS_STATE
            sms.sent_at = timezone.now()
            sms.save()
        else:
            raise SMSValidationError(
                ugettext('SMS with uniq "{}" not found in DB.').format(uniq))
Example #15
0
def create_and_add_gear_to_activity_if_needed(activity, strava_client):
    if activity.gear_id:
        gear_created = False
        gear = get_object_or_none(Gear, strava_id=activity.gear_id)
        if not gear:
            strava_gear = strava_client.get_gear(activity.gear_id)
            gear = Gear.objects.create(
                strava_id=strava_gear.id,
                name=strava_gear.name,
                type=STRAVA_ACTIVITY_TYPE_TO_GEAR_TYPE[activity.type])
            gear_created = True
        Activity.objects.get(strava_id=activity.id).gear.add(gear)
        return gear_created
    return False
Example #16
0
    def handle(self, **options):
        self.stdout.write('Syncing permissions')
        updated_permission_pks = set()
        created_permission_pks = set()
        unchanged_permissions_pks = set()
        for permission in permissions.values():
            perm = get_object_or_none(Perm,
                                      type=enums.PERM_TYPE_CORE,
                                      codename=permission.name,
                                      name=permission.verbose_name)
            if perm:
                unchanged_permissions_pks.add(perm.pk)
            else:
                perm, created = Perm.objects.update_or_create(
                    type=enums.PERM_TYPE_CORE,
                    codename=permission.name,
                    defaults={'name': permission.verbose_name})
                if created:
                    created_permission_pks.add(perm.pk)
                else:
                    updated_permission_pks.add(perm.pk)
        self.stdout.write(' Updated: {}'.format(len(updated_permission_pks)))
        self.stdout.write(' Created: {}'.format(len(created_permission_pks)))

        self.stdout.write('Removing unused permissions')
        nonexistent_unused_permissions_qs = Perm.objects.exclude(
            pk__in=updated_permission_pks | created_permission_pks
            | unchanged_permissions_pks).filter(fgroups__isnull=True,
                                                users__isnull=True)
        count = nonexistent_unused_permissions_qs.count()
        nonexistent_unused_permissions_qs.delete()
        self.stdout.write(' Removed: {}'.format(count))

        nonexistent_used_permissions_qs = Perm.objects.exclude(
            pk__in=updated_permission_pks | created_permission_pks
            | unchanged_permissions_pks)
        if options.get('clean_obsolete'):
            self.stdout.write('Removing used permissions')
            count = nonexistent_used_permissions_qs.count()
            nonexistent_used_permissions_qs.delete()
            self.stdout.write(' Removed: {}'.format(count))
        elif nonexistent_used_permissions_qs.exists():
            self.stderr.write(
                'Found used obsolete permissions, run command with "--clean-obsolete" parameter for cleaning'
            )
            obsolete_string = ugettext(' (obsolete)')
            nonexistent_used_permissions_qs.exclude(
                name__endswith=obsolete_string).update(
                    name=Concat(F('name'), Value(obsolete_string)))
Example #17
0
def update_sms_states(parsed_response):
    """
    Higher-level function performing serialization of ATS requests, parsing ATS server response and updating
    SMS messages state according the received response.
    """
    for uniq, state in parsed_response.items():
        sms = get_object_or_none(get_output_sms_model(), pk=uniq)
        if sms:
            change_and_save(sms,
                            state=state if state in ATS_STATES.all else
                            ATS_STATES.LOCAL_UNKNOWN_ATS_STATE,
                            sent_at=timezone.now())
        else:
            raise SMSValidationError(
                ugettext('SMS with uniq "{}" not found in DB.').format(uniq))
Example #18
0
 def _get_obj_or_none(self, pk=None):
     return get_object_or_none(self._get_queryset(),
                               pk=(pk or self._get_pk()))
Example #19
0
 def _get_perm_obj_or_none(self, pk=None):
     pk = pk or self._get_pk()
     if pk:
         return get_object_or_none(self.core.model, pk=pk)
     else:
         return None
Example #20
0
 def _get_obj_or_none(self, pk=None):
     return get_object_or_none(self._get_queryset(), pk=(pk or self.kwargs.get(self.pk_name)))
Example #21
0
 def _get_perm_obj_or_none(self, pk=None):
     pk = pk or self.kwargs.get(self.pk_name)
     if pk:
         return get_object_or_none(self.core.model, pk=pk)
     else:
         return None
Example #22
0
 def _get_perm_obj_or_none(self, pk=None):
     pk = pk or self.kwargs.get(self.pk_name)
     if pk:
         return get_object_or_none(self.core.model, pk=pk)
     else:
         return None
Example #23
0
 def _get_obj_or_none(self, pk=None):
     return get_object_or_none(self._get_queryset(),
                               pk=(pk or self.kwargs.get(self.pk_name)))
Example #24
0
 def _get_perm_obj_or_none(self, pk=None):
     pk = pk or self._get_pk()
     if pk:
         return get_object_or_none(self.core.model, pk=pk)
     else:
         return None
Example #25
0
 def _get_obj_or_none(self, model, parent_inst, field_name):
     return get_object_or_none(model, **{field_name: parent_inst.pk})
Example #26
0
 def _get_obj_or_none(self, pk=None):
     if pk or self._get_pk():
         return get_object_or_none(self._get_queryset(), pk=(pk or self._get_pk()))
     else:
         return None
Example #27
0
 def _get_obj_or_none(self, model, parent_inst, field_name):
     return get_object_or_none(model, **{field_name: parent_inst.pk})