Beispiel #1
0
    def post(self, request, postid, *args, **kwargs):
        # Delete entry
        if 'delete' in request.POST:
            # Fetch the asset to delete
            asset_id = request.POST.get('asset-id')
            if asset_id is None:
                raise Http404

            entry = self.context['entry']
            if entry.url_id == asset_id:
                asset = entry
            else:
                # this request must be to delete a comment shown on this page
                typepad.client.batch_request()
                asset = models.Asset.get_by_url_id(asset_id)
                typepad.client.complete_batch()

            # Only let plain users delete stuff if so configured.
            if settings.ALLOW_USERS_TO_DELETE_POSTS or request.typepad_user.is_superuser:
                try:
                    asset.delete()
                    signals.asset_deleted.send(sender=self.post, instance=asset, group=request.group)
                except asset.Forbidden:
                    pass
                else:
                    if isinstance(asset, models.Comment):
                        # Return to permalink page
                        request.flash.add('notices', _('Comment deleted.'))
                        return HttpResponseRedirect(request.path)
                    # Redirect to home
                    request.flash.add('notices', _('Post deleted.'))
                    return HttpResponseRedirect(reverse('home'))

            # Not allowed to delete
            request.flash.add('errors', _('You are not authorized to delete this asset.'))
            return HttpResponseRedirect(request.path)

        elif 'comment' in request.POST:
            if self.form_instance.is_valid():
                typepad.client.batch_request()
                self.select_typepad_user(request)
                asset = models.Asset.get_by_url_id(postid)
                typepad.client.complete_batch()
                comment = self.form_instance.save()
                comment.in_reply_to = asset.asset_ref

                ### Moderation
                if moderation:
                    from moderation import views as mod_view
                    if mod_view.moderate_post(request, comment):
                        return HttpResponseRedirect(request.path)

                asset.comments.post(comment)
                request.flash.add('notices', _('Comment created successfully!'))
                signals.asset_created.send(sender=self.post, instance=comment,
                    parent=asset, group=request.group)
                # Return to permalink page
                return HttpResponseRedirect(request.path)
Beispiel #2
0
    def post(self, request, *args, **kwargs):
        if self.form_instance.is_valid():
            post = self.form_instance.save()
        else:
            request.flash.add('errors', _('Please correct the errors below.'))
            return

        ### Moderation
        if moderation:
            # lets hand off to the moderation app
            from moderation import views as mod_view
            if mod_view.moderate_post(request, post):
                return HttpResponseRedirect(request.path)

        try:
            post.save(group=request.group)
        except models.assets.Video.ConduitError, ex:
            request.flash.add('errors', ex.message)
Beispiel #3
0
    def post(self, request, *args, **kwargs):
        if self.form_instance.is_valid():
            post = self.form_instance.save()
        else:
            request.flash.add('errors', _('Please correct the errors below.'))
            return

        ### Moderation
        if moderation:
            # lets hand off to the moderation app
            from moderation import views as mod_view
            if mod_view.moderate_post(request, post):
                return HttpResponseRedirect(request.path)

        try:
            post.save(group=request.group)
        except models.assets.Video.ConduitError, ex:
            request.flash.add('errors', ex.message)
Beispiel #4
0
    def post(self, request, postid, *args, **kwargs):
        # Delete entry
        if 'delete' in request.POST:
            # Fetch the asset to delete
            asset_id = request.POST.get('asset-id')
            if asset_id is None:
                raise Http404

            entry = self.context['entry']
            if entry.url_id == asset_id:
                asset = entry
            else:
                # this request must be to delete a comment shown on this page
                typepad.client.batch_request()
                asset = models.Asset.get_by_url_id(asset_id)
                typepad.client.complete_batch()

            # Only let plain users delete stuff if so configured.
            if settings.ALLOW_USERS_TO_DELETE_POSTS or request.typepad_user.is_superuser:
                try:
                    asset.delete()
                    signals.asset_deleted.send(sender=self.post,
                                               instance=asset,
                                               group=request.group)
                except asset.Forbidden:
                    pass
                else:
                    if isinstance(asset, models.Comment):
                        # Return to permalink page
                        request.flash.add('notices', _('Comment deleted.'))
                        return HttpResponseRedirect(request.path)
                    # Redirect to home
                    request.flash.add('notices', _('Post deleted.'))
                    return HttpResponseRedirect(reverse('home'))

            # Not allowed to delete
            request.flash.add(
                'errors', _('You are not authorized to delete this asset.'))
            return HttpResponseRedirect(request.path)

        elif 'comment' in request.POST:
            if self.form_instance.is_valid():
                typepad.client.batch_request()
                self.select_typepad_user(request)
                asset = models.Asset.get_by_url_id(postid)
                typepad.client.complete_batch()
                comment = self.form_instance.save()
                comment.in_reply_to = asset.asset_ref

                ### Moderation
                if moderation:
                    from moderation import views as mod_view
                    if mod_view.moderate_post(request, comment):
                        return HttpResponseRedirect(request.path)

                asset.comments.post(comment)
                request.flash.add('notices',
                                  _('Comment created successfully!'))
                signals.asset_created.send(sender=self.post,
                                           instance=comment,
                                           parent=asset,
                                           group=request.group)
                # Return to permalink page
                return HttpResponseRedirect(request.path)
