app/soc/models/seed_db.py
author Lennard de Rijk <ljvderijk@gmail.com>
Wed, 08 Jul 2009 15:44:54 +0200
changeset 2573 f09f317769c4
parent 2367 19ca23d78701
child 2669 c28e2dc4cd51
permissions -rw-r--r--
Changed the StudentProject model to handle a dynamic amount of GradeRecords. This allows for a dynamic amount of moments where a StudentProject can be evaluated. Also included in this patch are changes to the status property that will help to enable PA's to withdraw StudentProjects from the program without the need for a developer to step in.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
     1
#!/usr/bin/python2.5
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
     2
#
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
     3
# Copyright 2008 the Melange authors.
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
     4
#
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
     6
# you may not use this file except in compliance with the License.
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
     7
# You may obtain a copy of the License at
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
     8
#
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    10
#
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    14
# See the License for the specific language governing permissions and
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    15
# limitations under the License.
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    16
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    17
"""Seeds or clears the datastore.
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    18
"""
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    19
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    20
__authors__ = [
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    21
    '"Sverre Rabbelier" <sverre@rabbelier.nl>',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    22
  ]
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    23
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
    24
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    25
import itertools
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
    26
import logging
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
    27
import random
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    28
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
    29
from google.appengine.api import users
1453
378c844bf52c Flush cache after seeding or clearing the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1434
diff changeset
    30
from google.appengine.api import memcache
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
    31
from google.appengine.ext import db
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    32
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
    33
from django import http
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
    34
1623
8b70d6bb3f8f Renamed rankerroot to ranker_root and made some changes due to comments.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1609
diff changeset
    35
from soc.logic.models.ranker_root import logic as ranker_root_logic
1798
ba4c00bc0c39 Use accounts.getCurrentAccount instead of users.get_current_user
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1794
diff changeset
    36
from soc.logic import accounts
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    37
from soc.logic import dicts
1609
cd285bc524f1 Create a new Ranker for each organization that is created.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1602
diff changeset
    38
from soc.models import student_proposal
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    39
from soc.models.document import Document
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
    40
from soc.models.host import Host
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
    41
from soc.models.mentor import Mentor
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    42
from soc.models.notification import Notification
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    43
from soc.models.org_admin import OrgAdmin
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    44
from soc.models.organization import Organization
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    45
from soc.models.org_app import OrgApplication
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    46
from soc.models.program import Program
1794
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
    47
from soc.models.ranker_root import RankerRoot
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    48
from soc.models.site import Site
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
    49
from soc.models.student import Student
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
    50
from soc.models.student_proposal import StudentProposal
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    51
from soc.models.sponsor import Sponsor
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    52
from soc.models.timeline import Timeline
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    53
from soc.models.user import User
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    54
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    55
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    56
class Error(Exception):
2074
5c75312566d5 Fix too long lines, style and remove unused imports in soc.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2048
diff changeset
    57
  """Base class for all exceptions raised by this module.
5c75312566d5 Fix too long lines, style and remove unused imports in soc.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2048
diff changeset
    58
  """
2167
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
    59
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    60
  pass
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    61
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    62
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    63
def ensureUser():
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    64
  """Returns the current user account and associated user object.
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    65
  """
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    66
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    67
  account = accounts.getCurrentAccount()
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    68
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    69
  if not account:
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    70
    account = users.User(email='test@example.com')
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    71
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    72
  user_properties = {
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    73
      'key_name': 'test',
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    74
      'link_id': 'test',
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    75
      'account': account,
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    76
      'name': 'Test',
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    77
      }
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    78
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    79
  current_user = User(**user_properties)
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    80
  current_user.put()
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    81
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    82
  return account, current_user
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    83
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    84
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    85
class Seeder(object):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    86
  """A Seeder can seed Melange types.
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    87
  """
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    88
  def type(self):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    89
    """Returns the type to be seeded."""
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    90
    raise NotImplementedError
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    91
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    92
  def seed(self, i, entities=None, **kwargs):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    93
    """Seed the ith instance of this type.
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    94
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    95
    Args:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    96
      i, int: which to seed
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    97
      entities, list of type()'s: if None, persist at the end of this call.
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    98
        if non-None, append the created entity to entities instead of
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    99
        persisting.
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   100
      kwargs: the dictionary returned by commonSeedArgs
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   101
    """
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   102
    raise NotImplementedError
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   103
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   104
  def commonSeedArgs(self, request):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   105
    """Find common information for seeding that's common across entities
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   106
    seeded in one request.
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   107
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   108
    Returns:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   109
      dictionary of str->value; passed to each call of seed() for this
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   110
      request
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   111
    """
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   112
    raise NotImplementedError
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   113
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   114
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   115
class UserSeeder(Seeder):
2367
19ca23d78701 Add some missing docstrings to Seeder classes in seed_db.py
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2366
diff changeset
   116
  """A Seeder for Melange User model.
19ca23d78701 Add some missing docstrings to Seeder classes in seed_db.py
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2366
diff changeset
   117
  """
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   118
  def type(self):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   119
    return User
2366
1a954e80d444 Style fixes and pylint: disable-msg comments in different modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2361
diff changeset
   120
  
