Esempio n. 1
0
def clear(*args, **kwargs):
    """Removes all entities from the datastore.
  """

    # there no explicit ranker model anywhere, so make one for
    # our own convenience to delete all rankers
    class ranker(db.Model):
        """ranker model used with ranklist module.
    """
        pass

    # TODO(dbentley): If there are more than 1000 instances of any model,
    # this method will not clear all instances.  Instead, it should continually
    # call .all(), delete all those, and loop until .all() is empty.
    entities = itertools.chain(*[
        Notification.all(),
        GSoCMentor.all(),
        GHOPMentor.all(),
        GSoCStudent.all(),
        GHOPStudent.all(),
        Survey.all(),
        SurveyContent.all(),
        SurveyRecord.all(),
        GSoCOrgAdmin.all(),
        GHOPOrgAdmin.all(),
        ranker.all(),
        RankerRoot.all(),
        StudentProposal.all(),
        GSoCOrganization.all(),
        GHOPOrganization.all(),
        OrgApplication.all(),
        GSoCTimeline.all(),
        GHOPTimeline.all(),
        GSoCProgram.all(),
        GHOPProgram.all(),
        Host.all(),
        Sponsor.all(),
        User.all(),
        Site.all(),
        Document.all(),
    ])

    try:
        for entity in entities:
            entity.delete()
    except db.Timeout:
        return http.HttpResponseRedirect('#')
    # pylint: disable-msg=E1101
    memcache.flush_all()

    return http.HttpResponse('Done')
Esempio n. 2
0
def clear(*args, **kwargs):
  """Removes all entities from the datastore.
  """

  # there no explicit ranker model anywhere, so make one for
  # our own convenience to delete all rankers
  class ranker(db.Model):
    """ranker model used with ranklist module.
    """
    pass

  # TODO(dbentley): If there are more than 1000 instances of any model,
  # this method will not clear all instances.  Instead, it should continually
  # call .all(), delete all those, and loop until .all() is empty.
  entities = itertools.chain(*[
      Notification.all(),
      GSoCMentor.all(),
      GCIMentor.all(),
      GSoCStudent.all(),
      GCIStudent.all(),
      Survey.all(),
      SurveyContent.all(),
      SurveyRecord.all(),
      GSoCOrgAdmin.all(),
      GCIOrgAdmin.all(),
      ranker.all(),
      RankerRoot.all(),
      StudentProposal.all(),
      GSoCOrganization.all(),
      GCIOrganization.all(),
      GSoCTimeline.all(),
      GCITimeline.all(),
      GSoCProgram.all(),
      GCIProgram.all(),
      Host.all(),
      Sponsor.all(),
      User.all(),
      Site.all(),
      Document.all(),
      ])

  try:
    for entity in entities:
      entity.delete()
  except db.Timeout:
    return http.HttpResponseRedirect('#')
  # pylint: disable=E1101
  memcache.flush_all()

  return http.HttpResponse('Done')
Esempio n. 3
0
def seed_student_proposal(request, i):
    """Returns the properties of a new student proposal.
  """

    ensureUser()
    org = GSoCOrganization.get_by_key_name('google/gsoc2009/org_%d' % i)
    mentor = GSoCMentor.get_by_key_name('google/gsoc2009/org_%d/mentor' % i)
    user = User.get_by_key_name('user_%d' % i)
    student = GSoCStudent.get_by_key_name('google/gsoc2009/student_%d' % i)

    if not user:
        raise Error('Run seed_many for at least %d users first.' % i)

    if not student:
        raise Error('Run seed_many for at least %d students first.' % i)

    if not org:
        raise Error('Run seed_many for at least %d orgs first.' % i)

    if not mentor:
        raise Error('Run seed_many for at least %d mentors first.' % i)

    all_properties = []

    # pylint: disable=E1103
    for i in range(random.randint(5, 20)):
        link_id = 'proposal_%s_%d' % (org.link_id, i)
        scope_path = 'google/gsoc2009/' + user.link_id

        properties = {
            'link_id': link_id,
            'scope_path': scope_path,
            'scope': student,
            'key_name': '%s/%s' % (scope_path, link_id),
            'title': 'The Awesome Proposal %s %d' % (user.link_id, i),
            'abstract':
            'This is an Awesome Proposal, look at its awesomeness!',
            'content': 'Sorry, too Awesome for you to read!',
            'additional_info': 'http://www.zipit.com',
            'mentor': mentor,
            'status': 'pending',
            'org': org,
            'program': org.scope,
        }

        all_properties.append(properties)

    return all_properties
