Example #1
0
File: forms.py Project: farcaz/wye
 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)
Example #2
0
File: forms.py Project: bIgBV/wye
 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)
Example #3
0
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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
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)
Example #7
0
    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)
Example #8
0
File: mixins.py Project: bIgBV/wye
    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)