コード例 #1
0
def getInfos():
    infos = json.loads(serialize('json', Info.objects.all()))
    for info in infos:
        pics = json.loads(
            serialize('json', InfoPictures.objects.filter(info=info['pk'])))
        info['fields']['pictures'] = getCleanObject(pics)
    return getCleanObject(infos)
コード例 #2
0
def getGalleries():
    galleries = json.loads(serialize('json', Gallery.objects.all()))
    for gallery in galleries:
        pics = json.loads(
            serialize('json',
                      GalleryPictures.objects.filter(gallery=gallery['pk'])))
        gallery['fields']['pictures'] = getCleanObject(pics)
    return getCleanObject(galleries)
コード例 #3
0
def getEvents():
    events = json.loads(serialize('json', Events.objects.all()))
    for event in events:
        pics = json.loads(
            serialize('json',
                      EventsPictures.objects.filter(events=event['pk'])))
        event['fields']['pictures'] = getCleanObject(pics)
    return getCleanObject(events)
コード例 #4
0
def addMember(request):
    try:
        data = JSONParser().parse(request)
        data['token'] = getJWTToken(data)
        if "email" in data and data["email"] is not "":
            data["email"] = data["email"].lower()
            if Member.objects.filter(email=data["email"]).exists():
                raise ValueError(
                    "Email already exists: {}".format(data["email"]))
        else:
            raise ValueError("Email cannot be empty")

        serializer = MemberSerializer(data=data)

        # This is to register the mem.
        if serializer.is_valid():
            serializer.save()
            mem = Member.objects.get(id=serializer.data['id'])
            mem.ev_token = str(mem.id) + binascii.b2a_hex(os.urandom(12))
            mem.save()
            # print serialize('json', [mem])
            sendEmailVerification(mem.id, mem.email, mem.ev_token, request)
            return JSONResponse(getCleanObject(json.loads(serialize('json', [mem]))), status=201)
        else:
            return JSONResponse(serializer.errors, status=400)
    except ValueError:
        logging.error("Registration failed: {}".format(reportError()))
        return JSONResponse(reportError(), status=400)
    except:
        logging.error("Registration failed: {}".format(reportError()))
        return JSONResponse({'msg': "Some error occured"}, status=400)
コード例 #5
0
def login(request):
    (token, member) = user_authenticate(request)
    logging.info("ID = %s\nTOKEN = %s" % (str(id), str(token)))
    if token:
        return JSONResponse(
            {'msg': "Login Successful.", 'token': 'Bearer ' + token,
             'user': getCleanObject(json.loads(serialize('json', [member])))[0]},
            status=200)
    else:
        return JSONResponse({'msg': "Invalid Username/Password"}, status=401)
コード例 #6
0
def getMembers():
    members = json.loads(serialize('json', Member.objects.all()))
    for mem in members:
        del mem['fields']['token']
        del mem['fields']['password']
        pics = json.loads(
            serialize('json', ProfilePictures.objects.filter(owner=mem['pk'])))
        if len(pics) > 0:
            mem['fields']['profilepicture'] = pics[0]['fields']['url']
    return getCleanObject(members)
コード例 #7
0
def updateInfo(request, authMember):
    try:
        body = JSONParser().parse(request)
        infoQuerySet = Info.objects.filter(id=body['id'], owner=authMember)
        infoQuerySet.update(**body)
        return JSONResponse(getCleanObject(
            json.loads(serialize('json', infoQuerySet))),
                            status=200)
    except:
        logging.error("Update info failed: {}".format(reportError()))
        return JSONResponse(reportError(), status=400)
コード例 #8
0
def updateMember(request, authMember):
    try:
        body = JSONParser().parse(request)
        # Body contains no information about fields to update.
        if len(body.keys()) < 1:
            return JSONResponse({'msg': 'There is nothing to update'},
                                status=200)

        # Removes the read only fields from body if exists.
        if 'id' in body.keys():
            body.pop('id')
        if 'token' in body.keys():
            body.pop('token')
        if "is_active" in body.keys():
            body.pop("is_active")
        if "is_verified" in body.keys():
            body.pop("is_verified")

        if authMember.email is not "" and "email" in body.keys() and \
                        authMember.email == body["email"].lower():
            del body["email"]

        sendEmail = False
        if "email" in body.keys() and body["email"] is not "":
            body["email"] = body["email"].lower()
            if Member.objects.filter(email=body["email"]).exists():
                raise ValueError(
                    "Email already exists: {}".format(body["email"]))
            else:
                body["is_active"] = False
                body["ev_token"] = str(authMember.id) + binascii.b2a_hex(
                    os.urandom(12))
                sendEmail = True

        # Hash the password before update.
        if 'password' in body.keys():
            body['password'] = hashpassword(body['password'])

        # Finally mem's remaining provided fields will be updated if provided.
        memQuerySet = Member.objects.filter(token=authMember.token)
        memQuerySet.update(**body)
        if sendEmail:
            sendEmailVerification(authMember.id, body["email"], body["ev_token"], request)

        return JSONResponse(getCleanObject(json.loads(serialize('json', memQuerySet))), status=200)
    except:
        logging.error("Update mem failed: {}".format(reportError()))
        return JSONResponse(reportError(), status=400)
コード例 #9
0
def uploadProfilePic(request):
    authMember = isAuthenticated(request)
    if not authMember:
        notlogged()
    else:
        if request.method == 'POST':
            if len(request.FILES) > 0:
                for i in request.FILES:
                    file = request.FILES[i]
                    try:
                        pic = ProfilePictures.objects.get(owner=authMember)
                        default_storage.delete(MEDIA_ROOT + '/' + str(pic.url))
                        pic.url = file
                        pic.save()
                    except:
                        ProfilePictures(url=file, owner=authMember).save()

        return JSONResponse(getCleanObject(json.loads(serialize('json', [authMember]))), status=200)
コード例 #10
0
def getAllData(request):
    data = {
        'member': getMembers(),
        'infos': getInfos(),
        'events': getEvents(),
        'gallery': getGalleries(),
        'eventAttendees': getEventAttendees()
    }
    authMember = isAuthenticated(request)
    if authMember:
        data['accounts'] = getAccounts()
        data['user'] = getCleanObject(
            json.loads(serialize('json', [authMember])))[0]
        pics = json.loads(
            serialize('json',
                      ProfilePictures.objects.filter(owner=authMember.id)))
        data['user']['profilepicture'] = ''
        if len(pics) > 0:
            data['user']['profilepicture'] = pics[0]['fields']['url']
    return JSONResponse(data, status=200)
コード例 #11
0
def getAccounts():
    return getCleanObject(json.loads(serialize('json', Account.objects.all())))
コード例 #12
0
def getEventAttendees():
    return getCleanObject(
        json.loads(serialize('json', EventAttendees.objects.all())))