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)
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)
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)
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')
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')