1a954e80d444 Style fixes and pylint: disable-msg comments in different modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2361
diff changeset
   121
  # pylint: disable-msg=W0221
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   122
  def seed(self, i, entities=None):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   123
    user_properties = {
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   124
        'key_name': 'user_%04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   125
        'link_id': 'user_%04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   126
        'account': users.User(email='user_%04d@example.com' % i),
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   127
        'name': 'User %04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   128
        }
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   129
    entity = User(**user_properties)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   130
    if entities is None:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   131
      entity.put()
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   132
    else:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   133
      entities.append(entity)
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   134
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   135
  def commonSeedArgs(self, request):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   136
    return {}
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   137
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   138
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   139
class OrganizationSeeder(Seeder):
2367
19ca23d78701 Add some missing docstrings to Seeder classes in seed_db.py
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2366
diff changeset
   140
  """A Seeder for Melange Organization model.
19ca23d78701 Add some missing docstrings to Seeder classes in seed_db.py
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2366
diff changeset
   141
  """
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   142
  def type(self):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   143
    return Organization
2366
1a954e80d444 Style fixes and pylint: disable-msg comments in different modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2361
diff changeset
   144
  
1a954e80d444 Style fixes and pylint: disable-msg comments in different modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2361
diff changeset
   145
  # pylint: disable-msg=W0221
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   146
  def seed(self, i, entities=None, current_user=None, gsoc2009=None):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   147
    properties = {
2352
33ff03da52b6 Link id and key name fixes for Organization And OrgApplication in seed_db.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2351
diff changeset
   148
        'key_name': 'google/gsoc2009/org_%04d' % i,
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   149
        'link_id': 'org_%04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   150
        'name': 'Organization %04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   151
        'short_name': 'Org %04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   152
        'founder': current_user,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   153
        'scope_path': 'google/gsoc2009',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   154
        'scope': gsoc2009,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   155
        'status': 'active',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   156
        'email': 'org_%04d@example.com' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   157
        'home_page': 'http://code.google.com/p/soc',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   158
        'description': 'Melange, share the love!',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   159
        'license_name': 'Apache License',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   160
        'contact_street': 'Some Street',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   161
        'contact_city': 'Some City',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   162
        'contact_country': 'United States',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   163
        'contact_postalcode': '12345',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   164
        'phone': '1-555-BANANA',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   165
        'ideas': 'http://code.google.com/p/soc/issues',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   166
        }
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   167
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   168
    org = Organization(**properties)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   169
    if entities is None:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   170
      org.put()
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   171
    else:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   172
      entities.append(org)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   173
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   174
  def commonSeedArgs(self, request):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   175
    _, current_user = ensureUser()
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   176
    gsoc2009 = Program.get_by_key_name('google/gsoc2009')
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   177
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   178
    if not gsoc2009:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   179
      raise Error('Run seed_db first')
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   180
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   181
    return dict(current_user=current_user,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   182
                gsoc2009=gsoc2009)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   183
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   184
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   185
class OrgApplicationSeeder(Seeder):
2367
19ca23d78701 Add some missing docstrings to Seeder classes in seed_db.py
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2366
diff changeset
   186
  """A Seeder for Melange OrgApplication model.
19ca23d78701 Add some missing docstrings to Seeder classes in seed_db.py
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2366
diff changeset
   187
  """
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   188
  def type(self):
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   189
    return OrgApplication
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   190
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   191
  def commonSeedArgs(self, request):
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   192
    _, current_user = ensureUser()
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   193
    gsoc2009 = Program.get_by_key_name('google/gsoc2009')
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   194
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   195
    if not gsoc2009:
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   196
      raise Error('Run seed_db first')
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   197
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   198
    status = request.GET.get('status', 'pre-accepted')
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   199
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   200
    return dict(current_user=current_user,
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   201
                gsoc2009=gsoc2009,
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   202
                status=status)
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   203
2366
1a954e80d444 Style fixes and pylint: disable-msg comments in different modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2361
diff changeset
   204
  # pylint: disable-msg=W0221
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   205
  def seed(self, i, entities=None, current_user=None, gsoc2009=None,
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   206
           status=None):
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   207
    properties = {
2352
33ff03da52b6 Link id and key name fixes for Organization And OrgApplication in seed_db.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2351
diff changeset
   208
        'key_name': 'google/gsoc2009/org_%04d' % i,
33ff03da52b6 Link id and key name fixes for Organization And OrgApplication in seed_db.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2351
diff changeset
   209
        'link_id': 'org_%04d' % i,
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   210
        'name': 'Org App %04d' % i,
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   211
        'scope_path': 'google/gsoc2009',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   212
        'scope': gsoc2009,
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   213
        'status': status,
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   214
        'applicant': current_user,
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   215
        'home_page': 'http://www.google.com',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   216
        'email': 'org@example.com',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   217
        'irc_channel': '#care',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   218
        'pub_mailing_list': 'http://groups.google.com',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   219
        'dev_mailing_list': 'http://groups.google.com',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   220
        'description': 'This is an awesome org!',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   221
        'why_applying': 'Because we can',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   222
        'member_criteria': 'They need to be awesome',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   223
        'license_name': 'Apache License, 2.0',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   224
        'ideas': 'http://code.google.com/p/soc/issues',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   225
        'contrib_disappears': 'We use google to find them',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   226
        'member_disappears': 'See above',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   227
        'encourage_contribs': 'We offer them cookies.',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   228
        'continued_contribs': 'We promise them a cake.',
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   229
        'agreed_to_admin_agreement': True,
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   230
        }
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   231
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   232
    org_application = OrgApplication(**properties)
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   233
    if entities is None:
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   234
      org_application.put()
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   235
    else:
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   236
      entities.append(org_application)
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   237
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   238
1791
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   239
def seed(request, *args, **kwargs):
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   240
  """Seeds the datastore with some default values.
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   241
  """
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   242
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   243
  site_properties = {
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   244
      'key_name': 'site',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   245
      'link_id': 'site',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   246
      }
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   247
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   248
  site = Site(**site_properties)
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   249
  site.put()
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   250
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   251
2074
5c75312566d5 Fix too long lines, style and remove unused imports in soc.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2048
diff changeset
   252
  _, current_user = ensureUser()
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   253
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   254
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   255
  seeder = UserSeeder()
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
   256
  for i in range(15):
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   257
    seeder.seed(i)