Esempio n. 4
0
def seed_student_proposal(request, i):
  """Returns the properties of a new student proposal.
  """

  ensureUser()
  org = GSoCOrganization.get_by_key_name('google/gsoc2009/org_%d' % i)
  mentor = GSoCMentor.get_by_key_name('google/gsoc2009/org_%d/mentor' % i)
  user = User.get_by_key_name('user_%d' % i)
  student = GSoCStudent.get_by_key_name('google/gsoc2009/student_%d' % i)

  if not user:
    raise Error('Run seed_many for at least %d users first.' % i)

  if not student:
    raise Error('Run seed_many for at least %d students first.' % i)

  if not org:
    raise Error('Run seed_many for at least %d orgs first.' % i)

  if not mentor:
    raise Error('Run seed_many for at least %d mentors first.' % i)

  all_properties = []
  
  # pylint: disable=E1103
  for i in range(random.randint(5, 20)):
    link_id = 'proposal_%s_%d' % (org.link_id, i)
    scope_path = 'google/gsoc2009/' + user.link_id

    properties = {
        'link_id': link_id,
        'scope_path': scope_path,
        'scope': student,
        'key_name': '%s/%s' % (scope_path, link_id),
        'title': 'The Awesome Proposal %s %d' % (user.link_id, i),
        'abstract': 'This is an Awesome Proposal, look at its awesomeness!',
        'content': 'Sorry, too Awesome for you to read!',
        'additional_info': 'http://www.zipit.com',
        'mentor': mentor,
        'status': 'pending',
        'org': org,
        'program': org.scope,
        }

    all_properties.append(properties)

  return all_properties
Esempio n. 5
0
def runStudentConversionUpdate(request, entities, context, *args, **kwargs):
    """AppEngine Task that converts Students into GSoCStudents.

  Args:
    request: Django Request object
    entities: list of Student entities to convert
    context: the context of this task
  """

    from soc.modules.gsoc.logic.models.program import logic as gsoc_program_logic
    from soc.modules.gsoc.models.student import GSoCStudent

    # get all the properties that are part of each Student
    student_model = student_logic.getModel()
    student_properties = student_model.properties().keys()

    # use this to store all the new GSoCStudents
    gsoc_students = []

    for entity in entities:
        gsoc_properties = {}

        for student_property in student_properties:
            # copy over all the information from the Student entity
            gsoc_properties[student_property] = getattr(
                entity, student_property)

        # get the Program key belonging to the old Student
        program_key = entity.scope.key().id_or_name()
        # get the new GSoCProgram and set it as scope for the GSoCStudent
        gsoc_program = gsoc_program_logic.getFromKeyName(program_key)
        gsoc_properties['scope'] = gsoc_program

        # create the new GSoCStudent entity and prepare it to be stored
        gsoc_student_entity = GSoCStudent(key_name=entity.key().name(),
                                          **gsoc_properties)
        gsoc_students.append(gsoc_student_entity)

    # store all the new GSoCStudents
    db.put(gsoc_students)

    # task completed, return
    return
