def addWallpaper(self, file, name, username): """ Fonction appellée pour ajouter un wallpaper, retourne un nombre à utiliser pour le path ou enregistrer le wallpaper """ try: col = Bdd().connexion("wallpaper") except: return 1500 extension = os.path.splitext(file.name)[1] #if extension != ("jpg" or "JPG" or "png" or "PNG" or "JPEG" or "bmp" or "BMP" or "gif" or "GIF" or "svg" or "SVG"): #print("L'extention n'est pas une image") #return 1500 ID = col.insert({"name": name, "nbVote": 0, "visible": True, "username": username}) ID = str(ID) fd = open('%s/%s/%s.%s' % (MEDIA_ROOT, "wallpapers", ID, extension), 'wb') fd.write(file.read()) fd.close() print("wallpaper extension :" + str(extension)) BASEURL = 'http://127.0.0.1:8000/wallpapers/' path = '%s%s%s' % (BASEURL, ID, extension) col.update({"_id": ObjectId(ID)}, {"$set": {"path": path}}) print("id wallpaper: " + str(ID)) result = json.loads(dumps(col.find_one({"_id": ObjectId(ID)}))) # on dump le curseur et on converti en json result["_id"] = str(result["_id"]["$oid"]) # On converti le ObjectId ($oid) en string return result
def getWallpaperByName(self, name): """ """ try: db = Bdd().connexion("wallpaper") except: return 1500 return db.find_one({"name": name})
def getWallpaperById(self, id): """ """ try: db = Bdd().connexion("wallpaper") except: return 1500 return db.find_one({"_id": db.ObjectId(id)})
def getComments(self, idWallpaper): """ """ try: col = Bdd().connexion("comment"); except: return 1500 # faudra faire une bonne gestion d'erreurs avec des logs result = json.loads(dumps(col.find({"idWallpaper": idWallpaper}))) return result
def userExistByEmail(self, email): """ Test si un email existe dans la BDD """ col = Bdd().connexion("user") # nom BDD (si elle existe pas elle est crée toute seule) result = json.loads(dumps(col.find_one({"email": email}))) # recherche dans la collection "user" si le email existe if not result: # si result est vide return False else: return True
def userExistByUsername(self, username): """ Test si un username existe dans la BDD """ col = Bdd().connexion("user") # nom BDD (si elle existe pas elle est crée toute seule) result = json.loads(dumps(col.find_one({"username": username}))) # recherche dans la collection "user" si le email existe if not result: return False else: return True
def addComment(self, user, message, idWallpaper): """ Ajout d'un comment """ try: col = Bdd().connexion("comment") col.insert({"message": message, "user": user, "idWallpaper": idWallpaper, "date":datetime.today(), "isReported": False, "notification": None}) return 1000 except: return 1500 # faudra faire une bonne gestion d'erreurs avec des logs
def deleteFavoris(self, idWallpaper, username): """ """ try: colu = Bdd().connexion("user") # nom BDD (si elle existe pas elle est crée toute seule) user = json.loads(dumps(colu.find_one({"username": username}))) except: return 1500 colu.upadate({"username": username}, {"$pull": {"favoris": "idWallpaper"}}) return 1000
def deleteComment(self, comment): """ Supprimer un comment """ try: col = Bdd().connexion("comment"); col.remove(comment); return 1000 except: return 1500 # faudra faire une bonne gestion d'erreurs avec des logs
def getCategoriesWithLimit(self, min, max): """ retourne une partie des catégories délimité par min et max """ try: col = Bdd().connexion("category") except: return 1500 result = json.loads(dumps(col.find().limit(max).skip(min))) for line in result: line["_id"] = str(line["_id"]["$oid"]) # On converti le ObjectId ($oid) en string return result # on dump le curseur de la BDD et on converti en JSON
def getCategories(self): """ retourne toutes les catégories """ try: col = Bdd().connexion("category") except: return 1500 result = json.loads(dumps(col.find())) for line in result: line["_id"] = str(line["_id"]["$oid"]) # On converti le ObjectId ($oid) en string return result # on dump le curseur de la BDD et on converti en JSON
def getUserByEmail(self, email): """ """ try: col = Bdd().connexion("user") # nom BDD (si elle existe pas elle est crée toute seule) result = json.loads(dumps(col.find_one({"email":email}))) # recherche dans la collection "user" si le email existe if not result: return 1541 # pas de user pour ce email else: return result except: return 1500
def categoryExist(self, name): """ """ try: col = Bdd().connexion("category") except: return 1500 result = col.find_one({"name": name}) if not result: return False else: return True
def addCategory(self, name, description): """ """ try: col = Bdd().connexion("category") except: return 1500 if self.categoryExist(name): return 1520 # la catégorie existe déjà else: col.insert({"name": name, "description": description}) return 1000 # ok
def getCategoryByName(self, name): """ retourne la catégorie spécifiée par son nom """ if self.categoryExist(name): try: col = Bdd().connexion("category") except: return 1500 return col.find_one({"name: name"}) else: return 1521 # la catégorie n'existe pas
def addUser(self, username, email, passHash): """ Ajout d'un utilisateur """ print("*******************************Ajout d'un user : "******"user") col.insert({"username": username, "email": email, "passHash": passHash, "dateInscription": datetime.datetime.utcnow()}) print("*******************************Success ajout d'un user : "******"*******************************Fail ajout d'un user : "+ username) return 1500 # faudra faire une bonne gestion d'erreurs avec des logs
def isFavoris(self, idWallpaper, username): """ """ try: colu = Bdd().connexion("user") # nom BDD (si elle existe pas elle est crée toute seule) user = json.loads(dumps(colu.find_one({"username": username}))) except: return 1500 for ele in user['favoris']: if ele['idWallpaper'] == idWallpaper: return True else: return False return False
def getFavoris(self, username): """ """ try: colu = Bdd().connexion("user") colw = Bdd().connexion("wallpaper") except: return 1500 result = json.loads(dumps(colu.find_one({"username": username}))) ret = [] for favori in result['favoris']: fav = json.loads(dumps(colw.find_one({"_id": favori}))) if fav: ret.append(fav) return result # on dump le curseur de la BDD et on converti en JSON
def newTokenByEmail(self, email, passHash): """ """ try: col = Bdd().connexion("user") # nom BDD (si elle existe pas elle est crée toute seule) result = json.loads(dumps(col.find_one({"username": email}))) # recherche dans la collection "user" si le email existe except: return 1500 if result: if result["passHash"] == passHash: token = "".join(random.choice(string.ascii_uppercase + string.digits + string.ascii_lowercase) for x in range(50)) try: col.update({"email": email}, {"$set": {"token": token, "dateToken": datetime.datetime.utcnow()}}) return token except: return 1500
def getWallpaperAccueil(self): """ Retourne un seul wallpaper """ try: col = Bdd().connexion("wallpaper") except: return 1500 ran = random.randint(0, col.count()-1) result = json.loads(dumps(col.find().limit(1).skip(ran))) # On cherche une ligne random de la collection de wallpapers print(result) print(ran) for line in result: line["_id"] = str(line["_id"]["$oid"]) # On converti le ObjectId ($oid) en string if not result: return 1500 return result
def checkToken(self, cookie): """ """ #cookie = HttpRequest.COOKIES username = cookie.get('nameormail') print(username) token = cookie.get('token') print(token) if not token: token = 0 col = Bdd().connexion("user") # nom BDD (si elle existe pas elle est crée toute seule) result = json.loads(dumps(col.find_one({"username": username}))) # recherche dans la collection "user" si le email existe if result: if token == 1000: return True try: if result["token"]: if result["token"] == token: return True except: print("Pas de token associé au user") return False return False
def addFavoris(self, idWallpaper, username): """ """ wallpaper = {} try: colu = Bdd().connexion("user") # nom BDD (si elle existe pas elle est crée toute seule) colw = Bdd().connexion("wallpaper") wallpaper= json.loads(dumps(colw.find_one({"_id": idWallpaper}))) # recherche dans la collection "user" si le email existe user = json.loads(dumps(colu.find_one({"username": username}))) except: return 1500 if not wallpaper and not user: return 1500 colu.update({"username": username}, {"$set": {"favoris": [idWallpaper]}}) return