Code Duplication    Length = 17-25 lines in 3 locations

crudbuilder/views.py 3 locations

@@ 107-131 (lines=25) @@
104
            list_args
105
        )
106
        self.classes[name] = list_class
107
        return list_class
108
109
    def generate_create_view(self):
110
        """Generate class based view for CreateView"""
111
112
        name = model_class_form(self.model + 'CreateView')
113
        create_args = dict(
114
            form_class=self.get_actual_form('create'),
115
            model=self.get_model_class,
116
            template_name=self.get_template('create'),
117
            permissions=self.view_permission('create'),
118
            permission_required=self.check_permission_required,
119
            login_required=self.check_login_required,
120
            inlineformset=self.inlineformset,
121
            success_url=reverse_lazy('{}-{}-list'.format(self.app, self.custom_postfix_url)),
122
            custom_form=self.createupdate_forms or self.custom_modelform,
123
            custom_postfix_url=self.custom_postfix_url
124
        )
125
126
        create_class = type(
127
            name,
128
            (self.get_createupdate_mixin(), CreateView),
129
            create_args
130
        )
131
132
        self.classes[name] = create_class
133
        return create_class
134
@@ 133-150 (lines=18) @@
130
        )
131
132
        self.classes[name] = create_class
133
        return create_class
134
135
    def generate_detail_view(self):
136
        """Generate class based view for DetailView"""
137
138
        name = model_class_form(self.model + 'DetailView')
139
        detail_args = dict(
140
            detailview_excludes=self.detailview_excludes,
141
            model=self.get_model_class,
142
            template_name=self.get_template('detail'),
143
            login_required=self.check_login_required,
144
            permissions=self.view_permission('detail'),
145
            inlineformset=self.inlineformset,
146
            permission_required=self.check_permission_required,
147
            custom_postfix_url=self.custom_postfix_url
148
        )
149
150
        detail_class = type(name, (BaseDetailViewMixin, DetailView), detail_args)
151
        self.classes[name] = detail_class
152
        return detail_class
153
@@ 177-193 (lines=17) @@
174
            update_args
175
        )
176
        self.classes[name] = update_class
177
        return update_class
178
179
    def generate_delete_view(self):
180
        """Generate class based view for DeleteView"""
181
182
        name = model_class_form(self.model + 'DeleteView')
183
        delete_args = dict(
184
            model=self.get_model_class,
185
            template_name=self.get_template('delete'),
186
            permissions=self.view_permission('delete'),
187
            permission_required=self.check_permission_required,
188
            login_required=self.check_login_required,
189
            success_url=reverse_lazy('{}-{}-list'.format(self.app, self.custom_postfix_url)),
190
            custom_postfix_url=self.custom_postfix_url
191
        )
192
193
        delete_class = type(name, (CrudBuilderMixin, DeleteView), delete_args)
194
        self.classes[name] = delete_class
195
        return delete_class
196