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():