def revisions(request, id, object_name=None): assert object_name in ("Question", "Answer") post = get_object_or_404(models.get_model(object_name), id=id) revisions = list(post.revisions.all()) revisions.reverse() for i, revision in enumerate(revisions): revision.html = revision.as_html() if i == 0: revision.diff = revisions[i].html revision.summary = _("initial version") else: revision.diff = htmldiff(revisions[i - 1].html, revision.html) data = {"page_class": "revisions-page", "active_tab": "questions", "post": post, "revisions": revisions} return render_into_skin("revisions.html", data, request)
def get_db_object_or_404(params): """a utility function that returns an object in return to the model_name and object_id only specific models are accessible """ from askbot import models try: model_name = params['model_name'] assert (model_name == 'Group') model = models.get_model(model_name) obj_id = forms.IntegerField().clean(params['object_id']) return get_object_or_404(model, id=obj_id) except Exception: #need catch-all b/c of the nature of the function raise Http404
def get_db_object_or_404(params): """a utility function that returns an object in return to the model_name and object_id only specific models are accessible """ from askbot import models try: model_name = params['model_name'] assert(model_name=='Group') model = models.get_model(model_name) obj_id = forms.IntegerField().clean(params['object_id']) return get_object_or_404(model, id=obj_id) except Exception: #need catch-all b/c of the nature of the function raise Http404
def edit_object_property_text(request): model_name = CharField().clean(request.REQUEST["model_name"]) object_id = IntegerField().clean(request.REQUEST["object_id"]) property_name = CharField().clean(request.REQUEST["property_name"]) accessible_fields = (("Group", "preapproved_emails"), ("Group", "preapproved_email_domains")) if (model_name, property_name) not in accessible_fields: raise exceptions.PermissionDenied() obj = models.get_model(model_name).objects.get(id=object_id) if request.method == "POST": text = CharField().clean(request.POST["text"]) setattr(obj, property_name, text) obj.save() elif request.method == "GET": return {"text": getattr(obj, property_name)} else: raise exceptions.PermissionDenied()
def revisions(request, id, object_name=None): assert(object_name in ('Question', 'Answer')) post = get_object_or_404(models.get_model(object_name), id=id) revisions = list(post.revisions.all()) revisions.reverse() for i, revision in enumerate(revisions): revision.html = revision.as_html() if i == 0: revision.diff = revisions[i].html revision.summary = _('initial version') else: revision.diff = htmldiff(revisions[i-1].html, revision.html) data = { 'page_class':'revisions-page', 'active_tab':'questions', 'post': post, 'revisions': revisions, } return render_into_skin('revisions.html', data, request)
def revisions(request, id, object_name=None): assert (object_name in ('Question', 'Answer')) post = get_object_or_404(models.get_model(object_name), id=id) revisions = list(post.revisions.all()) revisions.reverse() for i, revision in enumerate(revisions): revision.html = revision.as_html() if i == 0: revision.diff = revisions[i].html revision.summary = _('initial version') else: revision.diff = htmldiff(revisions[i - 1].html, revision.html) data = { 'page_class': 'revisions-page', 'active_tab': 'questions', 'post': post, 'revisions': revisions, } return render_into_skin('revisions.html', data, request)
def edit_object_property_text(request): model_name = CharField().clean(request.REQUEST['model_name']) object_id = IntegerField().clean(request.REQUEST['object_id']) property_name = CharField().clean(request.REQUEST['property_name']) accessible_fields = (('Group', 'preapproved_emails'), ('Group', 'preapproved_email_domains')) if (model_name, property_name) not in accessible_fields: raise exceptions.PermissionDenied() obj = models.get_model(model_name).objects.get(id=object_id) if request.method == 'POST': text = CharField().clean(request.POST['text']) setattr(obj, property_name, text) obj.save() elif request.method == 'GET': return {'text': getattr(obj, property_name)} else: raise exceptions.PermissionDenied()
def revisions(request, id, object_name=None): assert(object_name in ('Question', 'Answer')) post = get_object_or_404(models.get_model(object_name), id=id) revisions = list(post.revisions.all()) revisions.reverse() for i, revision in enumerate(revisions): revision.html = revision.as_html() if i == 0: revision.diff = revisions[i].html revision.summary = _('initial version') else: revision.diff = htmldiff(revisions[i-1].html, revision.html) data = { 'view_name':'answer_revisions', 'active_tab':'questions', 'post': post, 'revisions': revisions, } context = RequestContext(request, data) template = ENV.get_template('revisions.html') return HttpResponse(template.render(context))
def edit_object_property_text(request): model_name = CharField().clean(request.REQUEST['model_name']) object_id = IntegerField().clean(request.REQUEST['object_id']) property_name = CharField().clean(request.REQUEST['property_name']) accessible_fields = ( ('GroupProfile', 'preapproved_emails'), ('GroupProfile', 'preapproved_email_domains') ) if (model_name, property_name) not in accessible_fields: raise exceptions.PermissionDenied() obj = models.get_model(model_name).objects.get(id=object_id) if request.method == 'POST': text = CharField().clean(request.POST['text']) setattr(obj, property_name, text) obj.save() elif request.method == 'GET': return {'text': getattr(obj, property_name)} else: raise exceptions.PermissionDenied()