1602
723739837649 Seed some users as well
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1562
diff changeset
   258
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   259
  group_properties = {
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   260
       'key_name': 'google',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   261
       'link_id': 'google',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   262
       'name': 'Google Inc.',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   263
       'short_name': 'Google',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   264
       'founder': current_user,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   265
       'home_page': 'http://www.google.com',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   266
       'email': 'ospo@google.com',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   267
       'description': 'This is the profile for Google.',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   268
       'contact_street': 'Some Street',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   269
       'contact_city': 'Some City',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   270
       'contact_country': 'United States',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   271
       'contact_postalcode': '12345',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   272
       'phone': '1-555-BANANA',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   273
       'status': 'active',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   274
       }
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   275
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   276
  google = Sponsor(**group_properties)
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   277
  google.put()
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   278
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   279
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   280
  role_properties = {
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   281
      'key_name': 'google/test',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   282
      'link_id': 'test',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   283
      'scope': google,
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   284
      'scope_path': 'google',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   285
      'user': current_user,
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   286
      'given_name': 'Test',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   287
      'surname': 'Example',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   288
      'name_on_documents': 'Test Example',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   289
      'email': 'test@example.com',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   290
      'res_street': 'Some Street',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   291
      'res_city': 'Some City',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   292
      'res_state': 'Some State',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   293
      'res_country': 'United States',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   294
      'res_postalcode': '12345',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   295
      'phone': '1-555-BANANA',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   296
      'birth_date': db.DateProperty.now(),
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   297
      'agreed_to_tos': True,
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   298
      }
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   299
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   300
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   301
  google_host = Host(**role_properties)
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   302
  google_host.put()
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   303
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   304
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   305
  timeline_properties = {
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   306
        'key_name': 'google/gsoc2009',
1475
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   307
        'link_id': 'gsoc2009',
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   308
        'scope_path': 'google',
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   309
        'scope': google,
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   310
        }
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   311
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   312
  gsoc2009_timeline = Timeline(**timeline_properties)
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   313
  gsoc2009_timeline.put()
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   314
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   315
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   316
  program_properties = {
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   317
      'key_name': 'google/gsoc2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   318
      'link_id': 'gsoc2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   319
      'scope_path': 'google',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   320
      'scope': google,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   321
      'name': 'Google Summer of Code 2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   322
      'short_name': 'GSoC 2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   323
      'group_label': 'GSOC',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   324
      'description': 'This is the program for GSoC 2009.',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   325
      'apps_tasks_limit': 42,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   326
      'slots': 42,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   327
      'workflow': 'gsoc',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   328
      'timeline': gsoc2009_timeline,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   329
      'status': 'visible',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   330
      }
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   331
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   332
  gsoc2009 = Program(**program_properties)
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   333
  gsoc2009.put()
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   334
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   335
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   336
  timeline_properties = {
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   337
        'key_name': 'google/ghop2009',
1475
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   338
        'link_id': 'ghop2009',
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   339
        'scope_path': 'google',
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   340
        'scope': google,
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   341
        }
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   342
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   343
  ghop2009_timeline = Timeline(**timeline_properties)
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   344
  ghop2009_timeline.put()
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   345
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   346
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   347
  program_properties.update({
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   348
      'key_name': 'google/ghop2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   349
      'link_id': 'ghop2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   350
      'name': 'Google Highly Open Participation Contest 2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   351
      'short_name': 'GHOP 2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   352
      'group_label': 'GHOP',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   353
      'description': 'This is the program for GHOP 2009.',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   354
      'workflow': 'ghop',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   355
      'timeline': ghop2009_timeline,
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   356
      })
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   357
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   358
  ghop2009 = Program(**program_properties)
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   359
  ghop2009.put()
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   360
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   361
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   362
  org_app_properties = {
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   363
    'scope_path': 'google/gsoc2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   364
    'scope': gsoc2009,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   365
    'applicant': current_user,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   366
    'home_page': 'http://www.google.com',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   367
    'email': 'org@example.com',
1562
0e1a93e0c54d Made mailing lists and IRC channel required for group/org applications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1475
diff changeset
   368
    'irc_channel': '#care',
0e1a93e0c54d Made mailing lists and IRC channel required for group/org applications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1475
diff changeset
   369
    'pub_mailing_list': 'http://groups.google.com',
0e1a93e0c54d Made mailing lists and IRC channel required for group/org applications.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1475
diff changeset
   370
    'dev_mailing_list': 'http://groups.google.com',
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   371
    'description': 'This is an awesome org!',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   372
    'why_applying': 'Because we can',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   373
    'member_criteria': 'They need to be awesome',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   374
    'status': 'pre-accepted',
1429
cfa0c3f2dc19 Update seed_db as WTFPL is no longer an allowed license
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1415
diff changeset
   375
    'license_name': 'Apache License, 2.0',
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   376
    'ideas': 'http://code.google.com/p/soc/issues',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   377
    'contrib_disappears': 'We use google to find them',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   378
    'member_disappears': 'See above',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   379
    'encourage_contribs': 'We offer them cookies.',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   380
    'continued_contribs': 'We promise them a cake.',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   381
    'agreed_to_admin_agreement': True,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   382
    }
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   383
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
   384
  for i in range(10):
