def test_render(self): widget = JSONWidget() textarea = Textarea() for val in [None, '', '{"foo": true}']: self.assertEqual( widget.render('test', val), textarea.render('test', widget.format_value(val), attrs=widget.DEFAULT_ATTRS) )
def render(self, name, value, attrs=None): #print super.render(name, value, attrs) textarea = Textarea() if 'seo' in name or 'short' in name: return textarea.render(name, value, attrs) output = [] output.append(u'<div class="ckeditor" style="float: left;">') output.append(textarea.render(name, value, attrs)) output.append(u'</div>') return mark_safe(u''.join(output))
def render(self, name, value, attrs=None): textarea = Textarea.render(self, name, value) t = get_template('django_bootstrap_markdown/widget.html') c = Context({ 'show_image_button': self.image_control, 'textarea': textarea, }) return t.render(c)
class Meta: model = Thread fields = ['title', 'body'] widgets = { 'body': Textarea(attrs=MD_INPUT), }
class Meta: model = Comment fields = ('text', ) labels = {'text': 'Комментарий'} widgets = {'text': Textarea(attrs={"rows": 2})}
class Meta: model = SQL fields = '__all__' widgets = {'query': Textarea(attrs={'id': 'query', 'autofocus': True})}
class Meta: model = ForumPostReply fields = ["author", "content"] widgets = { "content": Textarea(attrs={'width': '100%', 'height': '3em'}) }
class Meta: model = Evaluation fields = [ 'strength_point', 'weaknesses', 'recommendations', 'director_notes', 'authority_notes', 'employeeid', 'q1', 'q2', 'q3', 'q4', 'q5', 'q6', 'q7', 'q8', 'q9', 'q10', 'q11', 'q12', 'q13', 'q14', 'q15', 'q16', 'q17', 'q18', 'q19', 'q20', 'q21', 'q22', 'q23', 'q24', 'q25', 'total_group1', 'total_group2', 'total_group3', 'total', 'is_excellent', 'is_vergood', 'is_good', 'is_fair', 'is_unacceptable', ] labels = { 'strength_point': _('strength point'), 'weaknesses': _('weaknesses'), 'recommendations': _('recommendations'), 'director_notes': _('director notes'), 'authority_notes': _('authority notes'), 'employeeid': _('employeeid'), } widgets = { 'strength_point': Textarea( attrs={ 'class': 'form-control', 'placeholder': _('strength point'), 'rows': '3', 'required': False }), 'weaknesses': Textarea( attrs={ 'class': 'form-control', 'placeholder': _('weaknesses'), 'rows': '3', 'required': False }), 'recommendations': Textarea( attrs={ 'class': 'form-control', 'placeholder': _('recommendations'), 'rows': '3', 'required': False }), 'director_notes': Textarea( attrs={ 'class': 'form-control', 'placeholder': _('director_notes'), 'rows': '3', 'required': False }), 'authority_notes': Textarea( attrs={ 'class': 'form-control', 'placeholder': _('authority_notes'), 'rows': '3', 'required': False }), 'employeeid': forms.HiddenInput(), 'q1': forms.NumberInput( attrs={ 'ng-model': 'q1', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q2': forms.NumberInput( attrs={ 'ng-model': 'q2', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q3': forms.NumberInput( attrs={ 'onchange': '', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q4': forms.NumberInput( attrs={ 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q5': forms.NumberInput( attrs={ 'onchange': "this.value = minmax(this.value, 0, 6);loadData();", 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q6': forms.NumberInput( attrs={ 'ng-model': 'q6', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q7': forms.NumberInput( attrs={ 'ng-model': 'q7', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q8': forms.NumberInput( attrs={ 'ng-model': 'q8', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q9': forms.NumberInput( attrs={ 'ng-model': 'q9', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q10': forms.NumberInput( attrs={ 'ng-model': 'q10', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q11': forms.NumberInput( attrs={ 'ng-model': 'q11', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q12': forms.NumberInput( attrs={ 'ng-model': 'q12', 'class': 'form-control target', 'placeholder': _(''), 'required': True, }), 'q13': forms.NumberInput( attrs={ 'ng-model': 'q13', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q14': forms.NumberInput( attrs={ 'ng-model': 'q14', 'class': 'form-control target', 'placeholder': _(''), 'required': True, }), 'q15': forms.NumberInput( attrs={ 'ng-model': 'q15', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q16': forms.NumberInput( attrs={ 'ng-model': 'q16', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q17': forms.NumberInput( attrs={ 'ng-model': 'q17', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q18': forms.NumberInput( attrs={ 'ng-model': 'q18', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q19': forms.NumberInput( attrs={ 'ng-model': 'q19', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q20': forms.NumberInput( attrs={ 'ng-model': 'q20', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q21': forms.NumberInput( attrs={ 'ng-model': 'q21', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q22': forms.NumberInput( attrs={ 'ng-model': 'q22', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q23': forms.NumberInput( attrs={ 'ng-model': 'q23', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q24': forms.NumberInput( attrs={ 'ng-model': 'q24', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'q25': forms.NumberInput( attrs={ 'ng-model': 'q25', 'class': 'form-control target', 'placeholder': _(''), 'required': True }), 'total_group1': forms.NumberInput(attrs={ 'class': 'form-control ', 'placeholder': _('') }), }
class Meta: model = Review fields = ['user_name', 'rating', 'comment'] widgets = {'comment': Textarea(attrs={'cols': 40, 'rows': 15})}
class ImportForm(BootstrapMixin, Form): csv = CSVDataField(fields=fields, required_fields=required_fields, widget=Textarea(attrs=self.widget_attrs))
class Meta: model = CustomUser fields = ['email', 'first_name', 'last_name'] widgets = { 'email': Textarea(attrs={'type': 'text'}) }
class Meta: model = Books exclude = ['user', 'book_name', ] widgets = { 'description': Textarea(attrs={'cols': 50, 'row': 50, 'placeholder': " * specify the author of the book \n\n * specify the edition of the book\n\n * specify the condition of the book \n\n\n\n max length is 50"}) }
from django.utils.html import format_html, mark_safe from django.contrib.contenttypes.admin import GenericTabularInline from django.utils.translation import gettext_lazy as _ from reversion.admin import VersionAdmin import reversion from . import models # ---- helper classes ---- # This text override gets used to keep the size down on TextField()s small_text_overrides = { TextField: { 'widget': Textarea(attrs={ 'rows': 2, 'cols': 40 }) }, } class HiddenRelatedListFilter(admin.RelatedOnlyFieldListFilter): model = None def has_output(self): return len(self.used_parameters) > 0 def choices(self, changelist): try: title = str( self.model.objects.get(
class Meta: model = Record fields = ['title', 'username', 'email', 'url', 'password', 'notes'] widgets = {'notes': Textarea(attrs={'cols': 40, 'rows': 4})}
class Meta: model = Message fields = ('text', 'user_to', 'user_from') widgets = { 'text': Textarea(attrs={'rows': 3}), }
class Meta: model = Comment fields = ('text', ) widgets = { 'text': Textarea(attrs={'rows': 3}), }
class Meta: model = Comment fields = ['comment'] widgets = {'comment': Textarea(attrs={'rows': 5})}
class Meta: model = Profile fields = ['location','picture','about_player','sport_choose'] widgets = {'about_player': Textarea(attrs={'cols': 30, 'rows': 5}),}
class Meta: model = Course fields = ['name', 'description'] widgets = {'description': Textarea(attrs={'rows': 5})}
class GameForm(ModelForm): number_of_players = IntegerField( widget=NumberInput(attrs={'class': 'form-control'}), validators=[MinValueValidator(1), MaxValueValidator(4)]) number_of_squares = IntegerField( widget=NumberInput(attrs={'class': 'form-control'}), validators=[MinValueValidator(1), MaxValueValidator(79)]) number_of_cards = IntegerField( widget=NumberInput(attrs={'class': 'form-control'}), validators=[MinValueValidator(1), MaxValueValidator(200)]) board_sequence = CharField(widget=Textarea(attrs={ 'class': 'form-control', 'rows': 4 }), validators=[ MaxLengthValidator(79), RegexValidator( regex="^[A-Z]+$", message="Allowed only uppercase A-Z ") ]) cards_in_deck = CharField( widget=Textarea(attrs={ 'class': 'form-control', 'rows': 4 }), validators=[ card_max_value_validator, RegexValidator( regex="^[A-Z,\s]+$", message="Allowed only uppercase A-Z comma and space"), card_empty_validator, card_size_validator, two_color_validator ]) class Meta: model = GameResult fields = [ "number_of_players", "number_of_squares", "number_of_cards", "board_sequence", "cards_in_deck" ] def clean(self): cleaned_data = super(GameForm, self).clean() number_of_squares = cleaned_data.get("number_of_squares") number_of_cards = cleaned_data.get("number_of_cards") board_sequence = cleaned_data.get("board_sequence") cards_in_deck = cleaned_data.get("cards_in_deck") errors = [] if board_sequence and number_of_squares != len(board_sequence): error = ValidationError(_( "Board sequence (%(board_sequence_len)s) does not match number of squares (%(number_of_squares)s)" ), params={ 'board_sequence_len': len(board_sequence), 'number_of_squares': number_of_squares }) errors.append(error) if cards_in_deck: cards_in_deck_len = len(cards_in_deck.split(',')) if number_of_cards != cards_in_deck_len: error = ValidationError(_( "Cards in deck (%(cards_in_deck_len)s) does not match number of cards (%(number_of_cards)s)" ), params={ 'cards_in_deck_len': cards_in_deck_len, 'number_of_cards': number_of_cards }) errors.append(error) if errors: raise ValidationError(errors) return cleaned_data def save(self, commit=True): instance = super(GameForm, self).save(commit=False) instance.result = get_game_result(instance.number_of_players, instance.board_sequence, instance.cards_in_deck) instance.save() return instance
class TaskAdmin(AdminAdvancedFiltersMixin, admin.ModelAdmin): list_display = ('number', 'title', 'user', 'partner', 'created_at', 'deadline', 'priority', 'state') list_display_links = ('number', 'title') search_fields = ('id', 'title', 'item__item_description', 'user__username', 'user__first_name', 'user__last_name', 'partner__name', 'partner__email') list_filter = ( ('user', RelatedDropdownFilter), #('partner', RelatedDropdownFilter), ('state', UnionFieldListFilter), ('priority', UnionFieldListFilter), 'deadline') advanced_filter_fields = ( 'user__username', 'partner__name', 'state', 'priority', 'deadline', 'created_at', 'created_by', 'title', 'description', 'resolution', ) ordering = ('-created_at', ) readonly_fields = ('created_at', 'last_modified', 'created_by') autocomplete_fields = ['user', 'partner'] fieldsets = ( # Edition form (None, { 'fields': ('title', ('user', 'partner'), 'deadline', ('state', 'priority'), ('description', 'resolution')) }), (_('More...'), { 'fields': (('created_at', 'last_modified'), 'created_by'), 'classes': ('collapse', ) }), ) inlines = [ItemInline] formfield_overrides = { models.TextField: { 'widget': Textarea(attrs={ 'rows': 4, 'cols': 32 }) } } def get_fieldsets(self, request, obj=None): fieldsets = super().get_fieldsets(request, obj) if obj is None: fieldsets = ( # Creation form (None, { 'fields': ('title', ('user', 'partner'), 'deadline', ('state', 'priority'), 'description') }), ) return fieldsets def save_model(self, request, obj, form, change): if change is False: obj.created_by = request.user super().save_model(request, obj, form, change)
class Meta(LRecordForm.Meta): model = Record fields = [ 'date_from', 'date_to', 'time_from', 'sample_id', 'duration', 'user', 'wu', 'group', 'project', 'experiment', 'remark' ] labels = { 'wu': 'WU:', 'date_from': 'starting at:', 'time_from': 'at:', 'duration': 'Duration in s:', 'date_to': 'to:', 'experiment': 'Experiment:', 'sample_id': 'Sample ID:' } help_texts = { 'date_from': 'The starting date of your run', 'date_to': 'The end date of your run', 'duration': 'Enter the run duration in seconds', 'wu': 'Number of hours for the run calculated from the seconds and rounded to the tenth', 'sample_id': 'Unique identifier of your sample', 'experiment': 'Pick an experiment' } widgets = { 'date_from': DateInput(attrs={ 'type': 'date', 'class': 'datepicker dfrom time' }), 'date_to': DateInput(attrs={ 'type': 'date', 'class': 'datepicker dto time' }), 'time_from': TimeInput(attrs={ 'type': 'time', 'class': 'timepicker tfrom time' }), 'duration': NumberInput(attrs={ 'min': 0, 'step': 1, 'class': 'seconds' }), 'remark': Textarea( attrs={ 'placeholder': 'Enter some detail here about your experiment', 'rows': '1', 'cols': '50' }), 'experiment': Select(attrs={ 'class': 'experiment', }), 'group': Select(attrs={ 'class': 'group', }), 'project': Select(attrs={ 'class': 'project', }), 'user': Select(attrs={ 'placeholder': 'Surname Name', 'class': 'user' }), 'wu': NumberInput( attrs={ 'required': False, 'class': 'uo', 'value': 0, 'min': 0, 'step': 0.5, 'style': 'width:10ch' }), }
class t_online_info_wait_publish_TophatterAdmin(object): downloadxls = True import_flag = False pt_flag = True def show_Picture(self,obj) : #url = u'https://contestimg.wish.com/api/webimage/%s-medium.jpg'%str(obj.ProductID) try: rt = '<img src="%s" width="120" height="120"/> '%(obj.Image) except: rt = '' return mark_safe(rt) show_Picture.short_description = u'图片' def get_product_ID_link(self,obj) : return mark_safe('<a href=https://www.amazon.com/dp/%s>%s</a>'%(obj.ProductID,obj.ProductID)) get_product_ID_link.short_description = u'产品ID' def show_ShopName_Seller(self,obj) : rt='' rt = u'%s卖家简称:<br>%s<br>店长/销售员:<br>%s'%(rt,obj.ShopName,obj.Seller) return mark_safe(rt) show_ShopName_Seller.short_description = u'卖家简称/店长/销售员' def show_Title_ProductID(self,obj) : l = obj.Title.split(' ') aa = len(l) ll = '' rt='' logger = logging.getLogger('sourceDns.webdns.views') # if aa <= 6: rt = u'%s标题: %s<br>产品ID: <a href=" https://www.wish.com/c/%s" target="_blank">%s</a>'%(rt,obj.Title,obj.ProductID,obj.ProductID) elif aa > 6: newe_Title_list = [] for i in range(0, len(l), 6): min_list = '' for a in l[i:i+6]: min_list = u'%s%s '%(min_list,a) newe_Title_list.append(min_list) #logger.error("newe_Title_list===================xxxxxxxxxxxxxxx=%s "%(newe_Title_list)) for newe_Title in newe_Title_list: ll = u'%s%s<br>'%(ll,newe_Title) if len(ll) >= 100: rt = u'%s标题:<br><font color="red">%s</font>产品ID:<br><a href=" https://www.wish.com/c/%s" target="_blank">%s</a>'%(rt,ll,obj.ProductID,obj.ProductID) else: rt = u'%s标题:<br>%s产品ID:<br><a href=" https://www.wish.com/c/%s" target="_blank">%s</a>'%(rt,ll,obj.ProductID,obj.ProductID) return mark_safe(rt) show_Title_ProductID.short_description = u'标题/产品ID' def show_time(self,obj) : rt='' rt = u'%s刷新时间:<br>%s <br>上架时间:<br>%s <br>最近更新时间:<br>%s'%(rt,obj.RefreshTime,obj.DateUploaded,obj.LastUpdated) return mark_safe(rt) show_time.short_description = u'时间' def show_SKU_list(self,obj) : rt='<table style="text-align:center;" border="1" cellpadding="3" cellspacing="1" bgcolor="#c1c1c1"><tr bgcolor="#C00"><th style="text-align:center">子SKU</th><th style="text-align:center">店铺SKU</th><th style="text-align:center">库存量</th><th style="text-align:center">价格</th></tr>' t_online_info_wish_objs = t_online_info_publish_joom.objects.values('SKU','ShopSKU','Quantity','Price').filter(ProductID=obj.ProductID).distinct() i = 0 for t_online_info_wish_obj in t_online_info_wish_objs: if i < 5: rt = '%s <tr bgcolor="#FFFFFF"><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr> '%(rt,t_online_info_wish_obj['SKU'],t_online_info_wish_obj['ShopSKU'],t_online_info_wish_obj['Quantity'],t_online_info_wish_obj['Price']) i = i + 1 if len(t_online_info_wish_objs)>5: rt = '%s<tr><td><a id="link_id_%s">查看更多</a></td></tr>'%(rt,obj.id) else: rt = rt rt = "%s</table><script>$('#link_id_%s').on('click',function(){layer.open({type:2,skin:'layui-layer-lan',title:'查看全部',fix:false,shadeClose: true,maxmin:true,area:['500px','500px'],content:'/t_online_info_wish/SKU/?abc=%s',});});</script>"%(rt,obj.id,obj.ProductID) return mark_safe(rt) show_SKU_list.short_description = mark_safe('<p align="center"> 子SKU</p>') def show_orders7days(self,obj) : rt = "<a id=show_orderlist_%s>日销量</a><script>$('#show_orderlist_%s').on('click',function(){layer.open({type:2,skin:'layui-layer-lan',title:'查看全部',fix:false,shadeClose: true,maxmin:true,area:['1000px','600px'],content:'/t_online_info_wish/order1day/?aID=%s',});});</script>"%(obj.id,obj.id,obj.ProductID) #rt = "%s<br><br><br><br>"%(rt) #rt = "%s<a href='/Project/admin/skuapp/t_online_info_publish_joom/?_q_=%s'>编辑</a>"%(rt,obj.ProductID) return mark_safe(rt) show_orders7days.short_description = u'操作' #list_per_page=150 list_display = ('id','show_Picture','show_ShopName_Seller','Orders7Days','OfSales','show_Title_ProductID','show_SKU_list','Status','show_time','show_orders7days') list_editable = ('show_Title') fields = ('id',) #list_filter = ('Seller','Orders7Days','RefreshTime','Status','ReviewState','DateUploaded','LastUpdated',) #readonly_fields = ('ProductID','ShopIP','ShopName','Quantity','Orders7Days','ParentSKU','SKU','ShopSKU') search_fields = ('id','PlatformName','ProductID','ShopIP','ShopName','Title','SKU','Orders7Days','Status','ReviewState','ParentSKU','Seller',) formfield_overrides = { models.TextField: {'widget': Textarea(attrs={'rows':5, 'cols':50})}, } #actions = ('to_excel','INSERT_INTO_SCHEDULE1','INSERT_INTO_SCHEDULE2','INSERT_INTO_SCHEDULE3','INSERT_INTO_SCHEDULE4','INSERT_INTO_SCHEDULE5') actions = ('to_excel',) def get_list_queryset(self,): request = self.request qs = super(t_online_info_wait_publish_TophatterAdmin, self).get_list_queryset() status = request.GET.get('status') st = request.GET.get('st') if st == 'yy': qs = qs.filter(ispublished='已刊登') if st == 'nn': qs = qs.exclude(ispublished="已刊登") if status == 'HedongCloth': qs = qs.filter(MainSKU__startswith='M').exclude(Q(MainSKU__startswith='MU')|Q(MainSKU__startswith='MI')) elif status == 'bl': qs = qs.filter(Q(MainSKU__startswith='BDY')|Q(MainSKU__startswith='BL')|Q(MainSKU__startswith='BRH')|Q(MainSKU__startswith='CFL')|Q(MainSKU__startswith='EAR')|Q(MainSKU__startswith='FAN')|Q(MainSKU__startswith='JA')|Q(MainSKU__startswith='JR')|Q(MainSKU__startswith='KEY')|Q(MainSKU__startswith='NL')|Q(MainSKU__startswith='PD')|Q(MainSKU__startswith='RG')) elif status == 'Gadget': qs = qs.filter(Q(MainSKU__startswith='HG')|Q(MainSKU__startswith='WS')|Q(MainSKU__startswith='PET')|Q(MainSKU__startswith='WF')|Q(MainSKU__startswith='CAR')|Q(MainSKU__startswith='TL')|Q(MainSKU__startswith='XMA')|Q(MainSKU__startswith='PY')) elif status == 'BabyToy': qs = qs.filter(Q(MainSKU__startswith='CEA')|Q(MainSKU__startswith='MI')|Q(MainSKU__startswith='TOY')|Q(MainSKU__startswith='SX')|Q(MainSKU__startswith='PA')|Q(MainSKU__startswith='FH')|Q(MainSKU__startswith='SPT')|Q(MainSKU__startswith='WH')|Q(MainSKU__startswith='COA')) elif status == 'WomenBeauty': qs = qs.filter(Q(MainSKU__startswith='MU')|Q(MainSKU__startswith='NA')|Q(MainSKU__startswith='HHC')|Q(MainSKU__startswith='HA')|Q(MainSKU__startswith='HC')|Q(MainSKU__startswith='HB')) elif status == 'CoolBag': qs = qs.filter(Q(MainSKU__startswith='BG')) elif status == 'BDDecor': qs = qs.filter(Q(MainSKU__startswith='Kids')|Q(MainSKU__startswith='SC')|Q(MainSKU__startswith='HT')|Q(MainSKU__startswith='BT')|Q(MainSKU__startswith='SW')|Q(MainSKU__startswith='BET')|Q(MainSKU__startswith='HDR')|Q(MainSKU__startswith='GSH')|Q(MainSKU__startswith='GS')|Q(MainSKU__startswith='SH')|Q(MainSKU__startswith='SK')|Q(MainSKU__startswith='K')|Q(MainSKU__startswith='BB')|Q(MainSKU__startswith='GLV')) elif status == 'Shine': qs = qs.filter(Q(MainSKU__startswith='BL')|Q(MainSKU__startswith='BRH')|Q(MainSKU__startswith='EAR')|Q(MainSKU__startswith='NL')|Q(MainSKU__startswith='PD')|Q(MainSKU__startswith='RG')|Q(MainSKU__startswith='JA')|Q(MainSKU__startswith='JR')|Q(MainSKU__startswith='FAC')|Q(MainSKU__startswith='Body')|Q(MainSKU__startswith='RING')|Q(MainSKU__startswith='GZSB')) elif status == 'Memo': qs = qs.filter(Q(MainSKU__startswith='WS')|Q(MainSKU__startswith='XMA')|Q(MainSKU__startswith='PY')|Q(MainSKU__startswith='WDS')|Q(MainSKU__startswith='COA')) elif status == 'Liberty': qs = qs.filter(Q(MainSKU__startswith='W')|Q(MainSKU__startswith='Bra')).exclude(Q(MainSKU__startswith='WH')|Q(MainSKU__startswith='WF')|Q(MainSKU__startswith='WS')) elif status == 'Thunder': qs = qs.filter(Q(MainSKU__startswith='OSS')|Q(MainSKU__startswith='CYC')|Q(MainSKU__startswith='BI')|Q(MainSKU__startswith='SPT')|Q(MainSKU__startswith='FH')) else: qs = qs return qs def to_excel(self, request, queryset): from datetime import datetime as datime from xlwt import * path = MEDIA_ROOT + 'download_xls/' + request.user.username #if not os.path.exists(path): mkdir_p(MEDIA_ROOT + 'download_xls') os.popen('chmod 777 %s'%(MEDIA_ROOT + 'download_xls')) mkdir_p(path) os.popen('chmod 777 %s'%(path)) w = Workbook() sheet = w.add_sheet('information_deal') sheet.write(0, 0, u'Unique ID')#SKU sheet.write(0, 1, u'Weight')#重量 sheet.write(0, 2, u'CostPrice')#成本价 sheet.write(0, 3, u'kc')#库存 sheet.write(0, 4, u'Product Unique ID') #主SKU sheet.write(0, 5, u'Product Category') #类目 sheet.write(0, 6, u'Product Title') #标题 sheet.write(0, 7, u'Product Description')#描述 sheet.write(0, 8, u'Product Condition')#产品状态---NEW sheet.write(0, 9, u'Product Brand')#品牌---'' sheet.write(0, 10, u'Product Material')#材质---'' sheet.write(0, 11, u'Variation Unique ID')#子SKU sheet.write(0, 12, u'Variation Size')#尺寸 sheet.write(0, 13, u'Variation Color')#颜色 sheet.write(0, 14, u'Variation Quantity')#数量 sheet.write(0, 15, u'Starting Bid')#起拍价---'1' sheet.write(0, 16, u'Buy Now Price')#价格 sheet.write(0, 17, u'Retail Price')#折价钱--'' sheet.write(0, 18, u'Target Price')#拍卖次数--'' sheet.write(0, 19, u'Shipping Price')#运费 sheet.write(0, 20, u'Ships From Country')#发货国家--'China' sheet.write(0, 21, u'Shipping Weight In Ounces')#--'' sheet.write(0, 22, u'Days To Process Order')#备货期---'3' sheet.write(0, 23, u'Days To Deliver')#妥投期---'14' sheet.write(0, 24, u'Expedited Shipping Price')#---'' sheet.write(0, 25, u'Expedited Delivery Time')#---'' sheet.write(0, 26, u'Buy One Get One Price')#买一送一价格--'' sheet.write(0, 27, u'Accessory Price')#互补品价格--'' sheet.write(0, 28, u'Accessory Description')#互补品描述--'' sheet.write(0, 29, u'Status')#互补品价格--'' sheet.write(0, 30, u'Primary Image URL')#主图 sheet.write(0, 31, u'Extra Image URL 1')#附图 sheet.write(0, 32, u'Extra Image URL 2')#附图 sheet.write(0, 33, u'Extra Image URL 3')#附图 sheet.write(0, 34, u'Extra Image URL 4')#附图 #写数据 row = 0 for qs in queryset: t_online_info_objs = t_online_info_publish_joom.objects.filter(ProductID=qs.ProductID,SKUStatus=0)#.distinct() info_objs = t_online_info_objs.values('CostPrice','SKU','Weight','ParentSKU','Title','Description','ShopSKU','Size','Color','Quantity','Price','Shipping','ExtraImages','ProductID',) for t_online_info_obj in info_objs: try: kc_nid = py_b_goods.objects.filter(SKU=t_online_info_obj['SKU']).values_list('NID',flat=True)[0] if kc_nid == '' or kc_nid is None: kc == 0 kc1 = kc_currentstock.objects.filter(GoodsID=kc_nid,StoreID=19).values_list('Number',flat=True)[0] kc2 = kc_currentstock.objects.filter(GoodsID=kc_nid,StoreID=19).values_list('ReservationNum',flat=True)[0] kc = int(kc1)-int(kc2) except: kc = '' if t_online_info_obj['CostPrice'] is not None and t_online_info_obj['CostPrice'] !='' and float(t_online_info_obj['CostPrice']) <=33 and kc != 0: row = row + 1 column = 0 sheet.write(row,column,t_online_info_obj['SKU']) column = column + 1 sheet.write(row,column,t_online_info_obj['Weight']) column = column + 1 sheet.write(row,column,t_online_info_obj['CostPrice']) column = column + 1 sheet.write(row,column,kc) column = column + 1 sheet.write(row,column,t_online_info_obj['ParentSKU']) column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,t_online_info_obj['Title']) column = column + 1 sheet.write(row,column,t_online_info_obj['Description']) column = column + 1 sheet.write(row,column,'New') column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,t_online_info_obj['ShopSKU']) column = column + 1 sheet.write(row,column,t_online_info_obj['Size']) column = column + 1 sheet.write(row,column,t_online_info_obj['Color']) column = column + 1 sheet.write(row,column,t_online_info_obj['Quantity']) column = column + 1 sheet.write(row,column,'1') column = column + 1 sheet.write(row,column,t_online_info_obj['Price']) column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,t_online_info_obj['Shipping']) column = column + 1 sheet.write(row,column,'China') column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,'3') column = column + 1 sheet.write(row,column,'14') column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,'') column = column + 1 sheet.write(row,column,'Enabled') column = column + 1 try: pp = t_online_info_wait_publish_joom3.objects.filter(ProductID=t_online_info_obj['ProductID']).values_list('Image',flat=True)[0] except: pp='' sheet.write(row,column,pp) #column = column + 1 lis=t_online_info_obj['ExtraImages'].split('|') n = 0 for i in range(0,len(lis)): column = column + 1 sheet.write(row,column,lis[i]) n+=1 if n == 3: continue t_online_info_wait_publish_tophatter.objects.filter(ProductID=qs.ProductID).update(ispublished='已刊登') filename = request.user.username + '_' + datime.now().strftime('%Y%m%d%H%M%S') + '.xls' w.save(path + '/' + filename) os.popen(r'chmod 777 %s'%(path + '/' + filename)) #queryset.update(DealStatus=Dealstatus_obj[0].V,DealStaffID=request.user.username,DealTime=datetime.now()) #上传oss对象 auth = oss2.Auth(ACCESS_KEY_ID, ACCESS_KEY_SECRET) bucket = oss2.Bucket(auth, ENDPOINT,BUCKETNAME_XLS) bucket.create_bucket(oss2.BUCKET_ACL_PUBLIC_READ) #删除现有的 for object_info in oss2.ObjectIterator(bucket,prefix='%s/%s_'%(request.user.username,request.user.username)): bucket.delete_object(object_info.key) bucket.put_object(u'%s/%s'%(request.user.username,filename),open(path + '/' + filename)) messages.error(request,u'%s%s.%s/%s/%s'%(PREFIX,BUCKETNAME_XLS,ENDPOINT_OUT,request.user.username,filename) + u':成功导出,可点击Download下载到本地~~~~~~' ) to_excel.short_description = u'导出Excel处理'
class Meta: model = Persona fields = ('nombre', 'apellido', 'email', 'celular', 'usuario', 'region', 'contraseña', 'contraseñaconfirmar') widgets = { 'nombre': Textarea( attrs={ 'rows': 1, 'cols': 30, 'style': 'resize:none;', 'id': 'nombre', 'class': 'form-control', 'required onfocus': "setVisibility('100','inline')", 'onBlur': "setVisibility('100','none')", 'onkeyup': "sync()" }), 'apellido': Textarea( attrs={ 'rows': 1, 'cols': 30, 'style': 'resize:none;', 'id': 'apellido', 'class': "form-control", 'required onfocus': "setVisibility('101','inline')", 'onBlur': "setVisibility('101','none')" }), 'email': EmailInput( attrs={ 'rows': 1, 'cols': 30, 'style': 'resize:none;', 'id': 'email', 'class': "form-control", 'required onfocus': "setVisibility('102','inline')", 'onBlur': "setVisibility('102','none')", 'type': 'email' }), 'celular': Textarea( attrs={ 'rows': 1, 'cols': 30, 'style': 'resize:none;', 'id': 'celular', 'class': "form-control", 'required onfocus': "setVisibility('103','inline')", 'onBlur': "setVisibility('103','none')" }), 'usuario': Textarea( attrs={ 'rows': 1, 'cols': 30, 'style': 'resize:none;', 'id': 'usuario', 'class': "form-control", 'required onfocus': "setVisibility('104','inline')", 'onBlur': "setVisibility('104','none')" }), 'region': Select( attrs={ 'class': "form-control", 'onfocus': "setVisibility('105','inline')", 'onBlur': "setVisibility('105','none')", 'default': "rm" }), 'contraseña': PasswordInput( attrs={ 'rows': 1, 'cols': 30, 'style': 'resize:none;', 'id': 'pass', 'class': "form-control inputPass", 'required onfocus': "setVisibility('106','inline')", 'onBlur': "setVisibility('106','none')" }), 'contraseñaconfirmar': PasswordInput( attrs={ 'rows': 1, 'cols': 30, 'style': 'resize:none;', 'id': 'passconfirm', 'class': "form-control", 'required onfocus': "setVisibility('107','inline')", 'onBlur': "setVisibility('107','none')" }), } labels = { 'nombre': _('Nombre'), 'apellido': _('Apellido'), 'email': _('Correo Electronico'), 'celular': _('Numero Telefonico'), 'usuario': _('Usuario'), 'region': _('Region'), 'contraseña': _('Contraseña'), 'contraseñaconfirmar': _('Confirmar Contraseña'), }
class AntibioticResistanceAdminAbstract(admin.ModelAdmin): list_display = ( 'antibioticresistance_id', 'antibioticresistance_name', ) search_fields = [ 'antibioticresistance_id', 'antibioticresistance_name', ] readonly_fields = ('antibioticresistance_id', ) fieldsets = [ ('', { 'classes': ('suit-tab suit-tab-antibioticresistance', ), 'fields': ['antibioticresistance_name'] }), ] suit_form_tabs = [(u'antibioticresistance', u'Antibiotic Resistance')] #actions = [export_xlsx,] formfield_overrides = dict( ((models.TextField, dict( (('widget', Textarea( attrs=dict(rows=5, cols=120, style='width: 600px;'))), ))), (models.ManyToManyField, dict( (('widget', CheckboxSelectMultiple), )))), ) class Media: css = dict(all=['generic.css', 'fixadmin.css']) js = ('generic.js', 'models/antibioticresistance.js') def get_actions(self, request): actions = super(AntibioticResistanceAdminAbstract, self).get_actions(request) user = request.user #if not user.groups.filter(name=settings.HTML_EXPORTER_PROFILE_GROUP).exists(): del actions['printable_html'] #if not user.groups.filter(name=settings.EXCEL_EXPORTER_PROFILE_GROUP).exists(): del actions['export_xlsx'] return actions def construct_change_message(self, request, form, formsets, add=False): message = super(AntibioticResistanceAdminAbstract, self).construct_change_message(request, form, formsets) change_message = [] if form.changed_data: values = [] for x in form.changed_data: field = form.fields[x] initial = form.initial.get(x, None) value = form.cleaned_data[x] if isinstance(field, ModelMultipleChoiceField): value = [int(y.pk) for y in value] initial = [int(y) for y in initial] if initial != None else [] values.append(_(": %s -> %s" % (str(initial), str(value)))) change_message.append('%s' % ','.join(values)) message += ' '.join(change_message) return message
class Meta: model = Comment fields = ['author', 'text'] widgets = { 'text': Textarea(attrs={'rows': 3}), }
class VolunteerAdmin(admin.ModelAdmin): formfield_overrides = { models.CharField: { 'widget': TextInput(attrs={'size': '20'}) }, models.TextField: { 'widget': Textarea(attrs={ 'rows': 4, 'cols': 40 }) }, } list_display = ('id', 'supporter_account', 'request_link', 'reimbursement_link', 'status', 'skip_reimbursement', 'created_date') list_display_links = ('id', ) list_filter = ('status', 'skip_reimbursement') list_editable = ('status', 'skip_reimbursement') search_fields = ('id', 'supporter__first_name', 'supporter__last_name', 'request__requester__first_name', 'request__requester__last_name', 'request__id') list_per_page = 25 readonly_fields = ('supporter_account', 'request_link', 'reimbursement_link', 'created_date') def save_model(self, request, obj, form, change): try: instance = Request.objects.get(id=obj.request.id) instance.volunteer_status = 'Unavailable' if obj.status == 'Delivered': instance.status = 'Completed' else: instance.status = 'In Process' instance.save() except: pass obj.save() def delete_model(self, request, obj): try: instance = Request.objects.get(id=obj.request.id) instance.volunteer_status = 'Available' instance.status = 'In Process' instance.save() except: pass obj.delete() def request_link(self, obj): return mark_safe('<a href="{}">{}</a>'.format( reverse( 'admin:%s_%s_change' % (obj.request._meta.app_label, obj.request._meta.model_name), args=[obj.request.id]), obj.request)) request_link.short_description = 'Request Info' def reimbursement_link(self, obj): try: reimbursement = Reimbursement.objects.get(volunteer=obj) return mark_safe('<a href="{}">{}</a>'.format( reverse('admin:%s_%s_change' % (reimbursement._meta.app_label, reimbursement._meta.model_name), args=[reimbursement.id]), reimbursement.status)) except: return None reimbursement_link.short_description = 'Reimbursement Info' def supporter_account(self, obj): return mark_safe('<a href="{}">{}</a>'.format( reverse('admin:%s_%s_change' % (obj.supporter._meta.app_label, obj.supporter._meta.model_name), args=[obj.supporter.id]), obj.supporter)) supporter_account.short_description = 'Supporter Account'
class Meta: model = MultipleChoiceQuestion fields = [ 'question_num', 'title', 'description', 'a', 'a_is_correct', 'b', 'b_is_correct', 'c', 'c_is_correct', 'd', 'd_is_correct', 'e', 'e_is_correct', 'f', 'f_is_correct', 'marks' ] labels = { 'question_num': 'Question #', 'a': 'Option A)', 'b': 'Option B)', 'c': 'Option C)', 'd': 'Option D)', 'e': 'Option E)', 'f': 'Option F)', } widgets = { 'question_num': NumberInput(attrs={ 'class': u'form-control', 'placeholder': u'Enter Question Number' }), 'title': TextInput(attrs={ 'class': u'form-control', 'placeholder': u'Enter Title' }), 'description': Textarea(attrs={ 'class': u'form-control', 'placeholder': u'Enter Description' }), 'a': TextInput( attrs={ 'class': u'form-control', 'placeholder': u'Enter Option A Description' }), 'b': TextInput( attrs={ 'class': u'form-control', 'placeholder': u'Enter Option B Description' }), 'c': TextInput( attrs={ 'class': u'form-control', 'placeholder': u'Enter Option C Description' }), 'd': TextInput( attrs={ 'class': u'form-control', 'placeholder': u'Enter Option D Description' }), 'e': TextInput( attrs={ 'class': u'form-control', 'placeholder': u'Enter Option E Description' }), 'f': TextInput( attrs={ 'class': u'form-control', 'placeholder': u'Enter Option F Description' }), 'marks': NumberInput(attrs={ 'class': u'form-control', 'placeholder': u'Enter Marks' }), }
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) for field in self.fields: self.fields[field].widget.attrs['class'] = 'form-control' self.fields['content'].widget = Textarea(attrs={'rows': 5})
class Meta: model = Message fields = ['message'] widgets = { 'message': Textarea(attrs={'cols': 60, 'rows': 4}), }
class TestResultAdmin(admin.ModelAdmin): formfield_overrides = { models.TextField: { 'widget': Textarea(attrs={ 'rows': 3, 'cols': 40 }) }, } list_display = ( 'id', 'test_name', 'group', 'version', 'test_status', 'comments', 'rps', 'show_test_len', 'q99', 'q90', 'q50', 'http_errors_perc', 'net_errors_perc', 'generator', 'target', 'show_graph_url', 'user', 'ticket_id', 'session_id', 'scenario_path', ) list_display_links = ( 'id', 'session_id', ) list_filter = ( 'group', 'test_status', 'generator', 'user', ) list_editable = ( 'test_name', 'test_status', 'comments', 'rps', 'ticket_id', 'scenario_path', ) list_per_page = 15 readonly_fields = ('meta', ) search_fields = ( 'test_name', 'group', 'target', 'scenario_path', 'ticket_id', 'session_id', ) def show_graph_url(self, instance): return u'<a href="%s">Графики</a>' % (instance.graph_url.decode()) show_graph_url.allow_tags = True def show_test_len(self, instance): return str('%s' % (instance.dt_finish - instance.dt_start))
class ContactForm(Form): name = forms.CharField(label=gettext('Name'),max_length=100, widget=TextInput( attrs={'class': 'form-control',} )) email = forms.EmailField(label = gettext('Email'),max_length=100, widget=EmailInput( attrs={'class': 'form-control', } )) phone = forms.CharField(label = gettext('Phone'),max_length=100, widget=TextInput( attrs={'class': 'form-control', } )) message = forms.CharField(label = gettext('Your message to us'),max_length=2000, widget=Textarea( attrs={'class': 'form-control', 'rows': '4', } )) class Meta: widgets = { }
def test_render_required(self): widget = Textarea() widget.is_required = True self.check_html(widget, 'msg', 'value', html='<textarea rows="10" cols="40" name="msg">value</textarea>')
class BookmarkAdmin(DittoItemModelAdmin): list_display = ( 'title', 'post_time', 'account', ) list_filter = ( 'post_time', 'is_private', 'to_read', 'account', ) fieldsets = ( (None, { 'fields': ( 'account', 'title', 'url', 'description', 'summary', 'tags', 'post_time', 'post_year_str', 'url_hash', ) }), ('Options', { 'fields': ( 'is_private', 'to_read', ) }), ('Data', { 'fields': ( 'raw', 'fetch_time', 'time_created', 'time_modified', ) }), ) formfield_overrides = { # Make the inputs full-width. models.CharField: { 'widget': TextInput(attrs={ 'class': 'vLargeTextField', }) }, # Reduce the number of rows; similar to Pinboard's description field. models.TextField: { 'widget': Textarea(attrs={ 'class': 'vLargeTextField', 'cols': 40, 'rows': 4, }) }, # Make the input full-width. TaggableManager: { 'widget': TagWidget(attrs={ 'class': 'vLargeTextField', }) }, } readonly_fields = ( 'post_year_str', 'raw', 'fetch_time', 'time_created', 'time_modified', ) search_fields = ( 'title', 'url', 'description', )