[google-appengine] Re: Mail API stops sending email from one admin address, still sends from others

2011-10-24 Thread Nevin Freeman
Good catch! Thanks for helping me figure this out! Now to figure out
which part of the TOS I am in violation of, if any.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Mail API stops sending email from one admin address, still sends from others

2011-10-23 Thread Nevin Freeman
Hmm, anyone else? This will become a *serious* issue if it happens
again with another address. I'm guessing there must be a logical
explanation.

Nevin

On Oct 21, 8:25 am, Leandro Rezende  wrote:
> I have the same problem,  but in the same google account in different
> applications. i dont know what to do.
>
> when the problem begin to happend, i have to create a new google
> application, copy all the data from the old datastore to it, and deploy the
> application again. So at the "new" application, it works. Them i delete the
> "bugged" application.
>
> at least u are sending 10k email, i cant send more than 30 and it bugs.
>
> 2011/10/21 Nevin Freeman 
>
>
>
>
>
>
>
> > My app sends an email to about 10k people every morning (we are a news
> > website, and send out an alert that tells people what the new stories
> > are). Until today it's worked really well (for over a year). It sends
> > from an address that is registered as an admin (since that's required)
> > which is not used by anyone other than the app for this purpose.
>
> > Starting today, calls to the Mail API cause an email to be sent
> > *unless* the sender is that address. I noticed this when the daily
> > emails weren't actually sent out, and did some testing with the remote
> > shell:
>
> > riabizdev> test_two = mail.EmailMessage(sender='ne...@riabiz.com',
> > to='nevin.free...@gmail.com', subject='TEST', body='TEST')
> > riabizdev> test_two.send()  # Actually works, the email hits my inbox
>
> > riabizdev> test_two = mail.EmailMessage(sender='f...@riabiz.com',
> > to='nevin.free...@gmail.com', subject='TEST', body='TEST')
> > riabizdev> test_two.send()  # Doesn't throw an error, but no email
> > ever makes it
>
> > The first obvious mishap would be that the emails are getting filtered
> > into people's spam folder. I use an invisible image to track email
> > opens though, and zero were opened today, as compared to many
> > thousands on an average day, so I'm very confident that this isn't the
> > problem. I at least know for sure that my test emails never made it to
> > my own spam folder.
>
> > I tried sending out the batch of 10k a few times during the day and
> > got nothing. At the end of this testing, I swapped out another admin
> > email and it worked fine. Any ideas?
>
> > Thanks!
> > Nevin
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to google-appengine@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com.
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Mail API stops sending email from one admin address, still sends from others

2011-10-20 Thread Nevin Freeman
My app sends an email to about 10k people every morning (we are a news
website, and send out an alert that tells people what the new stories
are). Until today it's worked really well (for over a year). It sends
from an address that is registered as an admin (since that's required)
which is not used by anyone other than the app for this purpose.

Starting today, calls to the Mail API cause an email to be sent
*unless* the sender is that address. I noticed this when the daily
emails weren't actually sent out, and did some testing with the remote
shell:

riabizdev> test_two = mail.EmailMessage(sender='ne...@riabiz.com',
to='nevin.free...@gmail.com', subject='TEST', body='TEST')
riabizdev> test_two.send()  # Actually works, the email hits my inbox

riabizdev> test_two = mail.EmailMessage(sender='f...@riabiz.com',
to='nevin.free...@gmail.com', subject='TEST', body='TEST')
riabizdev> test_two.send()  # Doesn't throw an error, but no email
ever makes it

The first obvious mishap would be that the emails are getting filtered
into people's spam folder. I use an invisible image to track email
opens though, and zero were opened today, as compared to many
thousands on an average day, so I'm very confident that this isn't the
problem. I at least know for sure that my test emails never made it to
my own spam folder.

I tried sending out the batch of 10k a few times during the day and
got nothing. At the end of this testing, I swapped out another admin
email and it worked fine. Any ideas?

Thanks!
Nevin

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: 1.5.2 SDK Prerelease

2011-07-25 Thread Nevin Freeman
For developers facing this issue locally, it may be useful to know that I 
only was able to access the old local datastore by adding the 
flag --default_partition= (without any quotes).

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-appengine/-/RAuu4omiwwUJ.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: You cover me, I cover you!

2010-06-30 Thread Nevin Freeman
Rudolf: Thanks! I've actually considered migrating all the JS to
GWT :) Been a while since I used it though.

Ikai: Neat! Just signed up. If I don't get someone here perhaps I'll
solicit people on there.

On Jun 30, 11:53 am, "Ikai L (Google)"  wrote:
> You can also look up developers here:
>
> http://www.appenginepeople.net/
>
> (Yes, this is itself an App Engine app!)
>
>
>
>
>
> On Wed, Jun 30, 2010 at 11:43 AM, rudolf michael  wrote:
> > hi can handle that if it was done using GWT+java backend.
> > but i guess that you need to move the whole front end to be implemented
> > using GWT, it will become much much faster and the code maintainable and
> > clearer.
>
> > Good job and very nice interface :-) i liked it
>
> > regards,
> > Rudolf Michael
>
> > On Wed, Jun 30, 2010 at 9:37 PM, Nevin Freeman 
> > wrote:
>
> >> Hi all,
>
> >> I am the sole developer forhttp://riabiz.com, a news website running
> >> on App Engine. This is a great gig -- I really like that, thanks to
> >> App Engine, one amateur can make a site like this from scratch and
> >> keep it running well.
>
> >> The trouble is that if I am 'off the grid,' there is nobody to tend to
> >> the site in the case of some emergency. Summer is in full swing, and I
> >> don't really like having to stay within the reach of civilization
> >> every single weekend...
>
> >> So I'm hoping to find someone else who is in the exact same position
> >> as I am; the sole developer for an App Engine site that is in
> >> production and needs to be maintained. We could learn each other's
> >> code well enough so that in an emergency we would be able to cover the
> >> other and fix some small bug or something. I think that after an
> >> initial learning process we would only need to spend an hour or two
> >> each month keeping up with new developments.
>
> >> Some more info: My app is in Python, uses webapp, and has been in
> >> production for almost a year, so there haven;t actually been any
> >> "emergencies" for a long time. I work with three other (non-technical)
> >> people, and this backup is in large part (but not entirely) for their
> >> peace of mind. Since our business is actually becoming valuable, it
> >> makes sense to have someone else who understands the code so that in
> >> the unlikely case that I get very sick or die or whatever I won't be
> >> leaving them with a custom website that nobody understands.
>
> >> Cheers,
> >> Nevin
>
> >> --
> >> You received this message because you are subscribed to the Google Groups
> >> "Google App Engine" group.
> >> To post to this group, send email to google-appeng...@googlegroups.com.
> >> To unsubscribe from this group, send email to
> >> google-appengine+unsubscr...@googlegroups.com >>  e...@googlegroups.com>
> >> .
> >> For more options, visit this group at
> >>http://groups.google.com/group/google-appengine?hl=en.
>
> >  --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to google-appeng...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > google-appengine+unsubscr...@googlegroups.com > e...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/google-appengine?hl=en.
>
> --
> Ikai Lan
> Developer Programs Engineer, Google App Engine
> Blog:http://googleappengine.blogspot.com
> Twitter:http://twitter.com/app_engine
> Reddit:http://www.reddit.com/r/appengine

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] You cover me, I cover you!

