def get(self, request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) if page.deleted == False: if page.stripe_verified == True: if utils.has_dashboard_access(request.user, page, 'manager_view_dashboard'): return render( self.request, 'page/dashboard_campaigns.html', { 'page': page, 'donations': donation_statistics(page), 'campaign_types': campaign_types(page), 'campaign_average_duration': campaign_average_duration(page), 'campaign_success_pct': campaign_success_pct(page), }) else: return redirect('notes:error_permissions') else: return stripe_unverified(request, page) else: return redirect('notes:error_page_does_not_exist')
def get(self, request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) if page.deleted == False: if page.stripe_verified == True: if utils.has_dashboard_access(request.user, page, 'manager_view_dashboard'): graph = donation_graph(page, 30) graph_dates = [] graph_donations = [] for k, v in graph.items(): graph_dates.append(k.strftime('%b %-d')) graph_donations.append(int(v / 100)) graph_dates = list(reversed(graph_dates)) graph_donations = list(reversed(graph_donations)) return render( self.request, 'page/dashboard_analytics.html', { 'page': page, 'donations': donation_statistics(page), 'graph_dates': graph_dates, 'graph_donations': graph_donations, }) else: return redirect('notes:error_permissions') else: return stripe_unverified(request, page) else: return redirect('notes:error_page_does_not_exist')
def page_edit(request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) if page.deleted == False: if page.stripe_verified == True: if utils.has_dashboard_access(request.user, page, 'manager_edit'): form = forms.PageEditForm(instance=page) if request.method == 'POST': form = forms.PageEditForm(instance=page, data=request.POST) if form.is_valid(): if 'page_slug' in form.changed_data: # update the stripe metadata for the url metadata = { 'url': 'https://page.fund/{}/'.format( form.cleaned_data['page_slug']), } account = stripe.Account.retrieve( page.stripe_account_id) account.metadata = metadata account.save() form.save() messages.success(request, 'Page updated', fail_silently=True) return redirect('page_dashboard_admin', page_slug=page.page_slug) else: return redirect('notes:error_permissions') else: return stripe_unverified(request, page) else: return redirect('notes:error_page_does_not_exist') return render(request, 'page/page_edit.html', {'page': page, 'form': form})
def get(self, request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) if page.type == 'nonprofit': if page.stripe_verified == True: form = forms.PageEditBankEINForm() else: form = forms.PageUnverifiedEditBankEINForm() else: if page.stripe_verified == True: form = forms.PageEditBankForm() else: form = forms.PageUnverifiedEditBankForm() if page.deleted == False: if utils.has_dashboard_access(request.user, page, 'manager_edit'): if page.stripe_verified == True: return render(request, 'page/page_edit_bank_info.html', { 'page': page, 'form': form }) else: return render(request, 'page/page_unverified_edit_bank_info.html', { 'page': page, 'form': form }) else: return redirect('notes:error_permissions') else: return redirect('notes:error_page_does_not_exist')
def page_image_delete(request, image_pk): image = get_object_or_404(PageImage, pk=image_pk) if utils.has_dashboard_access(request.user, image.page, 'manager_image_edit'): image.delete() return HttpResponse('') else: return redirect('notes:error_permissions')
def post(self, request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) if utils.has_dashboard_access(request.user, page, 'manager_image_edit'): form = forms.PageImageForm(self.request.POST, self.request.FILES) data = image_is_valid(request, form, page) if data: return JsonResponse(data) else: return HttpResponse('') else: return redirect('notes:error_permissions')
def page_invite(request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) if page.deleted == False: if page.stripe_verified == True: if utils.has_dashboard_access(request.user, page, 'manager_invite'): form = forms.ManagerInviteForm() if request.method == 'POST': form = forms.ManagerInviteForm(request.POST) if form.is_valid(): # check if the person we are inviting is already a manager/admin try: user = User.objects.get( email=form.cleaned_data['email']) if user.userprofile in page.admins.all( ) or user.userprofile in page.managers.all(): return redirect( 'notes:error_invite_manager_exists') except User.DoesNotExist: pass data = { "request": request, "form": form, "page": page, "campaign": None } status = invite(data) if status == True: messages.success(request, 'Invitation sent', fail_silently=True) # redirect the admin/manager to the Page return redirect('page_dashboard_admin', page_slug=page.page_slug) return render(request, 'page/page_invite.html', { 'form': form, 'page': page }) # the user isn't an admin or a manager, so they can't invite someone # the only way someone got here was by typing the url manually else: return redirect('notes:error_permissions') else: return stripe_unverified(request, page) else: return redirect('notes:error_page_does_not_exist')
def get(self, request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) if page.deleted == False: if page.stripe_verified == True: if utils.has_dashboard_access(request.user, page, 'manager_image_edit'): images = PageImage.objects.filter(page=page) return render(self.request, 'page/dashboard_images.html', { 'page': page, 'images': images, }) else: return redirect('notes:error_permissions') else: return stripe_unverified(request, page) else: return redirect('notes:error_page_does_not_exist')
def get(self, request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) if page.deleted == False: if page.stripe_verified == True: invitations = ManagerInvitation.objects.filter(page=page, expired=False) if utils.has_dashboard_access(request.user, page, None): return render(self.request, 'page/dashboard_admin.html', { 'page': page, 'invitations': invitations, }) else: return redirect('notes:error_permissions') else: return stripe_unverified(request, page) else: return redirect('notes:error_page_does_not_exist')
def page_profile_update(request, image_pk): image = get_object_or_404(PageImage, pk=image_pk) if utils.has_dashboard_access(request.user, image.page, 'manager_image_edit'): try: profile_picture = PageImage.objects.get(page=image.page, profile_picture=True) except PageImage.DoesNotExist: profile_picture = None if profile_picture: profile_picture.profile_picture = False profile_picture.save() image.profile_picture = True image.save() return HttpResponse('') else: return redirect('notes:error_permissions')
def page_delete(request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) if page.deleted == False: if page.stripe_verified == True: if utils.has_dashboard_access(request.user, page, 'manager_delete'): page.deleted = True page.deleted_by = request.user page.deleted_on = timezone.now() page.name = page.name + "_deleted_" + timezone.now().strftime( "%Y%m%d") page.page_slug = page.page_slug + "deleted" + timezone.now( ).strftime("%Y%m%d") page.save() campaigns = Campaign.objects.filter(page=page, deleted=False) if campaigns: for c in campaigns: c.deleted = True c.deleted_by = request.user c.deleted_on = timezone.now() c.name = c.name + "_deleted_" + timezone.now( ).strftime("%Y%m%d") c.campaign_slug = c.campaign_slug + "deleted" + timezone.now( ).strftime("%Y%m%d") c.save() if not settings.TESTING: try: account = stripe.Account.retrieve( page.stripe_account_id) account.delete() except stripe.error.InvalidRequestError: pass return HttpResponseRedirect(reverse('home')) else: return redirect('notes:error_permissions') else: return stripe_unverified(request, page) else: return redirect('notes:error_page_does_not_exist')
def post(self, request, page_slug): page = get_object_or_404(Page, page_slug=page_slug) # if the page is a nonprofit, # we need their EIN if page.type == 'nonprofit': if page.stripe_verified == True: form = forms.PageEditBankEINForm(request.POST) else: form = forms.PageUnverifiedEditBankEINForm(request.POST) else: if page.stripe_verified == True: form = forms.PageEditBankForm(request.POST) else: form = forms.PageUnverifiedEditBankForm(request.POST) if page.deleted == False: if utils.has_dashboard_access(request.user, page, 'manager_edit'): if form.is_valid(): if not settings.TESTING: # set the stripe type to determine if we need EIN if page.type == 'nonprofit': stripe_type = 'company' else: stripe_type = 'individual' # retrieve account from stripe account = stripe.Account.retrieve( page.stripe_account_id) # update stripe information if page.stripe_verified == True: if account['legal_entity'][ 'ssn_last_4_provided'] == False: account.legal_entity.ssn_last_4 = form.cleaned_data[ 'ssn'] else: account.legal_entity.personal_id_number = form.cleaned_data[ 'ssn'] if page.type == 'nonprofit': account.legal_entity.business_tax_id = form.cleaned_data[ 'ein'] # save the account or redirect for an exception try: account.save() except stripe.error.InvalidRequestError as e: print("e = {}".format(e)) error = create_error(e, request) return redirect( 'notes:error_stripe_invalid_request') # create the bank account external_account = { 'object': 'bank_account', 'country': 'US', 'currency': 'usd', 'account_number': form.cleaned_data['account_number'], 'account_holder_type': stripe_type, 'routing_number': form.cleaned_data['routing_number'], 'default_for_currency': 'true', } try: ext_account = account.external_accounts.create( external_account=external_account) except Exception as e: print("exception = {}".format(e)) # delete the old account here # so that we can set the new one as default first try: account.external_accounts.retrieve( page.stripe_bank_account_id).delete() except: pass page.stripe_bank_account_id = ext_account.id page.save() # email the user substitutions = { "-pagename-": page.name, } utils.email(request.user.email, "blank", "blank", "page_bank_information_updated", substitutions) # add message messages.success(request, 'Bank information updated', fail_silently=True) return redirect('page_dashboard_admin', page_slug=page.page_slug) else: return redirect('notes:error_permissions') else: return redirect('notes:error_page_does_not_exist')