Beispiel #1
0
    def save(self, *args, **kwargs):

        # This is not having the intended effect
        if 'file' not in self._meta.fields:
            self._meta.fields.append('file')

        if self.cleaned_data['unzip_archive']:
            new_attachments = []
            try:
                for zipinfo in self.zipfile.filelist:
                    f = tempfile.NamedTemporaryFile(mode='r+w')
                    f.write(self.zipfile.read(zipinfo.filename))
                    f = File(f, name=zipinfo.filename)
                    try:
                        attachment = models.Attachment()
                        attachment.article = self.article
                        attachment.original_filename = zipinfo.filename
                        attachment.save()
                        attachment.articles.add(self.article)
                        attachment_revision = models.AttachmentRevision()
                        attachment_revision.file = f
                        attachment_revision.description = self.cleaned_data[
                            'description']
                        attachment_revision.attachment = attachment
                        attachment_revision.set_from_request(self.request)
                        attachment_revision.save()
                        f.close()
                    except models.IllegalFileExtension:
                        raise
                    new_attachments.append(attachment_revision)
            except zipfile.BadZipfile:
                raise
            return new_attachments
        else:
            return super(AttachmentArchiveForm, self).save(*args, **kwargs)
Beispiel #2
0
 def _form_valid(form):
     try:
         attachment_revision = form.save(commit=False)
         attachment = models.Attachment()
         attachment.article = self.article
         attachment.original_filename = attachment_revision.get_filename()
         attachment.save()
         attachment.articles.add(self.article)
         attachment_revision.attachment = attachment
         attachment_revision.set_from_request(self.request)
         attachment_revision.save()
         messages.success(self.request, _(u'%s was successfully added.') % attachment_revision.get_filename())
     except models.IllegalFileExtension, e:
         transaction.rollback()
         messages.error(self.request, _(u'Your file could not be saved: %s') % e)
Beispiel #3
0
    def save(self, *args, **kwargs):
        attachment_revision = super(AttachmentForm, self).save(commit=False)

        # Added because of AttachmentArchiveForm removing file from fields
        # should be more elegant
        attachment_revision.file = self.cleaned_data['file']

        attachment = models.Attachment()
        attachment.article = self.article
        attachment.original_filename = attachment_revision.get_filename()
        attachment.save()
        attachment.articles.add(self.article)
        attachment_revision.attachment = attachment
        attachment_revision.set_from_request(self.request)
        attachment_revision.save()
        return attachment_revision
Beispiel #4
0
    def save(self, *args, **kwargs):
        commit = kwargs.get("commit", True)
        attachment_revision = super().save(commit=False)

        # Added because of AttachmentArchiveForm removing file from fields
        # should be more elegant
        attachment_revision.file = self.cleaned_data["file"]
        if not self.attachment:
            attachment = models.Attachment()
            attachment.article = self.article
            attachment.original_filename = attachment_revision.get_filename()
            if commit:
                attachment.save()
            attachment.articles.add(self.article)
        else:
            attachment = self.attachment
        attachment_revision.attachment = attachment
        attachment_revision.set_from_request(self.request)
        if commit:
            attachment_revision.save()
        return attachment_revision
Beispiel #5
0
    def form_valid(self, form):
        if (self.request.user.is_anonymous() and not settings.ANONYMOUS
                or not self.article.can_write(self.request.user)):
            return response_forbidden(self.request, self.article, self.urlpath)

        try:
            attachment_revision = form.save(commit=False)
            attachment = models.Attachment()
            attachment.article = self.article
            attachment.original_filename = attachment_revision.get_filename()
            attachment.save()
            attachment.articles.add(self.article)
            attachment_revision.attachment = attachment
            attachment_revision.set_from_request(self.request)
            attachment_revision.save()
            messages.success(
                self.request,
                _(u'%s was successfully added.') %
                attachment_revision.get_filename())
        except models.IllegalFileExtension, e:
            transaction.rollback()
            messages.error(self.request,
                           _(u'Your file could not be saved: %s') % e)