def save(self, request): """Process and save cleaned data in the database.""" ip_address = core_utils.get_client_ip(request) comment_period_lockout = getattr( settings, 'COMMENT_PERIOD_LOCKOUT', None ) num_comments_allowed_in_lockout = \ getattr(settings, 'NUM_COMMENTS_ALLOWED_IN_PERIOD', 5) throttle_key = 'commenting_%s_%s' % ( self.cleaned_data['comment_content_type_id'], self.cleaned_data['comment_object_pk'] ) if request.user.is_authenticated(): user = request.user else: user = None if comment_period_lockout is not None: if core_throttling.check_throttle_exists(request, throttle_key): throttled = core_throttling.check_throttle( request, throttle_key, comment_period_lockout, num_comments_allowed_in_lockout ) else: throttled = throttling.check_throttle( user, ip_address, comment_period_lockout, num_comments_allowed_in_lockout ) if throttled: raise exceptions.RapidCommentingError( _("You are commenting too quickly. " "Please wait before commenting again") ) if self.cleaned_data['anonymous']: user = None comment = models.CommentModel.objects.create( user=user, created_by=user, modified_by=user, user_name=self.cleaned_data['user_name'], ip_address=ip_address, site=Site.objects.get_current(), content_type_id=self.cleaned_data['comment_content_type_id'], object_pk=self.cleaned_data['comment_object_pk'], comment=self.cleaned_data['comment_box'] ) core_throttling.add_to_throttle( request, throttle_key, comment.publish_at ) return comment
def save(self, request): """Save the UserEULA and return the saved object.""" if self.content_type_id is not None and self.object_pk is not None: extra_kwargs = { 'content_type': ContentType.objects\ .get_for_id(self.content_type_id), 'object_pk': self.object_pk } else: extra_kwargs = {} obj = models.UserEULA.objects.create( user=request.user, eula=self.eula, eula_content_copy=self.eula.content, ip_address=core_utils.get_client_ip(request), **extra_kwargs ) return obj
def _like(request, action): """Record when the user has liked.""" if request.user.is_authenticated(): user = request.user else: user = None if request.method == 'POST': content_type_id = request.POST.get('content_type_id', None) object_pk = request.POST.get('object_pk', None) else: content_type_id = request.GET.get('content_type_id', None) object_pk = request.GET.get('object_pk', None) ip_address = core_utils.get_client_ip(request) throttle_key = 'liking_%s_%s' % (content_type_id, object_pk) _validate(request, user, throttle_key, ip_address, action) if action == 'add': like = models.Like.objects.create( user=user, content_type_id=content_type_id, object_pk=object_pk, site=Site.objects.get_current(), ip_address=ip_address ) core_throttling.add_to_throttle(request, throttle_key, like.created_at) elif action =='remove': like = get_object_or_404( models.Like, user=user, content_type_id=content_type_id, object_pk=object_pk ) like.delete() return throttle_key