2352
33ff03da52b6 Link id and key name fixes for Organization And OrgApplication in seed_db.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2351
diff changeset
   385
    org_app_properties['key_name'] = 'google/gsoc2009/org_%04d' % i
33ff03da52b6 Link id and key name fixes for Organization And OrgApplication in seed_db.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2351
diff changeset
   386
    org_app_properties['link_id'] = 'org_%04d' % i
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   387
    org_app_properties['name'] = 'Org App %04d' % i
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   388
    entity = OrgApplication(**org_app_properties)
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   389
    entity.put()
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   390
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   391
1791
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   392
  org_app_properties['status'] = 'pre-rejected'
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   393
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
   394
  for i in range(10, 20):
1791
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   395
    org_app_properties['key_name'] = 'google/gsoc2009/loser_%d' % i
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   396
    org_app_properties['link_id'] = 'loser_%d' % i
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   397
    org_app_properties['name'] = 'Loser %d' % i
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   398
    entity = OrgApplication(**org_app_properties)
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   399
    entity.put()
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   400
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   401
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   402
  group_properties.update({
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   403
    'key_name': 'google/ghop2009/melange',
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   404
    'link_id': 'melange',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   405
    'name': 'Melange Development Team',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   406
    'short_name': 'Melange',
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   407
    'scope_path': 'google/ghop2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   408
    'scope': ghop2009,
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   409
    'home_page': 'http://code.google.com/p/soc',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   410
    'description': 'Melange, share the love!',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   411
    'license_name': 'Apache License',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   412
    'ideas': 'http://code.google.com/p/soc/issues',
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   413
    })
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   414
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   415
  melange = Organization(**group_properties)
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   416
  melange.put()
1609
cd285bc524f1 Create a new Ranker for each organization that is created.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1602
diff changeset
   417
  # create a new ranker
1623
8b70d6bb3f8f Renamed rankerroot to ranker_root and made some changes due to comments.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1609
diff changeset
   418
  ranker_root_logic.create(student_proposal.DEF_RANKER_NAME, melange,
1609
cd285bc524f1 Create a new Ranker for each organization that is created.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1602
diff changeset
   419
      student_proposal.DEF_SCORE, 100)
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   420
1791
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   421
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   422
  group_properties.update({
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   423
    'scope_path': 'google/gsoc2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   424
    'scope': gsoc2009,
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   425
    })
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   426
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
   427
  for i in range(15):
1362
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   428
    group_properties.update({
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   429
        'key_name': 'google/gsoc2009/org_%d' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   430
        'link_id': 'org_%d' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   431
        'name': 'Organization %d' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   432
        'short_name': 'Org %d' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   433
        'description': 'Organization %d!' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   434
        })
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   435
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   436
    entity = Organization(**group_properties)
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   437
    entity.put()
1609
cd285bc524f1 Create a new Ranker for each organization that is created.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1602
diff changeset
   438
    # create a new ranker
1623
8b70d6bb3f8f Renamed rankerroot to ranker_root and made some changes due to comments.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1609
diff changeset
   439
    ranker_root_logic.create(student_proposal.DEF_RANKER_NAME, entity,
1609
cd285bc524f1 Create a new Ranker for each organization that is created.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1602
diff changeset
   440
        student_proposal.DEF_SCORE, 100)
1362
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   441
2027
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   442
    if i < 2:
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   443
      role_properties.update({
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   444
          'key_name': 'google/gsoc2009/org_%d/test' % i,
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   445
          'link_id': 'test',
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   446
          'scope_path': 'google/gsoc2009/org_%d' % i,
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   447
          'scope': entity,
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   448
          'program': gsoc2009,
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   449
          })
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   450
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   451
      # Admin for the first org
2027
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   452
      if i == 0:
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   453
        org_1_admin = OrgAdmin(**role_properties)
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   454
        org_1_admin.put()
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   455
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   456
      # Only a mentor for the second org
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   457
      if i == 1:
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   458
        org_1_mentor = Mentor(**role_properties)
199bcab679df Make test@example.com a mentor for one gsoc org and an admin (for a different) gsoc org.
Tim Ansell <mithro@gmail.com>
parents: 1945
diff changeset
   459
        org_1_mentor.put()
