File: import_workflow.txt

package info (click to toggle)
python-django-import-export 4.3.5-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,300 kB
  • sloc: python: 11,650; makefile: 180; sh: 63; javascript: 50
file content (93 lines) | stat: -rw-r--r-- 3,002 bytes parent folder | download
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
# Source for import workflow sequence diagram.
# This source can be loaded into sequencediagram.org (web app).
# If this source is changed, then the svg image in 'images/' dir should be regenerated
# by exporting from the web app.

participant Resource
participant Result
participant RowResult
participant InstanceLoader
participant Field
participant Widget

Resource->Resource:""import_data(data, \*\*kwargs)""
activate Resource
Resource->Result:""__init__()""
activate Result
Resource<--Result:""Result""
deactivate Result

Resource->Resource:<background:#yellow>""before_import(dataset, \*\*kwargs)""

loop #pink each row in dataset
Resource->Resource:""import_row(row, instance_loader, \*\*kwargs)""
activate Resource #lightblue
Resource->RowResult:""__init__()""
activate RowResult
Resource<--RowResult:""RowResult""
deactivate RowResult

Resource->Resource:<background:#yellow>""before_import_row(row, \*\*kwargs)""


Resource->Resource:<background:#yellow>""get_or_init_instance(instance_loader, \n    row)""
activate Resource #lightgrey

Resource->Resource:<background:#yellow>""get_instance(instance_loader, row)""
activate Resource #lightgreen
Resource->InstanceLoader:""get_instance(row)""
activate InstanceLoader
note over InstanceLoader: Existing Instance is returned if exists,\n otherwise a new Instance is created.

Resource<--InstanceLoader:""Instance""
deactivate InstanceLoader
Resource-->Resource:""Instance""
deactivate Resource
Resource-->Resource:""Instance, bool""
deactivate Resource

Resource->Resource:<background:#yellow>""after_init_instance(instance, new, row \n   \*\*kwargs)""

Resource->Resource:<background:#yellow>""for_delete(row, instance)""
activate Resource #lightgrey
note over Resource: If True, row is deleted.
Resource-->Resource:""bool""

deactivate Resource

Resource->Resource:""import_instance(instance, row, \*\*kwargs)""
activate Resource #lightgrey

loop #green each field in row
Resource->Field:""save(instance, row, is_m2m, \*\*kwargs)""
note over Field: save logic determines the correct value\nand sets attribute on instance.
Field->Field:""clean(row, \*\*kwargs)""
activate Field
Field->Widget:""clean(value, row, \*\*kwargs)""
activate Widget
Field<--Widget:""value""
deactivate Widget
deactivate Field
end

deactivate Resource

Resource->Resource:<background:#yellow>""skip_row(instance, original, row, \n    import_validation_errors)""
activate Resource #lightgrey
note over Resource: If True, row is skipped.
Resource-->Resource:""bool""
deactivate Resource

Resource->Resource:<background:#yellow>""validate_instance(instance, \n   import_validation_errors)""
Resource->Resource:<background:#yellow>""save_instance(instance, row, new, \n    \*\*kwargs)""
Resource->Resource:<background:#yellow>""save_m2m(instance, row, \*\*kwargs)""

Resource->Resource:<background:#yellow>""after_import_row(row, row_result, \n    \*\*kwargs)""


Resource-->Resource:""RowResult""
deactivate Resource
end

Resource<--Resource:""Result""
deactivate Resource