-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathsetup_initial_changesets.py
130 lines (117 loc) · 5.04 KB
/
setup_initial_changesets.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import django
django.setup()
from apps.gcd.models import Issue
from apps.indexer.models import User
from apps.oi import states
from apps.oi.models import Changeset, IssueCreditRevision, \
StoryRevision, StoryCreditRevision, \
StoryCharacterRevision, PublisherCodeNumberRevision
from apps.oi.views import DISPLAY_CLASSES, REVISION_CLASSES, CTYPES
def setup_object(object, model_name, anon):
changeset = Changeset(indexer=anon,
approver=anon,
state=states.APPROVED,
change_type=CTYPES[model_name])
changeset.created = object.modified
changeset.save()
changeset.comments.create(commenter=anon,
text='This is an automatically generated change '
'for development purposes.',
old_state=states.APPROVED,
new_state=states.APPROVED)
comment = changeset.comments.all()[0]
comment.created = object.modified
comment.save()
revision = REVISION_CLASSES[model_name].clone(object, changeset, fork=True)
revision.source = object
revision.created = object.modified
revision.save()
return changeset
def setup_object_class(model_name):
anon = User.objects.get(username='anon')
objects = DISPLAY_CLASSES[model_name].objects.order_by('id')
print("Setting up: %s" % model_name)
for object in objects[:350]:
setup_object(object, model_name, anon)
def setup_issues():
anon = User.objects.get(username='anon')
objects = Issue.objects.order_by('id')
print("Setting up: Issues")
for object in objects[:500]:
changeset = setup_object(object, 'issue', anon)
for credit in object.active_credits:
revision = IssueCreditRevision.clone(
credit, changeset,
issue_revision=changeset.issuerevisions.get(),
fork=True)
revision.source = credit
revision.created = credit.modified
revision.save()
for story in object.active_stories():
story_revision = StoryRevision.clone(story, changeset, fork=True)
story_revision.source = story
story_revision.created = story.modified
story_revision.save()
for credit in story.active_credits:
revision = StoryCreditRevision.clone(
credit, changeset, story_revision=story_revision, fork=True)
revision.source = credit
revision.created = credit.modified
revision.save()
for character in story.active_characters:
revision = StoryCharacterRevision.clone(
character, changeset, story_revision=story_revision,
fork=True)
revision.source = character
revision.created = character.modified
revision.save()
# uncomment after character/group update is deployed
# for group in story.active_groups:
# revision = StoryGroupRevision.clone(
# group, changeset, story_revision=story_revision, fork=True)
# revision.source = group
# revision.created = group.modified
# revision.save()
for code_number in object.active_code_numbers():
revision = PublisherCodeNumberRevision.clone(
code_number, changeset, fork=True,
issue_revision=changeset.issuerevisions.get())
revision.source = code_number
revision.created = code_number.modified
revision.save()
def main():
# by default only first 500,
# edit the routine if all or specific objects should be editable
setup_object_class('publisher')
setup_object_class('brand')
setup_object_class('indicia_publisher')
setup_object_class('series')
setup_object_class('brand_group')
setup_object_class('brand_use')
# setup_object_class('series_bond')
# setup_object_class('creator') # CreatorNameDetails, birth/death dates
setup_object_class('creator_art_influence')
setup_object_class('received_award')
setup_object_class('creator_degree')
setup_object_class('creator_membership')
# setup_object_class('creator_non_comic_work')
setup_object_class('creator_relation')
setup_object_class('creator_school')
setup_object_class('award')
setup_object_class('feature')
setup_object_class('feature_logo')
setup_object_class('feature_relation')
setup_object_class('printer')
setup_object_class('indicia_printer')
# setup_object_class('character') # CharacterNameDetails
setup_object_class('group')
setup_object_class('group_membership')
setup_object_class('character_relation')
setup_object_class('group_relation')
setup_object_class('universe')
# by default only first 500,
# edit the routine if all or specific issues should be editable
setup_issues()
if __name__ == '__main__':
django.setup()
main()