app/soc/models/seed_db.py
author Daniel Bentley <dbentley@google.com>
Wed, 15 Apr 2009 08:01:17 +0000
changeset 2184 a1bda9afa5d0
parent 2175 8dd78e7015f9
child 2200 a1a7c262235d
permissions -rw-r--r--
Step 2 of moving to new seeding model. Create Seeder class, which abstracts some seeding. Move user to Seeder class, and make new OrganizationSeeder class. If people like this, I'll finish the rest soon. Patch by: Dan Bentley
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
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
    49
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
    50
from soc.models.sponsor import Sponsor
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    51
from soc.models.timeline import Timeline
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
    52
from soc.models.user import User
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    53
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    54
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    55
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
    56
  """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
    57
  """
2167
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
    58
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    59
  pass
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    60
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
def ensureUser():
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    63
  """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
    64
  """
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
  account = accounts.getCurrentAccount()
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    67
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    68
  if not account:
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    69
    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
    70
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    71
  user_properties = {
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    72
      'key_name': 'test',
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    73
      'link_id': 'test',
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    74
      'account': account,
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    75
      'name': 'Test',
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    76
      }
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
  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
    79
  current_user.put()
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    80
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    81
  return account, current_user
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    82
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
    83
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    84
class Seeder(object):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    85
  """A Seeder can seed Melange types.
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    86
  """
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    87
  def type(self):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    88
    """Returns the type to be seeded."""
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    89
    raise NotImplementedError
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    90
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    91
  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
    92
    """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
    93
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    94
    Args:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    95
      i, int: which to seed
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    96
      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
    97
        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
    98
        persisting.
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
    99
      kwargs: the dictionary returned by commonSeedArgs
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   100
    """
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   101
    raise NotImplementedError
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   102
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   103
  def commonSeedArgs(self, request):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   104
    """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
   105
    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
   106
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   107
    Returns:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   108
      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
   109
      request
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   110
    """
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   111
    raise NotImplementedError
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   112
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
class UserSeeder(Seeder):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   115
  def type(self):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   116
    return User
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
   117
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   118
  def seed(self, i, entities=None):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   119
    user_properties = {
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   120
        'key_name': 'user_%04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   121
        'link_id': 'user_%04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   122
        '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
   123
        'name': 'User %04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   124
        }
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   125
    entity = User(**user_properties)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   126
    if entities is None:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   127
      entity.put()
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   128
    else:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   129
      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
   130
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   131
  def commonSeedArgs(self, request):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   132
    return {}
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   133
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   134
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   135
class OrganizationSeeder(Seeder):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   136
  def type(self):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   137
    return Organization
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
  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
   140
    properties = {
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   141
        'key_name': 'google/gsoc2009/%04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   142
        'link_id': 'org_%04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   143
        'name': 'Organization %04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   144
        'short_name': 'Org %04d' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   145
        'founder': current_user,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   146
        'scope_path': 'google/gsoc2009',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   147
        'scope': gsoc2009,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   148
        'status': 'active',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   149
        'email': 'org_%04d@example.com' % i,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   150
        '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
   151
        'description': 'Melange, share the love!',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   152
        'license_name': 'Apache License',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   153
        'contact_street': 'Some Street',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   154
        'contact_city': 'Some City',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   155
        'contact_country': 'United States',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   156
        'contact_postalcode': '12345',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   157
        'phone': '1-555-BANANA',
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   158
        '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
   159
        }
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   160
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   161
    org = Organization(**properties)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   162
    if entities is None:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   163
      org.put()
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   164
    else:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   165
      entities.append(org)
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
  def commonSeedArgs(self, request):
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   168
    _, current_user = ensureUser()
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   169
    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
   170
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   171
    if not gsoc2009:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   172
      raise Error('Run seed_db first')
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
    return dict(current_user=current_user,
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   175
                gsoc2009=gsoc2009)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   176
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
   177
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
   178
1791
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   179
def seed(request, *args, **kwargs):
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   180
  """Seeds the datastore with some default values.
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   181
  """
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   182
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   183
  site_properties = {
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   184
      'key_name': 'site',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   185
      'link_id': 'site',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   186
      }
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   187
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   188
  site = Site(**site_properties)
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   189
  site.put()
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   190
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   191
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
   192
  _, current_user = ensureUser()
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   193
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   194
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   195
  s = UserSeeder()
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
   196
  for i in range(15):
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   197
    s.seed(i)
