class DemandeResource(resources.ModelResource): frais_date = fields.Field(attribute='frais_date', column_name='Date', widget=widgets.DateWidget()) num_releve = fields.Field(attribute='num_releve', column_name="Numéro d'édition") chauffeur = fields.Field(attribute='chauffeur', column_name='Chauffeur') code_activite = fields.Field(attribute='code_activite', column_name='Code frais') montant_ttc = fields.Field(attribute='montant_ttc', column_name='Total', widget=widgets.DecimalWidget()) class Meta: model = Demande fields = ('frais_date', 'num_releve', 'chauffeur', 'code_activite', 'montant_ttc') export_order = ('frais_date', 'num_releve', 'chauffeur', 'code_activite', 'montant_ttc') def dehydrate_user(self, Demande): return '%s' % (Demande.user.username) def dehydrate_chauffeur(self, Demande): return '%s' % (Demande.chauffeur.code_matricule)
class OfferResource(CustomModelResource): name = fields.Field( column_name='name', attribute='name', default=None, widget=widgets.CharWidget(), ) price = fields.Field( column_name='price', attribute='price', default=0, widget=widgets.DecimalWidget(), ) product = fields.Field( column_name='product', attribute='product', widget=widgets.ForeignKeyWidget(Product, field='name'), ) is_active = fields.Field(column_name='is_active', attribute='is_active', default=1, widget=widgets.BooleanWidget()) attributes = fields.Field(column_name='attributes', attribute='attributes', default={}, widget=widgets.CharWidget()) class Meta: model = Offer fields = ('name', 'product', 'price', 'is_active', 'attributes') export_order = ('name', 'product', 'attributes', 'is_active', 'price') import_id_fields = ('name', )
def setUp(self): self.value = Decimal("11.111") self.widget = widgets.DecimalWidget()
def test_clean(self): widget = widgets.DecimalWidget() self.assertEqual(widget.clean("11.111"), Decimal("11.111"))
class TireResource(resources.ModelResource): def get_queryset(self): return Tire.objects.all() def export(self,queryset,*args,**kwargs): tires = Tire.objects.available() return super().export(tires,*args,**kwargs) def before_import(self,dataset, using_transactions, dry_run, **kwargs): imported_ids = [] if not dry_run: for row in dataset: imported_ids.append(row[0]) filtered_ids = list(filter(None,imported_ids)) tires = Tire.objects.all() tires.backup() tires.exclude(id__in=filtered_ids).delete() origin = fields.Field( attribute="brand__country", widget=widgets.CustomCountryWidget() ) manufacturer = fields.Field( attribute="manufacturer", widget=widgets.CustomCountryWidget() ) season = fields.Field(attribute="season", widget=widgets.CustomSeasonWidget()) brand = fields.Field(attribute="brand", widget=widgets.CustomBrandWidget()) serie = fields.Field(attribute="serie", widget=widgets.CustomSerieWidget()) ZR = fields.Field(attribute="ZR", widget=widgets.CustomBooleanWidget()) MS = fields.Field( column_name="M+S", attribute="MS", widget=widgets.CustomBooleanWidget() ) OE = fields.Field(attribute="OE", widget=resource_widget.CharWidget()) RF = fields.Field(attribute="RF", widget=widgets.CustomBooleanWidget()) SL = fields.Field(attribute="SL", widget=widgets.CustomBooleanWidget()) taksit_active = fields.Field( column_name="Taksit active", attribute="taksit_active", widget=widgets.CustomBooleanWidget() ) taksit_2 = fields.Field( column_name="Taksit 2 ay", attribute="taksit_2", widget=widgets.CustomDecimalWidget(2), ) taksit_2_active = fields.Field( column_name="Taksit 2 active", attribute="taksit_2_active", widget=widgets.CustomBooleanWidget(), ) taksit_3 = fields.Field( column_name="Taksit 3 ay", attribute="taksit_3", widget=widgets.CustomDecimalWidget(3), ) taksit_3_active = fields.Field( column_name="Taksit 3 active", attribute="taksit_3_active", widget=widgets.CustomBooleanWidget(), ) taksit_6 = fields.Field( column_name="Taksit 6 ay", attribute="taksit_6", widget=widgets.CustomDecimalWidget(6), ) taksit_6_active = fields.Field( column_name="Taksit 6 active", attribute="taksit_6_active", widget=widgets.CustomBooleanWidget(), ) taksit_9 = fields.Field( column_name="Taksit 9 ay", attribute="taksit_9", widget=widgets.CustomDecimalWidget(9), ) taksit_9_active = fields.Field( column_name="Taksit 9 active", attribute="taksit_9_active", widget=widgets.CustomBooleanWidget(), ) taksit_12 = fields.Field( column_name="Taksit 12 ay", attribute="taksit_12", widget=widgets.CustomDecimalWidget(12), ) taksit_12_active = fields.Field( column_name="Taksit 12 active", attribute="taksit_12_active", widget=widgets.CustomBooleanWidget(), ) kredit_active = fields.Field( column_name="Kredit active", attribute="kredit_active", widget=widgets.CustomBooleanWidget() ) taksit_active = fields.Field( column_name="Taksit active", attribute="taksit_active", widget=widgets.CustomBooleanWidget() ) kredit_3 = fields.Field( column_name="Kredit 3 ay", attribute="kredit_3", widget=widgets.CustomDecimalWidget(3), ) kredit_3_active = fields.Field( column_name="Kredit 3 active", attribute="kredit_3_active", widget=widgets.CustomBooleanWidget(), ) kredit_3_dif = fields.Field( column_name="Bahalaşma 3 %", attribute="kredit_3_dif", widget=widgets.DecimalWidget(), ) kredit_6 = fields.Field( column_name="Kredit 6 ay", attribute="kredit_6", widget=widgets.CustomDecimalWidget(6), ) kredit_6_active = fields.Field( column_name="Kredit 6 active", attribute="kredit_6_active", widget=widgets.CustomBooleanWidget(), ) kredit_6_dif = fields.Field( column_name="Bahalaşma 6 %", attribute="kredit_6_dif", widget=widgets.DecimalWidget(), ) kredit_9 = fields.Field( column_name="Kredit 9 ay", attribute="kredit_9", widget=widgets.CustomDecimalWidget(9), ) kredit_9_active = fields.Field( column_name="Kredit 9 active", attribute="kredit_9_active", widget=widgets.CustomBooleanWidget(), ) kredit_9_dif = fields.Field( column_name="Bahalaşma 9 %", attribute="kredit_9_dif", widget=widgets.DecimalWidget(), ) kredit_12 = fields.Field( column_name="Kredit 12 ay", attribute="kredit_12", widget=widgets.CustomDecimalWidget(12), ) kredit_12_active = fields.Field( column_name="Kredit 12 active", attribute="kredit_12_active", widget=widgets.CustomBooleanWidget(), ) kredit_12_dif = fields.Field( column_name="Bahalaşma 12 %", attribute="kredit_12_dif", widget=widgets.DecimalWidget(), ) price = fields.Field( column_name="price", attribute="price", widget=resource_widget.DecimalWidget() ) sale = fields.Field( column_name="sale", attribute="sale", widget=resource_widget.DecimalWidget() ) sale_active = fields.Field( column_name="sale active", attribute="sale_active", widget=widgets.CustomBooleanWidget() ) montaj_balance = fields.Field( column_name="Montaj+Balance", attribute="montaj_balance", widget=resource_widget.DecimalWidget(), ) Class = fields.Field( column_name="class", attribute="Class", widget=widgets.CustomClassWidget() ) size = fields.Field(attribute="size", widget=widgets.CustomSizeWidget()) release_date = fields.Field( attribute="release_date", widget=resource_widget.CharWidget() ) db= fields.Field(attribute="db",widget=resource_widget.IntegerWidget()) fuel = fields.Field(attribute="fuel",widget=resource_widget.CharWidget()) contact = fields.Field(attribute="contact",widget=resource_widget.CharWidget()) kredit_initial_price = fields.Field(column_name="kredit initial price %",attribute="kredit_initial_price",widget=resource_widget.FloatWidget()) new = fields.Field(attribute="new",widget=widgets.CustomNewBooleanWidget()) outlet = fields.Field(attribute="outlet",widget=widgets.CustomOutletBooleanWidget()) class Meta: model = Tire import_id_fields = ("id",'code') # instance_loader_class = CustomModelInstanceLoader fields = ( "id", "code", "brand", "serie", "manufacturer", "size", "ZR", "MS", "OE", "SL", "RF", "tradeware", "weight", "speed", "razval", "year", "Class", "quantity", "kredit_active", "kredit_12_dif", "kredit_9_dif", "kredit_6_dif", "kredit_3_dif", "kredit_3", "kredit_3_active", "kredit_6", "kredit_6_active", "kredit_9", "kredit_9_active", "kredit_12", "kredit_12_active", "taksit_active", "taksit_2", "taksit_2_active", "taksit_3", "taksit_3_active", "taksit_6", "taksit_6_active", "taksit_9", "taksit_9_active", "taksit_12", "taksit_12_active", "price", "sale", "sale_active", "release_date", "db", "fuel", "contact", "kredit_initial_price", "new", "outlet", "birkart", "tamkart", "bolkart", "albalikart", "kredit", "stickers", 'campaigns' ) skip_unchanged = True export_order = ( "id", "code", "brand", "serie", "origin", "manufacturer", "size", "ZR", "MS", "OE", "SL", "RF", "season", "tradeware", "weight", "speed", 'db', "fuel", "contact", "price", "sale", "sale_active", "montaj_balance", "razval", "year", "Class", "taksit_active", "taksit_2", "taksit_2_active", "taksit_3", "taksit_3_active", "taksit_6", "taksit_6_active", "taksit_9", "taksit_9_active", "taksit_12", "taksit_12_active", "kredit_active", "kredit_3", "kredit_3_dif", "kredit_3_active", "kredit_initial_price", "kredit_6", "kredit_6_dif", "kredit_6_active", "kredit_9", "kredit_9_dif", "kredit_9_active", "kredit_12", "kredit_12_dif", "kredit_12_active", "quantity", "release_date", "new", "outlet" )
class StudentEvaluationResource(resources.ModelResource): def before_import(self, dataset, dry_run, **kwargs): student_ids = [] for row in dataset.dict: number = int(row['number']) dateOfTesting = datetime.datetime.strptime(row['dateOfTesting'], '%Y-%m-%d').date() student = self.get_student(number=number, dateOfTesting=dateOfTesting) student_ids.append(student.id) dataset.append_col(student_ids, header='student_id') def before_save_instance(self, instance, dry_run): p_values = (instance.p_bal,instance.p_shh,instance.p_sws,instance.p_20m,instance.p_su,instance.p_ls,instance.p_rb,instance.p_lauf,instance.p_ball) p_total = sum(p_values) if p_total >= 712: instance.is_talent = True elif p_total < 350: instance.is_frail = True potential_items = [] potential_items.append(self.PotentialItem('badminton', instance.potential_badminton)) potential_items.append(self.PotentialItem('basketball', instance.potential_basketball)) potential_items.append(self.PotentialItem('soccer', instance.potential_soccer)) potential_items.append(self.PotentialItem('gymnastics', instance.potential_gymnastics)) potential_items.append(self.PotentialItem('canoe', instance.potential_canoe)) potential_items.append(self.PotentialItem('athletics_running', instance.potential_athletics_running)) potential_items.append(self.PotentialItem('athletics_sprinting_jumping_throwing', instance.potential_athletics_sprinting_jumping_throwing)) potential_items.append(self.PotentialItem('swimming', instance.potential_swimming)) potential_items.append(self.PotentialItem('table_tennis', instance.potential_table_tennis)) potential_items.append(self.PotentialItem('volleyball', instance.potential_volleyball)) potential_items.sort(key=lambda item: item.value, reverse=True) temp_potential_item_names = [] if instance.is_frail != True: for potential_item in potential_items[:5]: temp_potential_item_names.append(potential_item.name) certificate_template = 'ShanghaiMovementCheck2015' certificate_data = {'template':certificate_template, 'potential_items':temp_potential_item_names} instance.certificate_data = json.dumps(certificate_data) def get_student(self, number, dateOfTesting): studentQuery = Student.objects.filter(number=number, dateOfTesting=dateOfTesting) if studentQuery.exists(): student = studentQuery[0] else: student = None return student student_id = fields.Field(attribute='student_id') potential_badminton = fields.Field(attribute='potential_badminton', widget=widgets.DecimalWidget(), column_name='Badminton') potential_basketball = fields.Field(attribute='potential_basketball', widget=widgets.DecimalWidget(), column_name='Basketball') potential_soccer = fields.Field(attribute='potential_soccer', widget=widgets.DecimalWidget(), column_name='Fußball') potential_gymnastics = fields.Field(attribute='potential_gymnastics', widget=widgets.DecimalWidget(), column_name='Gerätturnen') potential_canoe = fields.Field(attribute='potential_canoe', widget=widgets.DecimalWidget(), column_name='Kanu') potential_athletics_running = fields.Field(attribute='potential_athletics_running', widget=widgets.DecimalWidget(), column_name='Leichtathletik - Lauf') potential_athletics_sprinting_jumping_throwing = fields.Field(attribute='potential_athletics_sprinting_jumping_throwing', widget=widgets.DecimalWidget(), column_name='Leichtathletik - Sprint/Sprung/Wurf') potential_swimming = fields.Field(attribute='potential_swimming', widget=widgets.DecimalWidget(), column_name='Schwimmen') potential_table_tennis = fields.Field(attribute='potential_table_tennis', widget=widgets.DecimalWidget(), column_name='Tischtennis') potential_volleyball = fields.Field(attribute='potential_volleyball', widget=widgets.DecimalWidget(), column_name='Volleyball') class Meta: model = StudentEvaluation import_id_fields = ('student_id',) fields = ('p_bal','p_shh','p_sws','p_20m','p_su','p_ls','p_rb','p_lauf','p_ball','p_height','p_weight','p_bmi') class PotentialItem: def __init__(self, name, value): self.name = name self.value = value
class StudentEvaluationResource(resources.ModelResource): def before_import(self, dataset, dry_run, **kwargs): student_ids = [] for row in dataset.dict: number = int(row['number']) dateOfTesting = datetime.datetime.strptime(row['dateOfTesting'], '%Y/%m/%d').date() student = self.get_student(number=number, dateOfTesting=dateOfTesting) student_ids.append(student.id) dataset.append_col(student_ids, header='student_id') def before_save_instance(self, instance, dry_run): p_values = (instance.p_bal, instance.p_shh, instance.p_sws, instance.p_20m, instance.p_su, instance.p_ls, instance.p_rb, instance.p_lauf, instance.p_ball) p_total = sum(p_values) if p_total <= 319: instance.is_frail = True potential_items = [] potential_items.append( self.PotentialItem('badminton', instance.potential_badminton)) potential_items.append( self.PotentialItem('basketball', instance.potential_basketball)) potential_items.append( self.PotentialItem('soccer', instance.potential_soccer)) potential_items.append( self.PotentialItem('gymnastics', instance.potential_gymnastics)) potential_items.append( self.PotentialItem('canoe', instance.potential_canoe)) potential_items.append( self.PotentialItem('discus', instance.potential_discus)) potential_items.append( self.PotentialItem('shot_put', instance.potential_shot_put)) potential_items.append( self.PotentialItem('pole_vault', instance.potential_pole_vault)) potential_items.append( self.PotentialItem('high_jump', instance.potential_high_jump)) potential_items.append( self.PotentialItem('javelin', instance.potential_javelin)) potential_items.append( self.PotentialItem('long_jump', instance.potential_long_jump)) potential_items.append( self.PotentialItem('huerdles', instance.potential_huerdles)) potential_items.append( self.PotentialItem('sprint', instance.potential_sprint)) potential_items.append( self.PotentialItem('rowing', instance.potential_rowing)) potential_items.append( self.PotentialItem('swimming', instance.potential_swimming)) potential_items.append( self.PotentialItem('tennis', instance.potential_tennis)) potential_items.append( self.PotentialItem('table_tennis', instance.potential_table_tennis)) potential_items.append( self.PotentialItem('volleyball', instance.potential_volleyball)) potential_items.sort(key=lambda item: item.value, reverse=True) temp_potential_item_names = [] if instance.is_frail != True: for potential_item in potential_items[:3]: temp_potential_item_names.append(potential_item.name) certificate_template = 'ShanghaiMovementCheck2015' certificate_data = { 'template': certificate_template, 'potential_items': temp_potential_item_names } instance.certificate_data = json.dumps(certificate_data) def get_student(self, number, dateOfTesting): studentQuery = Student.objects.filter(number=number, dateOfTesting=dateOfTesting) if studentQuery.exists(): student = studentQuery[0] else: student = None return student student_id = fields.Field(attribute='student_id') potential_badminton = fields.Field(attribute='potential_badminton', widget=widgets.DecimalWidget(), column_name='badminton') potential_basketball = fields.Field(attribute='potential_basketball', widget=widgets.DecimalWidget(), column_name='basketball') potential_soccer = fields.Field(attribute='potential_soccer', widget=widgets.DecimalWidget(), column_name='soccer') potential_gymnastics = fields.Field(attribute='potential_gymnastics', widget=widgets.DecimalWidget(), column_name='gymnastics') potential_canoe = fields.Field(attribute='potential_canoe', widget=widgets.DecimalWidget(), column_name='canoe/kayak') potential_discus = fields.Field(attribute='potential_discus', widget=widgets.DecimalWidget(), column_name='discus') potential_shot_put = fields.Field(attribute='potential_shot_put', widget=widgets.DecimalWidget(), column_name='shot put') potential_pole_vault = fields.Field(attribute='potential_pole_vault', widget=widgets.DecimalWidget(), column_name='pole vault') potential_high_jump = fields.Field(attribute='potential_high_jump', widget=widgets.DecimalWidget(), column_name='high jump') potential_javelin = fields.Field(attribute='potential_javelin', widget=widgets.DecimalWidget(), column_name='javelin') potential_long_jump = fields.Field(attribute='potential_long_jump', widget=widgets.DecimalWidget(), column_name='long jump') potential_huerdles = fields.Field(attribute='potential_huerdles', widget=widgets.DecimalWidget(), column_name='huerdles') potential_sprint = fields.Field(attribute='potential_sprint', widget=widgets.DecimalWidget(), column_name='sprint') potential_rowing = fields.Field(attribute='potential_rowing', widget=widgets.DecimalWidget(), column_name='rowing') potential_swimming = fields.Field(attribute='potential_swimming', widget=widgets.DecimalWidget(), column_name='swimming') potential_tennis = fields.Field(attribute='potential_tennis', widget=widgets.DecimalWidget(), column_name='tennis') potential_table_tennis = fields.Field(attribute='potential_table_tennis', widget=widgets.DecimalWidget(), column_name='table tennis') potential_volleyball = fields.Field(attribute='potential_volleyball', widget=widgets.DecimalWidget(), column_name='volleyball') class Meta: model = StudentEvaluation import_id_fields = ('student_id', ) fields = ('p_bal', 'p_shh', 'p_sws', 'p_20m', 'p_su', 'p_ls', 'p_rb', 'p_lauf', 'p_ball', 'p_height', 'p_weight', 'p_bmi') class PotentialItem: def __init__(self, name, value): self.name = name self.value = value
class ProductResource(resources.ModelResource): pdid = fields.Field( column_name='PdID', # column name on file attribute='pdid', widget=CustomDecimalWidget()) # attribute on table name = fields.Field( column_name='Product', # column name on file attribute='name', ) # attribute on table descr1 = fields.Field( column_name='Descr1', # column name on file attribute='descr1', ) # attribute on table descr2 = fields.Field( column_name='Descr2', # column name on file attribute='descr2', ) # attribute on table detail = fields.Field( column_name='Detail', # column name on file attribute='detail', ) # attribute on table remarks = fields.Field( column_name='Remarks', # column name on file attribute='remarks', ) # attribute on table status_id = fields.Field(column_name='ProductStatus', attribute='status', widget=widgets.ForeignKeyWidget( ProductStatus, 'name')) price = fields.Field(column_name='Price', attribute='price', widget=widgets.DecimalWidget()) date = fields.Field(column_name='TIMESTAMP', attribute='date', widget=widgets.DateWidget('%Y.%m.%d')) Handlager = fields.Field( column_name='Handlager', attribute='handlager', ) lang_id = fields.Field( column_name='lang_id', attribute='lang_id', ) weight = fields.Field( column_name='Weigth', attribute='weight', ) ptype = fields.Field( column_name='PType', attribute='ptype', ) HarmonizedCode = fields.Field( column_name='HarmonizedCode', attribute='harmonizedcode', ) eccn = fields.Field( column_name='ECCN', attribute='eccn', ) lkz = fields.Field( column_name='LKZ', attribute='lkz', ) ag = fields.Field( column_name='AG', attribute='ag', ) imageurl = fields.Field( column_name='imageURL', attribute='imageurl', ) class Meta: model = Product fields = ( 'pdid', 'name', 'descr1', 'descr2', 'detail', 'remarks', 'status_id', 'price', 'date', 'Handlager', 'lang_id', 'weight', 'ptype', 'HarmonizedCode', 'eccn', 'lkz', 'ag', 'imageurl', ) list_display = ( 'name', 'descr1', ) import_id_fields = ('pdid', ) skip_unchanged = True # skip unchanged records report_skipped = True # whether skipped records appear in the import Result object exclude = ('id', )