def save(self, *args, **kwargs): data = self.cleaned_data counter = 0 files = data.get('files') tags = data.get('tags') group = data.get('group') category_from_form = data.get('category') sub_category_from_form = data.get('sub_category') is_public = data.get('allow_anonymous_view', False) for new_file in files: file = File(file=new_file, tags=tags, group=group, allow_anonymous_view=is_public) file.save() # update all permissions and save the model file = update_perms_and_save(self.request, self, file) #setup categories category = Category.objects.get_for_object(file, 'category') sub_category = Category.objects.get_for_object( file, 'sub_category') ## update the category of the file category_removed = False category = category_from_form if category != '0': Category.objects.update(file, category, 'category') else: # remove category_removed = True Category.objects.remove(file, 'category') Category.objects.remove(file, 'sub_category') if not category_removed: # update the sub category of the file sub_category = sub_category_from_form if sub_category != '0': Category.objects.update(file, sub_category, 'sub_category') else: # remove Category.objects.remove(file, 'sub_category') #Save relationships file.save() counter += 1 return counter
def get_media(item, uri_parser, user): """ Find any URL contained in an "attachment." If that File has already been created, skip it. If not, go to the URL, and save the media there as a File. Loop through Articles and Pages and replace links. """ media_url_in_attachment = item.find('wp:attachment_url').string media_url = uri_parser.parse(media_url_in_attachment).file media_url = os.path.join(settings.MEDIA_ROOT, media_url) post_id = item.find('wp:post_parent').string post_id = int(post_id) alreadyThere = False for url in File.objects.all(): if media_url == url.file: alreadyThere = True # This assignment will make sure the file gets replaced in the HTML even if # it's an old file that already exists in the database. new_media = url break if not alreadyThere: source = urllib2.urlopen(media_url_in_attachment).read() with open(media_url, 'wb') as f: f.write(source) file_path = f.name new_media = File(guid=unicode(uuid.uuid1()), file=file_path, creator=user, owner=user) new_media.save() temporary = AssociatedFile(post_id=post_id, file=new_media) temporary.save()
def save(self, *args, **kwargs): self.guid = self.guid or unicode(uuid.uuid1()) # update latitude and longitude if not all((self.latitude, self.longitude)): self.latitude, self.longitude = get_coordinates(self.get_address()) photo_upload = kwargs.pop('photo', None) super(Location, self).save(*args, **kwargs) if photo_upload and self.pk: image = File(content_type=ContentType.objects.get_for_model(self.__class__), object_id=self.pk, creator=self.creator, creator_username=self.creator_username, owner=self.owner, owner_username=self.owner_username) photo_upload.file.seek(0) image.file.save(photo_upload.name, photo_upload) image.save() self.logo = image self.save()
def bulk_add(request, template_name="files/bulk-add.html"): if not has_perm(request.user, 'files.add_file'): raise Http403 FileFormSet = modelformset_factory(File, form=FileForm, can_delete=True, fields=( 'name', 'allow_anonymous_view', 'user_perms', 'member_perms', 'group_perms', 'status', ), extra=0) if request.method == "POST": # Setup formset html for json response file_list = [] file_formset = FileFormSet(request.POST) if file_formset.is_valid(): file_formset.save() else: # Handle formset errors return render_to_response(template_name, { 'file_formset': file_formset, }, context_instance=RequestContext(request)) formset_edit = True # Handle existing files. Instance returned by file_formset.save() is not enough for num in xrange(file_formset.total_form_count()): key = 'form-' + str(num) + '-id' if request.POST.get(key): file_list.append(request.POST.get(key)) # Handle new file uploads for file in request.FILES.getlist('files'): newFile = File(file=file) # set up the user information newFile.creator = request.user newFile.creator_username = request.user.username newFile.owner = request.user newFile.owner_username = request.user.username newFile.save() file_list.append(newFile.id) formset_edit = False # Redirect if form_set is edited i.e. not a file select or drag event if formset_edit: return HttpResponseRedirect(reverse('file.search')) # Handle json response file_qs = File.objects.filter(id__in=file_list) file_formset = FileFormSet(queryset=file_qs) html = render_to_response( 'files/file-formset.html', { 'file_formset': file_formset, }, context_instance=RequestContext(request)).content data = {'form_set': html} response = JSONResponse(data, {}, "application/json") response['Content-Disposition'] = 'inline; filename=files.json' return response else: file_formset = FileFormSet({ 'form-TOTAL_FORMS': u'0', 'form-INITIAL_FORMS': u'0', 'form-MAX_NUM_FORMS': u'', }) return render_to_response(template_name, { 'file_formset': file_formset, }, context_instance=RequestContext(request))