Пример #1
0
def group_home(request):
    object_list = None
    clear_session(request, ["pwg", "search", "frequencies"])

    if request.GET.get("init"):
        clear_session(request, ["search"])
        if request.user.groups.filter(name="publicwork_jr"):
            object_list = request.user.person.publicworkgroup_set.all()
            for item in object_list:
                item.click_link = reverse("group_detail", args=[item.pk])
    else:
        queryset, page = search_pw_group(request, PublicworkGroup)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.click_link = reverse("group_detail", args=[item.pk])

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "goback_link": reverse("group_home"),
        "title": "public work - groups",
        "centers": [[str(cnt.pk), str(cnt)] for cnt in Center.objects.all()],
        "nav": "gp_home",
    }
    return render(request, "publicwork/groups/home.html", context)
Пример #2
0
def group_frequencies(request, pk):
    clear_session(request, ["search", "frequencies"])
    belongs_center(request, pk, PublicworkGroup)
    page = request.GET["page"] if request.GET.get("page") else 1

    pw_group = PublicworkGroup.objects.get(pk=pk)
    frequencies = get_frequencies([mbr.id for mbr in pw_group.members.all()])

    context = {
        "object":
        pw_group,
        "title":
        "group detail | frequencies",
        "object_list":
        paginator(
            sorted(frequencies, key=lambda x: x["rank"], reverse=True),
            page=page,
        ),
        "nav":
        "frequencies",
        "now":
        datetime.now().date(),
    }

    return render(request, "publicwork/groups/detail.html", context)
Пример #3
0
def add_frequency(request, pk):
    object_list = None
    seeker = Seeker.objects.get(pk=pk)

    if request.GET.get("lect_pk"):
        lecture = Lecture.objects.get(pk=request.GET["lect_pk"])

        if request.method == "POST":
            # create listener
            Listener.objects.create(
                lecture=lecture,
                seeker=seeker,
                ranking=int(request.POST["ranking"]),
                observations=request.POST["observations"],
            )
            messages.success(
                request, "The seeker has been inserted on lecture!"
            )
            return redirect("seeker_frequencies", pk=pk)

        context = {
            "seeker": seeker,
            "form": ListenerForm,
            "insert_to": f"{lecture.theme} - {lecture.center}",
            "title": "confirm to insert",
        }
        return render(
            request,
            "publicwork/elements/confirm_add_listener.html",
            context,
        )

    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_lecture(request, Lecture)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.add_link = reverse("add_frequency", args=[pk])

    context = {
        "object": seeker,
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "goback_link": reverse("seeker_home"),
        "title": "add frequency",
        "type_list": LECTURE_TYPES,
        "pre_freqs": [lect.pk for lect in seeker.lecture_set.all()],
        "tab": "frequencies",
        "add": True,
        "goback": reverse("seeker_frequencies", args=[pk]),
    }
    return render(request, "publicwork/seeker_add_or_change.html", context)
Пример #4
0
def add_listener(request, lect_pk):
    object_list = None
    lecture = Lecture.objects.get(pk=lect_pk)

    if request.GET.get("seek_pk"):
        seeker = Seeker.objects.get(pk=request.GET["seek_pk"])

        if request.method == "POST":
            # create listener
            Listener.objects.create(
                lecture=lecture,
                seeker=seeker,
                ranking=int(request.POST["ranking"]),
                observations=request.POST["observations"],
            )
            messages.success(
                request, "The seeker has been inserted on lecture!"
            )
            return redirect("lecture_detail", pk=lect_pk)

        context = {
            "seeker": seeker,
            "form": ListenerForm,
            "insert_to": f"{lecture.theme} {lecture.center}",
            "title": "confirm to insert",
        }
        return render(
            request,
            "publicwork/elements/confirm_add_listener.html",
            context,
        )

    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_seeker(request, Seeker)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.add_link = reverse("add_listener", args=[lect_pk])

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "goback_link": reverse("add_listener", args=[lecture.pk]),
        "status_list": SEEKER_STATUS,
        "pre_listeners": [seek.pk for seek in lecture.listeners.all()],
        "title": "add listener",
        "object": lecture,
        "centers": [[str(cnt.pk), str(cnt)] for cnt in Center.objects.all()],
    }
    return render(request, "publicwork/listener_add.html", context)
