def save_model(self, request, object, form, change): """ update the permissions backend """ print('enter save_model') instance = form.save(commit=False) update_perms_and_save(request, form, instance) # Returns perms return instance
def photoset_add(request, form_class=PhotoSetAddForm, template_name="photos/photo-set/add.html"): """ Add a photo set """ # if no permission; permission exception if not has_perm(request.user,'photos.add_photoset'): raise Http403 if request.method == "POST": if request.POST["action"] == "add": form = form_class(request.POST, user=request.user) if form.is_valid(): photo_set = form.save(commit=False) photo_set.author = request.user # update all permissions and save the model photo_set = update_perms_and_save(request, form, photo_set) checklist_update('add-album') messages.add_message(request, messages.SUCCESS, _('Successfully added photo set!')) return HttpResponseRedirect(reverse('photos_batch_add', kwargs={'photoset_id':photo_set.id})) else: form = form_class(user=request.user) return render_to_response(template_name, { "photoset_form": form, }, context_instance=RequestContext(request))
def mark_as_paid(request, id, template_name="invoices/mark-as-paid.html"): """ Makes a payment-record with a specified date/time payment method and payment amount. """ invoice = get_object_or_404(Invoice, pk=id) if not has_perm(request.user, "payments.change_payment"): raise Http403 if request.method == "POST": form = MarkAsPaidForm(request.POST) if form.is_valid(): # make payment record payment = form.save(user=request.user, invoice=invoice, commit=False) payment = update_perms_and_save(request, form, payment) # update invoice; make accounting entries action_taken = invoice.make_payment(payment.creator, payment.amount) if action_taken: EventLog.objects.log(instance=invoice) messages.add_message(request, messages.SUCCESS, _("Payment successfully made")) return redirect(invoice) else: form = MarkAsPaidForm(initial={"amount": invoice.balance, "submit_dt": datetime.now()}) return render_to_response( template_name, {"invoice": invoice, "form": form}, context_instance=RequestContext(request) )
def add(request, form_class=FormForm, template_name="forms/add.html"): if not has_perm(request.user,'forms.add_form'): raise Http403 PricingFormSet = inlineformset_factory(Form, Pricing, form=PricingForm, extra=2, can_delete=False) formset = PricingFormSet() if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): form_instance = form.save(commit=False) # save form and associated pricings form_instance = update_perms_and_save(request, form, form_instance) formset = PricingFormSet(request.POST, instance=form_instance) if formset.is_valid(): # update_perms_and_save does not appear to consider ManyToManyFields for method in form.cleaned_data['payment_methods']: form_instance.payment_methods.add(method) formset.save() messages.add_message(request, messages.SUCCESS, _('Successfully added %(f)s' % {'f':form_instance})) return HttpResponseRedirect(reverse('form_field_update', args=[form_instance.pk])) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={ 'form':form, 'formset': formset, })
def edit(request, id, form_class=DirectoryForm, template_name="directories/edit.html"): directory = get_object_or_404(Directory, pk=id) if not has_perm(request.user,'directories.change_directory', directory): raise Http403 form = form_class(request.POST or None, request.FILES or None, instance=directory, user=request.user) del form.fields['payment_method'] if not request.user.profile.is_superuser: del form.fields['pricing'] del form.fields['list_type'] if request.method == "POST": if form.is_valid(): directory = form.save(commit=False) if directory.logo: try: directory.logo.file.seek(0) except IOError: directory.logo = None # update all permissions and save the model directory = update_perms_and_save(request, form, directory) msg_string = 'Successfully updated %s' % directory messages.add_message(request, messages.SUCCESS, _(msg_string)) return HttpResponseRedirect(reverse('directory', args=[directory.slug])) return render_to_response(template_name, {'directory': directory, 'form':form}, context_instance=RequestContext(request))
def edit(request, id, form_class=StoryForm, template_name="stories/edit.html"): story = get_object_or_404(Story, pk=id) if has_perm(request.user,'stories.change_story', story): if request.method == "POST": form = form_class(request.POST, request.FILES, instance=story, user=request.user) if form.is_valid(): story = form.save(commit=False) # save photo photo = form.cleaned_data['photo_upload'] if photo: story.save(photo=photo) story = update_perms_and_save(request, form, story) messages.add_message(request, messages.SUCCESS, _('Successfully updated %(str)s' % {'str': unicode(story)})) redirect_to = request.REQUEST.get('next', '') if redirect_to: return HttpResponseRedirect(redirect_to) else: return redirect('story', id=story.pk) else: form = form_class(instance=story, user=request.user) else: raise Http403 return render_to_response(template_name, {'story': story, 'form':form }, context_instance=RequestContext(request))
def add(request, form_class=HelpFileForm, template_name="help_files/add.html"): if has_perm(request.user,'help_files.add_helpfile'): if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): help_file = form.save(commit=False) # add all permissions and save the model help_file = update_perms_and_save(request, form, help_file) form.save_m2m() msg_string = 'Successfully added %s' % help_file messages.add_message(request, messages.SUCCESS, _(msg_string)) # # send notification to administrator(s) and module recipient(s) # recipients = get_notice_recipients('module', 'help_files', 'helpfilerecipients') # # if recipients and notification: # notification.send_emails(recipients,'help_file_added', { # 'object': help_file, # 'request': request, # }) return HttpResponseRedirect(reverse('help_file.details', args=[help_file.slug])) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={'form':form}) else: raise Http403
def save_model(self, request, object, form, change): instance = form.save(commit=False) instance = update_perms_and_save(request, form, instance) if instance.meta: meta = instance.meta else: meta = MetaTags() meta.title = form.cleaned_data["meta_title"] meta.description = form.cleaned_data["meta_description"] meta.keywords = form.cleaned_data["meta_keywords"] meta.canonical_url = form.cleaned_data["meta_canonical_url"] meta.save() instance.meta = meta instance.save() # notifications if not request.user.profile.is_superuser: # send notification to administrators recipients = get_notice_recipients("module", "pages", "pagerecipients") notice_type = "page_added" if change: notice_type = "page_edited" if recipients: if notification: extra_context = {"object": instance, "request": request} notification.send_emails(recipients, notice_type, extra_context) return instance
def add(request, form_class=LocationForm, template_name="locations/add.html"): if has_perm(request.user,'locations.add_location'): if request.method == "POST": form = form_class(request.POST, request.FILES, user=request.user) if form.is_valid(): location = form.save(commit=False) # update all permissions and save the model location = update_perms_and_save(request, form, location) if 'photo_upload' in form.cleaned_data: photo = form.cleaned_data['photo_upload'] if photo: location.save(photo=photo) msg_string = 'Successfully added %s' % location messages.add_message(request, messages.SUCCESS, _(msg_string)) return HttpResponseRedirect(reverse('location', args=[location.slug])) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={'form':form}) else: raise Http403
def edit(request, id=None, form_class=HelpFileForm, template_name="help_files/edit.html"): help_file = get_object_or_404(HelpFile, pk=id) if has_perm(request.user,'help_files.change_helpfile', help_file): if request.method == "POST": form = form_class(request.POST, instance=help_file, user=request.user) if form.is_valid(): help_file = form.save(commit=False) # add all permissions and save the model help_file = update_perms_and_save(request, form, help_file) form.save_m2m() msg_string = 'Successfully edited %s' % help_file messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrator(s) and module recipient(s) recipients = get_notice_recipients('module', 'help_files', 'helpfilerecipients') # if recipients and notification: # notification.send_emails(recipients,'help_file_added', { # 'object': help_file, # 'request': request, # }) return HttpResponseRedirect(reverse('help_file.details', args=[help_file.slug])) else: form = form_class(instance=help_file, user=request.user) return render_to_response(template_name, {'help_file': help_file, 'form':form}, context_instance=RequestContext(request)) else: raise Http403
def edit(request, id, form_class=LocationForm, template_name="locations/edit.html"): location = get_object_or_404(Location, pk=id) if has_perm(request.user,'locations.change_location',location): if request.method == "POST": form = form_class(request.POST, request.FILES, instance=location, user=request.user) if form.is_valid(): location = form.save(commit=False) # update all permissions and save the model location = update_perms_and_save(request, form, location) if 'photo_upload' in form.cleaned_data: photo = form.cleaned_data['photo_upload'] if photo: location.save(photo=photo) msg_string = 'Successfully updated %s' % location messages.add_message(request, messages.SUCCESS, _(msg_string)) return HttpResponseRedirect(reverse('location', args=[location.slug])) else: form = form_class(instance=location, user=request.user) return render_to_response(template_name, {'location': location, 'form':form}, context_instance=RequestContext(request)) else: raise Http403
def add(request, form_class=ArticleForm, category_form_class=CategoryForm, template_name="articles/add.html"): content_type = get_object_or_404(ContentType, app_label='articles', model='article') if has_perm(request.user, 'articles.add_article'): if request.method == "POST": form = form_class(request.POST, request.FILES or None, user=request.user) categoryform = category_form_class(content_type, request.POST,) if form.is_valid() and categoryform.is_valid(): article = form.save() article.update_category_subcategory( categoryform.cleaned_data['category'], categoryform.cleaned_data['sub_category'] ) # add all permissions and save the model update_perms_and_save(request, form, article) msg_string = 'Successfully added %s' % str(article) messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrator(s) and module recipient(s) recipients = get_notice_recipients('module', 'articles', 'articlerecipients') if recipients and notification: notification.send_emails(recipients, 'article_added', { 'object': article, 'request': request, }) return HttpResponseRedirect(reverse('article', args=[article.slug])) else: form = form_class(user=request.user) initial_category_form_data = { 'app_label': 'articles', 'model': 'article', 'pk': 0, } categoryform = category_form_class(content_type, initial=initial_category_form_data,) return render_to_resp(request=request, template_name=template_name, context={'form': form, 'categoryform': categoryform,}) else: raise Http403
def edit(request, id, form_class=ArticleForm, category_form_class=CategoryForm, template_name="articles/edit.html"): article = get_object_or_404(Article, pk=id) content_type = get_object_or_404(ContentType, app_label='articles', model='article') if has_perm(request.user, 'articles.change_article', article): if request.method == "POST": form = form_class(request.POST, request.FILES or None, instance=article, user=request.user) categoryform = category_form_class(content_type, request.POST,) if form.is_valid() and categoryform.is_valid(): article = form.save() article.update_category_subcategory( categoryform.cleaned_data['category'], categoryform.cleaned_data['sub_category'] ) # update all permissions and save the model update_perms_and_save(request, form, article) msg_string = 'Successfully updated %s' % str(article) messages.add_message(request, messages.SUCCESS, _(msg_string)) return HttpResponseRedirect(reverse('article', args=[article.slug])) else: form = form_class(instance=article, user=request.user) category = Category.objects.get_for_object(article, 'category') sub_category = Category.objects.get_for_object(article, 'sub_category') initial_category_form_data = { 'app_label': 'articles', 'model': 'article', 'pk': article.pk, 'category': getattr(category, 'name', '0'), 'sub_category': getattr(sub_category, 'name', '0') } categoryform = category_form_class(content_type, initial=initial_category_form_data,) return render_to_resp(request=request, template_name=template_name, context={'article': article, 'form': form, 'categoryform': categoryform,}) else: raise Http403
def add(request, form_class=FileForm,template_name="files/add.html"): # check permission if not has_perm(request.user, 'files.add_file'): raise Http403 if request.method == "POST": form = form_class(request.POST, request.FILES, user=request.user) if form.is_valid(): file = form.save(commit=False) # set up the user information file.creator = request.user file.creator_username = request.user.username file.owner = request.user file.owner_username = request.user.username file.save() # update all permissions and save the model file = update_perms_and_save(request, form, 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 = file.file_cat.name if file.file_cat else u'' if category: 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 article sub_category = file.file_sub_cat.name if file.file_sub_cat else u'' if sub_category: Category.objects.update(file, sub_category, 'sub_category') else: # remove Category.objects.remove(file, 'sub_category') #Save relationships file.save() # assign creator permissions ObjectPermission.objects.assign(file.creator, file) return HttpResponseRedirect(reverse('file.search')) else: form = form_class(user=request.user) if 'group' in form.fields: form.fields['group'].initial = Group.objects.get_initial_group_id() return render_to_response( template_name, { 'form': form, }, context_instance=RequestContext(request))
def save(self, *args, **kwargs): request = kwargs.get('request') if request: del kwargs['request'] report = super(ReportForm, self).save(*args, **kwargs) if request: update_perms_and_save(request, self, report) config_dict = {} if self.cleaned_data['type'] == "invoices": for k, v in self.cleaned_data.items(): if "invoice" in k: config_dict.update({k: v}) config_json = json.dumps(config_dict, cls=DjangoJSONEncoder) report.config = config_json report.allow_anonymous_view = False report.save() return report
def add(request, form_class=ResumeForm, template_name="resumes/add.html"): can_add_active = has_perm(request.user, 'resumes.add_resume') if not any([request.user.profile.is_superuser, can_add_active, get_setting('module', 'resumes', 'usercanadd'), (request.user.profile.is_member and get_setting('module', 'resumes', 'userresumesrequiresmembership')) ]): raise Http403 if request.method == "POST": form = form_class(request.POST or None, user=request.user) if form.is_valid(): resume = form.save(commit=False) # set it to pending if the user does not have add permission if not can_add_active: resume.status_detail = 'pending' # set up the expiration time based on requested duration now = datetime.now() resume.expiration_dt = now + timedelta(days=resume.requested_duration) resume = update_perms_and_save(request, form, resume) # we need to save instance first since we need the id for the file path if request.FILES: resume.resume_file = request.FILES['resume_file'] resume.resume_file.file.seek(0) resume.save() EventLog.objects.log(instance=resume) if request.user.is_authenticated(): messages.add_message(request, messages.SUCCESS, _('Successfully added %(r)s' % {'r':resume})) # send notification to administrators recipients = get_notice_recipients('module', 'resumes', 'resumerecipients') if recipients: if notification: extra_context = { 'object': resume, 'request': request, } notification.send_emails(recipients,'resume_added', extra_context) if not request.user.is_authenticated(): return HttpResponseRedirect(reverse('resume.thank_you')) else: return HttpResponseRedirect(reverse('resume', args=[resume.slug])) else: form = form_class(user=request.user) return render_to_response(template_name, {'form':form}, context_instance=RequestContext(request))
def save(self, *args, **kwargs): data = self.cleaned_data counter = 0 files = data.get('files') tags = data.get('tags') group = data.get('group') file_cat = data.get('file_cat', None) file_sub_cat = data.get('file_sub_cat', None) 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_cat=file_cat, file_sub_cat=file_sub_cat) 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 = file.file_cat.name if file.file_cat else u'' if category: 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 = file.file_sub_cat.name if file.file_sub_cat else u'' if sub_category: 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 save_model(self, request, object, form, change): instance = form.save(request=request, commit=False) instance = update_perms_and_save(request, form, instance, log=False) log_defaults = { 'instance': object, 'action': "edit" } if not change: log_defaults['action'] = "add" EventLog.objects.log(**log_defaults) return instance
def edit(request, id, form_class=FileForm, template_name="files/edit.html"): file = get_object_or_404(File, pk=id) # check permission if not has_perm(request.user, 'files.change_file', file): raise Http403 if request.method == "POST": form = form_class(request.POST, request.FILES, instance=file, user=request.user) if form.is_valid(): file = form.save(commit=False) # update all permissions and save the model file = update_perms_and_save(request, form, 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 = file.file_cat.name if file.file_cat else None if category: 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 article sub_category = file.file_sub_cat.name if file.file_sub_cat else None if sub_category: Category.objects.update(file, sub_category, 'sub_category') else: # remove Category.objects.remove(file, 'sub_category') file.save() return HttpResponseRedirect(reverse('file.search')) else: form = form_class(instance=file, user=request.user) return render_to_response( template_name, { 'file': file, 'form': form, }, context_instance=RequestContext(request))
def save_model(self, request, object, form, change): """ Update the permissions backend and log the event """ instance = form.save(commit=False) instance = update_perms_and_save(request, form, instance) log_defaults = { 'instance': object, 'action': "edit" } if not change: log_defaults['action'] = "add" EventLog.objects.log(**log_defaults) return instance
def edit(request, id, form_class=JobForm, template_name="jobs/edit.html", object_type=Job, success_redirect='job', job_change_perm='jobs.change_job'): job = get_object_or_404(object_type, pk=id) if not has_perm(request.user, job_change_perm, job): raise Http403 form = form_class(request.POST or None, instance=job, user=request.user) # delete admin only fields for non-admin on edit - GJQ 8/25/2010 if not request.user.profile.is_superuser: del form.fields['pricing'] del form.fields['list_type'] if 'activation_dt' in form.fields: del form.fields['activation_dt'] if 'post_dt' in form.fields: del form.fields['post_dt'] if 'expiration_dt' in form.fields: del form.fields['expiration_dt'] if 'entity' in form.fields: del form.fields['entity'] del form.fields['payment_method'] if request.method == "POST": if form.is_valid(): job = form.save(commit=False) job = update_perms_and_save(request, form, job) msg_string = u'Successfully updated {}'.format(str(job)) messages.add_message(request, messages.SUCCESS, _(msg_string)) return HttpResponseRedirect( reverse(success_redirect, args=[job.slug])) return render_to_resp(request=request, template_name=template_name, context={ 'job': job, 'form': form, })
def save_model(self, request, object, form, change): testimonial = form.save(commit=False) # save photo if 'photo_upload' in form.cleaned_data: photo = form.cleaned_data['photo_upload'] if photo: testimonial.save(photo=photo) testimonial = update_perms_and_save(request, form, testimonial) log_defaults = {'instance': object, 'action': "edit"} if not change: log_defaults['action'] = "add" EventLog.objects.log(**log_defaults) return object
def edit(request, id, form_class=DirectoryForm, template_name="directories/edit.html"): directory = get_object_or_404(Directory, pk=id) if not has_perm(request.user, 'directories.change_directory', directory): raise Http403 if request.user.is_superuser: if not directory.activation_dt: # auto-populate activation_dt directory.activation_dt = datetime.now() form = form_class(request.POST or None, request.FILES or None, instance=directory, user=request.user) del form.fields['payment_method'] if not request.user.profile.is_superuser: del form.fields['pricing'] del form.fields['list_type'] if request.method == "POST": if form.is_valid(): directory = form.save(commit=False) if directory.logo: try: directory.logo.file.seek(0) except IOError: directory.logo = None # update all permissions and save the model directory = update_perms_and_save(request, form, directory) msg_string = 'Successfully updated %s' % directory messages.add_message(request, messages.SUCCESS, _(msg_string)) return HttpResponseRedirect( reverse('directory', args=[directory.slug])) return render_to_response(template_name, { 'directory': directory, 'form': form }, context_instance=RequestContext(request))
def edit(request, id, form_class=NewsForm, template_name="news/edit.html"): news = get_object_or_404(News, pk=id) # check permission if not has_perm(request.user, 'news.change_news', news): raise Http403 form = form_class(instance=news, user=request.user) if request.method == "POST": form = form_class(request.POST, request.FILES, instance=news, user=request.user) if form.is_valid(): news = form.save(commit=False) # update all permissions and save the model news = update_perms_and_save(request, form, news) form.save_m2m() # save photo photo = form.cleaned_data['photo_upload'] if photo: news.save(photo=photo) assign_files_perms(news, files=[news.thumbnail]) # update thumbnail status when news status is updated # this will fix the error wherein a thumbnail image # can be viewed only when logged in. thumbnail = news.thumbnail if thumbnail: thumbnail.status_detail = news.status_detail thumbnail.save() msg_string = 'Successfully updated %s' % str(news) messages.add_message(request, messages.SUCCESS, _(msg_string)) return HttpResponseRedirect( reverse('news.detail', args=[news.slug])) return render_to_resp(request=request, template_name=template_name, context={ 'news': news, 'form': form })
def save_model(self, request, object, form, change): """ Update the permissions backend and log the event """ instance = form.save(commit=False) instance = update_perms_and_save(request, form, instance, log=False) log_defaults = { 'instance': object, 'action': "edit" } if not change: log_defaults['action'] = "add" # Handle a special case for bulk reordering via the list view. if form.changed_data != ['ordering']: EventLog.objects.log(**log_defaults) return instance
def add(request, form_class=DiscountForm, template_name="discounts/add.html"): if not has_perm(request.user, 'discounts.add_discount'): raise Http403 if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): discount = form.save(commit=False) discount = update_perms_and_save(request, form, discount) form.save_m2m() messages.add_message(request, messages.SUCCESS, _('Successfully added %(d)s' % {'d': discount})) return redirect('discount.detail', id=discount.id) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={'form':form} )
def mark_as_paid(request, id, template_name='invoices/mark-as-paid.html'): """ Makes a payment-record with a specified date/time payment method and payment amount. """ invoice = get_object_or_404(Invoice, pk=id) if not has_perm(request.user, 'payments.change_payment'): raise Http403 if request.method == 'POST': form = MarkAsPaidForm(request.POST) if form.is_valid(): # make payment record payment = form.save( user=request.user, invoice=invoice, commit=False) payment = update_perms_and_save(request, form, payment) # update invoice; make accounting entries action_taken = invoice.make_payment(payment.creator, payment.amount) if action_taken: EventLog.objects.log(instance=invoice) messages.add_message( request, messages.SUCCESS, _('Payment successfully made')) return redirect(invoice) else: form = MarkAsPaidForm(initial={ 'amount': invoice.balance, 'submit_dt': datetime.now()}) return render_to_resp( request=request, template_name=template_name, context={ 'invoice': invoice, 'form': form, })
def add(request, form_class=NewsForm, template_name="news/add.html"): # check permission if not has_perm(request.user, 'news.add_news'): raise Http403 if request.method == "POST": form = form_class(request.POST, request.FILES, user=request.user) if form.is_valid(): news = form.save(commit=False) # update all permissions and save the model news = update_perms_and_save(request, form, news) form.save_m2m() # save photo photo = form.cleaned_data['photo_upload'] if photo: news.save(photo=photo) assign_files_perms(news, files=[news.thumbnail]) msg_string = 'Successfully added %s' % str(news) messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrators recipients = get_notice_recipients('module', 'news', 'newsrecipients') if recipients: if notification: extra_context = { 'object': news, 'request': request, } notification.send_emails(recipients, 'news_added', extra_context) return HttpResponseRedirect( reverse('news.detail', args=[news.slug])) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={'form': form})
def save_model(self, request, object, form, change): story = form.save(commit=False) # save photo if 'photo_upload' in form.cleaned_data: photo = form.cleaned_data['photo_upload'] if photo: story.save(photo=photo) story = update_perms_and_save(request, form, story) log_defaults = {'instance': object, 'action': "edit"} if not change: log_defaults['action'] = "add" # Handle a special case for bulk reordering via the list view. if form.changed_data != ['position']: EventLog.objects.log(**log_defaults) return object
def save_model(self, request, object, form, change): instance = form.save(commit=False) # update all permissions and save the model instance = update_perms_and_save(request, form, instance) # notifications #if not request.user.profile.is_superuser: # # send notification to administrators # recipients = get_notice_recipients('site', 'global', 'allnoticerecipients') # if recipients: # if notification: # extra_context = { # 'object': instance, # 'request': request, # } # notification.send_emails(recipients, 'photo_added', extra_context) return instance
def save_model(self, request, object, form, change): instance = form.save(commit=False) # update all permissions and save the model instance = update_perms_and_save(request, form, instance) # notifications if not request.user.profile.is_superuser: # send notification to administrators recipients = get_notice_recipients('site', 'global', 'allnoticerecipients') if recipients: if notification: extra_context = { 'object': instance, 'request': request, } notification.send_emails(recipients, notice_type, extra_context) return instance
def edit(request, id, form_class=EntityForm, template_name="entities/edit.html"): entity = get_object_or_404(Entity, pk=id) if has_perm(request.user,'entities.change_entity',entity): if request.method == "POST": form = form_class(request.POST, instance=entity, user=request.user) if form.is_valid(): entity = form.save(commit=False) # update all permissions and save the model entity = update_perms_and_save(request, form, entity) return HttpResponseRedirect(reverse('entity', args=[entity.pk])) else: form = form_class(instance=entity, user=request.user) return render_to_resp(request=request, template_name=template_name, context={'entity': entity, 'form':form}) else: raise Http403
def save_model(self, request, object, form, change): testimonial = form.save(commit=False) # save photo if 'photo_upload' in form.cleaned_data: photo = form.cleaned_data['photo_upload'] if photo: testimonial.save(photo=photo) testimonial = update_perms_and_save(request, form, testimonial) log_defaults = { 'instance': object, 'action': "edit" } if not change: log_defaults['action'] = "add" EventLog.objects.log(**log_defaults) return object
def add(request, form_class=EntityForm, template_name="entities/add.html"): if has_perm(request.user,'entities.add_entity'): if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): entity = form.save(commit=False) # update all permissions and save the model entity = update_perms_and_save(request, form, entity) messages.add_message(request, messages.SUCCESS, _('Successfully added %(e)s' % { 'e': entity })) return HttpResponseRedirect(reverse('entity', args=[entity.pk])) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={'form':form}) else: raise Http403
def add(request, form_class=DiscountForm, template_name="discounts/add.html"): if not has_perm(request.user, 'discounts.add_discount'): raise Http403 if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): discount = form.save(commit=False) discount = update_perms_and_save(request, form, discount) form.save_m2m() messages.add_message( request, messages.SUCCESS, _('Successfully added %(d)s' % {'d': discount})) return redirect('discount.detail', id=discount.id) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={'form': form})
def edit(request, id, form_class=FormForm, template_name="forms/edit.html"): form_instance = get_object_or_404(Form, pk=id) if not has_perm(request.user, 'forms.change_form', form_instance): raise Http403 PricingFormSet = inlineformset_factory(Form, Pricing, form=PricingForm, extra=2) # RecurringPaymentFormSet = inlineformset_factory(Form, RecurringPayment, form=RecurringPaymentForm, extra=2) formset = PricingFormSet(request.POST or None, instance=form_instance) if request.method == "POST": form = form_class(request.POST, instance=form_instance, user=request.user) if form.is_valid() and formset.is_valid(): form_instance = form.save(commit=False) form_instance = update_perms_and_save(request, form, form_instance) form.save_m2m() # save payment methods formset.save() # save price options # remove all pricings if no custom_payment form if not form.cleaned_data['custom_payment']: form_instance.pricing_set.all().delete() messages.add_message( request, messages.SUCCESS, _('Successfully edited %(f)s' % {'f': form_instance})) return HttpResponseRedirect( reverse('form_field_update', args=[form_instance.pk])) else: form = form_class(instance=form_instance, user=request.user) return render_to_resp(request=request, template_name=template_name, context={ 'form': form, 'formset': formset, 'form_instance': form_instance, })
def edit(request, id=None, form_class=HelpFileForm, template_name="help_files/edit.html"): help_file = get_object_or_404(HelpFile, pk=id) if has_perm(request.user, 'help_files.change_helpfile', help_file): if request.method == "POST": form = form_class(request.POST, instance=help_file, user=request.user) if form.is_valid(): help_file = form.save(commit=False) # add all permissions and save the model help_file = update_perms_and_save(request, form, help_file) form.save_m2m() msg_string = 'Successfully edited %s' % help_file messages.add_message(request, messages.SUCCESS, _(msg_string)) # # send notification to administrator(s) and module recipient(s) # recipients = get_notice_recipients('module', 'help_files', 'helpfilerecipients') # # if recipients and notification: # notification.send_emails(recipients,'help_file_added', { # 'object': help_file, # 'request': request, # }) return HttpResponseRedirect( reverse('help_file.details', args=[help_file.slug])) else: form = form_class(instance=help_file, user=request.user) return render_to_resp(request=request, template_name=template_name, context={ 'help_file': help_file, 'form': form }) else: raise Http403
def edit(request, id, set_id=0, form_class=PhotoEditForm, template_name="photos/edit.html"): """ edit photo view """ # get photo photo = get_object_or_404(Image, id=id) set_id = int(set_id) # permissions if not has_perm(request.user,'photos.change_image',photo): raise Http403 # get available photo sets photo_sets = PhotoSet.objects.all() if request.method == "POST": if request.POST["action"] == "update": form = form_class(request.POST, instance=photo, user=request.user) if form.is_valid(): photo = form.save(commit=False) # update all permissions and save the model photo = update_perms_and_save(request, form, photo) messages.add_message(request, messages.SUCCESS, _("Successfully updated photo '%(title)s'" % {'title': unicode(photo)}) ) if set_id: return HttpResponseRedirect(reverse("photo", kwargs={"id": photo.id, "set_id": set_id})) else: return HttpResponseRedirect(reverse("photo", kwargs={"id": photo.id})) else: form = form_class(instance=photo, user=request.user) else: form = form_class(instance=photo, user=request.user) return render_to_response(template_name, { "photo_form": form, "photo": photo, "photo_sets": photo_sets, "id": photo.id, "set_id": set_id, }, context_instance=RequestContext(request))
def edit(request, id, form_class=StoryForm, template_name="stories/edit.html"): story = get_object_or_404(Story, pk=id) if has_perm(request.user, 'stories.change_story', story): if request.method == "POST": form = form_class(request.POST, request.FILES, instance=story, user=request.user) if form.is_valid(): story = form.save(commit=False) # save photo photo = form.cleaned_data['photo_upload'] if photo: story.save(photo=photo) story = update_perms_and_save(request, form, story) messages.add_message( request, messages.SUCCESS, _('Successfully updated %(str)s' % {'str': unicode(story)})) redirect_to = request.REQUEST.get('next', '') if redirect_to: return HttpResponseRedirect(redirect_to) else: return redirect('story', id=story.pk) else: form = form_class(instance=story, user=request.user) else: raise Http403 return render_to_response(template_name, { 'story': story, 'form': form }, context_instance=RequestContext(request))
def edit(request, id, form_class=FormForm, template_name="forms/edit.html"): form_instance = get_object_or_404(Form, pk=id) if not has_perm(request.user,'forms.change_form',form_instance): raise Http403 PricingFormSet = inlineformset_factory(Form, Pricing, form=PricingForm, extra=2) RecurringPaymentFormSet = inlineformset_factory(Form, RecurringPayment, form=RecurringPaymentForm, extra=2) if request.method == "POST": form = form_class(request.POST, instance=form_instance, user=request.user) if form_instance.recurring_payment: formset = RecurringPaymentFormSet(request.POST, instance=form_instance) else: formset = PricingFormSet(request.POST, instance=form_instance) if form.is_valid() and formset.is_valid(): form_instance = form.save(commit=False) form_instance = update_perms_and_save(request, form, form_instance) form.save_m2m() # save payment methods formset.save() # save price options # remove all pricings if no custom_payment form if not form.cleaned_data['custom_payment']: form_instance.pricing_set.all().delete() messages.add_message(request, messages.SUCCESS, _('Successfully edited %(f)s' % {'f': form_instance})) return HttpResponseRedirect(reverse('form_field_update', args=[form_instance.pk])) else: form = form_class(instance=form_instance, user=request.user) if form_instance.recurring_payment: formset = RecurringPaymentFormSet(instance=form_instance) else: formset = PricingFormSet(instance=form_instance) return render_to_resp(request=request, template_name=template_name,context={ 'form':form, 'formset':formset, 'form_instance':form_instance, })
def add(request, form_class=VideoFrontEndForm, template_name="videos/edit.html"): # check permission if not has_perm(request.user, 'videos.add_video'): raise Http403 if request.method == "POST": form = form_class(request.POST, request.FILES, user=request.user) if form.is_valid(): video = form.save(commit=False) video.creator = request.user video.creator_username = request.user.username if not request.user.is_superuser: video.status_detail = 'pending' # update all permissions and save the model video = update_perms_and_save(request, form, video) form.save_m2m() msg_string = _(f'Successfully added {str(video)}') if not request.user.is_superuser: msg_string += _('... Pending on Admin approval.') messages.add_message(request, messages.SUCCESS, msg_string) # send notification to administrator(s) and module recipient(s) recipients = get_notice_recipients('module', 'videos', 'videorecipients') if recipients and notification: notification.send_emails(recipients, 'video_added', { 'object': video, 'request': request, }) return HttpResponseRedirect(reverse('video.details', args=[video.slug])) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={'form': form, 'edit_mode': False})
def add(request, form_class=StoryForm, template_name="stories/add.html"): if has_perm(request.user, 'stories.add_story'): if request.method == "POST": form = form_class(request.POST, request.FILES, user=request.user) if form.is_valid(): story = form.save(commit=False) story = update_perms_and_save(request, form, story) # save photo photo = form.cleaned_data['photo_upload'] if photo: story.save(photo=photo) assign_files_perms(story, files=[story.image]) if 'rotator' in story.tags: checklist_update('add-story') messages.add_message( request, messages.SUCCESS, _('Successfully added %(str)s' % {'str': str(story)})) return HttpResponseRedirect(reverse('story', args=[story.pk])) else: from pprint import pprint pprint(list(form.errors.items())) else: form = form_class(user=request.user) tags = request.GET.get('tags', '') if tags: form.fields['tags'].initial = tags else: raise Http403 return render_to_resp(request=request, template_name=template_name, context={'form': form})
def add(request, form_class=FormForm, template_name="forms/add.html"): if not has_perm(request.user, 'forms.add_form'): raise Http403 PricingFormSet = inlineformset_factory(Form, Pricing, form=PricingForm, extra=2, can_delete=False) formset = PricingFormSet() if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): form_instance = form.save(commit=False) # save form and associated pricings form_instance = update_perms_and_save(request, form, form_instance) formset = PricingFormSet(request.POST, instance=form_instance) if formset.is_valid(): # update_perms_and_save does not appear to consider ManyToManyFields for method in form.cleaned_data['payment_methods']: form_instance.payment_methods.add(method) formset.save() messages.add_message( request, messages.SUCCESS, _('Successfully added %(f)s' % {'f': form_instance})) return HttpResponseRedirect( reverse('form_field_update', args=[form_instance.pk])) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={ 'form': form, 'formset': formset, })
def add(request, form_class=NewsForm, template_name="news/add.html"): # check permission if not has_perm(request.user, 'news.add_news'): raise Http403 if request.method == "POST": form = form_class(request.POST, request.FILES, user=request.user) if form.is_valid(): news = form.save(commit=False) # update all permissions and save the model news = update_perms_and_save(request, form, news) form.save_m2m() # save photo photo = form.cleaned_data['photo_upload'] if photo: news.save(photo=photo) assign_files_perms(news, files=[news.thumbnail]) msg_string = 'Successfully added %s' % unicode(news) messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrators recipients = get_notice_recipients('module', 'news', 'newsrecipients') if recipients: if notification: extra_context = { 'object': news, 'request': request, } notification.send_emails(recipients, 'news_added', extra_context) return HttpResponseRedirect(reverse('news.detail', args=[news.slug])) else: form = form_class(user=request.user) return render_to_response(template_name, {'form': form}, context_instance=RequestContext(request))
def save_model(self, request, object, form, change): story = form.save(commit=False) # save photo if 'photo_upload' in form.cleaned_data: photo = form.cleaned_data['photo_upload'] if photo: story.save(photo=photo) story = update_perms_and_save(request, form, story) log_defaults = { 'instance': object, 'action': "edit" } if not change: log_defaults['action'] = "add" # Handle a special case for bulk reordering via the list view. if form.changed_data != ['position']: EventLog.objects.log(**log_defaults) return object
def photoset_edit(request, id, form_class=PhotoSetEditForm, template_name="photos/photo-set/edit.html"): from tendenci.apps.perms.object_perms import ObjectPermission photo_set = get_object_or_404(PhotoSet, id=id) # if no permission; permission exception if not has_perm(request.user,'photos.change_photoset',photo_set): raise Http403 if request.method == "POST": if request.POST["action"] == "edit": form = form_class(request.POST, instance=photo_set, user=request.user) if form.is_valid(): photo_set = form.save(commit=False) # update all permissions and save the model photo_set = update_perms_and_save(request, form, photo_set) # copy all privacy settings from photo set to photos Image.objects.filter(photoset=photo_set).update(**get_privacy_settings(photo_set)) # photo set group permissions group_perms = photo_set.perms.filter(group__isnull=False).values_list('group','codename') group_perms = tuple([(unicode(g), c.split('_')[0]) for g, c in group_perms ]) photos = Image.objects.filter(photoset=photo_set) for photo in photos: ObjectPermission.objects.remove_all(photo) ObjectPermission.objects.assign_group(group_perms, photo) messages.add_message(request, messages.SUCCESS, _("Successfully updated photo set! ")) return HttpResponseRedirect(reverse('photoset_details', args=[photo_set.id])) else: form = form_class(instance=photo_set, user=request.user) return render_to_response(template_name, { 'photo_set': photo_set, "photoset_form": form, }, context_instance=RequestContext(request))
def edit(request, id, form_class=LocationForm, template_name="locations/edit.html"): location = get_object_or_404(Location, pk=id) if has_perm(request.user, 'locations.change_location', location): if request.method == "POST": form = form_class(request.POST, request.FILES, instance=location, user=request.user) if form.is_valid(): location = form.save(commit=False) # update all permissions and save the model location = update_perms_and_save(request, form, location) if 'photo_upload' in form.cleaned_data: photo = form.cleaned_data['photo_upload'] if photo: location.save(photo=photo) msg_string = 'Successfully updated %s' % location messages.add_message(request, messages.SUCCESS, _(msg_string)) return HttpResponseRedirect( reverse('location', args=[location.slug])) else: form = form_class(instance=location, user=request.user) return render_to_resp(request=request, template_name=template_name, context={ 'location': location, 'form': form }) else: raise Http403
def edit(request, id, form_class=ResumeForm, template_name="resumes/edit.html"): resume = get_object_or_404(Resume, pk=id) form = form_class(request.POST or None, request.FILES or None, instance=resume, user=request.user) if has_perm(request.user,'resumes.change_resume',resume): if request.method == "POST": if form.is_valid(): resume = form.save(commit=False) if resume.resume_file: resume.resume_file.file.seek(0) resume = update_perms_and_save(request, form, resume) EventLog.objects.log(instance=resume) messages.add_message(request, messages.SUCCESS, _('Successfully updated %(r)s' % {'r':resume})) return HttpResponseRedirect(reverse('resume', args=[resume.slug])) return render_to_resp(request=request, template_name=template_name, context={'resume': resume, 'form':form}) else: raise Http403
def add(request, form_class=HelpFileForm, template_name="help_files/add.html"): if has_perm(request.user, 'help_files.add_helpfile'): if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): help_file = form.save(commit=False) if not request.user.is_superuser: help_file.status_detail = 'pending' # add all permissions and save the model help_file = update_perms_and_save(request, form, help_file) form.save_m2m() msg_string = 'Successfully added %s' % help_file messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrator(s) and module recipient(s) if not request.user.is_superuser: recipients = get_notice_recipients('module', 'help_files', 'helpfilerecipients') if recipients: notification.send_emails(recipients, 'help_file_added', { 'object': help_file, 'request': request, }) return HttpResponseRedirect( reverse('help_file.details', args=[help_file.slug])) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={'form': form}) else: raise Http403
def edit(request, id, form_class=DiscountForm, template_name="discounts/edit.html"): discount = get_object_or_404(Discount, id=id) if not has_perm(request.user, 'discounts.change_discount', discount): raise Http403 if request.method == "POST": form = form_class(request.POST, instance=discount, user=request.user) if form.is_valid(): discount = form.save(commit=False) discount = update_perms_and_save(request, form, discount) form.save_m2m() messages.add_message(request, messages.SUCCESS, _('Successfully updated %(d)s' % {'d': discount})) return redirect('discount.detail', id=discount.id) else: form = form_class(instance=discount, user=request.user) return render_to_response( template_name, { 'form': form, 'discount': discount, }, context_instance=RequestContext(request), )
def add(request, form_class=EntityForm, template_name="entities/add.html"): if has_perm(request.user, 'entities.add_entity'): if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): entity = form.save(commit=False) # update all permissions and save the model entity = update_perms_and_save(request, form, entity) messages.add_message( request, messages.SUCCESS, _('Successfully added %(e)s' % {'e': entity})) return HttpResponseRedirect(reverse('entity', args=[entity.pk])) else: form = form_class(user=request.user) return render_to_resp(request=request, template_name=template_name, context={'form': form}) else: raise Http403
def save_model(self, request, object, form, change): instance = form.save(commit=False) instance = update_perms_and_save(request, form, instance) instance.save() return instance
def edit(request, id, form_class=PageForm, meta_form_class=MetaForm, category_form_class=CategoryForm, template_name="pages/edit.html"): page = get_object_or_404(Page, pk=id) if not has_perm(request.user, 'pages.change_page', page): raise Http403 content_type = get_object_or_404(ContentType, app_label='pages', model='page') if request.method == "POST": form = form_class(request.POST, request.FILES, instance=page, user=request.user) # metaform = meta_form_class(request.POST, # instance=page.meta, # prefix='meta') # categoryform = category_form_class(content_type, # request.POST,) if form.is_valid( ): # and metaform.is_valid() and categoryform.is_valid(): page = form.save() # handle header image # f = form.cleaned_data['header_image'] # if f: # header = HeaderImage() # header.content_type = ContentType.objects.get_for_model(Page) # header.object_id = page.id # header.creator = request.user # header.creator_username = request.user.username # header.owner = request.user # header.owner_username = request.user.username # filename = "%s-%s" % (page.slug, f.name) # f.file.seek(0) # header.file.save(filename, f) # page.header_image = header #save meta # meta = metaform.save() # page.meta = meta ## update the category and subcategory # page.update_category_subcategory( # categoryform.cleaned_data['category'], # categoryform.cleaned_data['sub_category'] # ) # update all permissions page = update_perms_and_save(request, form, page) if page.pk == 1: # the about page has id 1 in the npo defaults fixture checklist_update('update-about') messages.add_message( request, messages.SUCCESS, _('Successfully updated %(p)s' % {'p': unicode(page)})) if not request.user.profile.is_superuser: # send notification to administrators recipients = get_notice_recipients('module', 'pages', 'pagerecipients') if recipients: if notification: extra_context = { 'object': page, 'request': request, } notification.send_emails(recipients, 'page_edited', extra_context) return HttpResponseRedirect(reverse('page', args=[page.slug])) else: form = form_class(instance=page, user=request.user) # metaform = meta_form_class(instance=page.meta, prefix='meta') #setup categories # category = Category.objects.get_for_object(page, 'category') # sub_category = Category.objects.get_for_object(page, 'sub_category') # initial_category_form_data = { # 'app_label': 'pages', # 'model': 'page', # 'pk': page.pk, # 'category': getattr(category, 'name', '0'), # 'sub_category': getattr(sub_category, 'name', '0') # } # # categoryform = category_form_class(content_type, # initial=initial_category_form_data,) return render_to_response( template_name, { 'page': page, 'form': form, # 'metaform': metaform, # 'categoryform': categoryform, }, context_instance=RequestContext(request))
def add(request, form_class=PageForm, meta_form_class=MetaForm, category_form_class=CategoryForm, template_name="pages/add.html"): if not has_perm(request.user, 'pages.add_page'): raise Http403 content_type = get_object_or_404(ContentType, app_label='pages', model='page') if request.method == "POST": form = form_class(request.POST, request.FILES, user=request.user) metaform = meta_form_class(request.POST, prefix='meta') categoryform = category_form_class( content_type, request.POST, ) if form.is_valid() and metaform.is_valid() and categoryform.is_valid(): page = form.save() # handle header image # f = form.cleaned_data['header_image'] # if f: # header = HeaderImage() # header.content_type = ContentType.objects.get_for_model(Page) # header.object_id = page.id # header.creator = request.user # header.creator_username = request.user.username # header.owner = request.user # header.owner_username = request.user.username # filename = "%s-%s" % (page.slug, f.name) # f.file.seek(0) # header.file.save(filename, f) # page.header_image = header #save meta meta = metaform.save() page.meta = meta ## update the category and subcategory page.update_category_subcategory( categoryform.cleaned_data['category'], categoryform.cleaned_data['sub_category']) # add all permissions page = update_perms_and_save(request, form, page) messages.add_message( request, messages.SUCCESS, _('Successfully added %(p)s' % {'p': unicode(page)})) checklist_update('add-page') if not request.user.profile.is_superuser: # send notification to administrators recipients = get_notice_recipients('module', 'pages', 'pagerecipients') if recipients: if notification: extra_context = { 'object': page, 'request': request, } notification.send_emails(recipients, 'page_added', extra_context) if page.status and page.status_detail == 'active': return HttpResponseRedirect(reverse('page', args=[page.slug])) return HttpResponseRedirect(reverse('page.search')) else: initial_category_form_data = { 'app_label': 'pages', 'model': 'page', 'pk': 0, } form = form_class(user=request.user) metaform = meta_form_class(prefix='meta') categoryform = category_form_class( content_type, initial=initial_category_form_data, ) return render_to_response(template_name, { 'form': form, 'metaform': metaform, 'categoryform': categoryform, }, context_instance=RequestContext(request))
def edit(request, id, form_class=ArticleForm, category_form_class=CategoryForm, template_name="articles/edit.html"): article = get_object_or_404(Article, pk=id) content_type = get_object_or_404(ContentType, app_label='articles', model='article') if has_perm(request.user, 'articles.change_article', article): if request.method == "POST": form = form_class(request.POST, request.FILES or None, instance=article, user=request.user) categoryform = category_form_class( content_type, request.POST, ) if form.is_valid() and categoryform.is_valid(): article = form.save() article.update_category_subcategory( categoryform.cleaned_data['category'], categoryform.cleaned_data['sub_category']) # update all permissions and save the model update_perms_and_save(request, form, article) msg_string = 'Successfully updated %s' % str(article) messages.add_message(request, messages.SUCCESS, _(msg_string)) return HttpResponseRedirect( reverse('article', args=[article.slug])) else: form = form_class(instance=article, user=request.user) category = Category.objects.get_for_object(article, 'category') sub_category = Category.objects.get_for_object( article, 'sub_category') initial_category_form_data = { 'app_label': 'articles', 'model': 'article', 'pk': article.pk, 'category': getattr(category, 'name', '0'), 'sub_category': getattr(sub_category, 'name', '0') } categoryform = category_form_class( content_type, initial=initial_category_form_data, ) return render_to_resp(request=request, template_name=template_name, context={ 'article': article, 'form': form, 'categoryform': categoryform, }) else: raise Http403
def add(request, form_class=ArticleForm, category_form_class=CategoryForm, template_name="articles/add.html"): content_type = get_object_or_404(ContentType, app_label='articles', model='article') if has_perm(request.user, 'articles.add_article'): if request.method == "POST": form = form_class(request.POST, request.FILES or None, user=request.user) categoryform = category_form_class( content_type, request.POST, ) if form.is_valid() and categoryform.is_valid(): article = form.save() article.creator = request.user article.creator_username = request.user.username # add all permissions update_perms_and_save(request, form, article) article.update_category_subcategory( categoryform.cleaned_data['category'], categoryform.cleaned_data['sub_category']) msg_string = 'Successfully added %s' % str(article) messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrator(s) and module recipient(s) recipients = get_notice_recipients('module', 'articles', 'articlerecipients') if recipients and notification: notification.send_emails(recipients, 'article_added', { 'object': article, 'request': request, }) return HttpResponseRedirect( reverse('article', args=[article.slug])) else: form = form_class(user=request.user) initial_category_form_data = { 'app_label': 'articles', 'model': 'article', 'pk': 0, } categoryform = category_form_class( content_type, initial=initial_category_form_data, ) return render_to_resp(request=request, template_name=template_name, context={ 'form': form, 'categoryform': categoryform, }) else: raise Http403
def renew(request, id, form_class=DirectoryRenewForm, template_name="directories/renew.html"): can_add_active = has_perm(request.user,'directories.add_directory') require_approval = get_setting('module', 'directories', 'renewalrequiresapproval') directory = get_object_or_404(Directory, pk=id) if not has_perm(request.user,'directories.change_directory', directory) or not request.user == directory.creator: raise Http403 # pop payment fields if not required require_payment = get_setting('module', 'directories', 'directoriesrequirespayment') form = form_class(request.POST or None, request.FILES or None, instance=directory, user=request.user) if not require_payment: del form.fields['payment_method'] del form.fields['list_type'] if request.method == "POST": if form.is_valid(): directory = form.save(commit=False) pricing = form.cleaned_data['pricing'] if directory.payment_method: directory.payment_method = directory.payment_method.lower() if not directory.requested_duration: directory.requested_duration = 30 if not directory.list_type: directory.list_type = 'regular' if not directory.slug: directory.slug = '%s-%s' % (slugify(directory.headline), Directory.objects.count()) if not can_add_active and require_approval: directory.status = True directory.status_detail = 'pending' else: directory.activation_dt = datetime.now() # set the expiration date directory.expiration_dt = directory.activation_dt + timedelta(days=directory.requested_duration) # mark renewal as not sent for new exp date directory.renewal_notice_sent = False # update all permissions and save the model directory = update_perms_and_save(request, form, directory) # create invoice directory_set_inv_payment(request.user, directory, pricing) msg_string = 'Successfully renewed %s' % directory messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrators # get admin notice recipients recipients = get_notice_recipients('module', 'directories', 'directoryrecipients') if recipients: if notification: extra_context = { 'object': directory, 'request': request, } notification.send_emails(recipients,'directory_renewed', extra_context) if directory.payment_method.lower() in ['credit card', 'cc']: if directory.invoice and directory.invoice.balance > 0: return HttpResponseRedirect(reverse('payments.views.pay_online', args=[directory.invoice.id, directory.invoice.guid])) if can_add_active: return HttpResponseRedirect(reverse('directory', args=[directory.slug])) else: return HttpResponseRedirect(reverse('directory.thank_you')) return render_to_response(template_name, {'directory':directory, 'form':form}, context_instance=RequestContext(request))
def add(request, form_class=DirectoryForm, template_name="directories/add.html"): can_add_active = has_perm(request.user,'directories.add_directory') if not any([request.user.profile.is_superuser, can_add_active, get_setting('module', 'directories', 'usercanadd'), (request.user.profile.is_member and get_setting('module', 'directories', 'directoriesrequiresmembership')) ]): raise Http403 pricings = DirectoryPricing.objects.filter(status=True) if not pricings and has_perm(request.user, 'directories.add_directorypricing'): msg_string = 'You need to add a %s Pricing before you can add %s.' % (get_setting('module', 'directories', 'label_plural'),get_setting('module', 'directories', 'label')) messages.add_message(request, messages.WARNING, _(msg_string)) return HttpResponseRedirect(reverse('directory_pricing.add')) require_payment = get_setting('module', 'directories', 'directoriesrequirespayment') form = form_class(request.POST or None, request.FILES or None, user=request.user) if not require_payment: del form.fields['payment_method'] del form.fields['list_type'] if request.method == "POST": if require_payment: is_free = is_free_listing(request.user, request.POST.get('pricing', 0), request.POST.get('list_type')) if is_free: del form.fields['payment_method'] if form.is_valid(): directory = form.save(commit=False) pricing = form.cleaned_data['pricing'] if require_payment and is_free: directory.payment_method = 'paid - cc' if directory.payment_method: directory.payment_method = directory.payment_method.lower() if not directory.requested_duration: directory.requested_duration = 30 if not directory.list_type: directory.list_type = 'regular' if not directory.slug: directory.slug = '%s-%s' % (slugify(directory.headline), Directory.objects.count()) if not can_add_active: directory.status = True directory.status_detail = 'pending' else: directory.activation_dt = datetime.now() # set the expiration date directory.expiration_dt = directory.activation_dt + timedelta(days=directory.requested_duration) directory = update_perms_and_save(request, form, directory) # create invoice directory_set_inv_payment(request.user, directory, pricing) msg_string = 'Successfully added %s' % directory messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrators # get admin notice recipients recipients = get_notice_recipients('module', 'directories', 'directoryrecipients') if recipients: if notification: extra_context = { 'object': directory, 'request': request, } notification.send_emails(recipients,'directory_added', extra_context) if directory.payment_method.lower() in ['credit card', 'cc']: if directory.invoice and directory.invoice.balance > 0: return HttpResponseRedirect(reverse('payment.pay_online', args=[directory.invoice.id, directory.invoice.guid])) if can_add_active: return HttpResponseRedirect(reverse('directory', args=[directory.slug])) else: return HttpResponseRedirect(reverse('directory.thank_you')) return render_to_response(template_name, {'form': form, 'require_payment': require_payment}, context_instance=RequestContext(request))