1362
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   460
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   461
  role_properties.update({
1434
441a2b39f88b Fixed a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1429
diff changeset
   462
      'key_name': 'google/ghop2009/melange/test',
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   463
      'link_id': 'test',
1434
441a2b39f88b Fixed a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1429
diff changeset
   464
      'scope_path': 'google/ghop2009/melange',
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   465
      'scope': melange,
1434
441a2b39f88b Fixed a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1429
diff changeset
   466
      'program': ghop2009,
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   467
      })
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   468
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   469
  melange_admin = OrgAdmin(**role_properties)
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   470
  melange_admin.put()
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   471
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   472
  melange_mentor = Mentor(**role_properties)
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   473
  melange_mentor.put()
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   474
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   475
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   476
  document_properties = {
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   477
      'key_name': 'site/site/home',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   478
      'link_id': 'home',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   479
      'scope_path': 'site',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   480
      'scope': site,
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   481
      'prefix': 'site',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   482
      'author': current_user,
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   483
      'title': 'Home Page',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   484
      'short_name': 'Home',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   485
      'content': 'This is the Home Page',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   486
      'modified_by': current_user,
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   487
      }
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   488
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   489
  home_document = Document(**document_properties)
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   490
  home_document.put()
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   491
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   492
1415
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   493
  document_properties = {
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   494
      'key_name': 'user/test/notes',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   495
      'link_id': 'notes',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   496
      'scope_path': 'test',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   497
      'scope': current_user,
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   498
      'prefix': 'user',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   499
      'author': current_user,
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   500
      'title': 'My Notes',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   501
      'short_name': 'Notes',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   502
      'content': 'These are my notes',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   503
      'modified_by': current_user,
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   504
      }
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   505
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   506
  notes_document = Document(**document_properties)
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   507
  notes_document.put()
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   508
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   509
  site.home = home_document
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   510
  site.put()
2361
40b0c25a5793 Some more pylint fixes in different Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2352
diff changeset
   511
  # pylint: disable-msg=E1101
1453
378c844bf52c Flush cache after seeding or clearing the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1434
diff changeset
   512
  memcache.flush_all()
378c844bf52c Flush cache after seeding or clearing the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1434
diff changeset
   513
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   514
  return http.HttpResponse('Done')
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   515
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   516
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   517
def seed_user(unused_request, i):
1902
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   518
  """Returns the properties for a new user entity.
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   519
  """
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   520
  properties = {
2175
8dd78e7015f9 Fix a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2167
diff changeset
   521
      'key_name': 'user_%d' % i,
8dd78e7015f9 Fix a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2167
diff changeset
   522
      'link_id': 'user_%d' % i,
8dd78e7015f9 Fix a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2167
diff changeset
   523
      'account': users.User(email='user_%d@example.com' % i),
8dd78e7015f9 Fix a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2167
diff changeset
   524
      'name': 'User %d' % i,
1902
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   525
      }
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   526
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   527
  return properties
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   528
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   529
1907
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   530
def seed_org_app(request, i):
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   531
  """Returns the properties for a new org proposal,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   532
  """
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   533
2074
5c75312566d5 Fix too long lines, style and remove unused imports in soc.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2048
diff changeset
   534
  _, current_user = ensureUser()
1907
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   535
  status = request.GET.get('status', 'pre-accepted')
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   536
  gsoc2009 = Program.get_by_key_name('google/gsoc2009')
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   537
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   538
  if not gsoc2009:
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   539
    raise Error('Run seed_db first')
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   540
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   541
  properties = {
2352
33ff03da52b6 Link id and key name fixes for Organization And OrgApplication in seed_db.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2351
diff changeset
   542
      'key_name': 'google/gsoc2009/org_%d' % i,
33ff03da52b6 Link id and key name fixes for Organization And OrgApplication in seed_db.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2351
diff changeset
   543
      'link_id': 'org_%d' % i,
1907
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   544
      'name': 'Org App %d' % i,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   545
      'scope_path': 'google/gsoc2009',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   546
      'scope': gsoc2009,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   547
      'status': status,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   548
      'applicant': current_user,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   549
      'home_page': 'http://www.google.com',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   550
      'email': 'org@example.com',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   551
      'irc_channel': '#care',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   552
      'pub_mailing_list': 'http://groups.google.com',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   553
      'dev_mailing_list': 'http://groups.google.com',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   554
      'description': 'This is an awesome org!',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   555
      'why_applying': 'Because we can',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   556
      'member_criteria': 'They need to be awesome',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   557
      'license_name': 'Apache License, 2.0',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   558
      'ideas': 'http://code.google.com/p/soc/issues',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   559
      'contrib_disappears': 'We use google to find them',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   560
      'member_disappears': 'See above',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   561
      'encourage_contribs': 'We offer them cookies.',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   562
      'continued_contribs': 'We promise them a cake.',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   563
      'agreed_to_admin_agreement': True,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   564
      }
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   565
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   566
  return properties
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   567
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   568
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   569
def seed_org(unused_request, i):
1903
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   570
  """Returns the properties for a new org entity.
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   571
  """
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   572
2074
5c75312566d5 Fix too long lines, style and remove unused imports in soc.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2048
diff changeset
   573
  _, current_user = ensureUser()
