Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
itminedu
synnefo
Commits
b70326a9
Commit
b70326a9
authored
Aug 10, 2012
by
Sofia Papagiannaki
Browse files
populate default data (if not exist) via migrations
parent
90165224
Changes
2
Hide whitespace changes
Inline
Side-by-side
snf-astakos-app/astakos/im/migrations/0016_populate_group_data.py
View file @
b70326a9
...
...
@@ -3,6 +3,7 @@ import datetime
from
south.db
import
db
from
south.v2
import
DataMigration
from
django.db
import
models
from
django.db.models
import
Count
class
Migration
(
DataMigration
):
def
forwards
(
self
,
orm
):
...
...
@@ -18,34 +19,41 @@ class Migration(DataMigration):
default
=
orm
.
GroupKind
.
objects
.
get
(
name
=
'default'
)
groups
=
{}
def
_create_astakogroup
(
name
):
try
:
orm
.
AstakosGroup
.
objects
.
get
(
name
=
name
)
groups
[
name
]
=
orm
.
AstakosGroup
.
objects
.
get
(
name
=
name
)
except
orm
.
AstakosGroup
.
DoesNotExist
:
try
:
g
=
orm
[
'auth.Group'
].
objects
.
get
(
name
=
name
)
extended
=
orm
.
AstakosGroup
(
group_ptr_id
=
g
.
pk
)
g
=
orm
[
'auth.Group'
].
objects
.
get
(
name
=
name
)
groups
[
name
]
=
extended
=
orm
.
AstakosGroup
(
group_ptr_id
=
g
.
pk
)
extended
.
__dict__
.
update
(
g
.
__dict__
)
extended
.
kind
=
default
extended
.
approval_date
=
datetime
.
datetime
.
now
()
extended
.
issue_date
=
datetime
.
datetime
.
now
()
extended
.
moderation_enabled
=
False
extended
.
save
()
map
(
lambda
u
:
orm
.
Membership
(
group
=
extended
,
person
=
orm
.
AstakosUser
.
objects
.
get
(
id
=
u
.
id
),
date_joined
=
datetime
.
datetime
.
now
()).
save
(),
map
(
lambda
u
:
orm
.
Membership
(
group
=
extended
,
person
=
orm
.
AstakosUser
.
objects
.
get
(
id
=
u
.
id
),
date_joined
=
datetime
.
datetime
.
now
()
).
save
(),
g
.
user_set
.
all
())
except
orm
[
'auth.Group'
].
DoesNotExist
:
orm
.
AstakosGroup
(
name
=
name
,
kind
=
default
,
approval_date
=
datetime
.
datetime
.
now
(),
issue_date
=
datetime
.
datetime
.
now
(),
moderation_enabled
=
False
).
save
()
groups
[
name
]
=
orm
.
AstakosGroup
(
name
=
name
,
kind
=
default
,
approval_date
=
datetime
.
datetime
.
now
(),
issue_date
=
datetime
.
datetime
.
now
(),
moderation_enabled
=
False
)
groups
[
name
].
save
()
# catch integrate
t
=
(
'default'
,
'shibboleth'
,
'helpdesk'
,
'faculty'
,
'ugrad'
,
'grad'
,
'researcher'
,
'associate'
)
map
(
_create_astakogroup
,
t
)
orphans
=
orm
.
AstakosUser
.
objects
.
annotate
(
num_groups
=
Count
(
'astakos_groups'
)).
filter
(
num_groups
=
0
)
map
(
lambda
u
:
orm
.
Membership
(
group
=
groups
[
'default'
],
person
=
u
).
save
(),
orphans
)
def
backwards
(
self
,
orm
):
def
_delete_groupkind
(
name
):
try
:
...
...
snf-astakos-app/astakos/im/migrations/0017_populate_resource_data.py
0 → 100644
View file @
b70326a9
# encoding: utf-8
import
datetime
import
sys
from
south.db
import
db
from
south.v2
import
DataMigration
from
django.db
import
models
from
django.db.utils
import
IntegrityError
from
collections
import
defaultdict
from
django.db.models
import
Q
d
=
{
'cyclades'
:
{
'vm'
:
2
},
'pithos+'
:
{
'diskspace'
:
10
}
}
class
Migration
(
DataMigration
):
def
forwards
(
self
,
orm
):
"Write your forwards methods here."
try
:
default
=
orm
.
AstakosGroup
.
objects
.
get
(
name
=
'default'
)
except
orm
.
AstakosGroup
.
DoesNotExist
:
return
def
create_policies
(
sn
,
policy
):
s
,
created
=
orm
.
Service
.
objects
.
get_or_create
(
name
=
sn
)
if
created
:
s
.
save
()
for
rn
,
l
in
policy
.
iteritems
():
r
,
created
=
orm
.
Resource
.
objects
.
get_or_create
(
service
=
s
,
name
=
rn
)
if
created
:
r
.
save
()
q
,
created
=
orm
.
AstakosGroupQuota
.
objects
.
get_or_create
(
group
=
default
,
resource
=
r
,
limit
=
l
)
if
created
:
q
.
save
()
map
(
lambda
i
:
create_policies
(
i
[
0
],
i
[
1
]),
d
.
iteritems
())
def
backwards
(
self
,
orm
):
try
:
default
=
orm
.
AstakosGroup
.
objects
.
get
(
name
=
'default'
)
except
orm
.
AstakosGroup
.
DoesNotExist
:
return
def
destroy_policies
(
sn
,
policy
):
for
rn
,
l
in
policy
.
iteritems
():
try
:
q
=
orm
.
AstakosGroupQuota
.
objects
.
get
(
group
=
default
,
resource__name
=
rn
)
if
q
.
limit
==
l
:
q
.
delete
()
except
orm
.
AstakosGroupQuota
.
DoesNotExist
:
return
map
(
lambda
i
:
destroy_policies
(
i
[
0
],
i
[
1
]),
d
.
iteritems
())
models
=
{
'auth.group'
:
{
'Meta'
:
{
'object_name'
:
'Group'
},
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'80'
}),
'permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
"orm['auth.Permission']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
})
},
'auth.permission'
:
{
'Meta'
:
{
'ordering'
:
"('content_type__app_label', 'content_type__model', 'codename')"
,
'unique_together'
:
"(('content_type', 'codename'),)"
,
'object_name'
:
'Permission'
},
'codename'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'content_type'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['contenttypes.ContentType']"
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'50'
})
},
'auth.user'
:
{
'Meta'
:
{
'object_name'
:
'User'
},
'date_joined'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'email'
:
(
'django.db.models.fields.EmailField'
,
[],
{
'max_length'
:
'75'
,
'blank'
:
'True'
}),
'first_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'groups'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
"orm['auth.Group']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'is_active'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'True'
}),
'is_staff'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'is_superuser'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'last_login'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime.now'
}),
'last_name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'30'
,
'blank'
:
'True'
}),
'password'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'128'
}),
'user_permissions'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
"orm['auth.Permission']"
,
'symmetrical'
:
'False'
,
'blank'
:
'True'
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'30'
})
},
'contenttypes.contenttype'
:
{
'Meta'
:
{
'ordering'
:
"('name',)"
,
'unique_together'
:
"(('app_label', 'model'),)"
,
'object_name'
:
'ContentType'
,
'db_table'
:
"'django_content_type'"
},
'app_label'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'model'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'100'
})
},
'im.additionalmail'
:
{
'Meta'
:
{
'object_name'
:
'AdditionalMail'
},
'email'
:
(
'django.db.models.fields.EmailField'
,
[],
{
'max_length'
:
'75'
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'owner'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['im.AstakosUser']"
})
},
'im.approvalterms'
:
{
'Meta'
:
{
'object_name'
:
'ApprovalTerms'
},
'date'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime(2012, 8, 9, 11, 14, 9, 289091)'
,
'db_index'
:
'True'
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'location'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'255'
})
},
'im.astakosgroup'
:
{
'Meta'
:
{
'object_name'
:
'AstakosGroup'
,
'_ormbases'
:
[
'auth.Group'
]},
'approval_date'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
,
'blank'
:
'True'
}),
'creation_date'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime(2012, 8, 9, 11, 14, 9, 283154)'
}),
'desc'
:
(
'django.db.models.fields.TextField'
,
[],
{
'null'
:
'True'
}),
'estimated_participants'
:
(
'django.db.models.fields.PositiveIntegerField'
,
[],
{
'null'
:
'True'
}),
'expiration_date'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
}),
'group_ptr'
:
(
'django.db.models.fields.related.OneToOneField'
,
[],
{
'to'
:
"orm['auth.Group']"
,
'unique'
:
'True'
,
'primary_key'
:
'True'
}),
'issue_date'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
}),
'kind'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['im.GroupKind']"
}),
'moderation_enabled'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'True'
}),
'policy'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'to'
:
"orm['im.Resource']"
,
'null'
:
'True'
,
'through'
:
"orm['im.AstakosGroupQuota']"
,
'blank'
:
'True'
})
},
'im.astakosgroupquota'
:
{
'Meta'
:
{
'unique_together'
:
"(('resource', 'group'),)"
,
'object_name'
:
'AstakosGroupQuota'
},
'group'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['im.AstakosGroup']"
,
'blank'
:
'True'
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'limit'
:
(
'django.db.models.fields.PositiveIntegerField'
,
[],
{}),
'resource'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['im.Resource']"
})
},
'im.astakosuser'
:
{
'Meta'
:
{
'unique_together'
:
"(('provider', 'third_party_identifier'),)"
,
'object_name'
:
'AstakosUser'
,
'_ormbases'
:
[
'auth.User'
]},
'activation_sent'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
,
'blank'
:
'True'
}),
'affiliation'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'255'
,
'blank'
:
'True'
}),
'astakos_groups'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
"orm['im.AstakosGroup']"
,
'symmetrical'
:
'False'
,
'through'
:
"orm['im.Membership']"
,
'blank'
:
'True'
}),
'auth_token'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'32'
,
'null'
:
'True'
,
'blank'
:
'True'
}),
'auth_token_created'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
}),
'auth_token_expires'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
}),
'date_signed_terms'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
,
'blank'
:
'True'
}),
'email_verified'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'has_credits'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'has_signed_terms'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'invitations'
:
(
'django.db.models.fields.IntegerField'
,
[],
{
'default'
:
'100'
}),
'is_verified'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'level'
:
(
'django.db.models.fields.IntegerField'
,
[],
{
'default'
:
'0'
}),
'owner'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'symmetrical'
:
'False'
,
'related_name'
:
"'owner'"
,
'null'
:
'True'
,
'to'
:
"orm['im.AstakosGroup']"
}),
'policy'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
"orm['im.Resource']"
,
'null'
:
'True'
,
'through'
:
"orm['im.AstakosUserQuota']"
,
'symmetrical'
:
'False'
}),
'provider'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'255'
,
'blank'
:
'True'
}),
'third_party_identifier'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'255'
,
'null'
:
'True'
,
'blank'
:
'True'
}),
'updated'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{}),
'user_ptr'
:
(
'django.db.models.fields.related.OneToOneField'
,
[],
{
'to'
:
"orm['auth.User']"
,
'unique'
:
'True'
,
'primary_key'
:
'True'
})
},
'im.astakosuserquota'
:
{
'Meta'
:
{
'unique_together'
:
"(('resource', 'user'),)"
,
'object_name'
:
'AstakosUserQuota'
},
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'limit'
:
(
'django.db.models.fields.PositiveIntegerField'
,
[],
{}),
'resource'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['im.Resource']"
}),
'user'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['im.AstakosUser']"
})
},
'im.emailchange'
:
{
'Meta'
:
{
'object_name'
:
'EmailChange'
},
'activation_key'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'40'
,
'db_index'
:
'True'
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'new_email_address'
:
(
'django.db.models.fields.EmailField'
,
[],
{
'max_length'
:
'75'
}),
'requested_at'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'default'
:
'datetime.datetime(2012, 8, 9, 11, 14, 9, 290713)'
}),
'user'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'related_name'
:
"'emailchange_user'"
,
'unique'
:
'True'
,
'to'
:
"orm['im.AstakosUser']"
})
},
'im.groupkind'
:
{
'Meta'
:
{
'object_name'
:
'GroupKind'
},
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'255'
,
'db_index'
:
'True'
})
},
'im.invitation'
:
{
'Meta'
:
{
'object_name'
:
'Invitation'
},
'code'
:
(
'django.db.models.fields.BigIntegerField'
,
[],
{
'db_index'
:
'True'
}),
'consumed'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
,
'blank'
:
'True'
}),
'created'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'auto_now_add'
:
'True'
,
'blank'
:
'True'
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'inviter'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'related_name'
:
"'invitations_sent'"
,
'null'
:
'True'
,
'to'
:
"orm['im.AstakosUser']"
}),
'is_consumed'
:
(
'django.db.models.fields.BooleanField'
,
[],
{
'default'
:
'False'
}),
'realname'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'255'
}),
'username'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'255'
})
},
'im.membership'
:
{
'Meta'
:
{
'unique_together'
:
"(('person', 'group'),)"
,
'object_name'
:
'Membership'
},
'date_joined'
:
(
'django.db.models.fields.DateField'
,
[],
{
'db_index'
:
'True'
,
'null'
:
'True'
,
'blank'
:
'True'
}),
'date_requested'
:
(
'django.db.models.fields.DateField'
,
[],
{
'default'
:
'datetime.datetime(2012, 8, 9, 11, 14, 9, 286925)'
,
'blank'
:
'True'
}),
'group'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['im.AstakosGroup']"
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'person'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['im.AstakosUser']"
})
},
'im.resource'
:
{
'Meta'
:
{
'object_name'
:
'Resource'
},
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'meta'
:
(
'django.db.models.fields.related.ManyToManyField'
,
[],
{
'to'
:
"orm['im.ResourceMetadata']"
,
'symmetrical'
:
'False'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'255'
,
'db_index'
:
'True'
}),
'service'
:
(
'django.db.models.fields.related.ForeignKey'
,
[],
{
'to'
:
"orm['im.Service']"
})
},
'im.resourcemetadata'
:
{
'Meta'
:
{
'object_name'
:
'ResourceMetadata'
},
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'key'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'255'
,
'db_index'
:
'True'
}),
'value'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'255'
})
},
'im.service'
:
{
'Meta'
:
{
'object_name'
:
'Service'
},
'auth_token'
:
(
'django.db.models.fields.CharField'
,
[],
{
'max_length'
:
'32'
,
'null'
:
'True'
,
'blank'
:
'True'
}),
'auth_token_created'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
}),
'auth_token_expires'
:
(
'django.db.models.fields.DateTimeField'
,
[],
{
'null'
:
'True'
}),
'icon'
:
(
'django.db.models.fields.FilePathField'
,
[],
{
'max_length'
:
'100'
,
'blank'
:
'True'
}),
'id'
:
(
'django.db.models.fields.AutoField'
,
[],
{
'primary_key'
:
'True'
}),
'name'
:
(
'django.db.models.fields.CharField'
,
[],
{
'unique'
:
'True'
,
'max_length'
:
'255'
,
'db_index'
:
'True'
}),
'url'
:
(
'django.db.models.fields.FilePathField'
,
[],
{
'max_length'
:
'100'
})
}
}
complete_apps
=
[
'im'
]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment