コード例 #1
0
ファイル: property.py プロジェクト: dargonar/DirectoDueno
 def get(self, **kwargs):
   if 'key' in kwargs:
     kwargs['title'] = 'Editando Propiedad'
     kwargs['form']  = PropertyForm(obj=self.mine_or_404(kwargs['key']))
   else:
     if len(Property.all().filter('realestate = ',db.Key(self.get_realestate_key())).fetch(10))>=1:
       self.set_error(u'Comuníquese con DirectoDueño si desea publicar más de una propiedad; por correo ([email protected]) o a través del <a href="%s">panel de ayuda</a>.' % self.uri_for('backend/help'))
       return self.redirect_to('property/list')
     kwargs['title'] = 'Nueva Propiedad'
     kwargs['form']  = self.form
   
   return self.show_property_form(**kwargs)
コード例 #2
0
    def get(self, **kwargs):
        re = get_or_404(kwargs['key'])

        blobs = []
        imgs = []
        props = []

        for img in ImageFile.all().filter('realestate', re.key()):
            blobs.append(img.file.key())
            imgs.append(img.key())

        blobstore.delete(blobs)
        db.delete(imgs)

        props = []
        for prop in Property.all().filter('realestate', re.key()):
            props.append(prop.key())

        db.delete(props)

        pis = []
        for pi in PropertyIndex.all().filter('realestate', re.key()):
            pis.append(pi.key())

        db.delete(pis)

        invs = []
        pays = []
        for inv in Invoice.all().filter('realestate', re.key()):
            invs.append(inv)
            if inv.payment:
                pays.append(inv.payment.key())

        db.delete(invs)
        db.delete(pays)

        usrs = []
        for usr in User.all().filter('realestate', re.key()):
            usrs.append(usr)

        db.delete(usrs)

        mRealEstateFriendship = []
        for fr in RealEstateFriendship.all().filter('realestates',
                                                    str(re.key())):
            mRealEstateFriendship.append(fr)

        db.delete(mRealEstateFriendship)

        re.delete()

        self.response.write('borrado %s' % kwargs['key'])
コード例 #3
0
    def getto(self, realestate, **kwargs):
        # Ponemos la pantalla de disabled si esta en NO_PAYMENT
        if realestate.status == RealEstate._NO_PAYMENT or realestate.plan.allow_website == 0:
            return self.render_response('realestate/disabled.html',
                                        realestate=realestate)

        kwargs['realestate'] = realestate
        kwargs['menu_item'] = 'index'
        kwargs['form'] = self.form

        kwargs['properties'] = Property.all().filter(
            ' location_geocells = ',
            RealEstate.get_realestate_sharing_key(
                None, realestate=realestate)).filter(
                    ' status = ', Property._PUBLISHED).fetch(
                        get_props_at_home(realestate.get_web_theme()))

        return self.render_response('realestate/index.html', **kwargs)
コード例 #4
0
ファイル: property.py プロジェクト: dargonar/DirectoDueno
  def post(self, **kwargs):
    self.request.charset  = 'utf-8'
    
    editing = 'key' in self.request.POST and len(self.request.POST['key'])
    
    if not editing:
      if len(Property.all().filter('realestate = ',db.Key(self.get_realestate_key())).fetch(10))>=1:
        self.set_error(u'Comuníquese con DirectoDueño si desea publicar más de una propiedad.')
        return self.redirect_to('property/list')
        
    if not self.form.validate():
      kwargs['title'] = 'Editando Propiedad' if editing else 'Nueva Propiedad'
      kwargs['form']  = self.form
      kwargs['key']   = self.request.POST['key'] if editing else None
      kwargs['flash'] = {'message':'Verifique los datos ingresados', 'type':'error'}
      return self.show_property_form(**kwargs)
    
    # Actualizo o creo el model
    property = self.mine_or_404(self.request.POST['key']) if editing else Property.new(db.Key(self.get_realestate_key()))
    self.form.update_object(property)
    
    # Updateamos y mandamos a rebuild el indice si es necesario
    # Solo lo hacemos si se require y la propiedad esta publicada
    # Si se modifica una propiedad BORRADA o DESACTIVADA no se toca el indice por que no existe
    
    def savetxn():
      result = property.save(build_index=True) if editing else property.put()
      if result != 'nones' and property.status == Property._PUBLISHED:
        taskqueue.add(url=self.url_for('property/update_index'), params={'key': str(property.key()),'action':result}, transactional=True)
    
    db.run_in_transaction(savetxn)
    
    if self.request.POST['goto'] == 'go':
      return self.redirect_to('property/images', key=str(property.key()))

    self.set_ok('La propiedad fue %s ' % ('modificada con exito.' if editing else u'creada con exito, sera visible en el mapa dentro de la próxima hora.') )    
    return self.redirect_to('property/listpage', page=1)