1602
723739837649 Seed some users as well
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1562
diff changeset
   198
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   199
  group_properties = {
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   200
       'key_name': 'google',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   201
       'link_id': 'google',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   202
       'name': 'Google Inc.',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   203
       'short_name': 'Google',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   204
       'founder': current_user,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   205
       'home_page': 'http://www.google.com',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   206
       'email': 'ospo@google.com',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   207
       'description': 'This is the profile for Google.',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   208
       'contact_street': 'Some Street',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   209
       'contact_city': 'Some City',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   210
       'contact_country': 'United States',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   211
       'contact_postalcode': '12345',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   212
       'phone': '1-555-BANANA',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   213
       'status': 'active',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   214
       }
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   215
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   216
  google = Sponsor(**group_properties)
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   217
  google.put()
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   218
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   219
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   220
  role_properties = {
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   221
      'key_name': 'google/test',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   222
      'link_id': 'test',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   223
      'scope': google,
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   224
      'scope_path': 'google',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   225
      'user': current_user,
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   226
      'given_name': 'Test',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   227
      'surname': 'Example',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   228
      'name_on_documents': 'Test Example',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   229
      'email': 'test@example.com',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   230
      'res_street': 'Some Street',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   231
      'res_city': 'Some City',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   232
      'res_state': 'Some State',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   233
      'res_country': 'United States',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   234
      'res_postalcode': '12345',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   235
      'phone': '1-555-BANANA',
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   236
      'birth_date': db.DateProperty.now(),
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   237
      'agreed_to_tos': True,
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   238
      }
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   239
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   240
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   241
  google_host = Host(**role_properties)
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   242
  google_host.put()
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   243
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   244
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   245
  timeline_properties = {
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   246
        'key_name': 'google/gsoc2009',
1475
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   247
        'link_id': 'gsoc2009',
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   248
        'scope_path': 'google',
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   249
        'scope': google,
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   250
        }
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   251
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   252
  gsoc2009_timeline = Timeline(**timeline_properties)
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   253
  gsoc2009_timeline.put()
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   254
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   255
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   256
  program_properties = {
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   257
      'key_name': 'google/gsoc2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   258
      'link_id': 'gsoc2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   259
      'scope_path': 'google',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   260
      'scope': google,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   261
      'name': 'Google Summer of Code 2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   262
      'short_name': 'GSoC 2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   263
      'group_label': 'GSOC',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   264
      '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
   265
      'apps_tasks_limit': 42,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   266
      'slots': 42,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   267
      'workflow': 'gsoc',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   268
      'timeline': gsoc2009_timeline,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   269
      'status': 'visible',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   270
      }
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   271
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   272
  gsoc2009 = Program(**program_properties)
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   273
  gsoc2009.put()
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   274
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   275
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   276
  timeline_properties = {
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   277
        'key_name': 'google/ghop2009',
1475
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   278
        'link_id': 'ghop2009',
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   279
        'scope_path': 'google',
22b63ab59b27 Make timeline a Linkable
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1453
diff changeset
   280
        'scope': google,
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   281
        }
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   282
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   283
  ghop2009_timeline = Timeline(**timeline_properties)
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   284
  ghop2009_timeline.put()
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   285
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   286
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   287
  program_properties.update({
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   288
      'key_name': 'google/ghop2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   289
      'link_id': 'ghop2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   290
      '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
   291
      'short_name': 'GHOP 2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   292
      'group_label': 'GHOP',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   293
      '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
   294
      'workflow': 'ghop',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   295
      'timeline': ghop2009_timeline,
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   296
      })
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   297
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   298
  ghop2009 = Program(**program_properties)
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   299
  ghop2009.put()
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   300
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   301
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   302
  org_app_properties = {
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   303
    'scope_path': 'google/gsoc2009',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   304
    'scope': gsoc2009,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   305
    'applicant': current_user,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   306
    'home_page': 'http://www.google.com',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   307
    '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
   308
    '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
   309
    '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
   310
    '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
   311
    'description': 'This is an awesome org!',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   312
    'why_applying': 'Because we can',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   313
    'member_criteria': 'They need to be awesome',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   314
    '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
   315
    'license_name': 'Apache License, 2.0',
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   316
    '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
   317
    '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
   318
    'member_disappears': 'See above',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   319
    'encourage_contribs': 'We offer them cookies.',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   320
    'continued_contribs': 'We promise them a cake.',
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   321
    'agreed_to_admin_agreement': True,
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   322
    }
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   323
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
   324
  for i in range(10):