1903
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   574
  gsoc2009 = Program.get_by_key_name('google/gsoc2009')
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   575
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   576
  if not gsoc2009:
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   577
    raise Error('Run seed_db first')
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   578
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   579
  properties = {
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   580
      'key_name': 'google/gsoc2009/org_%d' % i,
1903
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   581
      'link_id': 'org_%d' % i,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   582
      'name': 'Organization %d' % i,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   583
      'short_name': 'Org %d' % i,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   584
      'founder': current_user,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   585
      'scope_path': 'google/gsoc2009',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   586
      'scope': gsoc2009,
1929
1ce28a2dd71f Added missing status to seeded orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1907
diff changeset
   587
      'status': 'active',
1903
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   588
      'email': 'org_%i@example.com' % i,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   589
      'home_page': 'http://code.google.com/p/soc',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   590
      'description': 'Melange, share the love!',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   591
      'license_name': 'Apache License',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   592
      'contact_street': 'Some Street',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   593
      'contact_city': 'Some City',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   594
      'contact_country': 'United States',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   595
      'contact_postalcode': '12345',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   596
      'phone': '1-555-BANANA',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   597
      'ideas': 'http://code.google.com/p/soc/issues',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   598
      }
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   599
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   600
  return properties
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   601
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   602
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   603
def seed_mentor(request, i):
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   604
  """Returns the properties of a new student proposal.
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   605
  """
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   606
2074
5c75312566d5 Fix too long lines, style and remove unused imports in soc.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2048
diff changeset
   607
  _, current_user = ensureUser()
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   608
  org = Organization.get_by_key_name('google/gsoc2009/org_%d' % i)
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   609
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   610
  if not org:
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   611
    raise Error('Run seed_many for at least %d orgs first.' % i)
2361
40b0c25a5793 Some more pylint fixes in different Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2352
diff changeset
   612
  
40b0c25a5793 Some more pylint fixes in different Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2352
diff changeset
   613
  # pylint: disable-msg=E1103
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   614
  properties = {
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   615
      'key_name': 'google/gsoc2009/org_%d/mentor' % i,
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   616
      'link_id': 'mentor',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   617
      'scope': org,
2160
3f9dd37d98a8 Use key().id_or_name() instead of key().name()
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2074
diff changeset
   618
      'scope_path': org.key().id_or_name(),
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   619
      'user': current_user,
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   620
      'given_name': 'Mentor',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   621
      'surname': 'Man',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   622
      'name_on_documents': 'Mentor Man',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   623
      'email': 'mentor@example.com',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   624
      'res_street': 'Some Street',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   625
      'res_city': 'Some City',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   626
      'res_state': 'Some State',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   627
      'res_country': 'United States',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   628
      'res_postalcode': '12345',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   629
      'phone': '1-555-BANANA',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   630
      'birth_date': db.DateProperty.now(),
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   631
      'agreed_to_tos': True,
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   632
      'program': org.scope,
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   633
      }
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   634
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   635
  return properties
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   636
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   637
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   638
def seed_student(request, i):
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   639
  """Returns the properties for a new student entity.
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   640
  """
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   641
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   642
  gsoc2009 = Program.get_by_key_name('google/gsoc2009')
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   643
  user = User.get_by_key_name('user_%d' % i)
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   644
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   645
  if not gsoc2009:
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   646
    raise Error('Run seed_db first')
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   647
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   648
  if not user:
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   649
    raise Error('Run seed_many for at least %d users first.' % i)
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   650
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   651
  properties = {
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   652
      'key_name':'google/gsoc2009/student_%d' % i,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   653
      'link_id': 'student_%d' % i,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   654
      'scope_path': 'google/gsoc2009',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   655
      'scope': gsoc2009,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   656
      'user' : user,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   657
      'given_name': 'Student %d' % i,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   658
      'surname': 'Last Name',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   659
      'name_on_documents': 'Test Example',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   660
      'email': 'test@example.com',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   661
      'res_street': 'Some Street',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   662
      'res_city': 'Some City',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   663
      'res_state': 'Some State',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   664
      'res_country': 'United States',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   665
      'res_postalcode': '12345',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   666
      'phone': '1-555-BANANA',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   667
      'birth_date': db.DateProperty.now(),
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   668
      'agreed_to_tos': True,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   669
      'school_name': 'School %d' % i,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   670
      'school_country': 'United States',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   671
      'major': 'Computer Science',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   672
      'degree': 'Undergraduate',
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   673
      'expected_graduation': 2012,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   674
      'program_knowledge': 'Knowledge %d' % i,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   675
      'school': None,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   676
      'can_we_contact_you': True,
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   677
  }
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   678
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   679
  return properties
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   680
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   681
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   682
def seed_student_proposal(request, i):
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   683
  """Returns the properties of a new student proposal.
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   684
  """
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   685
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   686
  ensureUser()
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   687
  org = Organization.get_by_key_name('google/gsoc2009/org_%d' % i)
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   688
  mentor = Mentor.get_by_key_name('google/gsoc2009/org_%d/mentor' % i)
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   689
  user = User.get_by_key_name('user_%d' % i)
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   690
  student = Student.get_by_key_name('google/gsoc2009/student_%d' % i)
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   691
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   692
  if not user:
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   693
    raise Error('Run seed_many for at least %d users first.' % i)
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   694
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   695
  if not student:
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   696
    raise Error('Run seed_many for at least %d students first.' % i)
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   697
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   698
  if not org:
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   699
    raise Error('Run seed_many for at least %d orgs first.' % i)
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   700
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   701
  if not mentor:
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   702
    raise Error('Run seed_many for at least %d mentors first.' % i)
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   703
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   704
  all_properties = []
