"> Issues 0 Pull Requests 0 Commits 1047 Releases 0

No Description

widgets.py 5.7KB

    # -- coding: utf-8 -- """simditor widgets.""" from __future__ import absolute_import from django import forms from django.conf import settings from django.core.exceptions import ImproperlyConfigured from django.core.serializers.json import DjangoJSONEncoder from django.template.loader import render_to_string from django.utils.encoding import force_text from django.utils.functional import Promise from django.utils.html import conditional_escape from django.utils.safestring import mark_safe try: # Django >=2.1 from django.forms.widgets import get_default_renderer IS_NEW_WIDGET = True except ImportError: IS_NEW_WIDGET = False try: # Django >=1.7 from django.forms.utils import flatatt except ImportError: # Django <1.7 from django.forms.util import flatatt # pylint disable=E0611, E0401 class LazyEncoder(DjangoJSONEncoder): """LazyEncoder.""" # pylint disable=E0202 def default(self, obj): if isinstance(obj, Promise): return force_text(obj) return super(LazyEncoder, self).default(obj) JSON_ENCODE = LazyEncoder().encode FULL_TOOLBAR = [ 'title', 'bold', 'italic', 'underline', 'strikethrough', 'fontScale', 'color', '|', 'ol', 'ul', 'blockquote', 'code', 'table', '|', 'link', 'image', 'hr', '|', 'indent', 'outdent', 'alignment', 'checklist', 'markdown', 'fullscreen' ] DEFAULT_TOOLBAR = [ 'title', 'bold', 'italic', 'underline', 'strikethrough', 'fontScale', 'color', '|', 'ol', 'ul', 'blockquote', 'table', '|', 'link', 'image', 'hr', '|', 'indent', 'outdent', 'alignment' ] DEFAULT_CONFIG = { 'toolbar': DEFAULT_TOOLBAR, 'cleanPaste': True, 'tabIndent': True, 'pasteImage': True, 'upload': { 'url': '/', 'fileKey': 'file' } } class SimditorWidget(forms.Textarea): """ Widget providing Simditor for Rich Text Editing.abs Supports direct image uploads and embed. """ class Media: """Media.""" css_list = [ 'simditor/styles/simditor.min.css' ] if 'emoji' in settings.SIMDITOR_TOOLBAR: css_list.append('simditor/styles/simditor-emoji.css') if 'fullscreen' in settings.SIMDITOR_TOOLBAR: css_list.append('simditor/styles/simditor-fullscreen.min.css') if 'checklist' in settings.SIMDITOR_TOOLBAR: css_list.append('simditor/styles/simditor-checklist.min.css') if 'markdown' in settings.SIMDITOR_TOOLBAR: css_list.append('simditor/styles/simditor-markdown.min.css') css = {'all': tuple(settings.STATIC_URL + url for url in css_list)} jquery_list = ['simditor/scripts/jquery.min.js', 'simditor/scripts/module.min.js', 'simditor/scripts/hotkeys.min.js', 'simditor/scripts/uploader.min.js', 'simditor/scripts/simditor.min.js'] if 'fullscreen' in settings.SIMDITOR_TOOLBAR: jquery_list.append('simditor/scripts/simditor-fullscreen.min.js') if 'checklist' in settings.SIMDITOR_TOOLBAR: jquery_list.append('simditor/scripts/simditor-checklist.min.js') if 'markdown' in settings.SIMDITOR_TOOLBAR: jquery_list.append('simditor/scripts/marked.min.js') jquery_list.append('simditor/scripts/to-markdown.min.js') jquery_list.append('simditor/scripts/simditor-markdown.min.js') if 'image' in settings.SIMDITOR_TOOLBAR: jquery_list.append('simditor/scripts/simditor-dropzone.min.js') if 'emoji' in settings.SIMDITOR_TOOLBAR: jquery_list.append('simditor/scripts/simditor-emoji.js') js = tuple(settings.STATIC_URL + url for url in jquery_list) try: js += (settings.STATIC_URL + 'simditor/simditor-init.js',) except AttributeError: raise ImproperlyConfigured("django-simditor requires \ SIMDITOR_MEDIA_PREFIX setting. This setting specifies a \ URL prefix to the ckeditor JS and CSS media (not \ uploaded media). Make sure to use a trailing slash: \ SIMDITOR_MEDIA_PREFIX = '/media/simditor/'") def __init__(self, *args, **kwargs): super(SimditorWidget, self).__init__(*args, **kwargs) # Setup config from defaults. self.config = DEFAULT_CONFIG.copy() # Try to get valid config from settings. configs = getattr(settings, 'SIMDITOR_CONFIGS', None) if configs: if isinstance(configs, dict): self.config.update(configs) else: raise ImproperlyConfigured( 'SIMDITOR_CONFIGS setting must be a dictionary type.') def build_attrs(self, base_attrs, extra_attrs=None, **kwargs): """ Helper function for building an attribute dictionary. This is combination of the same method from Django<=1.10 and Django1.11 """ attrs = dict(base_attrs, **kwargs) if extra_attrs: attrs.update(extra_attrs) return attrs def render(self, name, value, attrs=None, renderer=None): if value is None: value = '' final_attrs = self.build_attrs(self.attrs, attrs, name=name) params = ('simditor/widget.html', { 'final_attrs': flatatt(final_attrs), 'value': conditional_escape(force_text(value)), 'id': final_attrs['id'], 'config': JSON_ENCODE(self.config) }) if renderer is None and IS_NEW_WIDGET: renderer = get_default_renderer() data = renderer.render(*params) if IS_NEW_WIDGET else render_to_string(*params) return mark_safe(data)
