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))
def save_settings_form(self): """ Save the updated settings in the database Setting's save will trigger a cache update. If the field type is 'file' a file entry will be created. """ for setting in self.settings: old_value = setting.get_value() try: field_value = self.cleaned_data[setting.name] if setting.input_type == "file": if field_value: # save a file object and set the value at that file object's id. from tendenci.core.files.models import File as TendenciFile uploaded_file = TendenciFile() uploaded_file.owner = self.user uploaded_file.owner_username = self.user.username uploaded_file.creator = self.user uploaded_file.creator_username = self.user.username uploaded_file.content_type = ContentType.objects.get( app_label="site_settings", model="setting") uploaded_file.file.save(field_value.name, File(field_value)) uploaded_file.save() field_value = uploaded_file.pk else: #retain the old file if no file is set field_value = setting.get_value() # update value if changed and save if old_value != field_value: setting.set_value(field_value) setting.save() # save updates the cash automatically # update the django site value in the contrib backend if setting.name == "siteurl" and setting.scope == "site": if field_value: django_site = Site.objects.get(pk=1) django_site.domain = field_value.replace("http://", "") django_site.name = field_value.replace("http://", "") django_site.save() # update checklist for theme logo if setting.name == 'logo' and setting.scope_category == 'theme': checklist_update('upload-logo') # update checklist for contact form if setting.name == 'contact_form' and setting.scope == "site": checklist_update('update-contact') except KeyError: pass
def save_settings_form(self): """ Save the updated settings in the database Setting's save will trigger a cache update. If the field type is 'file' a file entry will be created. """ for setting in self.settings: old_value = setting.get_value() try: field_value = self.cleaned_data[setting.name] if setting.input_type == "file": if field_value: # save a file object and set the value at that file object's id. from tendenci.core.files.models import File as TendenciFile uploaded_file = TendenciFile() uploaded_file.owner = self.user uploaded_file.owner_username = self.user.username uploaded_file.creator = self.user uploaded_file.creator_username = self.user.username uploaded_file.content_type = ContentType.objects.get(app_label="site_settings", model="setting") uploaded_file.file.save(field_value.name, File(field_value)) uploaded_file.save() field_value = uploaded_file.pk else: # retain the old file if no file is set field_value = setting.get_value() # update value if changed and save if old_value != field_value: setting.set_value(field_value) setting.save() # save updates the cash automatically # update the django site value in the contrib backend if setting.name == "siteurl" and setting.scope == "site": if field_value: django_site = Site.objects.get(pk=1) django_site.domain = field_value.replace("http://", "") django_site.name = field_value.replace("http://", "") django_site.save() # update checklist for theme logo if setting.name == "logo" and setting.scope_category == "theme": checklist_update("upload-logo") # update checklist for contact form if setting.name == "contact_form" and setting.scope == "site": checklist_update("update-contact") except KeyError: pass
def save_file_from_url(self, url, instance): file_name = os.path.basename(urllib.unquote(url).replace(' ', '_')) tfile = TFile() tfile.name = file_name tfile.content_type = ContentType.objects.get_for_model(instance) tfile.object_id = instance.id if hasattr(instance, 'creator'): tfile.creator = instance.creator if hasattr(instance, 'creator_username'): tfile.creator_username = instance.creator_username if hasattr(instance, 'owner'): tfile.owner = instance.owner if hasattr(instance, 'owner_username'): tfile.owner_username = instance.owner_username file_path = file_directory(tfile, tfile.name) tfile.file.save(file_path, ContentFile(urllib2.urlopen(url).read())) tfile.save() return tfile
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))