Example #1
0
File: orm.py Project: hzx/wender
  def deleteFromInnerColl(self, coll, parentId, field, objid):
    """
    In coll object with parentId search array field and remove objid.
    """
    # get parent object
    parentObj = mongodb.selectOne(coll, {'id': parentId})
    # get coll fields
    parentFields = self.meta.getCollType(coll.split('.'))
    # get inner coll fields
    innerFields = self.meta.getStruct(parentFields[field]['type'])
    # get field
    arr = parentObj[field]
    # from arr remove objid element
    index = -1
    for i, item in enumerate(arr):
      if item['id'] == objid:
        index = i
        break
    # if index not found just return
    if index == -1:
      return

    # remove images from item
    item = arr[index]
    for name, params in innerFields.items():
      if 'imageSizes' in params:
        filename = item[name]
        self.deleteImage(filename, params)
    # remove element from arr
    arr.pop(index)
    # update parentObj
    mongodb.update(coll, {field: arr}, {'id': parentId})
Example #2
0
File: orm.py Project: hzx/wender
  def updateRaw(self, coll, values, wh):
    names = self.collToNames(coll)
    if not names:
      return None
    dotcoll = '.'.join(names)

    mongodb.update(dotcoll, values, wh)
Example #3
0
File: orm.py Project: hzx/wender
  def updateListValue(self, coll, seq, lastList):
    pices = coll.split('.')

    val = lastList['child']
    if len(pices) == 1:
      values = {val['name']: val['value']}
    elif len(pices) == 2:
      coll = pices[0]
      values = {pices[1] + '.$.' + val['name']: val['value']}
    else:
      raise Exception('updateListValue: collection inner gt 2')


    slugs = self.updateSlug(coll.split('.'), val['name'], val['value'])
    if slugs:
      if len(pices) == 1:
        values[slugs[0]] = slugs[1]
      elif len(pices) == 2:
        values[pices[1] + '.$.' + slugs[0]] = slugs[1]

    if len(pices) == 1:
      where = {'id': val['parentid']}
    elif len(pices) == 2:
      where = {pices[1] + '.id': val['parentid']}

    # print ('updateLastList')
    # print coll
    # print repr(values)
    # print val['parentid']

    mongodb.update(coll, values, where)
Example #4
0
File: orm.py Project: hzx/wender
 def appendInnerColl(self, coll, parentId, field, obj):
   """
   In coll object with parentId search array field and append obj.
   """
   # print coll
   # print parentId
   # print field
   # print repr(obj)
   # get parent object
   parentObj = mongodb.selectOne(coll, {'id': parentId})
   # get field
   arr = parentObj[field]
   # to arr add obj
   arr.append(obj)
   # update parentObj
   mongodb.update(coll, {field: arr}, {'id': parentId})
Example #5
0
File: orm.py Project: hzx/wender
  def deleteRefLink(self, names, objid, parentid):
    if not parentid:
      raise Exception('delete from ref, link must provide parent id')

    parentNames = names[:-1]
    if len(parentNames) == 1:
      parentColl = parentNames[0]
    else:
      parentColl = self.getSrcColl(parentNames)
    fieldName = names[len(names) - 1]

    # get parent object
    parentObj = mongodb.selectOne(parentColl, {'id': parentid})

    # get ids field
    idsField = parentObj[fieldName]

    # remove id from idsField
    if objid in idsField:
      idsField.remove(objid)
      # update ids field
      mongodb.update(parentColl, {fieldName: idsField}, {'id': parentid})
Example #6
0
File: orm.py Project: hzx/wender
  def appendIdToRefLink(self, collNames, objid, parentid):
    if not parentid:
      raise Exception('append to ref, link must provide parent id')

    parentNames = collNames[:-1]
    if len(parentNames) == 1:
      parentColl = parentNames[0]
    else:
      parentColl = self.getSrcColl(parentNames)
    fieldName = collNames[len(collNames) - 1]

    # get parent object
    parentObj = mongodb.selectOne(parentColl, {'id': parentid})

    # get ids field
    idsField = parentObj[fieldName]

    # add id to ids field
    if not (objid in idsField):
      idsField.append(objid)
      # update ids field
      mongodb.update(parentColl, {fieldName: idsField}, {'id': parentid})
Example #7
0
File: orm.py Project: hzx/wender
  def insertBeforeToRefLink(self, names, objid, parentid, beforeid):
    if not parentid:
      raise Exception('insert to ref, link must provide parent id')

    parentNames = names[:-1]
    if len(parentNames) == 1:
      parentColl = parentNames[0]
    else:
      parentColl = self.getSrcColl(parentNames)
    fieldName = names[len(names) - 1]

    # get parent object
    parent = mongodb.selectOne(parentColl, {'id': parentid})

    # get ids field
    idsField = parent[fieldName]

    # add id before beforeid
    if (beforeid in idsField):
      beforeIndex = idsField.index(beforeid)
      # insert in index position (before)
      idsField.insert(beforeIndex, objid)
      # update ids field
      mongodb.update(parentColl, {fieldName: idsField}, {'id': parentid})
Example #8
0
File: orm.py Project: hzx/wender
  def update(self, coll, values, where):
    names = self.collToNames(coll)
    if not names:
      return None

    return mongodb.update(coll, values, where)
Example #9
0
File: orm.py Project: hzx/wender
  def setValue(self, seq):
    # parse sequences
    # print 'orm.setValue, seq:'
    # print repr(seq)

    # get last list
    lastList = self.getLastList(seq)

    # global update
    if not lastList:
      # print 'global update'

      names = self.seqToNames(seq)
      value = self.getSeqValue(seq)
      coll = names[0]
      field = names[1]

      # update slugs
      slugs = self.updateSlug([coll], field, value['value'])
      values = {field: value['value']}
      if slugs:
        values[slugs[0]] = slugs[1]

      # get value params
      fieldnames = coll + '.' + field
      params = self.meta.getValueParams(fieldnames)

      # if imageSizes in params - remove old image value
      if 'imageSizes' in params:
        # get object with field
        obj = mongodb.selectOne(coll, {'id': value['parentid']})
        filename = obj[field]
        self.deleteImage(filename, params)

      mongodb.update(coll, values, {'id': value['parentid']})

    # list update
    else:
      listNames = self.getLastListNames(seq, lastList)
      coll = '.'.join(listNames)

      # search src list and update
      # search src in refs
      if coll in self.meta.refToColl:
        # print 'update ref value:'
        # print coll
        src = self.meta.refToColl[coll]
        # print src
        self.updateListValue(src, seq, lastList)
      # search src in links
      elif coll in self.meta.linkToColl:
        # print 'update link value:'
        # print coll
        src = self.meta.linkToColl[coll]
        # print src
        self.updateListValue(src, seq, lastList)
      # search src in colls
      elif coll in self.meta.colls:
        # print 'update list value:'
        # print coll
        # print repr(lastList)
        self.updateListValue(coll, seq, lastList)
      else:
        raise Exception('unknown list type "%s"' % str(coll))