2361
40b0c25a5793 Some more pylint fixes in different Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2352
diff changeset
   705
  
40b0c25a5793 Some more pylint fixes in different Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2352
diff changeset
   706
  # pylint: disable-msg=E1103
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   707
  for i in range(random.randint(5, 20)):
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   708
    link_id = 'proposal_%s_%d' % (org.link_id, i)
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   709
    scope_path = 'google/gsoc2009/' + user.link_id
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   710
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   711
    properties = {
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   712
        'link_id': link_id,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   713
        'scope_path': scope_path,
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   714
        'scope': student,
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   715
        'key_name': '%s/%s' % (scope_path, link_id),
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   716
        'title': 'The Awesome Proposal %s %d' % (user.link_id, i),
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   717
        'abstract': 'This is an Awesome Proposal, look at its awesomeness!',
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   718
        'content': 'Sorry, too Awesome for you to read!',
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   719
        'additional_info': 'http://www.zipit.com',
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   720
        'mentor': mentor,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   721
        'status': 'pending',
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   722
        'org': org,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   723
        'program': org.scope,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   724
        }
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   725
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   726
    all_properties.append(properties)
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   727
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   728
  return all_properties
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   729
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   730
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   731
SEEDABLE_MODEL_TYPES = {
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   732
    'user' : UserSeeder(),
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   733
    'organization' : OrganizationSeeder(),
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   734
    'org_application' : OrgApplicationSeeder(),
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   735
    }
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   736
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   737
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   738
def new_seed_many(request, *args, **kwargs):
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   739
  """Seeds many instances of the specified type.
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   740
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   741
  Takes as URL parameters:
2167
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
   742
    seed_type: the type of entity to seed; should be a key in
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
   743
               SEEDABLE_MODEL_TYPES
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
   744
    goal: the total number of entities desired
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   745
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   746
  This differs from seed_many. Instead of having to specify many parameters
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   747
    that are the state of an in-flight process, simply say how many you want
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   748
    to have (at least) at the end.  This will make progress towards that goal.
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   749
    In my test run, even adding 1001 users completed in far less than the
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   750
    limit for one request, so pagination was unnecessary.
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   751
  """
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   752
  # First, figure out which model we're interested in.
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   753
  if ('seed_type' not in request.GET or
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   754
      request.GET['seed_type'] not in SEEDABLE_MODEL_TYPES):
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   755
    return http.HttpResponse(
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   756
        ('Missing or invalid required argument "seed_type" (which model'
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   757
        ' type to populate). '
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   758
        'Valid values are: %s') % SEEDABLE_MODEL_TYPES.keys())
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   759
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   760
  seeder = SEEDABLE_MODEL_TYPES[request.GET['seed_type']]
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   761
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   762
  if 'goal' not in request.GET:
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   763
    return http.HttpResponse(
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   764
        'Missing required argument "goal" (how many entities of '
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   765
        'this type you want to have in the datastore).'
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   766
        )
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   767
  goal = int(request.GET['goal'])
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   768
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   769
  # Get the highest instance of this model so that we know
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   770
  # where to start seeding new ones.
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   771
  query = db.Query(seeder.type())
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   772
  query.order('-link_id')
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   773
  # TODO(dbentley): filter for ones < user_9999
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   774
  highest_instance = query.get()
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   775
  if not highest_instance:
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   776
    start_index = 0
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   777
  else:
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   778
    # We know that seeded entities have link_id's of the form foo_%04d
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   779
    # so, we look for what's after the _ and turn it into an int.
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   780
    link_id = highest_instance.link_id
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   781
    if '_' in link_id:
2351
73448b71aa07 Add Organization Application seeding.
Dan Bentley <dbentley@google.com>
parents: 2200
diff changeset
   782
      start_index = int(link_id.split('_')[-1]) + 1
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   783
    else:
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   784
      # couldn't find seeded_entities; guessing there are none
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   785
      start_index = 0
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   786
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   787
  common_args = seeder.commonSeedArgs(request)
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   788
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   789
  # Insert from start_index to goal
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   790
  logging.info("To insert: %d to %d" % (start_index, goal))
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   791
  seeded_entities = []
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   792
  total = 0
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   793
  for i in xrange(start_index, goal):