Esempio n. 6
0
def seed(request, *args, **kwargs):
  """Seeds the datastore with some default values.
  """

  site_properties = {
      'key_name': 'site',
      'link_id': 'site',
      }

  site = Site(**site_properties)
  site.put()


  _, current_user = ensureUser()


  seeder = UserSeeder()
  for i in range(15):
    seeder.seed(i)

  group_properties = {
       'key_name': 'google',
       'link_id': 'google',
       'name': 'Google Inc.',
       'short_name': 'Google',
       'founder': current_user,
       'home_page': 'http://www.google.com',
       'email': '*****@*****.**',
       'description': 'This is the profile for Google.',
       'contact_street': 'Some Street',
       'contact_city': 'Some City',
       'contact_country': 'United States',
       'contact_postalcode': '12345',
       'phone': '1-555-BANANA',
       'status': 'active',
       }

  google = Sponsor(**group_properties)
  google.put()


  role_properties = {
      'key_name': 'google/test',
      'link_id': 'test',
      'scope': google,
      'scope_path': 'google',
      'user': current_user,
      'given_name': 'Test',
      'surname': 'Example',
      'name_on_documents': 'Test Example',
      'email': '*****@*****.**',
      'res_street': 'Some Street',
      'res_city': 'Some City',
      'res_state': 'Some State',
      'res_country': 'United States',
      'res_postalcode': '12345',
      'phone': '1-555-BANANA',
      'birth_date': db.DateProperty.now(),
      'agreed_to_tos': True,
      }


  current_user.host_for = [google.key()]
  current_user.put()

  google_host = Host(**role_properties)
  google_host.put()

  from datetime import datetime
  from datetime import timedelta

  before = datetime.now() - timedelta(365)
  after = datetime.now() + timedelta(365)

  timeline_properties = {
      'key_name': 'google/gsoc2009',
      'link_id': 'gsoc2009',
      'scope_path': 'google',
      'scope': google,
      'program_start': before,
      'program_end': after,
      'accepted_organization_announced_deadline': after,
      'student_signup_start': before,
      'student_signup_end': after,
  }

  gsoc2009_timeline = GSoCTimeline(**timeline_properties)
  gsoc2009_timeline.put()


  program_properties = {
      'key_name': 'google/gsoc2009',
      'link_id': 'gsoc2009',
      'scope_path': 'google',
      'scope': google,
      'name': 'Google Summer of Code 2009',
      'short_name': 'GSoC 2009',
      'group_label': 'GSOC',
      'description': 'This is the program for GSoC 2009.',
      'apps_tasks_limit': 42,
      'slots': 42,
      'timeline': gsoc2009_timeline,
      'status': 'visible',
      }

  gsoc2009 = GSoCProgram(**program_properties)
  gsoc2009.put()

  site.active_program = gsoc2009
  site.put()

  # TODO: Use real GCIProgram here
  timeline_properties = {
        'key_name': 'google/gci2009',
        'link_id': 'gci2009',
        'scope_path': 'google',
        'scope': google,
  }

  gci2009_timeline = GCITimeline(**timeline_properties)
  #gci2009_timeline.put()


  program_properties.update({
      'key_name': 'google/gci2009',
      'link_id': 'gci2009',
      'name': 'Google Code In Contest 2009',
      'short_name': 'GCI 2009',
      'group_label': 'GCI',
      'description': 'This is the program for GCI 2009.',
      'timeline': gci2009_timeline,
      })

  gci2009 = GCIProgram(**program_properties)
  #gci2009.put()


  group_properties.update({
    'key_name': 'google/gci2009/melange',
    'link_id': 'melange',
    'name': 'Melange Development Team',
    'short_name': 'Melange',
    'scope_path': 'google/gci2009',
    'scope': gci2009,
    'home_page': 'http://code.google.com/p/soc',
    'description': 'Melange, share the love!',
    'license_name': 'Apache License',
    'ideas': 'http://code.google.com/p/soc/issues',
    })

  melange = GCIOrganization(**group_properties)
  #melange.put()
  # create a new ranker
  #ranker_root_logic.create(student_proposal.DEF_RANKER_NAME, melange,
  #    student_proposal.DEF_SCORE, 100)


  group_properties.update({
    'scope_path': 'google/gsoc2009',
    'scope': gsoc2009,
    })

  role_properties.update({
      'key_name': 'google/gsoc2009/test',
      'link_id': 'test',
      'scope_path': 'google/gsoc2009',
      'scope': gsoc2009,
      'program': gsoc2009,
      'parent': current_user,
      })

  profile = GSoCProfile(**role_properties)
  role_properties.pop('parent')

  orgs = []
  for i in range(15):
    group_properties.update({
        'key_name': 'google/gsoc2009/org_%d' % i,
        'link_id': 'org_%d' % i,
        'name': 'Organization %d' % i,
        'short_name': 'Org %d' % i,
        'description': 'Organization %d!' % i,
        })

    entity = GSoCOrganization(**group_properties)
    orgs.append(entity)
    entity.put()
    # create a new ranker
    ranker_root_logic.create(student_proposal.DEF_RANKER_NAME, entity,
        student_proposal.DEF_SCORE, 100)

    # Admin for the first org
    if i == 0:
      profile.org_admin_for.append(entity.key())
      profile.put()

    # Mentor and admin for the second org
    if i == 1:
      profile.org_admin_for.append(entity.key())
      profile.mentor_for.append(entity.key())
      profile.put()

  role_properties.update({
      'key_name': 'google/gci2009/melange/test',
      'link_id': 'test',
      'scope_path': 'google/gci2009/melange',
      'scope': melange,
      'program': gci2009,
      })

  melange_admin = GCIOrgAdmin(**role_properties)
  #melange_admin.put()

  melange_mentor = GCIMentor(**role_properties)
  #melange_mentor.put()

  student_id = 'test'
  student_properties = {
      'key_name': gsoc2009.key().name() + "/" + student_id,
      'link_id': student_id, 
      'scope_path': gsoc2009.key().name(),
      'scope': gsoc2009,
      'program': gsoc2009,
      'user': current_user,
      'given_name': 'test',
      'surname': 'test',
      'birth_date': db.DateProperty.now(),
      'email': '*****@*****.**',
      'im_handle': 'test_im_handle',
      'major': 'test major',
      'name_on_documents': 'test',
      'res_country': 'United States',
      'res_city': 'city',
      'res_street': 'test street',
      'res_postalcode': '12345',
      'publish_location': True,
      'blog': 'http://www.blog.com/',
      'home_page': 'http://www.homepage.com/',
      'photo_url': 'http://www.photosite.com/thumbnail.png',
      'ship_state': None,
      'expected_graduation': 2009,
      'school_country': 'United States',
      'school_name': 'Test School', 
      'tshirt_size': 'XS',
      'tshirt_style': 'male',
      'degree': 'Undergraduate',
      'phone': '1650253000',
      'can_we_contact_you': True, 
      'program_knowledge': 'I heard about this program through a friend.'
      }

  melange_student = GSoCStudent(**student_properties)
  melange_student.put()

  student_id = 'test2'
  student_properties.update({
      'key_name': gsoc2009.key().name() + "/" + student_id,
      'link_id': student_id,
      'user': current_user 
      })

  melange_student2 = GSoCStudent(**student_properties)
  melange_student2.put()
                                       
  project_id = 'test_project'
  project_properties = {
      'key_name':  gsoc2009.key().name() + "/org_1/" + project_id,
      'link_id': project_id, 
      'scope_path': gsoc2009.key().name() + "/org_1",
      'scope': orgs[1].key(),

      'title': 'test project',
      'abstract': 'test abstract',
      'status': 'accepted',
      'student': melange_student,
      'mentor': profile,
      'program':  gsoc2009
       }

  melange_project = StudentProject(**project_properties)
  melange_project.put()

  project_id = 'test_project2'
  project_properties.update({
      'key_name':  gsoc2009.key().name() + "/org_1/" + project_id,
      'link_id': project_id,
      'student': melange_student2,
      'title': 'test project2'
      })
      
  melange_project2 = StudentProject(**project_properties)
  melange_project2.put()
    
  document_properties = {
      'key_name': 'site/site/home',
      'link_id': 'home',
      'scope_path': 'site',
      'scope': site,
      'prefix': 'site',
      'author': current_user,
      'title': 'Home Page',
      'short_name': 'Home',
      'content': 'This is the Home Page',
      'modified_by': current_user,
      }

  home_document = Document(**document_properties)
  home_document.put()
  document_logic._onCreate(home_document) 


  document_properties = {
      'key_name': 'user/test/notes',
      'link_id': 'notes',
      'scope_path': 'test',
      'scope': current_user,
      'prefix': 'user',
      'author': current_user,
      'title': 'My Notes',
      'short_name': 'Notes',
      'content': 'These are my notes',
      'modified_by': current_user,
      }

  notes_document = Document(**document_properties)
  notes_document.put()
  document_logic._onCreate(home_document) 

  site.home = home_document
  site.put()
  # pylint: disable=E1101
  memcache.flush_all()

  return http.HttpResponse('Done')