2010-06-30 Thread Nevin Freeman
Hi all,

I am the sole developer for http://riabiz.com, a news website running
on App Engine. This is a great gig -- I really like that, thanks to
App Engine, one amateur can make a site like this from scratch and
keep it running well.

The trouble is that if I am 'off the grid,' there is nobody to tend to
the site in the case of some emergency. Summer is in full swing, and I
don't really like having to stay within the reach of civilization
every single weekend...

So I'm hoping to find someone else who is in the exact same position
as I am; the sole developer for an App Engine site that is in
production and needs to be maintained. We could learn each other's
code well enough so that in an emergency we would be able to cover the
other and fix some small bug or something. I think that after an
initial learning process we would only need to spend an hour or two
each month keeping up with new developments.

Some more info: My app is in Python, uses webapp, and has been in
production for almost a year, so there haven;t actually been any
"emergencies" for a long time. I work with three other (non-technical)
people, and this backup is in large part (but not entirely) for their
peace of mind. Since our business is actually becoming valuable, it
makes sense to have someone else who understands the code so that in
the unlikely case that I get very sick or die or whatever I won't be
leaving them with a custom website that nobody understands.

Cheers,
Nevin

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Very strange/unpredictable behavior today... need help!

2010-02-02 Thread Nevin Freeman
I am getting this error when I load my app on the domain www.riabiz.com:

"Error: Server Error The server encountered an error and could not
complete your request. If the problem persists, please report your
problem and mention this error message and the query that caused it."

When I load it on riabizdev.appspot.com, it works, mostly. Now for the
odd part: When I load it on www.riabiz.com on another computer right
next to me, on the same internet connection, it works perfectly!

In Sweden: works on one computer, not on the other
In DC: doesn't work
In NY: works fine
In WA: works fine
In CA: works in Chrome, not in IE (!!??)

For the ones that don't load, I don't see the request even show up in
the logs. I have no idea how to figure out what could be causing this.
Ideas?

Thanks :)
Nevin

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.



[google-appengine] Re: Google App Engine server down ?

2009-11-17 Thread Nevin Freeman
I had similar errors, app completely down, now seems to be back up.

On Nov 17, 4:39 pm, arbi  wrote:
> In fact I canno't even connect to appengine.google.com ! App
> completely down :(
>
> On 17 nov, 16:35, Benjamin  wrote:
>
>
>
> > Yikes. Server error on my end.https://appengine.google.com/ also
> > can't publish updates from eclipse.
>
> > On Nov 17, 10:34 am, Tim Hoffman  wrote:
>
> > > I am seeing intermittant dashboard failure, transaction timeouts,
> > > DeadLineExceededErrors ..
>
> > > T
>
> > > On Nov 17, 11:31 pm, Prashant  wrote:
>
> > > > same here... unable to update apps but apps seems to be working fine...

--

You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=.




[google-appengine] Need help understanding an error (not sure if it is my fault or not)

2009-08-27 Thread Nevin Freeman

I am getting the following traceback:

Traceback (most recent call last):
  File "/base/python_lib/versions/1/google/appengine/ext/webapp/
__init__.py", line 507, in __call__
handler.get(*groups)
  File "/base/data/home/apps/riabizdev/1.335829215948087052/
handlers.py", line 197, in get
banner_code = models.Banner.get_by_id(int
(banner_id)).get_code_and_log_impression()
  File "/base/data/home/apps/riabizdev/1.335829215948087052/
models.py", line 209, in get_code_and_log_impression
self.put()
  File "/base/python_lib/versions/1/google/appengine/ext/db/
__init__.py", line 725, in put
return datastore.Put(self._entity)
  File "/base/python_lib/versions/1/google/appengine/api/
datastore.py", line 166, in Put
raise _ToDatastoreError(err)
  File "/base/python_lib/versions/1/google/appengine/api/
datastore.py", line 2100, in _ToDatastoreError
raise errors[err.application_error](err.error_detail)
Timeout

And the method in question from models.py is this:

def get_text(self):
  self.counter += 1
  self.put() #this is line 209, where the error
originates
  return self.text


Is this a common problem that I can do something to avoid?
Alternatively, could someone show me the syntax to make this fail
gracefully? (I think I've seen an example before, but don't remember
where to find it).

Thanks in advance--
Nevin Freeman


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Could Mailman run on AppEngine?

2009-05-19 Thread Nevin Freeman

Has anyone tried to port Mailman (http://www.gnu.org/software/mailman/
index.html) to run on AppEngine? I'm assuming there would be some
major barriers, but I think they might be beyond what I have time for.
All comments on the topic welcome!

Thanks,
Nevin
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: how could you charge users for using your app?

2009-02-22 Thread Nevin Freeman

I'm also interested in this topic and can't really find anything out
there on how to get started. Any information would be appreciated.

Thanks,
Nevin

On Feb 5, 3:24 am, Sharad  wrote:
> Alex,
>
> Is Google Checkout capable of managing subscriptions (as opposed to
> one-off payments)? Are there sample scripts/apps that show how Google
> Checkout can be integrated with an app engine application. Many
> thanks.
>
> On Jan 30, 11:38 am, Alexander Orlov 
> wrote:
>
> > On Jan 29, 8:58 pm, virtual_pm  wrote:
>
> > > what does Google recommend if you wanted tocharge usersusing your
> > > application?
>
> > There are corresponding onlinepaymentservices from PayPal.com and
> > Google Checkout (www.google.com/checkout). You can bind the access to
> > your SaaS app to the condition to go through one of thesepayment
> > services. So the user have to pay a pre-defined amount before he can
> > access your service.
>
> > HTH
> > Alex
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: Query filter based on the Longitude attribute of a db.GeoPt property

2008-09-10 Thread Nevin Freeman

Since starting this thread, I've come up with something slightly
similar to what you are suggesting here. Rather than store metadata
about both lat and lng, I store a ListProperty of lngs to differing
degrees of accuracy, and still use inequalities for latitude. So if
you have a point with Lat, Lng = 12.12345678, 40.12345678, my stored
"lng-list" property would look like: [40, 40.1, 40.12, 40.123]. This
way, based on zoom level (well, actually just based on the size of the
viewport, calculated when the query is run), I can query for all of
the strips of longitude within my viewport, and then still include a
minLat < lat < minLng. This results in a single query up front, but
multiple queries behind the scenes, since the viewport will have many
longitude strips and thus I will be comparing the lng-list to an array
of values. I decide how to divide up the viewport based on the
difference in longitude between either edge, and limit the number of
strips to 10 (using the larger strips in order to decrease the
number). Here is the code for "encoding" and generating the array for
the query:

import decimal
from decimal import Decimal as d
import logging

def LngList(lng):
  """returns array of truncated lng strings"""
  lnglist = []
  lnglist.append(__truncate(lng, 0))
  lnglist.append(__truncate(lng, 1))
  lnglist.append(__truncate(lng, 2))
  lnglist.append(__truncate(lng, 3))
  return lnglist

def ViewportLngs(minLng, maxLng):
  """returns array of lngs that exist in the viewport, with the right
degree of precision"""
  vislngs = []
  dif = abs(maxLng - minLng)
  if minLng > maxLng:
logging.info("minLng: %s maxLng: %s" %(minLng, maxLng))
dif = (180 - minLng) + abs(-180 - maxLng)
if dif < .01:
  vislngs = __makelist(3, minLng, 180) + __makelist(3, -180,
maxLng)
elif dif < .1:
  vislngs = __makelist(2, minLng, 180) + __makelist(2, -180,
maxLng)
elif dif < 1:
  vislngs = __makelist(1, minLng, 180) + __makelist(1, -180,
maxLng)
else:
  logging.error("Viewing both sides of the dateline, zoomed out.")
  elif dif < .01:
vislngs = __makelist(3, minLng, maxLng)
  elif dif < .1:
vislngs = __makelist(2, minLng, maxLng)
  elif dif < 1:
vislngs = __makelist(1, minLng, maxLng)
  else:
# zoomed out case
logging.error("The LngList method is being used on a viewport with
a range larger than 1 degree.")
  return vislngs

def __makelist(level, minLng, maxLng):
  """actually populates the list of longs, based on conditions passed
in, and accounts for extreme near-zero cases."""
  inc = 10**-level
  lng = __truncate(minLng, level)
  maxL = __truncate(maxLng, level)
  vislngs = [lng]
  while lng != maxL:
if lng == 0:
  return __makelist(level + 1, minLng, maxLng)
lng = __truncate(float(lng)+inc, level)
vislngs.append(lng)
  return vislngs

def __truncate(num, prec):
  """truncates the float passed in to _prec_ places after the decimal,
and returns it as a string"""
  result = unicode(d(str(num)).quantize(d("1e%d" % (-prec)),
decimal.ROUND_DOWN))
  if result == u'-0.0':
result = u'0.0'
  if result == u'-0.00':
result == u'0.00'
  return result

This method seems to preform pretty well, though I don't yet have gobs
of data. I am able to run a query that returns 3-400 markers and load
them all up in less than a second. Unfortunately, this doesn't account
for Polylines and Polygons. We're still working on an elegant solution
for those, probably similar to your method of storing the grid-boxes
each one overlaps. Exploding indexes, here I come.

Nevin

On Sep 10, 10:11 am, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
wrote:
> Thanks for the follow-up.
>
> I guess one could still use the "geotoken" (my own term) idea, but
> only save one token (map-graph-square) per saved point.  Then, when
> someone searches on a given point, tokenize the search point, search
> for anything that shares the same token, and then go back for for data
> in the surrounding tokens.  In my example, that means 9 DB calls
> instead of one, but that's pretty manageable...  I don't know how it
> scales if you want to have greater variability in your search range,
> but you could either define your tokens to cover more ground, or
> increase the number of tokens searched.
>
> Looking at the current quota limits, with 2.5 million datastore
> requests per day, I could handle 200,000 searches per day (250,000 * 9
> = 2.45 million), which leaves room for 50,000 posts per day (one
> datastore operation per post), all under quota.  Once this turns into
> a paid service, if I have to pay for more than that, I think I'll be
> happy to do so.
>
> -B
>
> On Sep 9, 2:52 pm, uprise78 <[EMAIL PROTECTED]> wrote:
>
> > The exploding index issue can occur with list properties readily.
>
> > "Properties with multiple values, such as using a list value or a
> > ListProperty model, store each value as a separate entry in an index."
>
> > With a 9 element list you just created 9 indexes.  If you expand the
> >

[google-appengine] Re: deleting Expando entity dynamic properties [syntax question]

2008-08-28 Thread Nevin Freeman

Duh.

delattr(myobj, dynamic_prop)  # where myobj is an instance of an
expando class and dynamic_prop is a string equal to one of the dynamic
property names.

Nevin

On Aug 28, 1:02 pm, Nevin Freeman <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I'm trying to delete a single dynamic  property from an Expando
> entity, as 
> perhttp://code.google.com/appengine/docs/datastore/expandoclass.html
> The given way to do this is simply:
>
> del myobj.myprop
>
> So what I'm looking to do is something like this:
>
> for dynamic_prop in myobj.dynamic_properties():
>   # if statement here...
>   del myobj.dynamic_prop
>
> But in this case, dynamic_prop is a string, so myobj.dynamic_prop
> throws this error:
>
> AttributeError: 'super' object has no attribute 'dynamic_prop'
>
> For storing attributes, I was able to use:
>
> setattr(myobj, property_name, property_value)    #  property_name and
> property_value are strings
>
> So the only thing I can think of to do what I want this time would be:
>
> prop = getattr(myobj, dynamic_prop)
> del prop
>
> But this only deletes the new string created with getattr(), and then
>
> del getattr(myobj, dynamic_prop)
>
> Throws the error: SyntaxError: can't delete function call
> If anyone can point out the correct way to do this, I would really
> appreciate it.
>
> Thanks,
> Nevin
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: GQL Query issue

2008-08-28 Thread Nevin Freeman

From: http://code.google.com/appengine/docs/datastore/queriesandindexes.html

"The query mechanism relies on all results for a query to be adjacent
to one another in the index table, to avoid having to scan the entire
table for results. A single index table cannot represent multiple
inequality filters on multiple properties while maintaining that all
results are consecutive in the table."

Nevin

On Aug 28, 1:23 pm, Davide Rognoni <[EMAIL PROTECTED]> wrote:
> Why this limitation?
>
> On Aug 28, 10:17 pm, Nevin Freeman <[EMAIL PROTECTED]> wrote:
>
> > José,
>
> > Many different workarounds are available, depending on your
> > circumstances. The simplest (not ideal) thing to do would be to run
> > two queries and then take the intersection of the two results, i.e.:
>
> > q1 = Model.gql("WHERE prop1 < :1", number1)
> > q2 = Model.gql("WHERE prop2 > :1", number2)
>
> > batch1 = q1.fetch(1000)
> > batch2 = q2.fetch(1000)
> > result = []
>
> > for entity in batch1:
> >   if entity in batch2:
> >     result.append(entity)
>
> > return result
>
> > If you give us a little more context, maybe people who have similar
> > situations can share with you how they have dealt with the limitation.
> > In my case, I had to change the way I store my data so that I can get
> > the right results with only one inequality operator per query (but
> > name equality operators).
>
> > Nevin
>
> > On Aug 28, 12:07 pm, fdezjose <[EMAIL PROTECTED]> wrote:
>
> > > Hello! I'm new in the App Engine world and I've run into an issue
> > > that's driving me crazy. I need to compare two properties (ex.
> > > propertyA > 4 AND propertyB > 8) But by doing that I've discovered
> > > that only one property per query may have inequality filters... Any
> > > suggestion or workaround to be able to accomplish this task?
>
> > > Thanks!
>
> > > José Luis
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: GQL Query issue

2008-08-28 Thread Nevin Freeman

José,

Many different workarounds are available, depending on your
circumstances. The simplest (not ideal) thing to do would be to run
two queries and then take the intersection of the two results, i.e.:

q1 = Model.gql("WHERE prop1 < :1", number1)
q2 = Model.gql("WHERE prop2 > :1", number2)

batch1 = q1.fetch(1000)
batch2 = q2.fetch(1000)
result = []

for entity in batch1:
  if entity in batch2:
result.append(entity)

return result


If you give us a little more context, maybe people who have similar
situations can share with you how they have dealt with the limitation.
In my case, I had to change the way I store my data so that I can get
the right results with only one inequality operator per query (but
name equality operators).

Nevin

On Aug 28, 12:07 pm, fdezjose <[EMAIL PROTECTED]> wrote:
> Hello! I'm new in the App Engine world and I've run into an issue
> that's driving me crazy. I need to compare two properties (ex.
> propertyA > 4 AND propertyB > 8) But by doing that I've discovered
> that only one property per query may have inequality filters... Any
> suggestion or workaround to be able to accomplish this task?
>
> Thanks!
>
> José Luis
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] deleting Expando entity dynamic properties [syntax question]

2008-08-28 Thread Nevin Freeman

Hi,

I'm trying to delete a single dynamic  property from an Expando
entity, as per http://code.google.com/appengine/docs/datastore/expandoclass.html
The given way to do this is simply:

del myobj.myprop

So what I'm looking to do is something like this:

for dynamic_prop in myobj.dynamic_properties():
  # if statement here...
  del myobj.dynamic_prop

But in this case, dynamic_prop is a string, so myobj.dynamic_prop
throws this error:

AttributeError: 'super' object has no attribute 'dynamic_prop'

For storing attributes, I was able to use:

setattr(myobj, property_name, property_value)#  property_name and
property_value are strings

So the only thing I can think of to do what I want this time would be:

prop = getattr(myobj, dynamic_prop)
del prop

But this only deletes the new string created with getattr(), and then

del getattr(myobj, dynamic_prop)

Throws the error: SyntaxError: can't delete function call
If anyone can point out the correct way to do this, I would really
appreciate it.

Thanks,
Nevin



--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---