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
def get_rendered_value(self): if self.decompressed_value: if self.form_field.is_multipart: file_url = "%s%s"%(settings.MEDIA_URL, self.value) if self.form_field.type==FormField.IMAGE: return '<img src="%s" >'%(file_url) elif self.form_field.type==FormField.FILE: return '<a href="%s" target="_blank">%s</a>'%(file_url, self.value) elif self.form_field.type==FormField.SECURE_FILE: duration = 120 key_name = "%s/%s"%(settings.AWS_MEDIA_FOLDER, self.value) file_url = BaseSecureAtom.generate_link(settings.AWS_STORAGE_BUCKET_NAME_MEDIA_SECURE, key_name, duration) return '<a href="%s" target="_blank">%s</a><br /><br />This link will expire after %s seconds.</a>'%(file_url, self.value, duration) else: return file_url return self.value return ''
def get_rendered_value(self): if self.decompressed_value: if self.form_field.is_multipart: file_url = "%s%s" % (settings.MEDIA_URL, self.value) if self.form_field.type == FormField.IMAGE: return '<img src="%s" >' % (file_url) elif self.form_field.type == FormField.FILE: return '<a href="%s" target="_blank">%s</a>' % (file_url, self.value) elif self.form_field.type == FormField.SECURE_FILE: duration = 120 key_name = "%s/%s" % (settings.AWS_MEDIA_FOLDER, self.value) file_url = BaseSecureAtom.generate_link( settings.AWS_STORAGE_BUCKET_NAME_MEDIA_SECURE, key_name, duration) return '<a href="%s" target="_blank">%s</a><br /><br />This link will expire after %s seconds.</a>' % ( file_url, self.value, duration) else: return file_url return self.value return ''
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