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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
def getAccounts(): return getCleanObject(json.loads(serialize('json', Account.objects.all())))
def getEventAttendees(): return getCleanObject( json.loads(serialize('json', EventAttendees.objects.all())))