1368
bd710a3ee7e7 Typo fix in seed_db module which caused loaded organization applications not to work correctly (wrong keyname).
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1363
diff changeset
   325
    org_app_properties['key_name'] = 'google/gsoc2009/wannabe_%d' % i
1362
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   326
    org_app_properties['link_id'] = 'wannabe_%d' % i
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   327
    org_app_properties['name'] = 'Wannabe %d' % i
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   328
    entity = OrgApplication(**org_app_properties)
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   329
    entity.put()
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   330
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   331
1791
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   332
  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
   333
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
   334
  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
   335
    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
   336
    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
   337
    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
   338
    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
   339
    entity.put()
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   340
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   341
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   342
  group_properties.update({
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   343
    'key_name': 'google/ghop2009/melange',
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   344
    'link_id': 'melange',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   345
    'name': 'Melange Development Team',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   346
    'short_name': 'Melange',
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   347
    'scope_path': 'google/ghop2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   348
    'scope': ghop2009,
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   349
    'home_page': 'http://code.google.com/p/soc',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   350
    'description': 'Melange, share the love!',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   351
    'license_name': 'Apache License',
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   352
    '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
   353
    })
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   354
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   355
  melange = Organization(**group_properties)
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   356
  melange.put()
1609
cd285bc524f1 Create a new Ranker for each organization that is created.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1602
diff changeset
   357
  # 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
   358
  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
   359
      student_proposal.DEF_SCORE, 100)
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   360
1791
26fa036d68a0 Make it possible to add more users and orgs with GET args
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1789
diff changeset
   361
1363
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   362
  group_properties.update({
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   363
    'scope_path': 'google/gsoc2009',
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   364
    'scope': gsoc2009,
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   365
    })
5667c29be1a3 Add GHOP as program and put 'Melange' under it
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1362
diff changeset
   366
1900
a2966f072219 Factor out ensureUser and add Error class in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1799
diff changeset
   367
  for i in range(15):
1362
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   368
    group_properties.update({
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   369
        'key_name': 'google/gsoc2009/org_%d' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   370
        'link_id': 'org_%d' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   371
        'name': 'Organization %d' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   372
        'short_name': 'Org %d' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   373
        'description': 'Organization %d!' % i,
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   374
        })
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   375
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   376
    entity = Organization(**group_properties)
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   377
    entity.put()
1609
cd285bc524f1 Create a new Ranker for each organization that is created.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1602
diff changeset
   378
    # 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
   379
    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
   380
        student_proposal.DEF_SCORE, 100)
1362
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   381
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
   382
    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
   383
      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
   384
          '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
   385
          '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
   386
          '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
   387
          '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
   388
          '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
   389
          })
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
   390
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
   391
      # 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
   392
      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
   393
        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
   394
        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
   395
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
   396
      # 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
   397
      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
   398
        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
   399
        org_1_mentor.put()
1362
31b2cb6b75d8 Seed in some orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1355
diff changeset
   400
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   401
  role_properties.update({
1434
441a2b39f88b Fixed a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1429
diff changeset
   402
      '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
   403
      'link_id': 'test',
1434
441a2b39f88b Fixed a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1429
diff changeset
   404
      'scope_path': 'google/ghop2009/melange',
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   405
      'scope': melange,
1434
441a2b39f88b Fixed a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1429
diff changeset
   406
      'program': ghop2009,
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   407
      })
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   408
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   409
  melange_admin = OrgAdmin(**role_properties)
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   410
  melange_admin.put()
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   411
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   412
  melange_mentor = Mentor(**role_properties)
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   413
  melange_mentor.put()
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   414
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   415
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   416
  document_properties = {
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   417
      'key_name': 'site/site/home',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   418
      'link_id': 'home',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   419
      'scope_path': 'site',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   420
      'scope': site,
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   421
      'prefix': 'site',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   422
      'author': current_user,
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   423
      'title': 'Home Page',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   424
      'short_name': 'Home',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   425
      'content': 'This is the Home Page',
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   426
      'modified_by': current_user,
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   427
      }
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   428
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   429
  home_document = Document(**document_properties)
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   430
  home_document.put()
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   431
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   432
1415
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   433
  document_properties = {
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   434
      '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
   435
      'link_id': 'notes',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   436
      'scope_path': 'test',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   437
      'scope': current_user,
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   438
      'prefix': 'user',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   439
      'author': current_user,
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   440
      'title': 'My Notes',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   441
      'short_name': 'Notes',
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   442
      '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
   443
      'modified_by': current_user,
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   444
      }
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   445
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   446
  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
   447
  notes_document.put()
