示例#1
0
def getStudentAttendanceList(request):
    try:
        data = request.data
        eventUid = data["eventUid"]
        event = db.getEventByUUID(eventUid)
        attendanceList = utils.convertAttendanceObjectListToListOfDict(
            db.getAttendanceObjectListFromEvent(event))
        return JsonResponse({"attendanceList": attendanceList}, status=200)
    except Exception as e:
        settings.LOGGER.exception(e)
        pass
示例#2
0
def markAttendance(request):
    if request.user.has_perm('api.add_event'):
        if request.method == "GET":
            data = request.query_params
            try:
                eventUUID = data["eventId"]
                event = db.getEventByUUID(eventUUID)
                context = {
                    "attendanceList":
                    db.getAttendanceObjectListFromEvent(event),
                    "eventUUID": eventUUID,
                    "eventTitle": event.title
                }
                return render(request,
                              "webview/markattendance.html",
                              context=context)
            except KeyError:
                return render(request, "Key error")
        else:
            data = request.data
            try:
                eventUUID = data["eventUid"]
                userList = data["userList"]
                print(userList)
                db.markAttendanceByUserListAndEventUUID(eventUUID, userList)
                context = {
                    "swal": {
                        "title": "Success",
                        "text": "Attendance marked successfully",
                        "icon": "success",
                        "butText": "Close"
                    },
                    "swalFlag": True,
                }
                return render(request, 'webview/index.html', context=context)
            except Exception as e:
                print(e)
            print(data)
    else:
        return render(
            request, "webview/errorPage.html", {
                "d1": 4,
                "d2": 0,
                "d3": 1,
                "msg": "Sorry! You are not authorized for this."
            })
示例#3
0
def deleteEvent(request):
    try:
        data = request.data
        eventUID = data["eventUid"]
        event = db.getEventByUUID(eventUID)
        if event:
            creator = event.createdBy
            if creator != request.user:
                return JsonResponse({"status": "NotOk"}, status=408)
        status = db.deleteEventByUid(eventUID)
        if status:
            return JsonResponse({"status": "ok"}, status=200)
        else:
            return JsonResponse({"status": "NotOk"}, status=408)
    except Exception as e:
        settings.LOGGER.exception(
            f"Following exception occured in delete event view\n {e}")
        return JsonResponse({"status": "NotOk"}, status=400)
示例#4
0
def deleteEvent(request):
    try:
        data = request.data
        eventUID = data["eventUid"]
        token = data["token"]
        user = db.getUserFromToken(token)
        event = db.getEventByUUID(eventUID)
        if not user or not event:
            return JsonResponse({"deleteStatus": False}, status=200)
        else:
            creator = event.createdBy
            if user != creator:
                return JsonResponse({"deleteStatus": False}, status=200)
        status = db.deleteEventByUid(eventUID)
        if status:
            return JsonResponse({"deleteStatus": True}, status=200)
        else:
            return JsonResponse({"deleteStatus": False}, status=200)
    except Exception as e:
        settings.LOGGER.exception(
            f"Following exception occured in delete event view\n {e}")
        return JsonResponse({"deleteStatus": False}, status=200)
示例#5
0
def createComplaint(request):
    try:
        data = request.data
        eventUid = data["eventUID"]
        token = data["token"]
        complaint = data["complaint"]
        user = db.getUserFromToken(token)
        event = db.getEventByUUID(eventUid)

        if not user or not event:
            return JsonResponse({"complaintStatus": False}, status=200)
        if not user.has_perm('api.add_complaint'):
            return JsonResponse({"complaintStatus": False}, status=200)

        status = db.addNewComplaintByEventAndUser(complaint, event, user)
        if status:
            return JsonResponse({"complaintStatus": True}, status=200)
        else:
            return JsonResponse({"complaintStatus": False}, status=200)

    except Exception as e:
        settings.LOGGER.exception(
            f"Following error occured in raising complaint\n{e}")
        return JsonResponse({"complaintStatus": False}, status=200)
