-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathsetup_initial_changesets.py
More file actions
136 lines (122 loc) · 5.03 KB
/
Copy pathsetup_initial_changesets.py
File metadata and controls
136 lines (122 loc) · 5.03 KB
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
131
132
133
134
135
136
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[:500]:
setup_object(object, model_name, anon)
def setup_issue(issue):
anon = User.objects.get(username='anon')
changeset = setup_object(issue, 'issue', anon)
for credit in issue.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 issue.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()
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 issue.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 setup_issues():
objects = Issue.objects.order_by('id')
print("Setting up: Issues")
for object in objects[:500]:
setup_issue(object)
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')
setup_object_class('story_arc')
setup_object_class('story_arc_relation')
# by default only first 500,
# edit the routine if all issues should be editable
setup_issues()
# to setup a specific issue, use the following:
# setup_issue(Issue.objects.get(id=XXX))
if __name__ == '__main__':
django.setup()
main()