d34768bf62d8 Added a document in the test user's user space
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1390
diff changeset
   448
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   449
  site.home = home_document
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   450
  site.put()
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   451
1453
378c844bf52c Flush cache after seeding or clearing the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1434
diff changeset
   452
  memcache.flush_all()
378c844bf52c Flush cache after seeding or clearing the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1434
diff changeset
   453
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   454
  return http.HttpResponse('Done')
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   455
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   456
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
   457
def seed_user(unused_request, i):
1902
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   458
  """Returns the properties for a new user entity.
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   459
  """
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   460
  properties = {
2175
8dd78e7015f9 Fix a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2167
diff changeset
   461
      'key_name': 'user_%d' % i,
8dd78e7015f9 Fix a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2167
diff changeset
   462
      'link_id': 'user_%d' % i,
8dd78e7015f9 Fix a bug in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2167
diff changeset
   463
      '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
   464
      'name': 'User %d' % i,
1902
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   465
      }
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   466
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   467
  return properties
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   468
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   469
1907
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   470
def seed_org_app(request, i):
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   471
  """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
   472
  """
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   473
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
   474
  _, current_user = ensureUser()
1907
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   475
  status = request.GET.get('status', 'pre-accepted')
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   476
  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
   477
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   478
  if not gsoc2009:
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   479
    raise Error('Run seed_db first')
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   480
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   481
  properties = {
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   482
      'key_name': 'google/gsoc2009/org_app_%d' % i,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   483
      'link_id': 'org_app_%d' % i,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   484
      'name': 'Org App %d' % i,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   485
      'scope_path': 'google/gsoc2009',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   486
      'scope': gsoc2009,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   487
      'status': status,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   488
      'applicant': current_user,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   489
      'home_page': 'http://www.google.com',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   490
      'email': 'org@example.com',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   491
      'irc_channel': '#care',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   492
      'pub_mailing_list': 'http://groups.google.com',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   493
      'dev_mailing_list': 'http://groups.google.com',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   494
      'description': 'This is an awesome org!',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   495
      'why_applying': 'Because we can',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   496
      'member_criteria': 'They need to be awesome',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   497
      'license_name': 'Apache License, 2.0',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   498
      '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
   499
      '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
   500
      'member_disappears': 'See above',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   501
      'encourage_contribs': 'We offer them cookies.',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   502
      'continued_contribs': 'We promise them a cake.',
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   503
      'agreed_to_admin_agreement': True,
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   504
      }
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   505
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   506
  return properties
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   507
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   508
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   509
def seed_org(unused_request, i):
1903
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   510
  """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
   511
  """
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   512
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
   513
  _, current_user = ensureUser()
1903
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   514
  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
   515
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   516
  if not gsoc2009:
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   517
    raise Error('Run seed_db first')
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   518
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   519
  properties = {
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   520
      'key_name': 'google/gsoc2009/%d' % i,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   521
      'link_id': 'org_%d' % i,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   522
      'name': 'Organization %d' % i,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   523
      'short_name': 'Org %d' % i,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   524
      'founder': current_user,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   525
      'scope_path': 'google/gsoc2009',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   526
      'scope': gsoc2009,
1929
1ce28a2dd71f Added missing status to seeded orgs
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1907
diff changeset
   527
      'status': 'active',
1903
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   528
      'email': 'org_%i@example.com' % i,
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   529
      '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
   530
      'description': 'Melange, share the love!',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   531
      'license_name': 'Apache License',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   532
      'contact_street': 'Some Street',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   533
      'contact_city': 'Some City',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   534
      'contact_country': 'United States',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   535
      'contact_postalcode': '12345',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   536
      'phone': '1-555-BANANA',
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   537
      '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
   538
      }
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   539
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   540
  return properties
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   541
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   542
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   543
def seed_mentor(request, i):
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   544
  """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
   545
  """
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   546
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
   547
  _, current_user = ensureUser()
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   548
  org = Organization.get_by_key_name('google/gsoc2009/%d' % i)
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   549
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   550
  if not org:
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   551
    raise Error('Run seed_many for at least %d orgs first.' % i)
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   552
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   553
  properties = {
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   554
      '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
   555
      'link_id': 'mentor',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   556
      'scope': org,
2160
3f9dd37d98a8 Use key().id_or_name() instead of key().name()
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2074
diff changeset
   557
      '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
   558
      'user': current_user,
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   559
      'given_name': 'Mentor',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   560
      'surname': 'Man',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   561
      'name_on_documents': 'Mentor Man',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   562
      'email': 'mentor@example.com',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   563
      'res_street': 'Some Street',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   564
      'res_city': 'Some City',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   565
      'res_state': 'Some State',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   566
      'res_country': 'United States',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   567
      'res_postalcode': '12345',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   568
      'phone': '1-555-BANANA',
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   569
      'birth_date': db.DateProperty.now(),
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   570
      'agreed_to_tos': True,
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   571
      'program': org.scope,
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   572
      }
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   573
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   574
  return properties
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   575
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   576
def seed_student_proposal(request, i):
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   577
  """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
   578
  """
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   579
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
   580
  _, current_user = ensureUser()
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   581
  org = Organization.get_by_key_name('google/gsoc2009/%d' % i)
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   582
  mentor = Mentor.get_by_key_name('google/gsoc2009/org_%d/mentor' % i)
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   583
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   584
  if not org:
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   585
    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
   586
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   587
  if not mentor:
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   588
    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
   589
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   590
  all_properties = []
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   591
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   592
  for i in range(random.randint(5, 20)):
