def get_form(self, DocumentDetailForm):
        self.set_mongoadmin()
        context = self.set_permissions_in_context({})
        if not context['has_edit_permission']:
            return HttpResponseForbidden("You do not have permissions to edit this content.")
        
        self.document_type = getattr(self.models, self.document_name)
        self.ident = self.kwargs.get('id')
        self.document = self.document_type.objects.get(id=self.ident)
        self.form = DocumentDetailForm()                
            
        self.form = document_detail_form_factory(form=self.form, document_type=self.document_type, initial=self.document)
        if self.request.method == 'POST':
            self.form.data = self.request.POST
            self.form.is_bound = True
            if self.form.is_valid():
                for key, field in self.form.fields.items():                      
                    if 'readonly' in field.widget.attrs:
                        # For _id or things specified as such
                        continue       
                        
                    if isinstance(field.widget, DateTimeInput):
                        format = field.widget.format
                        setattr(self.document, key, datetime.strptime(self.request.POST[key], format))
                        continue


                    if isinstance(field.widget, CheckboxInput):
                        if key in self.request.POST:
                            setattr(self.document, key, True)
                        else:
                            setattr(self.document, key, False)
                        continue
                        
                    if isinstance(field.widget, widgets.Select):
                        # supporting reference fields!
                        value = field.mongofield.document_type.objects.get(id=self.request.POST[key])
                        setattr(self.document, key, value)
                        continue

                    # for strings
                    setattr(self.document, key, self.request.POST[key])
                    
                self.document.save()
                messages.add_message(self.request, messages.INFO, 'Your changes have been saved.')
                
        return self.form
    def get_form(self, DocumentDetailForm):
        self.set_mongonaut_base()
        self.document_type = getattr(self.models, self.document_name)
        self.ident = self.kwargs.get('id')
        self.document = self.document_type.objects.get(id=self.ident)
        self.form = DocumentDetailForm()
        self.form = document_detail_form_factory(self.form, self.document_type,
                                                 self.document)
        if self.request.method == 'POST':
            self.form.data = self.request.POST
            self.form.is_bound = True
            if self.form.is_valid():
                for key, field in self.form.fields.items():
                    if 'readonly' in field.widget.attrs:
                        # For _id
                        # TODO - make the ones below work
                        # for ReferenceField - like <class 'articles.models.User'> on Blog
                        # For ListField - like 'field': <mongoengine.fields.StringField object at 0x101b51810>,
                        # For EmbeddedDocumentField
                        continue

                    if isinstance(field.widget, DateTimeInput):
                        format = field.widget.format
                        setattr(
                            self.document, key,
                            datetime.strptime(self.request.POST[key], format))
                        continue

                    if isinstance(field.widget, CheckboxInput):
                        if key in self.request.POST:
                            setattr(self.document, key, True)
                        else:
                            setattr(self.document, key, False)
                        continue

                    # for strings
                    setattr(self.document, key, self.request.POST[key])
                self.document.save()
                # TODO add message for save

        return self.form
Beispiel #3
0
    def get_form(self, DocumentDetailForm):
        self.set_mongonaut_base()
        self.document_type = getattr(self.models, self.document_name)
        self.form = DocumentDetailForm()
        self.form = document_detail_form_factory(form=self.form, document_type=self.document_type)
        if self.request.method == 'POST':
            self.form.data = self.request.POST
            self.form.is_bound = True
            if self.form.is_valid():
                self.document = self.document_type()
                for key, field in self.form.fields.items():
                    if 'readonly' in field.widget.attrs:
                        # For _id
                        continue

                    if isinstance(field.widget, DateTimeInput):
                        format = field.widget.format
                        setattr(self.document, key, datetime.strptime(self.request.POST[key], format))
                        continue

                    if isinstance(field.widget, CheckboxInput):
                        if key in self.request.POST:
                            setattr(self.document, key, True)
                        else:
                            setattr(self.document, key, False)
                        continue

                    if isinstance(field.widget, widgets.Select):
                        # supporting reference fields!
                        value = field.mongofield.document_type.objects.get(id=self.request.POST[key])
                        setattr(self.document, key, value)
                        continue

                    # for strings
                    setattr(self.document, key, self.request.POST[key])
                self.document.save()
                messages.add_message(self.request, messages.INFO, 'Your new document has been added and saved.')

        return self.form
Beispiel #4
0
    def get_form(self, DocumentDetailForm):
        self.set_mongonaut_base()
        self.document_type = getattr(self.models, self.document_name)
        self.ident = self.kwargs.get('id')
        self.document = self.document_type.objects.get(id=self.ident)
        self.form = DocumentDetailForm()        
        self.form = document_detail_form_factory(self.form, self.document_type, self.document)
        if self.request.method == 'POST':
            self.form.data = self.request.POST
            self.form.is_bound = True
            if self.form.is_valid():
                for key, field in self.form.fields.items():                      
                    if 'readonly' in field.widget.attrs:
                        # For _id
                        # TODO - make the ones below work
                        # for ReferenceField - like <class 'articles.models.User'> on Blog                        
                        # For ListField - like 'field': <mongoengine.fields.StringField object at 0x101b51810>,                                
                        # For EmbeddedDocumentField
                        continue       
                        
                    if isinstance(field.widget, DateTimeInput):
                        format = field.widget.format
                        setattr(self.document, key, datetime.strptime(self.request.POST[key], format))
                        continue
                        
                    if isinstance(field.widget, CheckboxInput):
                        if key in self.request.POST:
                            setattr(self.document, key, True)
                        else:
                            setattr(self.document, key, False)
                        continue

                    # for strings
                    setattr(self.document, key, self.request.POST[key])
                self.document.save()
                # TODO add message for save

            
        return self.form