Пример #5
0
def membership_add_frequency(request, group_pk, person_pk):
    object_list = None
    person = Person.objects.get(pk=person_pk)

    if request.GET.get("pk"):
        event = Event.objects.get(pk=request.GET.get("pk"))

        if request.method == "POST":
            person.frequency_set.create(
                person=person,
                event=event,
                aspect=person.aspect,
                ranking=request.POST.get("ranking"),
                observations=request.POST.get("observations"),
            )
            messages.success(request, "The frequency has been inserted!")
            return redirect(
                "mentoring_member_frequencies",
                group_pk=group_pk,
                person_pk=person_pk,
            )

        context = {
            "object": person,
            "form": MentoringFrequencyForm,
            "insert_to": f"{event.activity.name} {event.center}",
            "title": "confirm to insert",
        }
        return render(request, "workgroup/elements/confirm_add_frequency.html",
                      context)

    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_event(request, Event)
        object_list = paginator(queryset, page=page)
        # add action links
        for member in object_list:
            member.add_link = reverse("membership_add_frequency",
                                      args=[group_pk, person_pk])

    context = {
        "object": person,
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "title": "insert frequencies",
        "type_list": ACTIVITY_TYPES,
        "pre_freqs": [obj.event.pk for obj in person.frequency_set.all()],
        "group_pk": group_pk,
    }
    return render(request, "workgroup/mentoring/member_add_frequency.html",
                  context)
Пример #6
0
def group_add_mentor(request, pk):
    belongs_center(request, pk, PublicworkGroup)
    pw_group = PublicworkGroup.objects.get(pk=pk)

    if request.GET.get("person_pk"):
        person = Person.objects.get(pk=request.GET["person_pk"])

        if request.method == "POST":
            pw_group.mentors.add(person)
            messages.success(request, "The mentor has been inserted on group!")
            return redirect("group_detail", pk=pk)

        context = {
            "member": person.name,
            "insert_to": f"{pw_group.name} {pw_group.center}",
            "title": "confirm to insert",
        }
        return render(
            request,
            "publicwork/elements/confirm_add_member.html",
            context,
        )

    if request.GET.get("init"):
        clear_session(request, ["search"])
        object_list = None
    else:
        queryset, page = search_person(request, Person)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.add_link = (reverse("group_add_mentor", args=[pk]) +
                             f"?person_pk={ item.pk }")

    context = {
        "object": pw_group,
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "goback_link": reverse("group_add_mentor", args=[pw_group.pk]),
        "aspect_list": ASPECTS,
        "status_list": STATUS,
        "title": "group add mentor",
        "nav": "add_mentor",
        "goback": reverse("group_detail", args=[pk]),
        "pk": pk,
        "flag": "group",
    }
    return render(request, "publicwork/groups/detail.html", context)
