2 # pyimportcan.pl -- Python imports canonical format filter
3 # Copyright (C) 2013-2015 Sergey Matveev (stargrave@stargrave.org)
4 # This program is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
17 # From that kind of imports:
19 # from waaccounts.models import OrgRole
21 # from waaccounts.models import UserAccount
22 # from waadv.filters import AdvCampaignFilterSet as foo1
23 # from waadv.filters import AdvCampaignBidFilterSet
24 # from waadv.filters import AdvCampaignUniqueShowFilterSet as foo2
25 # from waadv.filters import VasttaskFilterSet
26 # from waadv.forms import AdvCampaignCreateForm
27 # from waadv.forms import PriceListTotalBudgetDiscountFormset
28 # from waadv.models import Adv
29 # from waadv.models import PriceListTotalBudgetDiscount
30 # from waadv.models import VastTask
31 # from wacontent.models import VrContractGroup
32 # from wacatalog.models import AdvGroup
33 # from wahelpers.counters import adv_campaign_click_counter_loader
34 # from wahelpers.counters import adv_video_view_fact_counter_loader
35 # from wahelpers.counters import adv_view_percent
36 # from wahelpers.counters import ctr
37 # from wahelpers.functions import get_json_rpc_proxy, get_return_url
39 # from waorigin.kendo_menus.toolbar import KendoGridToolbar
40 # from waorigin.kendo_menus.toolbar_button import KendoToolbarButton
42 # from http_utils import JSONResponse
43 # from wahelpers.counters import (
44 # adv_campaign_click_counter_loader,
45 # adv_campaign_click_fact_counter_loader,
49 # from waorigin.kendo_menus.toolbar_button import (
50 # AddKendoToolbarButton,
51 # StatusKendoToolbarButton
53 # from waorigin.models import Content, ContentCategory3 as foo4, ContentCategory2, Files
54 # from waorigin.views import filter_view, model_autocompletion, \
55 # create_update_with_auto_user, get_objects_for_edit_many
56 # from wapartners.models import PrNomenclature, PrSite
57 # >>>>>>> 1bf0b64... Добавил основные кнопки в виде классов, поправил вьюху refs #11992
58 # from waorigin.kendo_data_source import KendoDataSourceView
59 # from waorigin.models import Content
60 # from waorigin.models import ContentCategory2
61 # from waorigin.models import ContentCategory3
62 # from waorigin.models import Files
63 # from waorigin.views import create_update_with_auto_user
64 # from waorigin.views import filter_view
65 # from waorigin.views import get_objects_for_edit_many
66 # from waorigin.views import model_autocompletion
67 # from wapartners.models import PrSite
68 # from wapartners.models import PrNomenclature
70 # it makes the following one (by feeding it to stdin and capturing on
74 # from http_utils import JSONResponse
75 # from waaccounts.models import OrgRole
76 # from waaccounts.models import UserAccount
77 # from waadv.filters import AdvCampaignBidFilterSet
78 # from waadv.filters import AdvCampaignFilterSet as foo1
79 # from waadv.filters import AdvCampaignUniqueShowFilterSet as foo2
80 # from waadv.filters import VasttaskFilterSet
81 # from waadv.forms import AdvCampaignCreateForm
82 # from waadv.forms import PriceListTotalBudgetDiscountFormset
83 # from waadv.models import Adv
84 # from waadv.models import PriceListTotalBudgetDiscount
85 # from waadv.models import VastTask
86 # from wacatalog.models import AdvGroup
87 # from wacontent.models import VrContractGroup
88 # from wahelpers.counters import adv_campaign_click_counter_loader
89 # from wahelpers.counters import adv_campaign_click_fact_counter_loader
90 # from wahelpers.counters import adv_video_view_fact_counter_loader
91 # from wahelpers.counters import adv_view_percent
92 # from wahelpers.counters import ctr
93 # from wahelpers.functions import get_json_rpc_proxy
94 # from wahelpers.functions import get_return_url
95 # from waorigin.kendo_data_source import KendoDataSourceView
96 # from waorigin.kendo_menus.toolbar import KendoGridToolbar
97 # from waorigin.kendo_menus.toolbar_button import AddKendoToolbarButton
98 # from waorigin.kendo_menus.toolbar_button import KendoToolbarButton
99 # from waorigin.kendo_menus.toolbar_button import StatusKendoToolbarButton
100 # from waorigin.models import Content
101 # from waorigin.models import ContentCategory2
102 # from waorigin.models import ContentCategory3
103 # from waorigin.models import ContentCategory3 as foo4
104 # from waorigin.models import Files
105 # from waorigin.views import create_update_with_auto_user
106 # from waorigin.views import filter_view
107 # from waorigin.views import get_objects_for_edit_many
108 # from waorigin.views import model_autocompletion
109 # from wapartners.models import PrNomenclature
110 # from wapartners.models import PrSite
120 # Collect strings and aggregate the splitted ones
122 next if /^[<=>]{2,}/;
125 $buf = ($con ? $buf : "") . $_;
126 $con = /[\\,\(]\s*$/ ? 1 : 0;
127 next if /^\s*\)*\s*$/;
131 # Consolidate information from where what is imported
135 next if /import\s*$/;
136 /^(.*)\s*import\s*(.*)$/;
137 my ($where, $what) = ($1, $2);
138 map { $parsed{$where}->{$_}++ } split /\s*,\s*/, $what;
141 foreach my $where (sort keys %parsed){
142 map { print $where . "import $_\n" } sort keys %{$parsed{$where}};