示例#6
0
def editevent(request):
    if utils.isMember(request.user, settings.ATTENDANCE_TAKER_GROUP_NAME):
        if request.method == "POST":
            data = request.data
            try:
                eventId = data["eventId"]
                title = data["title"]
                description = data["description"]
                venue = data["venue"]
                date = data["date"]
                time = data["time"]
                datetimestring = date + "|" + time
                datetimeobject = datetime.datetime.strptime(
                    datetimestring, "%Y-%m-%d|%H : %M")
                try:
                    helpers = request.POST.getlist('helpers')
                except KeyError:
                    #No need to log this as it shows no helpers were needed
                    helpers = None
                print(helpers)
                status = db.editEvent(eventId=eventId,
                                      title=title,
                                      description=description,
                                      venue=venue,
                                      datetimeobj=datetimeobject,
                                      helpersList=helpers)
                if status:
                    context = {
                        "swal": {
                            "title": "Success",
                            "text": "Event updated successfully",
                            "icon": "success",
                            "butText": "Close"
                        },
                        "swalFlag": True,
                    }
                else:
                    context = {
                        "swal": {
                            "title": "Error",
                            "text":
                            "Unable to update event. Please try again!",
                            "icon": "error",
                            "butText": "Close"
                        },
                        "swalFlag": True,
                    }
                djangoRequest = request._request
                djangoRequest.method = "GET"
                print(
                    f"{djangoRequest.path} {djangoRequest.path_info} {djangoRequest.get_full_path()}"
                )
                djangoRequest.path = djangoRequest.path.replace(
                    "editevent", "upcomingevent")
                djangoRequest.path_info = djangoRequest.path_info.replace(
                    "editevent", "upcomingevent")
                print(
                    f"{djangoRequest.path} {djangoRequest.path_info} {djangoRequest.get_full_path()}"
                )
                resp = upcomingEvents(djangoRequest, context)
                return resp

            except Exception as e:
                LOGGER.exception(
                    f"Following exeception occured in post request of createEvent.\n{e}"
                )
                return custom500ErrorPage(request, None)
                # print(f"webview:createEvent:Following exeception occured.\n{e}\n{traceback.format_exc()}")

        else:
            try:
                data = request.query_params
                eventId = data["eventId"]
                event = db.getEventByUUID(eventId)
                if event:
                    if event.createdBy == request.user or event.helpers.all(
                    ).filter(username=request.user.username):
                        creator = event.createdBy
                        helpers = event.helpers.all()
                        selectedHelperUserNameList = list()
                        for d in helpers:
                            selectedHelperUserNameList.append(d.get_username())
                        grpNameList = list()
                        grpNameMappedList = list()
                        for g in request.user.groups.all():
                            grpNameList.append(g.name)
                            try:
                                mapName = settings.GROUPS_MAP[g.name]
                                grpNameMappedList.extend([mapName, g.name])
                            except Exception as e:
                                pass
                        validHelpersList = db.getHelpersFromGroupName(
                            grpNameList, request.user.username)
                        helperListForView = utils.getHelperFormattedListFromQuerySet(
                            validHelpersList)
                        for data in helperListForView:
                            if data["username"] in selectedHelperUserNameList:
                                data["check"] = True
                            else:
                                data["check"] = False
                        # Function to render create template page
                        context = {
                            "mindate":
                            datetime.datetime.today().strftime('%Y-%m-%d'),
                            "helpers":
                            helperListForView,
                            "audience":
                            grpNameMappedList,
                            "creator":
                            f"{creator.get_full_name()} ({creator.get_username()})",
                            "eventId":
                            eventId,
                            "fillFormFlag":
                            True,
                            "title":
                            event.title,
                            "description":
                            event.description,
                            "venue":
                            event.venue,
                            "date":
                            event.datetime.strftime('%Y-%m-%d'),
                            "time":
                            event.datetime.strftime('%H : %M'),
                        }
                        return render(request,
                                      'webview/editevent.html',
                                      context=context)

                    else:
                        return custom403ErrorPage(request, None)
                else:
                    settings.LOGGER.debug(
                        f"Unknown event with event id {eventId} requested to edit."
                    )
                    return render(
                        request, "webview/errorPage.html", {
                            "d1": 4,
                            "d2": 0,
                            "d3": 4,
                            "msg": "Sorry! Event not found."
                        })
            except Exception as e:
                settings.LOGGER.exception(
                    f"In editevent following exception occured while unpacking data from request {e}"
                )
    else:
        return custom403ErrorPage(request, None)
示例#7
0
def complaint(request):
    if request.user.has_perm('api.add_complaint'):
        if request.method == "GET":
            data = request.query_params
            try:
                eventUUID = data["eventId"]
                event = db.getEventByUUID(eventUUID)
                return render(
                    request, "webview/complaint.html", {
                        "eventUID": eventUUID,
                        "eventTitle": event.title,
                        "eventDate": event.datetime.strftime("%d/%m/%Y")
                    })

            except KeyError as e:
                return render(
                    request, "webview/errorPage.html", {
                        "d1":
                        4,
                        "d2":
                        0,
                        "d3":
                        0,
                        "msg":
                        "Bad request! Try creating complaint from Upcoming Events page."
                    })
        else:
            #A complaint was submitted and now it will saved to database
            data = request.data
            print(data)
            try:
                eventUUID = data["eventUUID"]
                message = data["message"]
                event = db.getEventByUUID(eventUUID)
                user = request.user
                status = db.addNewComplaintByEventAndUser(message, event, user)
                if status:
                    context = {
                        "swal": {
                            "title": "Success",
                            "text": "Complaint submitted successfully",
                            "icon": "success",
                            "butText": "Close"
                        },
                        "swalFlag": True,
                    }
                else:
                    context = {
                        "swal": {
                            "title": "Error",
                            "text":
                            "Unable to submit complaint. Please try again.",
                            "icon": "error",
                            "butText": "Close"
                        },
                        "swalFlag": True,
                    }
            except KeyError:
                context = {
                    "swal": {
                        "title": "Error",
                        "text":
                        "Unable to submit complaint. Please try again.",
                        "icon": "error",
                        "butText": "Close"
                    },
                    "swalFlag": True,
                }
            return render(request, "webview/index.html", context=context)
            # try :
            #     eventUUID = data["eventUUID"]

    else:
        return render(
            request, "webview/errorPage.html", {
                "d1": 4,
                "d2": 0,
                "d3": 1,
                "msg": "Sorry! You are not authorized for this."
            })