Ejemplo n.º 1
0
    def save(self, **kwargs):
        entry = super(FormEntryForm, self).save()

        # entry.record_entry(self)
        for field_key in self.fields:
            if self.form_field_prefix in field_key:
                field = self.fields[field_key]
                raw_value = self._raw_value(field_key)
                value = self.cleaned_value(raw_value)
                model_field = field.widget.model_field

                # TODO-- add secure file handling...
                if value and field.widget.model_field.is_multipart:

                    type = raw_value.__class__.__name__
                    # print 'TYPE? %s'%(type)
                    if isinstance(raw_value, InMemoryUploadedFile) or isinstance(raw_value, TemporaryUploadedFile):

                        file_upload_path = join(
                            "form_uploads",
                            str(self.form_schema.slug),
                            str(entry.pk),
                            str(model_field.slug),
                            raw_value.name,
                        )
                        # if settings.DEBUG:
                        #     print 'FILE UPLOAD PATH: %s'%(file_upload_path)
                        try:

                            if model_field.type == FormField.SECURE_FILE:

                                secure_file_storage = import_by_path(settings.SECURE_MEDIA_STORAGE)()
                                value = secure_file_storage.save(file_upload_path, raw_value)

                                key_name = "%s/%s" % (settings.AWS_MEDIA_FOLDER, value)
                                BaseSecureAtom.make_private(settings.AWS_STORAGE_BUCKET_NAME_MEDIA_SECURE, key_name)

                            else:

                                file_storage = DefaultStorage()
                                value = file_storage.save(file_upload_path, raw_value)
                        except:
                            print "Error uploading file to %s/%s" % (file_upload_path, raw_value)
                            value = file_upload_path

                field_entry, created = self.field_model.objects.get_or_create(
                    form_entry=entry, form_field=field.widget.model_field
                )
                # if created:
                #     print 'created new field entry: %s, %s, %s'%(field_entry, entry.pk, field.widget.model_field.title)
                # else:
                #     print 'Update field entry %s'%(value)
                field_entry.value = field_entry.get_compressed_value(value)
                field_entry.save()

        return entry
Ejemplo n.º 2
0
    def save(self, **kwargs):
        entry = super(FormEntryForm, self).save()

        # entry.record_entry(self)
        for field_key in self.fields:
            if self.form_field_prefix in field_key:
                field = self.fields[field_key]
                raw_value = self._raw_value(field_key)
                value = self.cleaned_value(raw_value)
                model_field = field.widget.model_field

                #TODO-- add secure file handling...
                if value and field.widget.model_field.is_multipart:

                    type = raw_value.__class__.__name__
                    # print 'TYPE? %s'%(type)
                    if isinstance(raw_value,
                                  InMemoryUploadedFile) or isinstance(
                                      raw_value, TemporaryUploadedFile):

                        file_upload_path = join('form_uploads',
                                                str(self.form_schema.slug),
                                                str(entry.pk),
                                                str(model_field.slug),
                                                raw_value.name)
                        # if settings.DEBUG:
                        #     print 'FILE UPLOAD PATH: %s'%(file_upload_path)
                        try:

                            if model_field.type == FormField.SECURE_FILE:

                                secure_file_storage = import_by_path(
                                    settings.SECURE_MEDIA_STORAGE)()
                                value = secure_file_storage.save(
                                    file_upload_path, raw_value)

                                key_name = "%s/%s" % (
                                    settings.AWS_MEDIA_FOLDER, value)
                                BaseSecureAtom.make_private(
                                    settings.
                                    AWS_STORAGE_BUCKET_NAME_MEDIA_SECURE,
                                    key_name)

                            else:

                                file_storage = DefaultStorage()
                                value = file_storage.save(
                                    file_upload_path, raw_value)
                        except:
                            print "Error uploading file to %s/%s" % (
                                file_upload_path, raw_value)
                            value = file_upload_path

                field_entry, created = self.field_model.objects.get_or_create(
                    form_entry=entry, form_field=field.widget.model_field)
                # if created:
                #     print 'created new field entry: %s, %s, %s'%(field_entry, entry.pk, field.widget.model_field.title)
                # else:
                #     print 'Update field entry %s'%(value)
                field_entry.value = field_entry.get_compressed_value(value)
                field_entry.save()

        return entry