2160
3f9dd37d98a8 Use key().id_or_name() instead of key().name()
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2074
diff changeset
   593
    link_id = 'proposal_%s_%d' % (org.key().id_or_name(), i)
3f9dd37d98a8 Use key().id_or_name() instead of key().name()
Sverre Rabbelier <srabbelier@gmail.com>
parents: 2074
diff changeset
   594
    scope_path = current_user.key().id_or_name()
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   595
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   596
    properties = {
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   597
        'link_id': link_id,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   598
        'scope_path': scope_path,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   599
        'scope': current_user,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   600
        'key_name': '%s/%s' % (scope_path, link_id),
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   601
        'title':'The Awesome Proposal',
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   602
        '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
   603
        '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
   604
        'additional_info': 'http://www.zipit.com',
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   605
        'mentor': mentor,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   606
        'status': 'pending',
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   607
        'org': org,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   608
        'program': org.scope,
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   609
        }
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   610
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   611
    all_properties.append(properties)
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   612
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   613
  return all_properties
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   614
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
   615
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
   616
SEEDABLE_MODEL_TYPES = {
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   617
    'user' : UserSeeder(),
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   618
    'organization' : OrganizationSeeder(),
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
   619
    }
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
   620
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
   621
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
   622
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
   623
  """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
   624
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
   625
  Takes as URL parameters:
2167
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
   626
    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
   627
               SEEDABLE_MODEL_TYPES
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
   628
    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
   629
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
   630
  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
   631
    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
   632
    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
   633
    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
   634
    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
   635
  """
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
   636
  # 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
   637
  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
   638
      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
   639
    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
   640
        ('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
   641
        ' 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
   642
        '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
   643
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   644
  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
   645
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
   646
  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
   647
    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
   648
        '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
   649
        '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
   650
        )
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
   651
  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
   652
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
   653
  # 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
   654
  # 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
   655
  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
   656
  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
   657
  # 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
   658
  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
   659
  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
   660
    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
   661
  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
   662
    # 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
   663
    # 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
   664
    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
   665
    if '_' in 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
   666
      start_index = int(link_id.split('_')[1]) + 1
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
   667
    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
   668
      # 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
   669
      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
   670
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   671
  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
   672
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
   673
  # 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
   674
  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
   675
  seeded_entities = []
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   676
  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
   677
  for i in xrange(start_index, goal):
2167
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
   678
    if i % 20 == 0:
91e622242f2d Respond to comments on r2769.
Daniel Bentley <dbentley@google.com>
parents: 2160
diff changeset
   679
      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
   680
    if len(seeded_entities) % 100 == 0:
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   681
      db.put(seeded_entities)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   682
      total += len(seeded_entities)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   683
      seeded_entities = []
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   684
    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
   685
2184
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   686
  db.put(seeded_entities)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   687
  total += len(seeded_entities)
a1bda9afa5d0 Step 2 of moving to new seeding model.
Daniel Bentley <dbentley@google.com>
parents: 2175
diff changeset
   688
  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
   689
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
   690