Beispiel #5
0
def asset_post(request):
    """Ajax interface for creating a post or comment."""

    post_type = request.POST.get('post_type', None)
    if post_type is None:
        raise Exception("post_type is a required parameter")

    if post_type == 'comment':
        frm = CommentForm(request.POST)
        if frm.is_valid():
            postid = request.POST.get('parent', None)
            if postid is None:
                raise Exception("parent is a required parameter")

            typepad.client.batch_request()
            user = get_user(request)
            asset = models.Asset.get_by_url_id(postid)
            typepad.client.complete_batch()

            if not user.is_authenticated():
                raise Exception("not authorized")

            request.typepad_user = user
            comment = frm.save()
            comment.in_reply_to = asset.asset_ref

            ### Moderation
            if moderation:
                from moderation import views as mod_view
                if mod_view.moderate_post(request, comment):
                    html = render_to_string(
                        'motion/assets/comment.html', {
                            'comment': comment,
                            'view': 'permalink',
                        },
                        context_instance=RequestContext(request))
                    return http.HttpResponse(json.dumps({
                        'status':
                        'moderated',
                        'data':
                        'Your comment is held for moderation.'
                    }),
                                             mimetype='application/json')

            try:
                asset.comments.post(comment)
            except Exception, e:
                return http.HttpResponse(json.dumps({
                    'status': 'error',
                    'data': str(e),
                }),
                                         mimetype='application/json')

            signals.asset_created.send(sender=asset_post,
                                       instance=comment,
                                       parent=asset,
                                       group=request.group)

            # render response
            html = render_to_string('motion/assets/comment.html', {
                'comment': comment,
                'view': 'permalink',
            },
                                    context_instance=RequestContext(request))

            return http.HttpResponse(json.dumps({
                'status': 'posted',
                'data': html,
                'xid': comment.xid
            }),
                                     mimetype='application/json')
        else:
            errorfields = [k for k, v in frm.errors.items()]
            return http.HttpResponse(json.dumps({
                'status': 'error',
                'data': ','.join(errorfields)
            }),
                                     mimetype='application/json')
Beispiel #6
0
def asset_post(request):
    """Ajax interface for creating a post or comment."""

    post_type = request.POST.get('post_type', None)
    if post_type is None:
        raise Exception("post_type is a required parameter")

    if post_type == 'comment':
        frm = CommentForm(request.POST)
        if frm.is_valid():
            postid = request.POST.get('parent', None)
            if postid is None:
                raise Exception("parent is a required parameter")

            typepad.client.batch_request()
            user = get_user(request)
            asset = models.Asset.get_by_url_id(postid)
            typepad.client.complete_batch()

            if not user.is_authenticated():
                raise Exception("not authorized")

            request.typepad_user = user
            comment = frm.save()
            comment.in_reply_to = asset.asset_ref

            ### Moderation
            if moderation:
                from moderation import views as mod_view
                if mod_view.moderate_post(request, comment):
                    html = render_to_string('motion/assets/comment.html', {
                        'comment': comment,
                        'view': 'permalink',
                    }, context_instance=RequestContext(request))
                    return http.HttpResponse(json.dumps({
                        'status': 'moderated',
                        'data': 'Your comment is held for moderation.'}),
                        mimetype='application/json')

            try:
                asset.comments.post(comment)
            except Exception, e:
                return http.HttpResponse(json.dumps({
                    'status': 'error',
                    'data': str(e),
                }), mimetype='application/json')

            signals.asset_created.send(sender=asset_post, instance=comment,
                parent=asset, group=request.group)

            # render response
            html = render_to_string('motion/assets/comment.html', {
                'comment': comment,
                'view': 'permalink',
            }, context_instance=RequestContext(request))

            return http.HttpResponse(json.dumps({
                'status': 'posted', 'data': html, 'xid':comment.xid}),
                mimetype='application/json')
        else:
            errorfields = [k for k, v in frm.errors.items()]
            return http.HttpResponse(json.dumps({'status': 'error',
                'data': ','.join(errorfields)}), mimetype='application/json')