Split large files into logical units (Decision)
Я предлагаю разбить для начала файл museums_db_wrapper.py
Скорее всего решение не является оптимальным, но на проработку хорошего разбиения нужно потратить много времени.
dbAPI:
def getDatabase(db=DEFAULT_DB_NAME):
def getObjects(db='museums', collection='objects'):
def getObjectsList(db='museums', collection='objects'):
Tags:
def getTagsCollection():
def buildTagsCollection(collection):
def addNewTags(tags):
def getAllTagsFromCache(lan=None):
def getAllTags(lan=None):
def getTagsCollectionCacheEntryByMainForm(tag):
def getObjectTags(obj, lan = None, getAllTagsFunction = getAllTags, getWordFormsFunction = getWordForms):
def initTagStatisticsCache():
def getObjectStatisticsTags(obj):
def getTagsCollectionCache():
def initTagsCollectionCache():
def appendTagsCollectionCache(element):
def getObjectsByTagsIntersection(sampleObj):
def renderTags(tags):
def getTagWordForms(tag_name):
def getTagForms(mainForm):
def getTagId(mainForm):
def buildTagMainFormsList(sourceList):
def getTagById(tag_id):
def tagDoesNotExist(tag_name):
def tagDoesNotExistInDb(tag):
def removeTag(tag):
def changeTagAttributes(_id, newMainForm, newLanguage):
def changeWordFormsArray(_id, newWordForms):
def changeWordFormToTag(mainForm, oldForm, newForm):
def addWordFormToTag(mainForm, newForm):
def removeWordFormToTag(mainForm, existingForm):
def changeMainForm(oldMainForm, newMainForm):
def searchObjectsByTags(tags):
def searchObjectsByTag(tag):
Objects:
def getRawObjectById(objectId):
def getVSObjectsList():
def getObjectsByName(substring):
def getObjectsByAuthor(substring):
def getObjectsByAnnotation(substring):
def getSimilarObjects(objectId):
def getSimilarObjectsByLocation(objectId, locationName):
def getSimilarObjectsInCurrentMuseum(objectId):
def getSimilarObjectsInOtherMuseums(objectId):
def getObjectsInMuseum(museum):
def getObjectsInSection(museum, section):
def getObjectsInRoom(museum, section, room):
def getNearestSimilarObjects(latitude, longitude):
def getVirtualSortavalaCacheFlag():
def getTotalObjectsList():
def getObjectsByRubrikInOtherMuseums(sampleObj):
def getObjectsByCentury(sampleObj):
def getObjectsByRubrikInSameMuseum(sampleObj):
def removeObject(objectId):
search and filters:
def limitedFilterListByJsonField(listToFilter, jsonFieldName, value, matchType='exact', limit=-1):
def filterListByJsonField(listToFilter, jsonFieldName, value, matchType='exact'):
def limitedFilterListByAnnotation(listToFilter, substring, limit):
def filterListByAnnotation(listToFilter, substring):
def prefilterObjects(date, objectClass, rubrik, museum, era=False):
def filterListByDate(listToFilter, year):
def filterListByLocation(listToFilter, latitude, longitude, radius=RADIUS):
def limitedFilter(criterion, objects, limit):
def filterListByCentury(listToFilter, century):
def filterListByEra(listToFilter, era):
def filterListByCenturyObject(listToFilter, sampleObj):
def filterObjectsByRubrikInSameMuseum(sampleObj, listToFilter):
def filterListByCoordinateRect(listToFilter, lat1, lon1, lat2, lon2):
def compareStrs(string1, string2, matchType):
def compareVariantWithString(objValue, value, matchType):
def isMatch(obj, jsonFieldName, value, matchType):
def getFieldValues(listOfObjects, field):
def getLocationList(substring=""):
def getLanguageMuseumsList():
def getMuseumsList(locationName=""):
def getRubrikList(lang):
def getClassesList(lang):
def searchObjects(date, objectClass, rubrik, museum, era, locationName):
def mergeTwoLists(listOne, listTwo):
def searchObjectsBySubstring(date, objectClass, rubrik, museum, era, substring):
def isFieldValid(obj, key):
def checkValueEra(obj, key, value):
def checkValue(obj, key, value):
def checkRange(obj, key1, key2, value):
def checkRangeEra(obj, key1, key2, value):
def checkDate(obj, year):
def checkCentury(obj, century):
def checkEra(obj, era):
def checkLocation(obj, latitude, longitude, radius):
def getNearestSimilarObjects(latitude, longitude):
def searchNearestObjects(date, objectClass, rubrik, museum, latitude, longitude):
def checkAnnotationForSubstring(substring, obj):
def checkAnnotationForWordform(substring, obj):
def doesTagsMatch(tagList, obj):
def isFieldsValid(objs, fields):
def checkRubrikInOtherMuseum(sampleObj, obj):
def checkCenturyByObject(obj, sampleObj):
def getListIntersection(list1, list2):
def getSmartListIntersection(set1, list2):
def calculateObjectsSimilarity(obj1, obj2):
def calculateObjectsSimilarityForField(obj1, obj2, fieldName):
def substractLists(x, y):
Media content:
def scaleImage(image):
def getImageById(imageId):
def getGridFS():
def getBinaryObject(objectId):
def getBinaryIdsForObject(objectId, fieldName):
def getImagesIdsForObject(objectId):
def getAudioIdsForObject(objectId):
def getAudioById(audioId):
def getVideoIdsForObject(objectId):
def getVideoById(videoId):
def removeBinaryFromObject(objectId, binaryId, arrayName):
def getAllBinaryList(obj):
def removeBinaryObjectsByDiff(newObject):
def getBinaryObjectInfo(binaryId):
def setBinaryObjectInfo(binaryId, name, description):
def copyBinaries(obj):
Language:
def getLangObjectsCollection():
def buildLangCollection(collection):
def createObjectTranslation(existingTranslateId, language):
def addObjectTranslationToLang(existingTranslateId, language, newId):
def addNewTranslation(objectId, language):
def getTranslationMapId(existingTranslateId):
def getTranslationById(existingTranslateId, lang):
def getHistoryTranslation(history_id, lang):
def getTranslationMapById(translationMapId):
def getTranslationMap(existingTranslateId):
def getLanguageById(objectId):
def getLanguagesById(objectId):
def deleteLangObjectByTranslationObject(existingTranslationObjectId):
def getCurrentLanguage():
def setCurrentLanguage(languageCode):
def checkLanguage(obj, language):
def getObjectsListForLanguage(language):
def addLanguageToList(listToAdd):
def getObjectLanguagesList(objectId):
history:
def addHistory(objId, objList, name, description):
def getHistoryByObjectId(objId):
def getHistoryByHistoryId(historyId):
def writeHistory(history):
def changeNameAndDescription(obj, name, description):
def writeHistoryTranslation(language, key, name, description):
def getHistoryTranslationObject(language, key):
def getHistoryTranslationObjectByHistoryKey(key):
plan:
def createNewPlan(imageUrl, background, name, bottom_lon, bottom_lat, top_lon, top_lat):
def changePlanMarkers(planId, newMarkers):
def showPlan(planId):
def changePlanName(planId, newName):
def changePlanUrl(planId, newUrl):
def changePlanBackground(planId, newBackground):
def changePlanBounds(planId, bottom_lon, bottom_lat, top_lon, top_lat):
def boundsContainsPoint(plan, lon, lat):
def isInsideRect(obj, lat1, lon1, lat2, lon2):
other(Cach):
def get_guid():
def haversine(lon1, lat1, lon2, lat2):
def initCollection(collectionName, buildFunction):
def setVirtualSortavalaCacheFlag(flag):
def getVirtualSortavalaCacheFlag():
def getWordFormsFromCache(tag):
def getWordForms(tag):
def initCache():