app/soc/cron/unique_user_id_adder.py
changeset 2356 7c0a55e8e46f
parent 2345 f78caf12f32d
equal deleted inserted replaced
2355:5c4a9ffec300 2356:7c0a55e8e46f
    25 from google.appengine.ext import db
    25 from google.appengine.ext import db
    26 from google.appengine.api import users
    26 from google.appengine.api import users
    27 from soc.logic.models.job import logic as job_logic
    27 from soc.logic.models.job import logic as job_logic
    28 from soc.logic.models.priority_group import logic as priority_logic
    28 from soc.logic.models.priority_group import logic as priority_logic
    29 from soc.logic.models.user import logic as user_logic
    29 from soc.logic.models.user import logic as user_logic
    30 from soc.models.user import User
       
    31 
    30 
    32 
    31 
    33 # amount of users to create jobs for before updating
    32 # amount of users to create jobs for before updating
    34 DEF_USER_STEP_SIZE = 10
    33 DEF_USER_STEP_SIZE = 10
    35 
    34 
    45   the address is not a valid/existing google account.
    44   the address is not a valid/existing google account.
    46   """
    45   """
    47   user = users.User(address)
    46   user = users.User(address)
    48   key = TempUserWithUniqueId(user=user).put()
    47   key = TempUserWithUniqueId(user=user).put()
    49   obj = TempUserWithUniqueId.get(key)
    48   obj = TempUserWithUniqueId.get(key)
       
    49   # pylint: disable-msg=E1103
    50   return (obj, obj.user.user_id())
    50   return (obj, obj.user.user_id())
    51 
    51 
    52 
    52 
    53 def setupUniqueUserIdAdder(job_entity):
    53 def setupUniqueUserIdAdder(job_entity):
    54   """Job that setup jobs that will add unique user ids to all Users.
    54   """Job that setup jobs that will add unique user ids to all Users.
    56   Args:
    56   Args:
    57     job_entity: a Job entity with key_data set to 
    57     job_entity: a Job entity with key_data set to 
    58                 [last_completed_user]
    58                 [last_completed_user]
    59   """
    59   """
    60 
    60 
    61   from soc.cron.job import FatalJobError
    61   key_data = job_entity.key_data
    62 
       
    63   user_fields = {'user_id': None}
    62   user_fields = {'user_id': None}
    64 
    63   
    65   if len(key_data) == 1:
    64   if len(key_data) == 1:
    66     # start where we left off
    65     # start where we left off
    67     user_fields['__key__ >'] = key_data[0]
    66     user_fields['__key__ >'] = key_data[0]
    68 
    67 
    69   m_users = user_logic.getForFields(user_fields,
    68   m_users = user_logic.getForFields(user_fields,
    91 
    90 
    92     # update our own job
    91     # update our own job
    93     last_user_key = m_users[-1].key()
    92     last_user_key = m_users[-1].key()
    94 
    93 
    95     if len(key_data) == 1:
    94     if len(key_data) == 1:
    96       key_data[0] = last_student_key
    95       key_data[0] = last_user_key
    97     else:
    96     else:
    98       key_data.append(last_student_key)
    97       key_data.append(last_user_key)
    99 
    98 
   100     updated_job_fields = {'key_data': key_data}
    99     updated_job_fields = {'key_data': key_data}
   101     job_logic.updateEntityProperties(job_entity, updated_job_fields)
   100     job_logic.updateEntityProperties(job_entity, updated_job_fields)
   102 
   101 
   103     # rinse and repeat
   102     # rinse and repeat
   104     user_fields['__key__ >'] = last_user_key
   103     user_fields['__key__ >'] = last_user_key
   105     m_users = student_logic.getForFields(user_fields,
   104     m_users = user_logic.getForFields(user_fields,
   106                                          limit=DEF_USER_STEP_SIZE)
   105                                       limit=DEF_USER_STEP_SIZE)
   107 
   106 
   108   # we are finished
   107   # we are finished
   109   return
   108   return
   110 
   109 
   111 
   110