Пример #7
0
def mentoring_add_frequencies(request, group_pk):
    workgroup = Workgroup.objects.get(pk=group_pk)

    if request.GET.get("event_pk"):
        # get event
        event = Event.objects.get(pk=request.GET["event_pk"])
        # create and prepare frequencies object in session, if necessary
        if not request.session.get("frequencies"):
            request.session["frequencies"] = {
                "event": {},
                "listeners": [],
            }
            preparing_the_session(request, workgroup.members.all(), event)

    if request.method == "POST":
        listeners = get_listeners_dict(request)
        if listeners:
            for listener in listeners:
                new_freq = dict(
                    event=event,
                    person_id=listener["id"],
                    aspect=listener["asp"],
                    ranking=listener["rank"],
                    observations=listener["obs"],
                )
                Frequency.objects.create(**new_freq)
        return redirect("mentoring_group_detail", pk=group_pk)

    if request.GET.get("init"):
        clear_session(request, ["search"])
        object_list = None
    else:
        queryset, page = search_event(request, Event)
        object_list = paginator(queryset, page=page)

    context = {
        "object": workgroup,
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "goback_link": reverse("group_detail", args=[group_pk]),
        "title": "workgroup add members",
        "nav": "detail",
        "tab": "add_frequencies",
        "goback": reverse("mentoring_group_detail", args=[group_pk]),
        "group_pk": group_pk,
    }
    return render(request, "workgroup/mentoring/group_detail.html", context)
Пример #8
0
def membership_insert(request, workgroup_id):
    object_list = None
    workgroup = Workgroup.objects.get(pk=workgroup_id)

    if request.GET.get("pk"):
        person = Person.objects.get(pk=request.GET.get("pk"))

        if request.method == "POST":
            workgroup.members.add(person)
            messages.success(request,
                             "The person has been inserted on workgroup!")
            return redirect("workgroup_detail", pk=workgroup_id)

        context = {
            "person": person,
            "insert_to": f"{workgroup.name} {workgroup.center}",
            "title": "confirm to insert",
        }
        return render(
            request,
            "workgroup/elements/confirm_to_insert_membership.html",
            context,
        )
    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_person(request, Person)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.add_link = (
                reverse("membership_insert", args=[workgroup_id]) +
                f"?pk={ item.pk }")

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "goback_link": reverse("membership_insert", args=[workgroup.pk]),
        "aspect_list": ASPECTS,
        "status_list": STATUS,
        "form": MembershipForm(initial={"workgroup": workgroup}),
        "title": "create membership",
        "object": workgroup,
        "flag": "membership",
    }
    return render(request, "workgroup/membership_insert.html", context)
Пример #9
0
def group_add_member(request, pk):
    object_list = None
    belongs_center(request, pk, PublicworkGroup)
    pw_group = PublicworkGroup.objects.get(pk=pk)

    if request.GET.get("seek_pk"):
        seeker = Seeker.objects.get(pk=request.GET["seek_pk"])

        if request.method == "POST":
            pw_group.members.add(seeker)
            messages.success(request, "The member has been inserted on group!")
            return redirect("group_detail", pk=pk)

        context = {
            "member": seeker.name,
            "insert_to": f"{pw_group.name} {pw_group.center}",
            "title": "confirm to insert",
        }
        return render(
            request,
            "publicwork/elements/confirm_add_member.html",
            context,
        )

    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_seeker(request, Seeker)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.add_member_link = reverse("group_add_member", args=[pk])

    context = {
        "object": pw_group,
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "goback_link": reverse("group_add_member", args=[pw_group.pk]),
        "status_list": SEEKER_STATUS,
        "title": "group add member",
        "nav": "add_member",
        "goback": reverse("group_detail", args=[pk]),
        "centers": [[str(cnt.pk), str(cnt)] for cnt in Center.objects.all()],
        "pk": pk,
    }
    return render(request, "publicwork/groups/detail.html", context)
Пример #10
0
def center_home(request):
    object_list = None
    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_center(request, Center)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.click_link = reverse("center_detail", args=[item.pk])

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "title": "center home",
        "nav": "home",
    }
    return render(request, "center/center_home.html", context)
Пример #11
0
def orders(request):
    object_list = None
    if request.session.get("order"):
        del request.session["order"]
    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_order(request, Order)
        object_list = paginator(queryset, 25, page=page)

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "status_list": ORDER_STATUS,
        "title": "Orders",
        "nav": "order",
    }
    return render(request, "treasury/orders.html", context)
