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, 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) messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % news) # 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 add(request, form_class=ArticleForm, template_name="articles/add.html"): if has_perm(request.user, 'articles.add_article'): if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): article = form.save(commit=False) # add all permissions and save the model update_perms_and_save(request, form, article) messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % article) # 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) return render_to_response(template_name, {'form': form}, context_instance=RequestContext(request)) else: raise Http403
def delete(request, id, template_name="profiles/delete.html"): user = get_object_or_404(User, pk=id) try: profile = Profile.objects.get(user=user) except: profile = None if not has_perm(request.user,'profiles.delete_profile',profile): raise Http403 if request.method == "POST": recipients = get_notice_recipients('module', 'users', 'userrecipients') if recipients: if notification: extra_context = { 'profile': profile, 'request': request, } notification.send_emails(recipients,'user_deleted', extra_context) #soft delete #profile.delete() #user.delete() if profile: profile.status_detail = 'inactive' profile.save() user.is_active = False user.save() return HttpResponseRedirect(reverse('profile.search')) return render_to_response(template_name, {'user_this':user, 'profile': profile}, context_instance=RequestContext(request))
def delete(request, id, template_name="resumes/delete.html"): resume = get_object_or_404(Resume, pk=id) if has_perm(request.user,'resumes.delete_resume'): if request.method == "POST": EventLog.objects.log(instance=resume) messages.add_message(request, messages.SUCCESS, 'Successfully deleted %s' % 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_deleted', extra_context) resume.delete() return HttpResponseRedirect(reverse('resume.search')) return render_to_response(template_name, {'resume': resume}, context_instance=RequestContext(request)) else: raise Http403
def auto_update_paid_object(self, request, payment): """ Update the object after online payment is received. """ from datetime import datetime try: from tendenci.apps.notifications import models as notification except: notification = None from tendenci.core.perms.utils import get_notice_recipients # approve it if self.renew_entry_id: self.approve_renewal(request) else: self.approve_join(request) # send notification to administrators recipients = get_notice_recipients('module', 'corporate_memberships', 'corporatemembershiprecipients') if recipients: if notification: extra_context = { 'object': self, 'request': request, } notification.send_emails(recipients,'corp_memb_paid', extra_context)
def group_delete(request, id, template_name="user_groups/delete.html"): group = get_object_or_404(Group, pk=id) if not has_perm(request.user, 'user_groups.delete_group', group): raise Http403 if request.method == "POST": # send notification to administrators recipients = get_notice_recipients('module', 'groups', 'grouprecipients') if recipients: if notification: extra_context = { 'object': group, 'request': request, } notification.send_emails(recipients, 'group_deleted', extra_context) EventLog.objects.log(instance=group) group.delete() return HttpResponseRedirect(reverse('group.search')) return render_to_response(template_name, {'group': group}, context_instance=RequestContext(request))
def delete(request, id, template_name="resumes/delete.html"): resume = get_object_or_404(Resume, pk=id) if has_perm(request.user,'resumes.delete_resume'): if request.method == "POST": EventLog.objects.log(instance=resume) messages.add_message(request, messages.SUCCESS, _('Successfully deleted %(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_deleted', extra_context) resume.delete() return HttpResponseRedirect(reverse('resume.search')) return render_to_response(template_name, {'resume': resume}, context_instance=RequestContext(request)) 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) # 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_response(template_name, {'form': form}, context_instance=RequestContext(request)) else: raise Http403
def add(request, form_class=ArticleForm, template_name="articles/add.html"): if has_perm(request.user, 'articles.add_article'): if request.method == "POST": form = form_class(request.POST, user=request.user) if form.is_valid(): article = form.save(commit=False) # add all permissions and save the model update_perms_and_save(request, form, article) messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % article) # 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) return render_to_response(template_name, {'form': form}, context_instance=RequestContext(request)) else: raise Http403
def delete(request, id, template_name="pages/delete.html"): page = get_object_or_404(Page, pk=id) if not has_perm(request.user, 'pages.delete_page'): raise Http403 if request.method == "POST": EventLog.objects.log(instance=page) messages.add_message(request, messages.SUCCESS, _('Successfully deleted %(p)s' % { 'p': unicode(page)})) # 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_deleted', extra_context) # Soft delete page.status = False page.status_detail = 'inactive' page.save() return HttpResponseRedirect(reverse('page.search')) return render_to_response(template_name, {'page': page}, context_instance=RequestContext(request))
def delete(request, id, template_name="articles/delete.html"): article = get_object_or_404(Article, pk=id) if has_perm(request.user, 'articles.delete_article'): if request.method == "POST": messages.add_message(request, messages.SUCCESS, 'Successfully deleted %s' % article) # send notification to administrators recipients = get_notice_recipients('module', 'articles', 'articlerecipients') if recipients: if notification: extra_context = { 'object': article, 'request': request, } notification.send_emails(recipients, 'article_deleted', extra_context) article.delete() return HttpResponseRedirect(reverse('article.search')) return render_to_response(template_name, {'article': article}, context_instance=RequestContext(request)) else: raise Http403
def auto_update_paid_object(self, request, payment): """ Update the object after online payment is received. """ from datetime import datetime try: from tendenci.apps.notifications import models as notification except: notification = None from tendenci.core.perms.utils import get_notice_recipients # approve it if self.renew_entry_id: self.approve_renewal(request) else: self.approve_join(request) # send notification to administrators recipients = get_notice_recipients('module', 'corporate_memberships', 'corporatemembershiprecipients') if recipients: if notification: extra_context = { 'object': self, 'request': request, } notification.send_emails(recipients, 'corp_memb_paid', extra_context)
def delete(request, id, template_name="directories/delete.html"): directory = get_object_or_404(Directory, pk=id) if has_perm(request.user,'directories.delete_directory'): if request.method == "POST": messages.add_message(request, messages.SUCCESS, 'Successfully deleted %s' % directory) # send notification to administrators recipients = get_notice_recipients('module', 'directories', 'directoryrecipients') if recipients: if notification: extra_context = { 'object': directory, 'request': request, } notification.send_emails(recipients,'directory_deleted', extra_context) directory.delete() return HttpResponseRedirect(reverse('directory.search')) return render_to_response(template_name, {'directory': directory}, context_instance=RequestContext(request)) 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 delete(request, id, template_name="articles/delete.html"): article = get_object_or_404(Article, pk=id) if has_perm(request.user, 'articles.delete_article'): if request.method == "POST": msg_string = 'Successfully deleted %s' % unicode(article) messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrators recipients = get_notice_recipients('module', 'articles', 'articlerecipients') if recipients: if notification: extra_context = { 'object': article, 'request': request, } notification.send_emails(recipients, 'article_deleted', extra_context) article.delete() return HttpResponseRedirect(reverse('article.search')) return render_to_response(template_name, {'article': article}, context_instance=RequestContext(request)) else: raise Http403
def delete(request, id, template_name="resumes/delete.html"): resume = get_object_or_404(Resume, pk=id) if has_perm(request.user,'resumes.delete_resume'): if request.method == "POST": log_defaults = { 'event_id' : 433000, 'event_data': '%s (%d) deleted by %s' % (resume._meta.object_name, resume.pk, request.user), 'description': '%s deleted' % resume._meta.object_name, 'user': request.user, 'request': request, 'instance': resume, } EventLog.objects.log(**log_defaults) messages.add_message(request, messages.SUCCESS, 'Successfully deleted %s' % 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_deleted', extra_context) resume.delete() return HttpResponseRedirect(reverse('resume.search')) return render_to_response(template_name, {'resume': resume}, context_instance=RequestContext(request)) else: raise Http403
def delete(request, id, template_name="resumes/delete.html"): resume = get_object_or_404(Resume, pk=id) if has_perm(request.user, "resumes.delete_resume"): if request.method == "POST": log_defaults = { "event_id": 433000, "event_data": "%s (%d) deleted by %s" % (resume._meta.object_name, resume.pk, request.user), "description": "%s deleted" % resume._meta.object_name, "user": request.user, "request": request, "instance": resume, } EventLog.objects.log(**log_defaults) messages.add_message(request, messages.SUCCESS, "Successfully deleted %s" % 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_deleted", extra_context) resume.delete() return HttpResponseRedirect(reverse("resume.search")) return render_to_response(template_name, {"resume": resume}, context_instance=RequestContext(request)) else: raise Http403
def request_new(request, template_name="help_files/request_new.html"): "Request new file form" if request.method == 'POST': form = RequestForm(request.POST) if form.is_valid(): instance = form.save() # send notification to administrators recipients = get_notice_recipients('module', 'help_files', 'helpfilerecipients') if recipients: if notification: extra_context = { 'object': instance, 'request': request, } notification.send_emails(recipients, 'help_file_requested', extra_context) messages.add_message(request, messages.INFO, 'Thanks for requesting a new help file!') EventLog.objects.log() return HttpResponseRedirect(reverse('help_files')) else: form = RequestForm() return render_to_response(template_name, {'form': form}, context_instance=RequestContext(request))
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() messages.add_message(request, messages.SUCCESS, 'Successfully edited %s' % help_file) # 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 save_model(self, request, object, form, change): instance = form.save(commit=False) instance = update_perms_and_save(request, form, instance) # 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 # admin.site.register(Page, PageAdmin)
def group_delete(request, id, template_name="user_groups/delete.html"): group = get_object_or_404(Group, pk=id) if not has_perm(request.user,'user_groups.delete_group',group): raise Http403 if request.method == "POST": # send notification to administrators recipients = get_notice_recipients('module', 'groups', 'grouprecipients') if recipients: if notification: extra_context = { 'object': group, 'request': request, } notification.send_emails(recipients,'group_deleted', extra_context) log_defaults = { 'event_id' : 163000, 'event_data': '%s (%d) deleted by %s' % (group._meta.object_name, group.pk, request.user), 'description': '%s deleted' % group._meta.object_name, 'user': request.user, 'request': request, 'instance': group, } EventLog.objects.log(**log_defaults) group.delete() return HttpResponseRedirect(reverse('group.search')) return render_to_response(template_name, {'group':group}, context_instance=RequestContext(request))
def delete(request, id, template_name="jobs/delete.html"): job = get_object_or_404(Job, pk=id) if has_perm(request.user, 'jobs.delete_job', job): if request.method == "POST": msg_string = 'Successfully deleted %s' % job messages.add_message(request, messages.SUCCESS, _(msg_string)) # send notification to administrators recipients = get_notice_recipients( 'module', 'jobs', 'jobrecipients') if recipients: if notification: extra_context = { 'object': job, 'request': request, } notification.send_emails(recipients, 'job_deleted', extra_context) job.delete() return HttpResponseRedirect(reverse('job.search')) return render_to_response(template_name, {'job': job}, context_instance=RequestContext(request)) else: raise Http403
def delete(request, id, template_name="news/delete.html"): news = get_object_or_404(News, pk=id) # check permission if not has_perm(request.user, 'news.delete_news'): raise Http403 if request.method == "POST": messages.add_message(request, messages.SUCCESS, 'Successfully deleted %s' % news) # 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_deleted', extra_context) news.delete() return HttpResponseRedirect(reverse('news.search')) return render_to_response(template_name, {'news': news}, context_instance=RequestContext(request))
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) # save photo photo = form.cleaned_data["photo_upload"] if photo: news.save(photo=photo) assign_files_perms(news, files=[news.thumbnail]) messages.add_message(request, messages.SUCCESS, "Successfully added %s" % news) # 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 delete(request, id, template_name="studygroups/delete.html"): study_group = get_object_or_404(StudyGroup, pk=id) if not has_perm(request.user, 'studygroup.delete_studygroup'): raise Http403 if request.method == "POST": EventLog.objects.log(instance=study_group) messages.add_message(request, messages.SUCCESS, 'Successfully deleted %s' % study_group) # send notification to administrators recipients = get_notice_recipients('module', 'studygroups', 'studygrouprecipients') if recipients: if notification: extra_context = { 'object': study_group, 'request': request, } notification.send_emails(recipients, 'studygroup_deleted', extra_context) study_group.delete() return HttpResponseRedirect(reverse('studygroups.search')) return render_to_response(template_name, {'study_group': study_group}, context_instance=RequestContext(request))
def send_notifications(scope, scope_category, name, label, extra_context=None): """ a small wrapper for sending notification emails to recipients specified in site_settings. """ recipients = get_notice_recipients(scope, scope_category, name) if recipients: send_emails(recipients, label, extra_context)
def add(request, form_class=ResumeForm, template_name="resumes/add.html"): can_add_active = has_perm(request.user, 'resumes.add_resume') 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 = 0 resume.status_detail = 'pending' # set up the expiration time based on requested duration now = now_localized() 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() log_defaults = { 'event_id' : 351000, 'event_data': '%s (%d) added by %s' % (resume._meta.object_name, resume.pk, request.user), 'description': '%s added' % resume._meta.object_name, 'user': request.user, 'request': request, 'instance': resume, } EventLog.objects.log(**log_defaults) if request.user.is_authenticated(): messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % 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 group_add_edit(request, group_slug=None, form_class=GroupForm, template_name="user_groups/add_edit.html"): add, edit = False, False if group_slug: group = get_object_or_404(Group, slug=group_slug) if not has_perm(request.user,'user_groups.change_group',group): raise Http403 title = "Edit Group" edit = True else: group = None if not has_perm(request.user,'user_groups.add_group'):raise Http403 title = "Add Group" add = True if request.method == 'POST': if edit: form = form_class(request.POST, instance=group, user=request.user) else: form = form_class(request.POST, user=request.user) if form.is_valid(): group = form.save(commit=False) if not group.id: group.creator = request.user group.creator_username = request.user.username # set up user permission group.allow_user_view, group.allow_user_edit = form.cleaned_data['user_perms'] group.owner = request.user group.owner_username = request.user.username group = form.save() if add: # send notification to administrators recipients = get_notice_recipients('module', 'groups', 'grouprecipients') if recipients: if notification: extra_context = { 'object': group, 'request': request, } notification.send_emails(recipients,'group_added', extra_context) EventLog.objects.log(instance=group) return HttpResponseRedirect(group.get_absolute_url()) else: if edit: form = form_class(instance=group, user=request.user) else: form = form_class(user=request.user) return render_to_response(template_name, {'form':form, 'titie':title, 'group':group}, context_instance=RequestContext(request))
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, user=request.user) categoryform = category_form_class(content_type, request.POST, prefix='category') 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) messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % article) # 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, prefix='category') return render_to_response(template_name, { 'form': form, 'categoryform': categoryform, }, context_instance=RequestContext(request)) else: raise Http403
def delete(request, id, template_name="profiles/delete.html"): user = get_object_or_404(User, pk=id) try: profile = Profile.objects.get(user=user) except: profile = None if not has_perm(request.user, 'profiles.delete_profile', profile): raise Http403 if request.method == "POST": recipients = get_notice_recipients('module', 'users', 'userrecipients') if recipients: if notification: extra_context = { 'profile': profile, 'request': request, } notification.send_emails(recipients, 'user_deleted', extra_context) #soft delete #profile.delete() #user.delete() if profile: profile.status_detail = 'inactive' profile.save() user.is_active = False user.save() log_defaults = { 'event_id': 123000, 'event_data': '%s (%d) deleted by %s' % (user._meta.object_name, user.pk, request.user), 'description': '%s deleted' % user._meta.object_name, 'user': request.user, 'request': request, 'instance': user, } EventLog.objects.log(**log_defaults) return HttpResponseRedirect(reverse('profile.search')) return render_to_response(template_name, { 'user_this': user, 'profile': profile }, context_instance=RequestContext(request))
def add(request, form_class=ResumeForm, template_name="resumes/add.html"): can_add_active = has_perm(request.user, 'resumes.add_resume') 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 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, user=request.user) categoryform = category_form_class(content_type, request.POST, prefix='category') 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) messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % article) # 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, prefix='category') return render_to_response(template_name, {'form': form, 'categoryform': categoryform,}, context_instance=RequestContext(request)) else: raise Http403
def delete(self, *args, **kwargs): # Related objects # Import related objects here to prevent circular references from tendenci.apps.pages.models import Page from tendenci.addons.events.models import Event from tendenci.apps.stories.models import Story pages = Page.objects.filter(header_image=self.pk) events = Event.objects.filter(image=self.pk) stories = Story.objects.filter(image=self.pk) # Set foreign key of related objects to None for page in pages: page.header_image = None page.save() for event in events: event.image = None event.save() for story in stories: story.image = None story.save() # roll back the transaction to fix the error for postgresql #"current transaction is aborted, commands ignored until # end of transaction block" #connection._rollback() # comment it out because this line of code leads to IntegrityError for files that inherit File's model. # send notification to administrator(s) and module recipient(s) if self.file: recipients = get_notice_recipients('module', 'files', 'filerecipients') site_display_name = get_setting('site', 'global', 'sitedisplayname') if self.owner: owner = self.owner.get_full_name() or self.owner else: owner = "Unknown" if recipients and notification: notification.send_emails( recipients, 'file_deleted', { 'object': self, 'author': owner, 'SITE_GLOBAL_SITEDISPLAYNAME': site_display_name, }) # delete actual file; do not save() self.instance self.file.delete(save=False) # delete database record super(File, self).delete(*args, **kwargs)
def add(request, form_class=ResumeForm, template_name="resumes/add.html"): can_add_active = has_perm(request.user, "resumes.add_resume") if request.method == "POST": form = form_class(request.POST, 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 = 0 resume.status_detail = "pending" # set up the expiration time based on requested duration now = now_localized() resume.expiration_dt = now + timedelta(days=resume.requested_duration) resume = update_perms_and_save(request, form, resume) log_defaults = { "event_id": 351000, "event_data": "%s (%d) added by %s" % (resume._meta.object_name, resume.pk, request.user), "description": "%s added" % resume._meta.object_name, "user": request.user, "request": request, "instance": resume, } EventLog.objects.log(**log_defaults) if request.user.is_authenticated(): messages.add_message(request, messages.SUCCESS, "Successfully added %s" % 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_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 delete(self, *args, **kwargs): # Related objects # Import related objects here to prevent circular references from tendenci.apps.pages.models import Page from tendenci.addons.events.models import Event from tendenci.apps.stories.models import Story pages = Page.objects.filter(header_image=self.pk) events = Event.objects.filter(image=self.pk) stories = Story.objects.filter(image=self.pk) # Set foreign key of related objects to None for page in pages: page.header_image = None page.save() for event in events: event.image = None event.save() for story in stories: story.image = None story.save() # roll back the transaction to fix the error for postgresql #"current transaction is aborted, commands ignored until # end of transaction block" #connection._rollback() # comment it out because this line of code leads to IntegrityError for files that inherit File's model. # send notification to administrator(s) and module recipient(s) if self.file: recipients = get_notice_recipients('module', 'files', 'filerecipients') site_display_name = get_setting('site', 'global', 'sitedisplayname') if self.owner: owner = self.owner.get_full_name() or self.owner else: owner = "Unknown" if recipients and notification: notification.send_emails(recipients, 'file_deleted', { 'object': self, 'author': owner, 'SITE_GLOBAL_SITEDISPLAYNAME': site_display_name, }) # delete actual file; do not save() self.instance self.file.delete(save=False) # delete database record super(File, self).delete(*args, **kwargs)
def save_model(self, request, object, form, change): instance = form.save(commit=False) instance = update_perms_and_save(request, form, instance) # 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 group_delete(request, id, template_name="user_groups/delete.html"): group = get_object_or_404(Group, pk=id) if not has_perm(request.user, 'user_groups.delete_group', group): raise Http403 if request.method == "POST": # send notification to administrators recipients = get_notice_recipients('module', 'groups', 'grouprecipients') if recipients: if notification: extra_context = { 'object': group, 'request': request, } notification.send_emails(recipients, 'group_deleted', extra_context) EventLog.objects.log(instance=group) group.delete() return HttpResponseRedirect(reverse('group.search')) (deleted_objects, perms_needed, protected) = get_deleted_objects(group, request.user) object_name = group.label or group.name if perms_needed or protected: title = _("Cannot delete %(name)s") % {"name": object_name} else: title = _("Are you sure?") return render_to_response(template_name, { 'group': group, "title": title, "object_name": object_name, "deleted_objects": deleted_objects, "perms_lacking": perms_needed, "protected": protected, "opts": group._meta, }, context_instance=RequestContext(request))
def group_delete(request, id, template_name="user_groups/delete.html"): group = get_object_or_404(Group, pk=id) if not has_perm(request.user, "user_groups.delete_group", group): raise Http403 if request.method == "POST": # send notification to administrators recipients = get_notice_recipients("module", "groups", "grouprecipients") if recipients: if notification: extra_context = {"object": group, "request": request} notification.send_emails(recipients, "group_deleted", extra_context) EventLog.objects.log(instance=group) group.delete() return HttpResponseRedirect(reverse("group.search")) return render_to_response(template_name, {"group": group}, context_instance=RequestContext(request))
def auto_update_paid_object(self, request, payment): """ Update the object after online payment is received. """ # email to admin try: from tendenci.apps.notifications import models as notification except: notification = None from tendenci.core.perms.utils import get_notice_recipients recipients = get_notice_recipients('module', 'donations', 'donationsrecipients') if recipients: if notification: extra_context = { 'donation': self, 'invoice': payment.invoice, 'request': request, } notification.send_emails(recipients,'donation_added', extra_context)
def group_delete(request, id, template_name="user_groups/delete.html"): group = get_object_or_404(Group, pk=id) if not has_perm(request.user, 'user_groups.delete_group', group): raise Http403 if request.method == "POST": # send notification to administrators recipients = get_notice_recipients('module', 'groups', 'grouprecipients') if recipients: if notification: extra_context = { 'object': group, 'request': request, } notification.send_emails(recipients, 'group_deleted', extra_context) log_defaults = { 'event_id': 163000, 'event_data': '%s (%d) deleted by %s' % (group._meta.object_name, group.pk, request.user), 'description': '%s deleted' % group._meta.object_name, 'user': request.user, 'request': request, 'instance': group, } EventLog.objects.log(**log_defaults) group.delete() return HttpResponseRedirect(reverse('group.search')) return render_to_response(template_name, {'group': group}, context_instance=RequestContext(request))
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) # save photo photo = form.cleaned_data['photo_upload'] if photo: news.save(photo=photo) assign_files_perms(news, files=[news.thumbnail]) messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % news) # 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): 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 delete(request, id, template_name="committees/delete.html"): committee = get_object_or_404(Committee, pk=id) if not has_perm(request.user, "committee.delete_committee"): raise Http403 if request.method == "POST": EventLog.objects.log(instance=committee) messages.add_message(request, messages.SUCCESS, "Successfully deleted %s" % committee) # send notification to administrators recipients = get_notice_recipients("module", "committees", "committeerecipients") if recipients: if notification: extra_context = {"object": committee, "request": request} notification.send_emails(recipients, "committee_deleted", extra_context) committee.delete() return HttpResponseRedirect(reverse("committees.search")) return render_to_response(template_name, {"committee": committee}, context_instance=RequestContext(request))
def save(self, *args, **kwargs): created = False if not self.id: self.guid = unicode(uuid.uuid1()) created = True super(File, self).save(*args, **kwargs) if self.is_public_file(): set_s3_file_permission(self.file, public=True) else: set_s3_file_permission(self.file, public=False) cache_set = cache.get("files_cache_set.%s" % self.pk) if cache_set is not None: # TODO remove cached images cache.delete_many(cache.get("files_cache_set.%s" % self.pk)) cache.delete("files_cache_set.%s" % self.pk) # send notification to administrator(s) and module recipient(s) if created: recipients = get_notice_recipients('module', 'files', 'filerecipients') site_display_name = get_setting('site', 'global', 'sitedisplayname') site_url = get_setting('site', 'global', 'siteurl') if recipients and notification: notification_params = { 'object': self, 'SITE_GLOBAL_SITEDISPLAYNAME': site_display_name, 'SITE_GLOBAL_SITEURL': site_url, } if self.owner: notification_params['author'] = self.owner.get_full_name( ) or self.owner notification.send_emails(recipients, 'file_added', notification_params)
def group_delete(request, id, template_name="user_groups/delete.html"): group = get_object_or_404(Group, pk=id) if not has_perm(request.user,'user_groups.delete_group',group): raise Http403 if request.method == "POST": # send notification to administrators recipients = get_notice_recipients('module', 'groups', 'grouprecipients') if recipients: if notification: extra_context = { 'object': group, 'request': request, } notification.send_emails(recipients,'group_deleted', extra_context) EventLog.objects.log(instance=group) group.delete() return HttpResponseRedirect(reverse('group.search')) (deleted_objects, perms_needed, protected) = get_deleted_objects( group, request.user) object_name = group.label or group.name if perms_needed or protected: title = _("Cannot delete %(name)s") % {"name": object_name} else: title = _("Are you sure?") return render_to_response(template_name, {'group':group, "title": title, "object_name": object_name, "deleted_objects": deleted_objects, "perms_lacking": perms_needed, "protected": protected, "opts": group._meta, }, context_instance=RequestContext(request))
def delete(request, id, template_name="directories/delete.html"): directory = get_object_or_404(Directory, pk=id) if has_perm(request.user, "directories.delete_directory"): if request.method == "POST": messages.add_message(request, messages.SUCCESS, "Successfully deleted %s" % directory) # send notification to administrators recipients = get_notice_recipients("module", "directories", "directoryrecipients") if recipients: if notification: extra_context = {"object": directory, "request": request} notification.send_emails(recipients, "directory_deleted", extra_context) directory.delete() return HttpResponseRedirect(reverse("directory.search")) return render_to_response(template_name, {"directory": directory}, context_instance=RequestContext(request)) else: raise Http403
def request_new(request, template_name="help_files/request_new.html"): "Request new file form" if request.method == 'POST': form = RequestForm(request.POST) if form.is_valid(): instance = form.save() # send notification to administrators recipients = get_notice_recipients('module', 'help_files', 'helpfilerecipients') if recipients: if notification: extra_context = { 'object': instance, 'request': request, } notification.send_emails(recipients,'help_file_requested', extra_context) messages.add_message(request, messages.INFO, 'Thanks for requesting a new help file!') EventLog.objects.log() return HttpResponseRedirect(reverse('help_files')) else: form = RequestForm() return render_to_response(template_name, {'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'): messages.add_message(request, messages.WARNING, 'You need to add a %s Pricing before you can add %s.' % (get_setting('module', 'directories', 'label_plural'),get_setting('module', 'directories', 'label'))) 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) messages.add_message(request, messages.SUCCESS, 'Successfully added %s' % directory) # 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))
def edit(request, id, form_class=ProfileForm, template_name="profiles/edit.html"): user_edit = get_object_or_404(User, pk=id) try: profile = Profile.objects.get(user=user_edit) except Profile.DoesNotExist: profile = Profile.objects.create_profile(user=user_edit) if not profile.allow_edit_by(request.user): raise Http403 required_fields = get_setting('module', 'users', 'usersrequiredfields') if required_fields: required_fields_list = required_fields.split(',') required_fields_list = [ field.strip() for field in required_fields_list ] else: required_fields_list = None if request.method == "POST": form = form_class(request.POST, user_current=request.user, user_this=user_edit, required_fields_list=required_fields_list, instance=profile) if form.is_valid(): # get the old profile, so we know what has been changed in admin notification old_user = User.objects.get(id=id) old_profile = Profile.objects.get(user=old_user) profile = form.save(request, user_edit) if request.user.profile.is_superuser: security_level = form.cleaned_data['security_level'] if security_level == 'superuser': user_edit.is_superuser = 1 user_edit.is_staff = 1 # remove them from auth_group if any - they don't need it user_edit.groups = [] elif security_level == 'staff': user_edit.is_superuser = 0 user_edit.is_staff = 1 else: user_edit.is_superuser = 0 user_edit.is_staff = 0 # remove them from auth_group if any user_edit.groups = [] # set up user permission profile.allow_user_view, profile.allow_user_edit = False, False else: user_edit.is_superuser = 0 user_edit.is_staff = 0 # interactive interactive = form.cleaned_data['interactive'] try: interactive = int(interactive) except: interactive = 0 if interactive == 1: user_edit.is_active = 1 else: user_edit.is_active = 0 user_edit.save() profile.save() # notify ADMIN of update to a user's record if get_setting('module', 'users', 'userseditnotifyadmin'): # profile_edit_admin_notify(request, old_user, old_profile, profile) # send notification to administrators recipients = get_notice_recipients('module', 'users', 'userrecipients') if recipients: if notification: extra_context = { 'old_user': old_user, 'old_profile': old_profile, 'profile': profile, 'request': request, } notification.send_emails(recipients, 'user_edited', extra_context) log_defaults = { 'event_id': 122000, 'event_data': '%s (%d) edited by %s' % (user_edit._meta.object_name, user_edit.pk, request.user), 'description': '%s edited' % user_edit._meta.object_name, 'user': request.user, 'request': request, 'instance': user_edit, } EventLog.objects.log(**log_defaults) return HttpResponseRedirect( reverse('profile', args=[user_edit.username])) else: if profile: form = form_class(user_current=request.user, user_this=user_edit, required_fields_list=required_fields_list, instance=profile) else: form = form_class(user_current=request.user, user_this=user_edit, required_fields_list=required_fields_list) return render_to_response(template_name, { 'user_this': user_edit, 'profile': profile, 'form': form, 'required_fields_list': required_fields_list }, context_instance=RequestContext(request))
def add(request, form_class=JobForm, template_name="jobs/add.html", object_type=Job, success_redirect='job', thankyou_redirect='job.thank_you'): require_payment = get_setting('module', 'jobs', 'jobsrequirespayment') can_add_active = has_perm(request.user, 'jobs.add_job') content_type = get_object_or_404( ContentType, app_label=object_type._meta.app_label, model=object_type._meta.module_name ) if request.user.profile.is_superuser: category_form_class = CategoryForm else: category_form_class = CategoryForm2 form = form_class(request.POST or None, request.FILES or None, user=request.user) # adjust the fields depending on user type 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'] categoryform = category_form_class( content_type, request.POST, prefix='category') if form.is_valid() and categoryform.is_valid(): job = form.save(commit=False) pricing = form.cleaned_data['pricing'] if require_payment and is_free: job.payment_method = 'paid - cc' # set it to pending if the user is anonymous or not an admin if not can_add_active: #job.status = 1 job.status_detail = 'pending' # list types and duration if not job.requested_duration: job.requested_duration = 30 if not job.list_type: job.list_type = 'regular' # set up all the times now = datetime.now() job.activation_dt = now if not job.post_dt: job.post_dt = now # set the expiration date job.expiration_dt = job.activation_dt + timedelta( days=job.requested_duration) # semi-anon job posts don't get a slug field on the form # see __init__ method in JobForm if not job.slug: #job.slug = get_job_unique_slug(slugify(job.title)) job.slug = '%s-%s' % (slugify(job.title), object_type.objects.count()) job = update_perms_and_save(request, form, job) # create invoice job_set_inv_payment(request.user, job, pricing) #setup categories category = Category.objects.get_for_object(job, 'category') sub_category = Category.objects.get_for_object( job, 'sub_category') ## update the category of the job category_removed = False category = categoryform.cleaned_data['category'] if category != '0': Category.objects.update(job, category, 'category') else: # remove category_removed = True Category.objects.remove(job, 'category') Category.objects.remove(job, 'sub_category') if not category_removed: # update the sub category of the job sub_category = categoryform.cleaned_data['sub_category'] if sub_category != '0': Category.objects.update(job, sub_category, 'sub_category') else: # remove Category.objects.remove(job,'sub_category') #save relationships job.save() msg_string = 'Successfully added %s' % job messages.add_message(request, messages.SUCCESS,_(msg_string)) # send notification to administrators recipients = get_notice_recipients( 'module', 'jobs', 'jobrecipients') if recipients: if notification: extra_context = { 'object': job, 'request': request, } notification.send_emails(recipients, 'job_added', extra_context) # send user to the payment page if payment is required if require_payment: if job.payment_method.lower() in ['credit card', 'cc']: if job.invoice and job.invoice.balance > 0: return HttpResponseRedirect(reverse( 'payment.pay_online', args=[job.invoice.id, job.invoice.guid]) ) # send user to thank you or view page if request.user.profile.is_superuser: return HttpResponseRedirect( reverse(success_redirect, args=[job.slug])) else: return HttpResponseRedirect(reverse(thankyou_redirect)) else: # Redirect user w/perms to create pricing if none exist pricings = JobPricing.objects.all() if not pricings and has_perm(request.user, 'jobs.add_jobpricing'): msg_string = 'You need to add a %s Pricing before you can add a %s.' % (get_setting('module', 'jobs', 'label_plural'),get_setting('module', 'jobs', 'label')) messages.add_message(request, messages.WARNING, _(msg_string)) return HttpResponseRedirect(reverse('job_pricing.add')) initial_category_form_data = { 'app_label': 'jobs', 'model': 'job', 'pk': 0, #not used for this view but is required for the form } categoryform = category_form_class( content_type, initial=initial_category_form_data, prefix='category') return render_to_response(template_name, {'form': form, 'require_payment': require_payment, 'categoryform': categoryform}, context_instance=RequestContext(request))
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) messages.add_message(request, messages.SUCCESS, 'Successfully renewed %s' % directory) # 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=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, prefix='category') 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, prefix='category') return render_to_response(template_name, { 'form': form, 'metaform': metaform, 'categoryform': categoryform, }, context_instance=RequestContext(request))
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, prefix='category') 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, prefix='category') return render_to_response(template_name, { 'page': page, 'form': form, 'metaform': metaform, 'categoryform': categoryform, }, context_instance=RequestContext(request))