2167
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
   794
    if i % 20 == 0:
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
   795
      logging.info("Inserting: %d of %d" % (i+1, goal))
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   796
    if len(seeded_entities) % 100 == 0:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   797
      db.put(seeded_entities)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   798
      total += len(seeded_entities)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   799
      seeded_entities = []
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   800
    seeder.seed(i, entities=seeded_entities, **common_args)
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   801
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   802
  db.put(seeded_entities)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   803
  total += len(seeded_entities)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   804
  return http.HttpResponse('Seeded %d entities.' % total)
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   805
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   806
1901
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   807
def seed_many(request, *args, **kwargs):
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   808
  """Seeds many instances of the specified type.
1945
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   809
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   810
    Understands the following GET args:
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   811
    start: where to start adding new users at
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   812
    end: where to stop adding new users at
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   813
    goal: how many users to add in total, implies user_only
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   814
    step: how many users to add per request, defaults to 15
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   815
    seed_type: the type of entity to seed, should be one of:
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   816
      user, org, org_app, mentor, student_proposal
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   817
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   818
    Redirects if end < goal, incrementing both start and end with step.
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   819
1901
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   820
  """
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   821
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   822
  get_args = request.GET
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   823
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   824
  if not dicts.containsAll(get_args, ['goal', 'start', 'end', 'seed_type']):
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   825
    return http.HttpResponse('Missing get args.')
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   826
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   827
  seed_types = {
1902
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   828
    'user': (seed_user, User),
1903
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   829
    'org': (seed_org, Organization),
1907
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   830
    'org_app': (seed_org_app, OrgApplication),
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   831
    'mentor': (seed_mentor, Mentor),
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   832
    'student': (seed_student, Student),
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   833
    'student_proposal': (seed_student_proposal, StudentProposal),
1901
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   834
    }
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   835
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   836
  goal = int(get_args['goal'])
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   837
  start = int(get_args['start'])
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   838
  end = int(get_args['end'])
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   839
  step = int(get_args.get('step', '15'))
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   840
  seed_type = get_args['seed_type']
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   841
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   842
  if not seed_type in seed_types:
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   843
    return http.HttpResponse('Unknown seed_type: "%s".' % seed_type)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   844
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   845
  action, model = seed_types[seed_type]
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   846
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   847
  for i in range(start, end):
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   848
    try:
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   849
      props = action(request, i)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   850
    except Error, error:
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   851
      return http.HttpResponse(error.message)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   852
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   853
    for properties in props if isinstance(props, list) else [props]:
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   854
      entity = model(**properties)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   855
      entity.put()
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   856
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   857
  if end < goal:
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   858
    info = {
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   859
        'start': start + step,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   860
        'end': end + step,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   861
        'goal': goal,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   862
        'step': step,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   863
        'seed_type': seed_type,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   864
        }
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   865
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   866
    args = ["%s=%s" % (k, v) for k, v in info.iteritems()]
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   867
    url = '/seed_many?' + '&'.join(args)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   868
    return http.HttpResponseRedirect(url)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   869
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   870
  return http.HttpResponse('Done.')
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   871
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   872
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   873
def clear(*args, **kwargs):
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   874
  """Removes all entities from the datastore.
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   875
  """
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   876
1794
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   877
  # there no explicit ranker model anywhere, so make one for
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   878
  # our own convenience to delete all rankers
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   879
  class ranker(db.Model):
2074
5c75312566d5 Fix too long lines, style and remove unused imports in soc.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2048
diff changeset
   880
    """ranker model used with ranklist module.
5c75312566d5 Fix too long lines, style and remove unused imports in soc.models modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2048
diff changeset
   881
    """
1794
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   882
    pass
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   883
2048
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   884
  # TODO(dbentley): If there are more than 1000 instances of any model,
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   885
  # this method will not clear all instances.  Instead, it should continually
236f37777764 A new model for seeding the database that makes it easier to seed many entities.
Daniel Bentley <dbentley@google.com>
parents: 2027
diff changeset
   886
  # call .all(), delete all those, and loop until .all() is empty.
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   887
  entities = itertools.chain(*[
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   888
      Notification.all(),
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   889
      Mentor.all(),
2200
a1a7c262235d Add proper generation of Student entities and StudentProposal entities to seed_db module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2184
diff changeset
   890
      Student.all(),
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   891
      OrgAdmin.all(),
1794
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   892
      ranker.all(),
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   893
      RankerRoot.all(),
1906
224f597846b5 Added StudentProposal to clean_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1905
diff changeset
   894
      StudentProposal.all(),
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   895
      Organization.all(),
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   896
      OrgApplication.all(),
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   897
      Timeline.all(),
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   898
      Program.all(),
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   899
      Host.all(),
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   900
      Sponsor.all(),
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   901
      User.all(),
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   902
      Site.all(),
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   903
      Document.all(),
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   904
      ])
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   905
1799
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   906
  try:
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   907
    for entity in entities:
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   908
      entity.delete()
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   909
  except db.Timeout:
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   910
    return http.HttpResponseRedirect('#')
2361
40b0c25a5793 Some more pylint fixes in different Melange modules.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 2352
diff changeset
   911
  # pylint: disable-msg=E1101
1453
378c844bf52c Flush cache after seeding or clearing the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1434
diff changeset
   912
  memcache.flush_all()
378c844bf52c Flush cache after seeding or clearing the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1434
diff changeset
   913
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   914
  return http.HttpResponse('Done')
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   915
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   916
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   917
def reseed(*args, **kwargs):
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   918
  """Clears and seeds the datastore.
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   919
  """
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   920
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   921
  clear(*args, **kwargs)
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   922
  seed(*args, **kwargs)
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   923
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   924
  return http.HttpResponse('Done')