Пример #12
0
def membership_ps_create(request, person_id):
    object_list = None
    person = Person.objects.get(id=person_id)

    if request.GET.get("pk"):
        workgroup = Workgroup.objects.get(pk=request.GET.get("pk"))

        if request.method == "POST":
            workgroup.members.add(person)
            messages.success(request,
                             "The person has been inserted on workgroup!")
            return redirect("membership_ps_list", person_id=person_id)

        context = {
            "insert_to": f"{workgroup.name} {workgroup.center}",
            "title": "confirm to insert",
            "person": person,  # to header element
        }
        return render(request, "person/elements/confirm_to_insert.html",
                      context)

    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_workgroup(request, Workgroup)
        object_list = paginator(queryset, page=page)

    context = {
        "object_list":
        object_list,
        "title":
        "insert membership",
        "init":
        True if request.GET.get("init") else False,
        "goback_link":
        reverse("membership_ps_create", args=[person_id]),
        "person":
        person,  # to header element
        "workgroup_types":
        WORKGROUP_TYPES,
        "pre_groups":
        [person.workgroup.pk for person in person.membership_set.all()],
    }
    return render(request, "person/membership_ps_insert.html", context)
Пример #13
0
def lecture_home(request):
    object_list = None
    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_lecture(request, Lecture)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.click_link = reverse("lecture_detail", args=[item.pk])

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "title": "lecture home",
        "type_list": LECTURE_TYPES,
        "nav": "lc_home",
    }
    return render(request, "publicwork/lecture_home.html", context)
Пример #14
0
def frequency_ps_insert(request, person_id):
    object_list = None
    person = Person.objects.get(id=person_id)

    if request.GET.get("pk"):
        event = Event.objects.get(pk=request.GET.get("pk"))

        if request.method == "POST":
            person.frequency_set.create(
                person=person,
                event=event,
                aspect=person.aspect,
            )
            messages.success(request, "The Frequency has been inserted!")
            return redirect("frequency_ps_list", person_id=person_id)

        context = {
            "person": person,
            "insert_to": f"{event.activity.name} {event.center}",
            "title": "confirm to insert",
        }
        return render(request, "person/elements/confirm_to_insert.html",
                      context)

    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_event(request, Event)
        object_list = paginator(queryset, page=page)
        # add action links
        for member in object_list:
            member.add_link = reverse("frequency_ps_insert", args=[person_id])

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "title": "insert frequencies",
        "person": person,  # to header element
        "type_list": ACTIVITY_TYPES,
        "pre_freqs":
        [person.event.pk for person in person.frequency_set.all()],
    }
    return render(request, "person/frequency_insert.html", context)
Пример #15
0
def event_home(request):
    object_list = None
    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_event(request, Event)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.click_link = reverse("event_detail", args=[item.pk])

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "title": "event home",
        "type_list": ACTIVITY_TYPES,
        "nav": "home",
    }
    return render(request, "event/event_home.html", context)
Пример #16
0
def group_detail(request, pk):
    clear_session(request, ["search", "frequencies"])
    belongs_center(request, pk, PublicworkGroup)
    pw_group = PublicworkGroup.objects.get(pk=pk)
    object_list = pw_group.members.all().order_by("name")
    # add action links
    for item in object_list:
        item.click_link = (reverse("seeker_detail", args=[item.pk]) +
                           f"?pwg={pk}")
        item.del_member_link = reverse("group_remove_member",
                                       args=[pk, item.pk])

    context = {
        "object": pw_group,
        "object_list": object_list,
        "title": "group detail",
        "nav": "info",
        "table_title": "Members",
    }
    return render(request, "publicwork/groups/detail.html", context)
Пример #17
0
def workgroup_home(request):
    object_list = None
    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_workgroup(request, Workgroup)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.click_link = reverse("workgroup_detail", args=[item.pk])

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "goback_link": reverse("workgroup_home"),
        "title": "workgroups",
        "workgroup_types": WORKGROUP_TYPES,
        "nav": "home",
    }
    return render(request, "workgroup/workgroup_home.html", context)