Esempio n. 7
0
def seed(request, *args, **kwargs):
    """Seeds the datastore with some default values.
  """

    site_properties = {
        'key_name': 'site',
        'link_id': 'site',
    }

    site = Site(**site_properties)
    site.put()

    _, current_user = ensureUser()

    seeder = UserSeeder()
    for i in range(15):
        seeder.seed(i)

    group_properties = {
        'key_name': 'google',
        'link_id': 'google',
        'name': 'Google Inc.',
        'short_name': 'Google',
        'founder': current_user,
        'home_page': 'http://www.google.com',
        'email': '*****@*****.**',
        'description': 'This is the profile for Google.',
        'contact_street': 'Some Street',
        'contact_city': 'Some City',
        'contact_country': 'United States',
        'contact_postalcode': '12345',
        'phone': '1-555-BANANA',
        'status': 'active',
    }

    google = Sponsor(**group_properties)
    google.put()

    role_properties = {
        'key_name': 'google/test',
        'link_id': 'test',
        'scope': google,
        'scope_path': 'google',
        'user': current_user,
        'given_name': 'Test',
        'surname': 'Example',
        'name_on_documents': 'Test Example',
        'email': '*****@*****.**',
        'res_street': 'Some Street',
        'res_city': 'Some City',
        'res_state': 'Some State',
        'res_country': 'United States',
        'res_postalcode': '12345',
        'phone': '1-555-BANANA',
        'birth_date': db.DateProperty.now(),
        'agreed_to_tos': True,
    }

    current_user.host_for = [google.key()]
    current_user.put()

    google_host = Host(**role_properties)
    google_host.put()

    from datetime import datetime
    from datetime import timedelta

    before = datetime.now() - timedelta(365)
    after = datetime.now() + timedelta(365)

    timeline_properties = {
        'key_name': 'google/gsoc2009',
        'link_id': 'gsoc2009',
        'scope_path': 'google',
        'scope': google,
        'program_start': before,
        'program_end': after,
        'accepted_organization_announced_deadline': after,
        'student_signup_start': before,
        'student_signup_end': after,
    }

    gsoc2009_timeline = GSoCTimeline(**timeline_properties)
    gsoc2009_timeline.put()

    program_properties = {
        'key_name': 'google/gsoc2009',
        'link_id': 'gsoc2009',
        'scope_path': 'google',
        'scope': google,
        'name': 'Google Summer of Code 2009',
        'short_name': 'GSoC 2009',
        'group_label': 'GSOC',
        'description': 'This is the program for GSoC 2009.',
        'apps_tasks_limit': 42,
        'slots': 42,
        'timeline': gsoc2009_timeline,
        'status': 'visible',
    }

    gsoc2009 = GSoCProgram(**program_properties)
    gsoc2009.put()

    site.active_program = gsoc2009
    site.put()

    # TODO: Use real GCIProgram here
    timeline_properties = {
        'key_name': 'google/gci2009',
        'link_id': 'gci2009',
        'scope_path': 'google',
        'scope': google,
    }

    gci2009_timeline = GCITimeline(**timeline_properties)
    #gci2009_timeline.put()

    program_properties.update({
        'key_name': 'google/gci2009',
        'link_id': 'gci2009',
        'name': 'Google Code In Contest 2009',
        'short_name': 'GCI 2009',
        'group_label': 'GCI',
        'description': 'This is the program for GCI 2009.',
        'timeline': gci2009_timeline,
    })

    gci2009 = GCIProgram(**program_properties)
    #gci2009.put()

    group_properties.update({
        'key_name': 'google/gci2009/melange',
        'link_id': 'melange',
        'name': 'Melange Development Team',
        'short_name': 'Melange',
        'scope_path': 'google/gci2009',
        'scope': gci2009,
        'home_page': 'http://code.google.com/p/soc',
        'description': 'Melange, share the love!',
        'license_name': 'Apache License',
        'ideas': 'http://code.google.com/p/soc/issues',
    })

    melange = GCIOrganization(**group_properties)
    #melange.put()
    # create a new ranker
    #ranker_root_logic.create(student_proposal.DEF_RANKER_NAME, melange,
    #    student_proposal.DEF_SCORE, 100)

    group_properties.update({
        'scope_path': 'google/gsoc2009',
        'scope': gsoc2009,
    })

    role_properties.update({
        'key_name': 'google/gsoc2009/test',
        'link_id': 'test',
        'scope_path': 'google/gsoc2009',
        'scope': gsoc2009,
        'program': gsoc2009,
        'parent': current_user,
    })

    profile = GSoCProfile(**role_properties)
    role_properties.pop('parent')

    orgs = []
    for i in range(15):
        group_properties.update({
            'key_name': 'google/gsoc2009/org_%d' % i,
            'link_id': 'org_%d' % i,
            'name': 'Organization %d' % i,
            'short_name': 'Org %d' % i,
            'description': 'Organization %d!' % i,
        })

        entity = GSoCOrganization(**group_properties)
        orgs.append(entity)
        entity.put()
        # create a new ranker
        ranker_root_logic.create(student_proposal.DEF_RANKER_NAME, entity,
                                 student_proposal.DEF_SCORE, 100)

        # Admin for the first org
        if i == 0:
            profile.org_admin_for.append(entity.key())
            profile.put()

        # Mentor and admin for the second org
        if i == 1:
            profile.org_admin_for.append(entity.key())
            profile.mentor_for.append(entity.key())
            profile.put()

    role_properties.update({
        'key_name': 'google/gci2009/melange/test',
        'link_id': 'test',
        'scope_path': 'google/gci2009/melange',
        'scope': melange,
        'program': gci2009,
    })

    melange_admin = GCIOrgAdmin(**role_properties)
    #melange_admin.put()

    melange_mentor = GCIMentor(**role_properties)
    #melange_mentor.put()

    student_id = 'test'
    student_properties = {
        'key_name': gsoc2009.key().name() + "/" + student_id,
        'link_id': student_id,
        'scope_path': gsoc2009.key().name(),
        'scope': gsoc2009,
        'program': gsoc2009,
        'user': current_user,
        'given_name': 'test',
        'surname': 'test',
        'birth_date': db.DateProperty.now(),
        'email': '*****@*****.**',
        'im_handle': 'test_im_handle',
        'major': 'test major',
        'name_on_documents': 'test',
        'res_country': 'United States',
        'res_city': 'city',
        'res_street': 'test street',
        'res_postalcode': '12345',
        'publish_location': True,
        'blog': 'http://www.blog.com/',
        'home_page': 'http://www.homepage.com/',
        'photo_url': 'http://www.photosite.com/thumbnail.png',
        'ship_state': None,
        'expected_graduation': 2009,
        'school_country': 'United States',
        'school_name': 'Test School',
        'tshirt_size': 'XS',
        'tshirt_style': 'male',
        'degree': 'Undergraduate',
        'phone': '1650253000',
        'can_we_contact_you': True,
        'program_knowledge': 'I heard about this program through a friend.'
    }

    melange_student = GSoCStudent(**student_properties)
    melange_student.put()

    student_id = 'test2'
    student_properties.update({
        'key_name': gsoc2009.key().name() + "/" + student_id,
        'link_id': student_id,
        'user': current_user
    })

    melange_student2 = GSoCStudent(**student_properties)
    melange_student2.put()

    project_id = 'test_project'
    project_properties = {
        'key_name': gsoc2009.key().name() + "/org_1/" + project_id,
        'link_id': project_id,
        'scope_path': gsoc2009.key().name() + "/org_1",
        'scope': orgs[1].key(),
        'title': 'test project',
        'abstract': 'test abstract',
        'status': 'accepted',
        'student': melange_student,
        'mentor': profile,
        'program': gsoc2009
    }

    melange_project = StudentProject(**project_properties)
    melange_project.put()

    project_id = 'test_project2'
    project_properties.update({
        'key_name': gsoc2009.key().name() + "/org_1/" + project_id,
        'link_id': project_id,
        'student': melange_student2,
        'title': 'test project2'
    })

    melange_project2 = StudentProject(**project_properties)
    melange_project2.put()

    document_properties = {
        'key_name': 'site/site/home',
        'link_id': 'home',
        'scope_path': 'site',
        'scope': site,
        'prefix': 'site',
        'author': current_user,
        'title': 'Home Page',
        'short_name': 'Home',
        'content': 'This is the Home Page',
        'modified_by': current_user,
    }

    home_document = Document(**document_properties)
    home_document.put()
    document_logic._onCreate(home_document)

    document_properties = {
        'key_name': 'user/test/notes',
        'link_id': 'notes',
        'scope_path': 'test',
        'scope': current_user,
        'prefix': 'user',
        'author': current_user,
        'title': 'My Notes',
        'short_name': 'Notes',
        'content': 'These are my notes',
        'modified_by': current_user,
    }

    notes_document = Document(**document_properties)
    notes_document.put()
    document_logic._onCreate(home_document)

    site.home = home_document
    site.put()
    # pylint: disable=E1101
    memcache.flush_all()

    return http.HttpResponse('Done')