kodo - Gogs: Go Git Service

Geen omschrijving

Brightcells: 3c6e34823b Add photo_id for GroupPhotoInfo replaced pk 9 jaren geleden
..
0001_initial.py e184e7dd5b add api group_create/group_join 11 jaren geleden
0002_groupinfo_session_id.py e184e7dd5b add api group_create/group_join 11 jaren geleden
0003_groupinfo_admin_id.py 7e305483ab add api group_detail/group_lock/group_pass/group_refuse 11 jaren geleden
0004_auto_20151216_2337.py 7467a3e68a add api group_update/group_remove 11 jaren geleden
0005_groupuserinfo_current_id.py f587f0a48f user can just see photo after he joined the group & zh_Hans replace zh_CN in settings.py 11 jaren geleden
0006_groupuserinfo_avatar.py 4afdb94e20 add avatar for GroupUserInfo 11 jaren geleden
0007_auto_20160112_2040.py df1df69fe3 add api upgrade/splash 10 jaren geleden
0008_photocommentinfo.py c72d89f6e5 add api comment_submit_api/comment_list_api/thumbup_submit_api/thumbup_list_api/thumbup_cancel_api 10 jaren geleden
0009_photothumbupinfo.py c72d89f6e5 add api comment_submit_api/comment_list_api/thumbup_submit_api/thumbup_list_api/thumbup_cancel_api 10 jaren geleden
0010_auto_20160120_1830.py a121b75ff2 add db_index=True for status field 10 jaren geleden
0011_auto_20160302_2048.py da2a81fff1 add api pai2_home 10 jaren geleden
0012_groupinfo_group_avatar.py da2a81fff1 add api pai2_home 10 jaren geleden
0013_groupinfo_group_default_avatar.py f6a88c632b add group_default_avatar field for GroupInfo 10 jaren geleden
0014_auto_20160308_2347.py ca727b0362 store/return w/h for photo 10 jaren geleden
0015_groupphotoinfo_avatar.py 88049b12db store/return more field for photo 10 jaren geleden
0016_auto_20160321_1535.py 537bd9bd41 add api group_quit_api 10 jaren geleden
0017_groupphotoinfo_photo_from.py dbea356558 add photo_from field for GroupPhotoInfo and return photo_from for some api 10 jaren geleden
0018_auto_20160417_2246.py d64b3c216b add and return photo_thumbnail2 relative 10 jaren geleden
0019_auto_20160422_1322.py 102152ca4a add api lensman_photo_bought & modify api wx_order_create_api and adjust return field 10 jaren geleden
0020_groupphotoinfo_session_id.py 102152ca4a add api lensman_photo_bought & modify api wx_order_create_api and adjust return field 10 jaren geleden
0021_photocommentinfo_to_uid.py fa36c26ce4 extend param to_uid for comment_submit_api 10 jaren geleden
0022_auto_20160901_1439.py 6199c8f7ad add api lensman_origin_wanted_api/lensman_origin_photo_upload_api 10 jaren geleden
0023_groupinfo_group_initio.py e06dc10006 Make join session group by scan group qrcode fetch group photos initio 10 jaren geleden
0024_auto_20161214_1329.py f724e0f9c0 Add tour guide apis 10 jaren geleden
0025_auto_20161214_1659.py ad69866b26 Add tour guide's name and phone in GroupInfo 10 jaren geleden
0026_auto_20161216_1301.py 034acddb68 Add total_persons for GroupInfo 10 jaren geleden
0027_groupuserinfo_authority.py 88f0697a89 Add authority field for GroupUserInfo 10 jaren geleden
0028_auto_20161220_1815.py 272f181c50 Makemigrations 10 jaren geleden
0029_auto_20161224_1616.py 564ff620d7 Add unique_together = (('group_id', 'user_id'),) for GroupUserInfo 10 jaren geleden
0030_groupinfo_gather_location.py 90d377ee6e Add gather location 10 jaren geleden
0031_groupphotoinfo_photo_md5.py d824fbd441 Add photo_md5 for GroupPhotoInfo 9 jaren geleden
0032_groupinfo_gather_screenshot.py e8cd9652b7 Add gather_screenshot for api tg_group_gather_start_api 9 jaren geleden
0033_groupphotoinfo_photo_id.py 3c6e34823b Add photo_id for GroupPhotoInfo replaced pk 9 jaren geleden
__init__.py e184e7dd5b add api group_create/group_join 11 jaren geleden