def attach_as_file(handle_id, name, content, user, overwrite=False): """ Attach a file to a handle_id. - handle_id the id of the node to attach a file to. - name the name of the file - content the content of the file (e.g. a string) - user the user doing the attach - overwrite should the file be overwritten if it exists. (Default: False) All files are stored in {root}/niweb/media/attachments, and the metadata is attached in the django db. """ nh = NodeHandle.objects.get(pk=handle_id) _file = SimpleUploadedFile(name, content.encode('utf-8'), content_type="text/plain") if overwrite: attachment = Attachment.objects.filter( object_id=handle_id, attachment_file__endswith=name).first() if attachment: attachment.attachment_file.delete() if not attachment: attachment = Attachment() attachment.content_type = ContentType.objects.get_for_model(nh) attachment.object_id = handle_id attachment.creator = user attachment.attachment_file = _file return attachment.save()
def test_evidence_attachments(self): task = Task.objects.create(name='Test task', creator=self.user) self.assertEquals(Task.objects.filter(name='Test task').count(), 1) evidence = Evidence.objects.create(task=task) self.assertEquals(Evidence.objects.filter(task=task).count(), 1) att = Attachment() att.creator = self.user file_mock = mock.MagicMock(spec=File, name='FileMock') file_mock.name = 'test1.jpg' storage_mock = mock.MagicMock(spec=Storage, name='StorageMock') storage_mock.url = mock.MagicMock(name='url') storage_mock.url.return_value = '/tmp/test1.jpg' ct = ContentType.objects.get(app_label=evidence._meta.app_label, model=evidence._meta.model_name) att.content_type = ct att.object_id = evidence.id att.attachment_file = file_mock with mock.patch('django.core.files.storage.default_storage._wrapped', storage_mock): att.save() self.assertEquals(Attachment.objects.count(), 1) self.assertEquals(att, evidence.attachments.first())
def resume(request): registration = get_object_or_none(ConferenceRegistration, user=request.user, submitted=True, cancelled=False) if not registration: request.user.message_set.create("You aren't registered for conference...") return HttpResponseRedirect(reverse('confreg')) if request.method == 'POST': form = ConferenceResumeForm(request.POST, request.FILES) if form.is_valid(): resume = Attachment() resume.creator = request.user resume.content_type = ContentType.objects.get_for_model(registration) resume.object_id = registration.id resume.attachment_file = form.cleaned_data['resume'] resume.save() request.user.message_set.create(message="Thank you!") return HttpResponseRedirect(reverse('confreg')) else: form = ConferenceResumeForm() return render_to_response('conference/resume.html', {'registration': registration, 'form': form, 'user': request.user, }, context_instance=RequestContext(request) )
def registration_preview(request): username = request.user.username f = ConferenceRegistrationForm(request.POST, request.FILES) f.user = request.user if f.is_valid(): if f.cleaned_data.get('resume', None): resume = Attachment() resume.creator = request.user resume.content_type = ContentType.objects.get_for_model(request.user) resume.object_id = request.user.id resume.attachment_file = f.cleaned_data['resume'] resume.save() return ConferenceRegistrationFormPreview(ConferenceRegistrationForm)(request, username=username)
def registration_preview(request): #def pay_membership_preview(request, username): username = request.user.username f = ConferenceRegistrationForm(request.POST, request.FILES) f.user = request.user if f.is_valid(): if f.cleaned_data.get('resume', None): resume = Attachment() resume.creator = request.user resume.content_type = ContentType.objects.get_for_model( request.user) resume.object_id = request.user.id resume.attachment_file = f.cleaned_data['resume'] resume.save() return ConferenceRegistrationFormPreview(ConferenceRegistrationForm)( request, username=username)