1901
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   691
def seed_many(request, *args, **kwargs):
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   692
  """Seeds many instances of the specified type.
1945
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   693
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   694
    Understands the following GET args:
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   695
    start: where to start adding new users at
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   696
    end: where to stop adding new users at
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   697
    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
   698
    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
   699
    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
   700
      user, org, org_app, mentor, student_proposal
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   701
ad3e6c4bb604 Moved and updated seed_many documentation
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1929
diff changeset
   702
    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
   703
1901
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   704
  """
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   705
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   706
  get_args = request.GET
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   707
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   708
  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
   709
    return http.HttpResponse('Missing get args.')
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   710
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   711
  seed_types = {
1902
be3dbaa17114 Added seed user to seed many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1901
diff changeset
   712
    'user': (seed_user, User),
1903
9d95d3e20773 Added seed org support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1902
diff changeset
   713
    'org': (seed_org, Organization),
1907
8e1ea5609325 Added org app seeding to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1906
diff changeset
   714
    'org_app': (seed_org_app, OrgApplication),
1904
63b026919efd Add seed mentor support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1903
diff changeset
   715
    'mentor': (seed_mentor, Mentor),
1905
8065fd1f3e4c Added seed student proposal support to seed_many
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1904
diff changeset
   716
    'student_proposal': (seed_student_proposal, StudentProposal),
1901
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   717
    }
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   718
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   719
  goal = int(get_args['goal'])
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   720
  start = int(get_args['start'])
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   721
  end = int(get_args['end'])
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   722
  step = int(get_args.get('step', '15'))
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   723
  seed_type = get_args['seed_type']
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   724
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   725
  if not seed_type in seed_types:
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   726
    return http.HttpResponse('Unknown seed_type: "%s".' % seed_type)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   727
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   728
  action, model = seed_types[seed_type]
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   729
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   730
  for i in range(start, end):
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   731
    try:
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   732
      props = action(request, i)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   733
    except Error, error:
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   734
      return http.HttpResponse(error.message)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   735
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   736
    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
   737
      entity = model(**properties)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   738
      entity.put()
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   739
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   740
  if end < goal:
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   741
    info = {
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   742
        'start': start + step,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   743
        'end': end + step,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   744
        'goal': goal,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   745
        'step': step,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   746
        'seed_type': seed_type,
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   747
        }
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   748
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   749
    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
   750
    url = '/seed_many?' + '&'.join(args)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   751
    return http.HttpResponseRedirect(url)
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   752
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   753
  return http.HttpResponse('Done.')
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   754
5a98e8a8efb5 Added a seed_many url
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1900
diff changeset
   755
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   756
def clear(*args, **kwargs):
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   757
  """Removes all entities from the datastore.
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   758
  """
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   759
1794
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   760
  # 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
   761
  # our own convenience to delete all rankers
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   762
  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
   763
    """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
   764
    """
1794
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   765
    pass
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   766
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
   767
  # 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
   768
  # 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
   769
  # 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
   770
  entities = itertools.chain(*[
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   771
      Notification.all(),
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   772
      Mentor.all(),
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   773
      OrgAdmin.all(),
1794
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   774
      ranker.all(),
6ffd25bedef9 Also clear RankerRoot and ranker from datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1793
diff changeset
   775
      RankerRoot.all(),
1906
224f597846b5 Added StudentProposal to clean_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1905
diff changeset
   776
      StudentProposal.all(),
1335
a8c5b1e200bd Added melange as org.
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1332
diff changeset
   777
      Organization.all(),
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   778
      OrgApplication.all(),
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   779
      Timeline.all(),
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   780
      Program.all(),
1348
8e3bd495729f Seed more roles and factor out common properties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1335
diff changeset
   781
      Host.all(),
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   782
      Sponsor.all(),
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   783
      User.all(),
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   784
      Site.all(),
1355
7a00bcfa0371 Add a Home document to the seeded entities
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1348
diff changeset
   785
      Document.all(),
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   786
      ])
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   787
1799
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   788
  try:
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   789
    for entity in entities:
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   790
      entity.delete()
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   791
  except db.Timeout:
53d15b129a3b Redirect to current page if the current request times out
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1798
diff changeset
   792
    return http.HttpResponseRedirect('#')
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   793
1453
378c844bf52c Flush cache after seeding or clearing the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1434
diff changeset
   794
  memcache.flush_all()
378c844bf52c Flush cache after seeding or clearing the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1434
diff changeset
   795
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   796
  return http.HttpResponse('Done')
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   797
1332
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   798
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   799
def reseed(*args, **kwargs):
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   800
  """Clears and seeds the datastore.
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   801
  """
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   802
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   803
  clear(*args, **kwargs)
6655b1e89adb Add a script to (re)seed the datastore
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   804
  seed(*args, **kwargs)
1789
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   805
6f112b2ebd1f Return a HttpResponse in seed_db
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1623
diff changeset
   806
  return http.HttpResponse('Done')