Пример #18
0
def seeker_home(request):
    object_list = None
    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_seeker(request, Seeker)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.click_link = reverse("seeker_detail", args=[item.pk])

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "goback_link": reverse("seeker_home"),
        "status_list": SEEKER_STATUS,
        "title": "seeker home",
        "centers": [[str(cnt.pk), str(cnt)] for cnt in Center.objects.all()],
        "nav": "sk_home",
    }
    return render(request, "publicwork/seeker_home.html", context)
Пример #19
0
def person_home(request):
    object_list = None
    if request.GET.get("init"):
        clear_session(request, ["search"])
    else:
        queryset, page = search_person(request, Person)
        object_list = paginator(queryset, page=page)
        # add action links
        for item in object_list:
            item.click_link = reverse("person_detail", args=[item.id])

    context = {
        "object_list": object_list,
        "init": True if request.GET.get("init") else False,
        "aspect_list": ASPECTS,
        "status_list": STATUS,
        "title": "person home",
        "nav": "home",
        "flag": "person",
    }
    return render(request, "person/person_home.html", context)
Пример #20
0
def insert_yourself(request):
    clear_session(request, ["fbk"])
    if request.method == "POST":
        # reCAPTCHA validation
        recaptcha_response = request.POST.get("g-recaptcha-response")
        data = {
            "secret": settings.GOOGLE_RECAPTCHA_SECRET_KEY,
            "response": recaptcha_response,
        }
        r = requests.post(
            "https://www.google.com/recaptcha/api/siteverify", data=data
        )
        result = r.json()
        # if reCAPTCHA returns False
        if not result["success"]:
            request.session["fbk"] = {"type": "recaptcha"}
            return redirect("feedback")

        # checking if the email has already been used in the User
        if User.objects.filter(email=request.POST.get("email")):
            request.session["fbk"] = {
                "type": "pupil",
                "email": request.POST.get("email"),
            }
            return redirect("feedback")

        # checking if the email has already been used in the Seeker
        if Seeker.objects.filter(email=request.POST.get("email")):
            request.session["fbk"] = {
                "type": "seeker",
                "email": request.POST.get("email"),
            }
            return redirect("feedback")

        # checking if the email has already been used in the TempRegOfSeeker
        if TempRegOfSeeker.objects.filter(email=request.POST.get("email")):
            request.session["fbk"] = {
                "type": "email",
                "email": request.POST.get("email"),
            }
            return redirect("feedback")

        # populating form with request.POST
        form = TempRegOfSeekerForm(request.POST, request.FILES)

        if form.is_valid():
            # save form data in TempRegOfSeeker table
            form.save()
            # get temp_seeker using email (in form cleaned_data)
            _seeker = TempRegOfSeeker.objects.get(
                email=form.cleaned_data.get("email")
            )
            # send email
            _link = "{}://{}{}".format(
                "http",
                "localhost:8000",
                reverse("confirm_email", args=[_seeker.id]),
            )
            send_email(
                body_text="publicwork/insert_yourself/emails/to_confirm.txt",
                body_html="publicwork/insert_yourself/emails/to_confirm.html",
                _subject="confirmação de email",
                _to=_seeker.email,
                _context={"name": _seeker.name, "link": _link},
            )

        request.session["fbk"] = {
            "type": "email",
            "email": request.POST.get("email"),
        }
        return redirect("feedback")

    context = {
        "form": TempRegOfSeekerForm(),
        "recaptcha_site_key": settings.GOOGLE_RECAPTCHA_SITE_KEY,
        "form_name": "Seeker",
        "form_path": "publicwork/forms/seeker.html",
        "goback": reverse("seeker_home"),
        "title": "create seeker",
        "to_create": True,
    }
    return render(request, "publicwork/insert_yourself/form.html", context)