Esempio n. 8
0
def seed(request, *args, **kwargs):
    """Seeds the datastore with some default values.
  """

    site_properties = {
        'key_name': 'site',
        'link_id': 'site',
    }

    site = Site(**site_properties)
    site.put()

    _, current_user = ensureUser()

    seeder = UserSeeder()
    for i in range(15):
        seeder.seed(i)

    group_properties = {
        'key_name': 'google',
        'link_id': 'google',
        'name': 'Google Inc.',
        'short_name': 'Google',
        'founder': current_user,
        'home_page': 'http://www.google.com',
        'email': '*****@*****.**',
        'description': 'This is the profile for Google.',
        'contact_street': 'Some Street',
        'contact_city': 'Some City',
        'contact_country': 'United States',
        'contact_postalcode': '12345',
        'phone': '1-555-BANANA',
        'status': 'active',
    }

    google = Sponsor(**group_properties)
    google.put()

    role_properties = {
        'key_name': 'google/test',
        'link_id': 'test',
        'scope': google,
        'scope_path': 'google',
        'user': current_user,
        'given_name': 'Test',
        'surname': 'Example',
        'name_on_documents': 'Test Example',
        'email': '*****@*****.**',
        'res_street': 'Some Street',
        'res_city': 'Some City',
        'res_state': 'Some State',
        'res_country': 'United States',
        'res_postalcode': '12345',
        'phone': '1-555-BANANA',
        'birth_date': db.DateProperty.now(),
        'agreed_to_tos': True,
    }

    google_host = Host(**role_properties)
    google_host.put()

    timeline_properties = {
        'key_name': 'google/gsoc2009',
        'link_id': 'gsoc2009',
        'scope_path': 'google',
        'scope': google,
    }

    gsoc2009_timeline = GSoCTimeline(**timeline_properties)
    gsoc2009_timeline.put()

    program_properties = {
        'key_name': 'google/gsoc2009',
        'link_id': 'gsoc2009',
        'scope_path': 'google',
        'scope': google,
        'name': 'Google Summer of Code 2009',
        'short_name': 'GSoC 2009',
        'group_label': 'GSOC',
        'description': 'This is the program for GSoC 2009.',
        'apps_tasks_limit': 42,
        'slots': 42,
        'timeline': gsoc2009_timeline,
        'status': 'visible',
    }

    gsoc2009 = GSoCProgram(**program_properties)
    gsoc2009.put()

    # TODO: Use real GHOPProgram here
    timeline_properties = {
        'key_name': 'google/ghop2009',
        'link_id': 'ghop2009',
        'scope_path': 'google',
        'scope': google,
    }

    ghop2009_timeline = GHOPTimeline(**timeline_properties)
    ghop2009_timeline.put()

    program_properties.update({
        'key_name': 'google/ghop2009',
        'link_id': 'ghop2009',
        'name': 'Google Highly Open Participation Contest 2009',
        'short_name': 'GHOP 2009',
        'group_label': 'GHOP',
        'description': 'This is the program for GHOP 2009.',
        'timeline': ghop2009_timeline,
    })

    ghop2009 = GHOPProgram(**program_properties)
    ghop2009.put()

    org_app_properties = {
        'scope_path': 'google/gsoc2009',
        'scope': gsoc2009,
        'applicant': current_user,
        'home_page': 'http://www.google.com',
        'email': '*****@*****.**',
        'irc_channel': '#care',
        'pub_mailing_list': 'http://groups.google.com',
        'dev_mailing_list': 'http://groups.google.com',
        'description': 'This is an awesome org!',
        'why_applying': 'Because we can',
        'member_criteria': 'They need to be awesome',
        'status': 'pre-accepted',
        'license_name': 'Apache License, 2.0',
        'ideas': 'http://code.google.com/p/soc/issues',
        'contrib_disappears': 'We use google to find them',
        'member_disappears': 'See above',
        'encourage_contribs': 'We offer them cookies.',
        'continued_contribs': 'We promise them a cake.',
        'agreed_to_admin_agreement': True,
    }

    for i in range(10):
        org_app_properties['key_name'] = 'google/gsoc2009/org_%04d' % i
        org_app_properties['link_id'] = 'org_%04d' % i
        org_app_properties['name'] = 'Org App %04d' % i
        entity = OrgApplication(**org_app_properties)
        entity.put()

    org_app_properties['status'] = 'pre-rejected'

    for i in range(10, 20):
        org_app_properties['key_name'] = 'google/gsoc2009/loser_%d' % i
        org_app_properties['link_id'] = 'loser_%d' % i
        org_app_properties['name'] = 'Loser %d' % i
        entity = OrgApplication(**org_app_properties)
        entity.put()

    group_properties.update({
        'key_name': 'google/ghop2009/melange',
        'link_id': 'melange',
        'name': 'Melange Development Team',
        'short_name': 'Melange',
        'scope_path': 'google/ghop2009',
        'scope': ghop2009,
        'home_page': 'http://code.google.com/p/soc',
        'description': 'Melange, share the love!',
        'license_name': 'Apache License',
        'ideas': 'http://code.google.com/p/soc/issues',
    })

    melange = GHOPOrganization(**group_properties)
    melange.put()
    # create a new ranker
    ranker_root_logic.create(student_proposal.DEF_RANKER_NAME, melange,
                             student_proposal.DEF_SCORE, 100)

    group_properties.update({
        'scope_path': 'google/gsoc2009',
        'scope': gsoc2009,
    })

    orgs = []
    for i in range(15):
        group_properties.update({
            'key_name': 'google/gsoc2009/org_%d' % i,
            'link_id': 'org_%d' % i,
            'name': 'Organization %d' % i,
            'short_name': 'Org %d' % i,
            'description': 'Organization %d!' % i,
        })

        entity = GSoCOrganization(**group_properties)
        orgs.append(entity)
        entity.put()
        # create a new ranker
        ranker_root_logic.create(student_proposal.DEF_RANKER_NAME, entity,
                                 student_proposal.DEF_SCORE, 100)

        if i < 2:
            role_properties.update({
                'key_name': 'google/gsoc2009/org_%d/test' % i,
                'link_id': 'test',
                'scope_path': 'google/gsoc2009/org_%d' % i,
                'scope': entity,
                'program': gsoc2009,
            })

            # Admin for the first org
            if i == 0:
                org_1_admin = GSoCOrgAdmin(**role_properties)
                org_1_admin.put()

            # Only a mentor for the second org
            if i == 1:
                org_1_admin = GSoCOrgAdmin(**role_properties)
                org_1_admin.put()
                org_1_mentor = GSoCMentor(**role_properties)
                org_1_mentor.put()

    role_properties.update({
        'key_name': 'google/ghop2009/melange/test',
        'link_id': 'test',
        'scope_path': 'google/ghop2009/melange',
        'scope': melange,
        'program': ghop2009,
    })

    melange_admin = GHOPOrgAdmin(**role_properties)
    melange_admin.put()

    melange_mentor = GHOPMentor(**role_properties)
    melange_mentor.put()

    student_id = 'test'
    student_properties = {
        'key_name': gsoc2009.key().name() + "/" + student_id,
        'link_id': student_id,
        'scope_path': gsoc2009.key().name(),
        'scope': gsoc2009,
        'program': gsoc2009,
        'user': current_user,
        'given_name': 'test',
        'surname': 'test',
        'birth_date': db.DateProperty.now(),
        'email': '*****@*****.**',
        'im_handle': 'test_im_handle',
        'major': 'test major',
        'name_on_documents': 'test',
        'res_country': 'United States',
        'res_city': 'city',
        'res_street': 'test street',
        'res_postalcode': '12345',
        'publish_location': True,
        'blog': 'http://www.blog.com/',
        'home_page': 'http://www.homepage.com/',
        'photo_url': 'http://www.photosite.com/thumbnail.png',
        'ship_state': None,
        'expected_graduation': 2009,
        'school_country': 'United States',
        'school_name': 'Test School',
        'tshirt_size': 'XS',
        'tshirt_style': 'male',
        'degree': 'Undergraduate',
        'phone': '1650253000',
        'can_we_contact_you': True,
        'program_knowledge': 'I heard about this program through a friend.'
    }

    melange_student = GSoCStudent(**student_properties)
    melange_student.put()

    student_id = 'test2'
    student_properties.update({
        'key_name': gsoc2009.key().name() + "/" + student_id,
        'link_id': student_id,
        'user': current_user
    })

    melange_student2 = GSoCStudent(**student_properties)
    melange_student2.put()

    project_id = 'test_project'
    project_properties = {
        'key_name': gsoc2009.key().name() + "/org_1/" + project_id,
        'link_id': project_id,
        'scope_path': gsoc2009.key().name() + "/org_1",
        'scope': orgs[1].key(),
        'title': 'test project',
        'abstract': 'test abstract',
        'status': 'accepted',
        'student': melange_student,
        'mentor': org_1_mentor,
        'program': gsoc2009
    }

    melange_project = StudentProject(**project_properties)
    melange_project.put()

    project_id = 'test_project2'
    project_properties.update({
        'key_name': gsoc2009.key().name() + "/org_1/" + project_id,
        'link_id': project_id,
        'student': melange_student2,
        'title': 'test project2'
    })

    melange_project2 = StudentProject(**project_properties)
    melange_project2.put()

    document_properties = {
        'key_name': 'site/site/home',
        'link_id': 'home',
        'scope_path': 'site',
        'scope': site,
        'prefix': 'site',
        'author': current_user,
        'title': 'Home Page',
        'short_name': 'Home',
        'content': 'This is the Home Page',
        'modified_by': current_user,
    }

    home_document = Document(**document_properties)
    home_document.put()
    document_logic._onCreate(home_document)

    document_properties = {
        'key_name': 'user/test/notes',
        'link_id': 'notes',
        'scope_path': 'test',
        'scope': current_user,
        'prefix': 'user',
        'author': current_user,
        'title': 'My Notes',
        'short_name': 'Notes',
        'content': 'These are my notes',
        'modified_by': current_user,
    }

    notes_document = Document(**document_properties)
    notes_document.put()
    document_logic._onCreate(home_document)

    site.home = home_document
    site.put()
    # pylint: disable-msg=E1101
    memcache.flush_all()

    return http.HttpResponse('Done')