def workshop_create(request): template_name = 'workshops/workshop_create.html' context_dict = {} if not Organisation.list_user_organisations(request.user).exists(): msg = """ To request workshop you need to create organisaiton.\n\n Please use organisation tab above to create your organisation """ return render(request, 'error.html', {'message': msg}) if request.method == 'GET': form = WorkshopForm(user=request.user) context_dict['form'] = form return render(request, template_name, context_dict) form = WorkshopForm(user=request.user, data=request.POST) if not form.is_valid(): context_dict['form'] = form context_dict['errors'] = form.errors return render(request, template_name, context_dict) workshop = form.save() domain = Site.objects.get_current().domain context = { 'workshop': workshop, 'date': workshop.expected_date, 'workshop_url': domain + '/workshop/{}/'.format(workshop.id) } # Collage POC and admin email poc_admin_user = Profile.get_user_with_type( user_type=['Collage POC', 'admin'] ).values_list('email', flat=True) org_user_emails = workshop.requester.user.filter( is_active=True).values_list('email', flat=True) # all presenter if any all_presenter_email = workshop.presenter.values_list( 'email', flat=True) # List of tutor who have shown interest in that location region_interested_member = Profile.objects.filter( interested_locations=workshop.requester.location, usertype__slug='tutor' ).values_list('user__email', flat=True) all_email = [] all_email.extend(org_user_emails) all_email.extend(all_presenter_email) all_email.extend(poc_admin_user) all_email.extend(region_interested_member) all_email = set(all_email) send_tweet(context) subject = '[PythonExpress] Workshop request status.' email_body = loader.get_template( 'email_messages/workshop/create_workshop/message.html').render(context) text_body = loader.get_template( 'email_messages/workshop/create_workshop/message.txt').render(context) send_email_to_list( subject, body=email_body, users_list=all_email, text_body=text_body) success_url = reverse_lazy('workshops:workshop_list') return HttpResponseRedirect(success_url)
def contact(request): if request.method == 'POST': form = ContactUsForm(request.POST) if form.is_valid(): email_context = Context({ 'contact_name': form.cleaned_data['name'], 'contact_email': form.cleaned_data['email'], 'comments': form.cleaned_data['comments'], 'conatct_number': form.cleaned_data['contact_number'], 'feedback_type': form.cleaned_data['feedback_type'] }) subject = "PythonExpress Feedback by %s" % ( form.cleaned_data['name']) text_body = loader.get_template( 'email_messages/contactus/message.txt').render(email_context) email_body = loader.get_template( 'email_messages/contactus/message.html').render(email_context) user_subject = '[PythonExpress] Feedback Received' user_text_body = loader.get_template( 'email_messages/contactus/message_user.txt').render( email_context) user_email_body = loader.get_template( 'email_messages/contactus/message_user.html').render( email_context) site_admins = [email for name, email in settings.MANAGERS ] # @UnusedVariable try: regional_lead = Profile.objects.filter( usertype__slug__in=['lead', 'admin']).values_list( 'user__email', flat=True) regional_lead.extend(site_admins) send_email_to_list(subject, users_list=regional_lead, body=email_body, text_body=text_body) send_email_to_id(user_subject, body=user_email_body, email_id=form.cleaned_data['email'], text_body=user_text_body) except Exception as e: print(e) return HttpResponseRedirect('/thankyou') else: if request.user.is_authenticated(): form = ContactUsForm( initial={ 'name': request.user.first_name + " " + request.user.last_name, 'email': request.user.email }) else: form = ContactUsForm() return render(request, 'contact.html', {'form': form})
def save(self, force_insert=False, force_update=False, using=None): """ send mail to region interested member whenever new workshop is requested in respective region, therefore overriding pre save method so mails are only send when new object is created. :param force_insert: bool force_insert :param force_update: bool force_insert :param using: using :return: instance """ from wye.profiles.models import Profile if not self.id: domain = Site.objects.get_current().domain context = { "workshop": self, "date": self.expected_date, "workshop_url": domain + "/workshop/{}/".format(self.id), "workshop_topic": self.workshop_section.name, } # get region_interested_member email ids to notify them region_interested_member = Profile.objects.filter( interested_locations=self.requester.location, usertype__slug="tutor" ).values_list("user__email", flat=True) subject = "[PythonExpress] Workshop request status." email_body = loader.get_template("email_messages/workshop/create_workshop/message.html").render(context) text_body = loader.get_template("email_messages/workshop/create_workshop/message.txt").render(context) send_email_to_list(subject, body=email_body, users_list=region_interested_member, text_body=text_body) super(Workshop, self).save(force_insert, force_update, using)
def post(self, request, *args, **kwargs): form = OrganisationForm(data=request.POST) if form.is_valid(): form.instance.modified_by = request.user form.instance.created_by = request.user form.instance.save() form.instance.user.add(request.user) form.instance.save() host = "{}://{}".format(settings.SITE_PROTOCOL, request.META["HTTP_HOST"]) email_context = Context( { "full_name": "%s %s" % (request.user.first_name, request.user.last_name), "org_id": form.instance.id, "host": host, } ) subject = "%s organisation for region %s is created" % (form.instance.name, form.instance.location.name) email_body = loader.get_template("email_messages/organisation/new.html").render(email_context) text_body = loader.get_template("email_messages/organisation/new.txt").render(email_context) try: send_email_to_id(subject, body=email_body, email_id=request.user.email, text_body=text_body) except Exception as e: print(e) try: regional_lead = Profile.objects.filter( interested_locations=form.instance.location, usertype__slug="lead" ).values_list("user__email", flat=True) send_email_to_list(subject, body=email_body, users_list=regional_lead, text_body=text_body) except Exception as e: print(e) return HttpResponseRedirect(self.success_url) else: return render(request, self.template_name, {"form": form})
def partner_view(request): if request.method == 'POST': form = PartnerForm(request.POST) if form.is_valid(): email_context = Context({ 'org_name': form.cleaned_data['org_name'], 'org_url': form.cleaned_data['org_url'], 'partner_type': form.cleaned_data['partner_type'], 'description': form.cleaned_data['description'], 'python_use': form.cleaned_data['python_use'], 'comments': form.cleaned_data['comments'], 'name': form.cleaned_data['name'], 'email': form.cleaned_data['email'], 'contact_name': form.cleaned_data['name'], 'contact_email': form.cleaned_data['email'], 'conatct_number': form.cleaned_data['contact_number'], }) subject = "[PythonExpress] Partnership request by %s" % ( form.cleaned_data['org_name']) text_body = loader.get_template( 'email_messages/partner/partner_message.txt').render( email_context) email_body = loader.get_template( 'email_messages/partner/partner_message.html').render (email_context) user_subject = '[PythonExpress] Partnership request Received' user_text_body = loader.get_template( 'email_messages/partner/message_user.txt').render( email_context) user_email_body = loader.get_template( 'email_messages/partner/message_user.html').render( email_context) try: send_email_to_list( subject, users_list=['*****@*****.**'], body=email_body, text_body=text_body) send_email_to_id( user_subject, body=user_email_body, email_id=form.cleaned_data['email'], text_body=user_text_body) except Exception as e: print(e) return HttpResponseRedirect('/thankyou') else: form = PartnerForm() return render(request, 'partner.html', {'form': form})
def workshop_create(request): template_name = "workshops/workshop_create.html" context_dict = {} if not Organisation.list_user_organisations(request.user).exists(): msg = """ To request workshop you need to create organisaiton.\n\n Please use organisation tab above to create your organisation """ return render(request, "error.html", {"message": msg}) if request.method == "GET": form = WorkshopForm(user=request.user) context_dict["form"] = form return render(request, template_name, context_dict) form = WorkshopForm(user=request.user, data=request.POST) if not form.is_valid(): context_dict["form"] = form context_dict["errors"] = form.errors return render(request, template_name, context_dict) workshop = form.save() domain = Site.objects.get_current().domain context = { "workshop": workshop, "date": workshop.expected_date, "workshop_url": domain + "/workshop/{}/".format(workshop.id), } # Collage POC and admin email poc_admin_user = Profile.get_user_with_type(user_type=["Collage POC", "admin"]).values_list("email", flat=True) org_user_emails = workshop.requester.user.filter(is_active=True).values_list("email", flat=True) # all presenter if any all_presenter_email = workshop.presenter.values_list("email", flat=True) # List of tutor who have shown interest in that location region_interested_member = Profile.objects.filter( interested_locations=workshop.requester.location, usertype__slug="tutor" ).values_list("user__email", flat=True) all_email = [] all_email.extend(org_user_emails) all_email.extend(all_presenter_email) all_email.extend(poc_admin_user) all_email.extend(region_interested_member) all_email = set(all_email) send_tweet(context) subject = "[PythonExpress] Workshop request status." email_body = loader.get_template("email_messages/workshop/create_workshop/message.html").render(context) text_body = loader.get_template("email_messages/workshop/create_workshop/message.txt").render(context) send_email_to_list(subject, body=email_body, users_list=all_email, text_body=text_body) success_url = reverse_lazy("workshops:workshop_list") return HttpResponseRedirect(success_url)
def post(self, request, *args, **kwargs): form = OrganisationForm(data=request.POST) if form.is_valid(): form.instance.modified_by = request.user form.instance.created_by = request.user form.instance.save() form.instance.user.add(request.user) form.instance.save() user_profile = Profile.objects.get( user__id=self.request.user.id) if not ('poc' in user_profile.get_user_type): poc_type = UserType.objects.get(slug='poc') user_profile.usertype.add(poc_type) user_profile.save() host = '{}://{}'.format(settings.SITE_PROTOCOL, request.META['HTTP_HOST']) email_context = Context({ 'full_name': '%s %s' % (request.user.first_name, request.user.last_name), 'org_id': form.instance.id, 'host': host }) subject = "%s organisation for region %s is created" % ( form.instance.name, form.instance.location.name) email_body = loader.get_template( 'email_messages/organisation/new.html').render(email_context) text_body = loader.get_template( 'email_messages/organisation/new.txt').render(email_context) regional_lead = Profile.objects.filter( interested_locations=form.instance.location, usertype__slug='lead').values_list('user__email', flat=True) send_email_to_id(subject, body=email_body, email_id=request.user.email, text_body=text_body) send_email_to_list(subject, body=email_body, users_list=regional_lead, text_body=text_body) return HttpResponseRedirect(self.success_url) else: return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs): form = OrganisationForm(data=request.POST) if form.is_valid(): form.instance.modified_by = request.user form.instance.created_by = request.user form.instance.save() form.instance.user.add(request.user) form.instance.save() user_profile = Profile.objects.get(user__id=self.request.user.id) if not ('poc' in user_profile.get_user_type): poc_type = UserType.objects.get(slug='poc') user_profile.usertype.add(poc_type) user_profile.save() host = '{}://{}'.format(settings.SITE_PROTOCOL, request.META['HTTP_HOST']) email_context = Context({ 'full_name': '%s %s' % (request.user.first_name, request.user.last_name), 'org_id': form.instance.id, 'host': host }) subject = "%s organisation for region %s is created" % ( form.instance.name, form.instance.location.name) email_body = loader.get_template( 'email_messages/organisation/new.html').render(email_context) text_body = loader.get_template( 'email_messages/organisation/new.txt').render(email_context) regional_lead = Profile.objects.filter( interested_locations=form.instance.location, usertype__slug='lead').values_list('user__email', flat=True) send_email_to_id(subject, body=email_body, email_id=request.user.email, text_body=text_body) send_email_to_list(subject, body=email_body, users_list=regional_lead, text_body=text_body) return HttpResponseRedirect(self.success_url) else: return render(request, self.template_name, {'form': form})
def contact(request): if request.method == 'POST': form = ContactUsForm(request.POST) if form.is_valid(): email_context = Context({ 'contact_name': form.cleaned_data['name'], 'contact_email': form.cleaned_data['email'], 'comments': form.cleaned_data['comments'], 'conatct_number': form.cleaned_data['contact_number'], 'feedback_type': form.cleaned_data['feedback_type'] }) subject = "PythonExpress Feedback by %s" % ( form.cleaned_data['name']) text_body = loader.get_template( 'email_messages/contactus/message.txt').render(email_context) email_body = loader.get_template( 'email_messages/contactus/message.html').render(email_context) user_subject = '[PythonExpress] Feedback Received' user_text_body = loader.get_template( 'email_messages/contactus/message_user.txt').render( email_context) user_email_body = loader.get_template( 'email_messages/contactus/message_user.html').render( email_context) try: regional_lead = Profile.objects.filter( usertype__slug__in=['lead', 'admin']).values_list( 'user__email', flat=True) send_email_to_list( subject, users_list=regional_lead, body=email_body, text_body=text_body) send_email_to_id( user_subject, body=user_email_body, email_id=form.cleaned_data['email'], text_body=user_text_body) except Exception as e: print(e) return HttpResponseRedirect('/thankyou') else: form = ContactUsForm() return render(request, 'contact.html', {'form': form})
def form_valid(self, form): email_context = Context({ 'contact_name': form.cleaned_data['name'], 'contact_email': form.cleaned_data['email'], 'comments': form.cleaned_data['comments'], 'conatct_number': form.cleaned_data['contact_number'], 'feedback_type': form.cleaned_data['feedback_type'] }) subject = "PythonExpress Feedback by %s" % (form.cleaned_data['name']) text_body = loader.get_template( 'email_messages/contactus/message.txt').render(email_context) email_body = loader.get_template( 'email_messages/contactus/message.html').render(email_context) user_subject = '[PythonExpress] Feedback Received' user_text_body = loader.get_template( 'email_messages/contactus/message_user.txt').render(email_context) user_email_body = loader.get_template( 'email_messages/contactus/message_user.html').render(email_context) try: regional_lead = Profile.objects.filter( usertype__slug__in=['lead', 'admin']).values_list( 'user__email', flat=True) send_email_to_list(subject, users_list=regional_lead, body=email_body, text_body=text_body) send_email_to_id(user_subject, body=user_email_body, email_id=form.cleaned_data['email'], text_body=user_text_body) except Exception as e: print(e) return super(ContactFormView, self).form_valid(form)
def form_valid(self, form): email_context = Context({ 'contact_name': form.cleaned_data['name'], 'contact_email': form.cleaned_data['email'], 'comments': form.cleaned_data['comments'], 'conatct_number': form.cleaned_data['contact_number'], 'feedback_type': form.cleaned_data['feedback_type'] }) subject = "PythonExpress Feedback by %s" % (form.cleaned_data['name']) text_body = loader.get_template( 'email_messages/contactus/message.txt').render(email_context) email_body = loader.get_template( 'email_messages/contactus/message.html').render(email_context) user_subject = '[PythonExpress] Feedback Received' user_text_body = loader.get_template( 'email_messages/contactus/message_user.txt').render(email_context) user_email_body = loader.get_template( 'email_messages/contactus/message_user.html').render(email_context) try: regional_lead = models.Profile.objects.filter( usertype__slug__in=['lead', 'admin']).values_list('user__email', flat=True) send_email_to_list( subject, users_list=regional_lead, body=email_body, text_body=text_body) except Exception as e: print(e) try: send_email_to_id( user_subject, body=user_email_body, email_id=form.cleaned_data['email'], text_body=user_text_body) except Exception as e: print(e) return super(ContactFormView, self).form_valid(form)
def save(self, force_insert=False, force_update=False, using=None): """ send mail to region interested member whenever new workshop is requested in respective region, therefore overriding pre save method so mails are only send when new object is created. :param force_insert: bool force_insert :param force_update: bool force_insert :param using: using :return: instance """ from wye.profiles.models import Profile if not self.id: domain = Site.objects.get_current().domain context = { 'workshop': self, 'date': self.expected_date, 'workshop_url': domain + '/workshop/{}/'.format(self.id), 'workshop_topic': self.workshop_section.name } # get region_interested_member email ids to notify them region_interested_member = Profile.objects.filter( interested_locations=self.requester.location, usertype__slug='tutor').values_list('user__email', flat=True) subject = '[PythonExpress] Workshop request status.' email_body = loader.get_template( 'email_messages/workshop/create_workshop/message.html').render( context) text_body = loader.get_template( 'email_messages/workshop/create_workshop/message.txt').render( context) send_email_to_list(subject, body=email_body, users_list=region_interested_member, text_body=text_body) super(Workshop, self).save(force_insert, force_update, using)
def post(self, request, *args, **kwargs): form = OrganisationForm(data=request.POST) if form.is_valid(): form.instance.modified_by = request.user form.instance.created_by = request.user form.instance.save() form.instance.user.add(request.user) form.instance.save() email_context = Context({}) subject = "%s organisation for region %s is created" % ( form.instance.name, form.instance.location.name) email_body = loader.get_template( 'email_messages/organisation/new.html').render(email_context) text_body = loader.get_template( 'email_messages/organisation/new.txt').render(email_context) try: send_email_to_id( subject, body=email_body, email_id=request.user.email, text_body=text_body) except Exception as e: print(e) try: regional_lead = Profile.objects.filter( interested_locations=form.instance.location, usertype__slug='lead').values_list('user__email', flat=True) send_email_to_list( subject, body=email_body, users_list=regional_lead, text_body=text_body) except Exception as e: print(e) return HttpResponseRedirect(self.success_url) else: return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs): form = OrganisationMemberAddForm(data=request.POST) if form.is_valid(): existing_user = form.cleaned_data['existing_user'] new_user = form.cleaned_data['new_user'] org = Organisation.objects.get(id=self.kwargs['pk']) host = '{}://{}'.format(settings.SITE_PROTOCOL, request.META['HTTP_HOST']) context = { 'full_name': '%s %s' % (request.user.first_name, request.user.last_name), 'org_name': org.name, 'host': host } if existing_user: # add user to organisation user = existing_user org.user.add(user) org.save() # set email user's name in context context['new_member_name'] = '%s %s' % (user.first_name, user.last_name) email_context = Context(context) # send mail to user being added subject = "You are added in %s organisation" % ( org.location.name) email_body = loader.get_template( 'email_messages/organisation/to_new_member_existing.html').render( email_context) text_body = loader.get_template( 'email_messages/organisation/to_new_member_existing.txt').render(email_context) send_email_to_id(subject, body=email_body, email_id=user.email, text_body=text_body) elif new_user: # generate a random password random_password = User.objects.make_random_password() # create a user with the email from form user = User(username=self.get_username(new_user), email=new_user, password=random_password) # user is inactive initialy user.is_active = False user.save() # add the user to organisation org.user.add(user.id) org.save() # set the email context, the token will be used to generate a unique varification # link token = self.get_token(user) context['new_member_name'] = '%s' % (user.email) context['token'] = token context['user'] = user email_context = Context(context) # set the meta subject = "[Python Express]:You are added in %s organisation" % ( org.location.name) email_body = loader.get_template( 'email_messages/organisation/to_new_member.html').render(email_context) text_body = loader.get_template( 'email_messages/organisation/to_new_member.txt').render(email_context) # send the mail to new user send_email_to_id(subject, body=email_body, email_id=new_user, text_body=text_body) # These mails will be sent in both cases. subject = "user %s %s added in %s organisation" % ( user.first_name, user.last_name, org.location.name) email_body = loader.get_template( 'email_messages/organisation/member_addition_to_user.html').render( email_context) text_body = loader.get_template( 'email_messages/organisation/member_addition_to_user.txt').render( email_context) # send mail to the user who added the new member send_email_to_id(subject, body=email_body, email_id=request.user.email, text_body=text_body) regional_lead = Profile.objects.filter( interested_locations=org.location, usertype__slug='lead').values_list('user__email', flat=True) email_body = loader.get_template( 'email_messages/organisation/member_addition_to_lead.html').render( email_context) text_body = loader.get_template( 'email_messages/organisation/member_addition_to_lead.txt').render( email_context) # send mail to the regional leads send_email_to_list(subject, body=email_body, users_list=regional_lead, text_body=text_body) return HttpResponseRedirect(self.success_url) else: return render(request, self.template_name, {'form': form})
def partner_view(request): if request.method == 'POST': form = PartnerForm(request.POST) if form.is_valid(): email_context = Context({ 'org_name': form.cleaned_data['org_name'], 'org_url': form.cleaned_data['org_url'], 'partner_type': form.cleaned_data['partner_type'], 'description': form.cleaned_data['description'], 'python_use': form.cleaned_data['python_use'], 'comments': form.cleaned_data['comments'], 'name': form.cleaned_data['name'], 'email': form.cleaned_data['email'], 'contact_name': form.cleaned_data['name'], 'contact_email': form.cleaned_data['email'], 'conatct_number': form.cleaned_data['contact_number'], }) subject = "[PythonExpress] Partnership request by %s" % ( form.cleaned_data['org_name']) text_body = loader.get_template( 'email_messages/partner/partner_message.txt').render( email_context) email_body = loader.get_template( 'email_messages/partner/partner_message.html').render (email_context) user_subject = '[PythonExpress] Partnership request Received' user_text_body = loader.get_template( 'email_messages/partner/message_user.txt').render( email_context) user_email_body = loader.get_template( 'email_messages/partner/message_user.html').render( email_context) try: send_email_to_list(subject, users_list=['*****@*****.**'], body=email_body, text_body=text_body) send_email_to_id(user_subject, body=user_email_body, email_id=form.cleaned_data['email'], text_body=user_text_body) except Exception as e: print(e) return HttpResponseRedirect('/thankyou') else: form = PartnerForm() return render(request, 'partner.html', {'form': form})
def post(self, request, *args, **kwargs): form = OrganisationMemberAddForm(data=request.POST) if form.is_valid(): existing_user = form.cleaned_data['existing_user'] new_user = form.cleaned_data['new_user'] org = Organisation.objects.get(id=self.kwargs['pk']) host = '{}://{}'.format(settings.SITE_PROTOCOL, request.META['HTTP_HOST']) context = { 'full_name': '%s %s' % (request.user.first_name, request.user.last_name), 'org_name': org.name, 'host': host } if existing_user: # add user to organisation user = existing_user org.user.add(user) org.save() # set email user's name in context context['new_member_name'] = '%s %s' % (user.first_name, user.last_name) email_context = Context(context) # send mail to user being added subject = "You are added in %s organisation" % ( org.location.name) email_body = loader.get_template( 'email_messages/organisation/to_new_member_existing.html' ).render(email_context) text_body = loader.get_template( 'email_messages/organisation/to_new_member_existing.txt' ).render(email_context) send_email_to_id(subject, body=email_body, email_id=user.email, text_body=text_body) elif new_user: # generate a random password random_password = User.objects.make_random_password() # create a user with the email from form user = User(username=self.get_username(new_user), email=new_user, password=random_password) # user is inactive initialy user.is_active = False user.save() # add the user to organisation org.user.add(user.id) org.save() # set the email context, the token will be used to generate a unique varification # link token = self.get_token(user) context['new_member_name'] = '%s' % (user.email) context['token'] = token context['user'] = user email_context = Context(context) # set the meta subject = "[Python Express]:You are added in %s organisation" % ( org.location.name) email_body = loader.get_template( 'email_messages/organisation/to_new_member.html').render( email_context) text_body = loader.get_template( 'email_messages/organisation/to_new_member.txt').render( email_context) # send the mail to new user send_email_to_id(subject, body=email_body, email_id=new_user, text_body=text_body) # These mails will be sent in both cases. subject = "user %s %s added in %s organisation" % ( user.first_name, user.last_name, org.location.name) email_body = loader.get_template( 'email_messages/organisation/member_addition_to_user.html' ).render(email_context) text_body = loader.get_template( 'email_messages/organisation/member_addition_to_user.txt' ).render(email_context) # send mail to the user who added the new member send_email_to_id(subject, body=email_body, email_id=request.user.email, text_body=text_body) regional_lead = Profile.objects.filter( interested_locations=org.location, usertype__slug='lead').values_list('user__email', flat=True) email_body = loader.get_template( 'email_messages/organisation/member_addition_to_lead.html' ).render(email_context) text_body = loader.get_template( 'email_messages/organisation/member_addition_to_lead.txt' ).render(email_context) # send mail to the regional leads send_email_to_list(subject, body=email_body, users_list=regional_lead, text_body=text_body) return HttpResponseRedirect(self.success_url) else: return render(request, self.template_name, {'form': form})