コード例 #1
0
ファイル: type.py プロジェクト: benoitc/mt-compono
def edit_type(request, typeid=None):
    """ Edit a page type """
    if not can_create(request.user):
        return HttpResponseForbidden()
    
    if request.POST:
        data = json.loads(request.raw_post_data)

        if not isinstance(data.get('editors'), list):
            # maybe it should be handled at js level
            # but we also want to make sur eit's a list
            data['editors'] = [data['editors']]
            
        old_t = Type.by_name(data['name'])
        
        if old_t and old_t._id != data.get("_id"):
            return HttpResponse(content=json.dumps({"error": True,
                    "reason": "conflict - type already created"}),
                    status="409")
                    
        typeid = data.pop('_id', "")
        typerev = data.pop('_rev', "")
        
        t = Type(**data)
        
        if typeid: t._doc['_id'] = typeid
        if typerev: t._doc['_rev'] = typerev
        
        try:
            t.save()
        except ResourceConflict, e:
            return HttpResponse(content=json.dumps({"error": True,
                    "reason": str(e)}), status="409")
        return HttpResponse(content=json.dumps({"ok": True, "id": t._id, 
            "rev": t._rev}), content_type="application/json")
コード例 #2
0
ファイル: forms.py プロジェクト: benoitc/mt-compono
    def __init__(self, *args, **kwargs):
        super(CreateDocument, self).__init__(*args, **kwargs)
        choices = [(t._id, t.name) for t in Type.all()]
        
        self.fields['ptype'].choices = choices

            
        
コード例 #3
0
ファイル: type.py プロジェクト: benoitc/mt-compono
def all_types(request):
    """ list all types """
    if not can_create(request.user):
        return HttpResponseForbidden()
    
    types = Type.all()
    return render_to_response("types/types.html", {
        "types": types
    }, context_instance=RequestContext(request))
コード例 #4
0
ファイル: forms.py プロジェクト: benoitc/mt-compono
 def __init__(self, *args, **kwargs):
     super(CreatePageType, self).__init__(*args, **kwargs)
     choices = [
                     ('type', _(u"Créer une page et un nouveau type")),
                     ('context', _(u'Créer un contexte')),
                     ('--', '--'),
                     ('--', _(u'Créer une page à partir du type :')),
                     ('--', '--'),
                 ]
     choices += [(t._id, t.name) for t in Type.all()]
     
     self.fields['page_type'].choices =choices
コード例 #5
0
ファイル: page.py プロジェクト: benoitc/mt-compono
def show_page(request, page):
    if page.doc_type == "context":
        content = render_template(page.body,
                        context_instance=RequestContext(request))
        return HttpResponse(content)
    else:
        try:
            t = Type.get(page.ctype)
        except ResourceNotFound:
            raise Http404()
        content = render_template(t.templates['show'], {
            "doc": page
        }, context_instance=RequestContext(request))
        return HttpResponse(content)
    raise Http404()
コード例 #6
0
ファイル: page.py プロジェクト: benoitc/mt-compono
def edit_content(request, page, create=False):
    try:
        t = Type.get(page.ctype)
    except ResourceNotFound:
        raise Http404()
    
    if request.POST and not create:
        f = EditContent(request.POST, type_instance=t, document_instance=page)
        if f.is_valid():
            f.save()
            return HttpResponseRedirect(request.path)
    else:
        f = EditContent(type_instance=t, document_instance=page)
    return render_to_response("pages/page.html", {
        "f": f,
        "path": request.path
    }, context_instance=RequestContext(request))
コード例 #7
0
ファイル: mtcompono_tags.py プロジェクト: benoitc/mt-compono
 def render(self, context):
     t = Type.by_name(self.type_name)
     if not t:
         if settings.DEBUG:
             return _("[%s n'existe pas]" % self.type_name)
         else:
             return ''
             
     items = Page.by_type(t._id)
     output = ''
     try:
         tpl = Template(t.templates['list'])
         context.update({"items": items})
         output = tpl.render(context)
     except TemplateSyntaxError, e:
         if settings.DEBUG:
             return _("[Erreurs de syntaxe: %s]" % e)
         else:
             return ''
コード例 #8
0
ファイル: page.py プロジェクト: benoitc/mt-compono
def new_document(request):
    if request.POST:
        fcreate = CreateDocument(request.POST)
        if fcreate.is_valid():
            ptype = fcreate.cleaned_data['ptype']
            
            t = Type.get(ptype)
            db = get_db("mtcompono")
            uuid = db.server.next_uuid()
            
            path = "/%s/%s" % (t.name, uuid)
            page = Page(ctype=ptype, urls=[path], 
                        author=request.user.username)
            page.save()
            redirect_path = "%s?edit=1" % path
            return HttpResponseRedirect(redirect_path)
    else:
        fcreate = CreateDocument()
        
    return render_to_response("pages/create_document.html", {
        "f": fcreate
    }, context_instance=RequestContext(request))
    
コード例 #9
0
ファイル: type.py プロジェクト: benoitc/mt-compono
            return HttpResponse(content=json.dumps({"error": True,
                    "reason": "conflict - type already created"}),
                    status="409")
                    
        typeid = data.pop('_id', "")
        typerev = data.pop('_rev', "")
        
        t = Type(**data)
        
        if typeid: t._doc['_id'] = typeid
        if typerev: t._doc['_rev'] = typerev
        
        try:
            t.save()
        except ResourceConflict, e:
            return HttpResponse(content=json.dumps({"error": True,
                    "reason": str(e)}), status="409")
        return HttpResponse(content=json.dumps({"ok": True, "id": t._id, 
            "rev": t._rev}), content_type="application/json")
    
    doc = {}
    if typeid and typeid is not None:
        doc = Type.get(typeid).to_json()
        
    return render_to_response("types/type.html", {
         "doc": json.dumps(doc),
         "editors": Group.objects.all()
    }, context_instance=RequestContext(request))
                
def pages_by_type(request, name):
    raise Http404()