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 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 ''
Ejemplo n.º 3
0
    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 ''
Ejemplo n.º 4
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