def get_organisations(self, user): if Profile.is_admin(user): return Organisation.objects.all() elif Profile.is_regional_lead(user): return Organisation.objects.filter(location=user.profile.location) else: return Organisation.list_user_organisations(user)
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 dispatch(self, request, *args, **kwargs): self.user = request.user self.feedback_required = [] # check if user is tutor if Profile.is_presenter(self.user) and self.allow_presenter: self.validate_presenter_feedback() elif (Profile.is_organiser(self.user) and Organisation.list_user_organisations(self.user).exists()): # if user is from organisation self.validate_organisation_feedback() elif (Profile.is_regional_lead(self.user) or Profile.is_admin(self.user)): pass # don't restrict lead and admin else: msg = """ To request workshop you need to create organisaiton.\n\n Please use organisation tab above to create your organisation""" # return json for ajax request return render(request, 'error.html', {'message': msg}) if self.feedback_required: return self.return_response(request) return super(WorkshopRestrictMixin, self).dispatch(request, *args, **kwargs)
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 dispatch(self, request, *args, **kwargs): self.user = request.user self.feedback_required = [] # check if user is tutor if Profile.is_presenter(self.user) and self.allow_presenter: self.validate_presenter_feedback() elif (Profile.is_organiser(self.user) and Organisation.list_user_organisations(self.user).exists()): # if user is from organisation self.validate_organisation_feedback() elif (Profile.is_regional_lead(self.user) or Profile.is_admin(self.user)): pass # don't restrict lead and admin else: raise PermissionDenied if self.feedback_required: return self.return_response(request) return super(WorkshopRestrictMixin, self).dispatch(request, *args, **kwargs)