def get_form(self, request, obj=None, **kwargs):
        """
        Get ArticleForm for the Article model and modify its fields depending on
        the request.
        """
        language = get_language_from_request(request)
        form = super(ArticleAdmin, self).get_form(
            request, obj,
            form=(obj and ArticleForm or ArticleCreateForm),
            **kwargs
        )
        # get_form method operates by overriding initial fields value which
        # may persist across invocation. Code below deepcopies fields definition
        # to avoid leaks
        for field in tuple(form.base_fields.keys()):
            form.base_fields[field] = copy.deepcopy(form.base_fields[field])

        if 'language' in form.base_fields:
            form.base_fields['language'].initial = language

        if obj:
            title_obj = obj.get_title_obj(language=language, fallback=False, force_reload=True)

            if hasattr(title_obj, 'id'):
                for name in ('title', 'description', 'page_title', 'menu_title', 'meta_description', 'image'):
                    if name in form.base_fields:
                        form.base_fields[name].initial = getattr(title_obj, name)
                try:
                    slug = self.SLUG_REGEXP.search(title_obj.slug).groups()[settings.CMS_ARTICLES_SLUG_GROUP_INDEX]
                except AttributeError:
                    warnings.warn('Failed to parse slug from CMS_ARTICLES_SLUG_REGEXP. '
                                  'It probably doesn\'t correspond to CMS_ARTICLES_SLUG_FORMAT.')
                    slug = title_obj.slug
                form.base_fields['slug'].initial = slug

        return form
Get ArticleForm for the Article model and modify its fields depending on
        the request.