Exemplo n.º 1
0
class OrderResource(resources.ModelResource):
    # product = Field(
    #     attribute='product',
    #     column_name='product',
    #     widget=ForeignKeyWidget(Product, 'pk')
    # )
    # warehouse = Field(
    #     attribute='warehouse',
    #     column_name='warehouse',
    #     widget=ForeignKeyWidget(Warehouse, 'pk')
    # )
    # customer = Field(
    #     attribute='customer',
    #     column_name='customer',
    #     widget=ForeignKeyWidget(Customer, 'pk')
    # )
    # circuit = Field(
    #     attribute='circuit',
    #     column_name='circuit',
    #     widget=ForeignKeyWidget(Circuit, 'pk')
    # )
    ordered_at = Field(
        attribute='ordered_at',
        column_name='ordered_at',
        widget=DateWidget(),
    )
    ordered_quantity = Field(
        attribute='ordered_quantity',
        column_name='ordered_quantity',
        widget=IntegerWidget(),
    )

    # reference = Field(
    #     attribute='reference',
    #     column_name='order_reference',
    #     widget=DateWidget(),
    # )
    class Meta:
        model = Order
        skip_unchanged = True
        report_skipped = True
        import_id_fields = (
            'circuit',
            'warehouse',
            'product',
            'category',
            'ordered_quantity',
            'ordered_at',
        )
        exclude = ('id', )
Exemplo n.º 2
0
class StudentTutionPaymentResource(resources.ModelResource):
    students = fields.Field(column_name='students',
                            attribute='students',
                            widget=ForeignKeyWidget(Student, 'students'))

    sessions = fields.Field(column_name='sessions',
                            attribute='sessions',
                            widget=ForeignKeyWidget(Session, 'name'))

    class_name = fields.Field(column_name='class_name',
                              attribute='class_name',
                              widget=ForeignKeyWidget(Class, 'name'))

    payment_completed = fields.Field(column_name='payment_completed',
                                     attribute='payment_completed',
                                     widget=BooleanWidget())

    school_fees = fields.Field(column_name='school_fees',
                               attribute='school_fees',
                               widget=IntegerWidget())

    total_payment = fields.Field(column_name='paid',
                                 attribute='paid',
                                 widget=IntegerWidget())
Exemplo n.º 3
0
class BoxApplicationsResources(resources.ModelResource):
    """盒子申请信息导入导出"""
    application_id = Field(column_name="申请编号", attribute='id', default=None)
    contract_id = Field(column_name="合同号",
                        attribute='contract_number',
                        widget=ForeignKeyWidget(ContractsInfo,
                                                'contract_number'),
                        default=None)
    amount = Field(column_name="申请数量",
                   attribute='amount',
                   widget=IntegerWidget())
    classification = Field(column_name="申请类别", attribute='classification')
    address_name = Field(column_name="收件人姓名", attribute='address_name')
    address_phone = Field(column_name="收件人号码", attribute='address_phone')
    send_address = Field(column_name="邮寄地址", attribute='send_address')
    box_price = Field(column_name="盒子单价", attribute='box_price', default=None)
    detection_price = Field(column_name="检测单价",
                            attribute='detection_price',
                            default=None)
    use = Field(column_name="用途", attribute='use')
    proposer = Field(column_name="申请人", attribute='proposer', default=None)
    submit_time = Field(column_name="提交时间",
                        attribute='submit_time',
                        widget=DateWidget('%Y-%m-%d'))
    approval_status = Field(column_name="审批状态", attribute='approval_status')
    box_submit_flag = Field(column_name="是否提交", attribute='box_submit_flag')

    class Meta:
        model = BoxApplications
        fields = ('application_id', 'contract_id', 'amount', 'classification',
                  'address_name', 'address_phone', 'send_address', 'box_price',
                  'detection_price', 'use', 'proposer', 'submit_time',
                  'approval_status', 'box_submit_flag')
        export_order = ('application_id', 'contract_id', 'amount',
                        'classification', 'address_name', 'address_phone',
                        'send_address', 'box_price', 'detection_price', 'use',
                        'proposer', 'submit_time', 'approval_status',
                        'box_submit_flag')
        skip_unchanged = True
        import_id_fields = ['application_id']

    def get_export_headers(self):
        export_headers = [
            u'申请编号', u'合同号', u'申请数量', u'申请类别', u'收件人姓名', u'收件人号码', u'邮寄地址',
            u'盒子单价', u'检测单价', u'用途', u'申请人', u'提交时间', u'审批状态', u'是否提交'
        ]
        return export_headers
Exemplo n.º 4
0
class SolicitudHWResource(resources.ModelResource):
    ni_ingeniero = fields.Field(column_name='ni ingeniero',
                                attribute='ni_ingeniero',
                                widget=ForeignKeyWidget(
                                    Perfil, 'nombre_completo'))
    asignacion_ni = fields.Field(column_name='asignacion ni',
                                 attribute='asignacion_ni',
                                 widget=ForeignKeyWidget(AsignacionNi, 'pk'))
    estacion = fields.Field(
        column_name='estacion',
        attribute='estacion__nombre',
    )
    actividad = fields.Field(column_name='actividad',
                             attribute='actividad',
                             widget=ForeignKeyWidget(Actividad, 'pk'))
    wp = fields.Field(column_name='wp', attribute='wp', widget=IntegerWidget())
    estado_solicitud = fields.Field(
        column_name='estado solicitud',
        attribute='estado_solicitud',
    )
    creado = fields.Field(column_name='creado',
                          attribute='creado',
                          widget=DateWidget(format='%d/%m/%Y'))
    actualizado = fields.Field(column_name='actualizado',
                               attribute='actualizado',
                               widget=DateWidget(format='%d/%m/%Y'))

    def for_delete(self, row, instance):
        return self.fields['subestado'].clean(row)

    class Meta:
        model = SolicitudHW
        # exclude = ('',)
        export_order = (
            'id',
            'ni_ingeniero',
            'asignacion_ni',
            'estacion',
            'actividad',
            'wp',
            'estado_solicitud',
            'creado',
            'actualizado',
            'estado',
            'subestado',
        )
Exemplo n.º 5
0
class PatientResource(resources.ModelResource):
    codigo = fields.Field(column_name='Código', attribute='codigo')
    sexo = fields.Field(column_name='Sexo',
                        attribute='sexo',
                        widget=SexoWidget())
    edad = fields.Field(column_name='Edad',
                        attribute='edad',
                        widget=IntegerWidget())
    vih = fields.Field(column_name='¿Tiene VIH/AIDS?',
                       attribute='vih',
                       widget=MyBoolWidget())
    diabetes = fields.Field(column_name='¿Tiene diabetes?',
                            attribute='diabetes',
                            widget=MyBoolWidget())
    hab_calle = fields.Field(column_name='¿Es habitante de calle?',
                             attribute='hab_calle',
                             widget=MyBoolWidget())
    info_clinica = fields.Field(column_name='Información Clínica',
                                attribute='info_clinica',
                                widget=MyBoolWidget())
    observaciones = fields.Field(column_name='Observaciones',
                                 attribute='observaciones')
    fecha_creacion = fields.Field(column_name='Fecha de creación',
                                  attribute='fecha_creacion')

    class Meta:
        model = Patient
        fields = (
            'codigo',
            'edad',
            'sexo',
            'vih',
            'diabetes',
            'hab_calle',
            'info_clinica',
            'observaciones',
            'fecha_creacion',
        )
        export_order = fields
Exemplo n.º 6
0
class DegradacionResource(resources.ModelResource):
    perfil = fields.Field(column_name='perfil',
                          attribute='perfil',
                          widget=ForeignKeyWidget(Perfil, 'nombre_completo'))
    estacion = fields.Field(
        column_name='estacion',
        attribute='estacion__nombre',
    )
    actividad = fields.Field(column_name='actividad',
                             attribute='actividad',
                             widget=ForeignKeyWidget(Actividad, 'pk'))
    wp = fields.Field(column_name='wp', attribute='wp', widget=IntegerWidget())
    contenido = fields.Field(
        column_name='contenido',
        attribute='contenido',
    )
    creado = fields.Field(column_name='creado',
                          attribute='creado',
                          widget=DateTimeWidget(format='%d/%m/%Y %H:%M:%S'))
    actualizado = fields.Field(
        column_name='actualizado',
        attribute='actualizado',
        widget=DateTimeWidget(format='%d/%m/%Y %H:%M:%S'))

    class Meta:
        model = Degradacion
        exclude = ('imagen')
        export_order = (
            'id',
            'perfil',
            'estacion',
            'actividad',
            'wp',
            'contenido',
            'creado',
            'actualizado',
        )
Exemplo n.º 7
0
class DeliveryResource(resources.ModelResource):
    # product = Field(
    #     attribute='product',
    #     column_name='product',
    #     widget=ForeignKeyWidget(Product, 'pk')
    # )
    # warehouse = Field(
    #     attribute='warehouse',
    #     column_name='warehouse',
    #     widget=ForeignKeyWidget(Warehouse, 'pk')
    # )
    # customer = Field(
    #     attribute='customer',
    #     column_name='customer',
    #     widget=ForeignKeyWidget(Customer, 'pk')
    # )
    # circuit = Field(
    #     attribute='circuit',
    #     column_name='circuit',
    #     widget=ForeignKeyWidget(Circuit, 'pk')
    # )
    delivered_at = Field(
        attribute='delivered_at',
        column_name='delivered_at',
        widget=DateWidget(),
    )
    delivered_quantity = Field(
        attribute='delivered_quantity',
        column_name='delivered_quantity',
        widget=IntegerWidget(),
    )

    # reference = Field(
    #     attribute='reference',
    #     column_name='order_reference',
    #     widget=DateWidget(),
    # )
    class Meta:
        model = Delivery
        skip_unchanged = True
        report_skipped = True
        import_id_fields = (
            'circuit',
            'warehouse',
            'product',
            'category',
            'delivered_quantity',
            'delivered_at',
        )
        exclude = ('id', )

        # use_transactions = True
        # use_bulk = True
        # skip_diff = True
        # chunk_size = 20

    # def get_queryset(self):
    #     ''' Select related object data with the query '''
    #     return super().get_queryset().select_related('circuit', 'warehouse', 'product', 'customer')  # .all()

    def before_import_row(self, row, **kwargs):
        # Clean numeric fields
        if not str(row.get('delivered_quantity')).isnumeric():
            row['delivered_quantity'] = None

        # # Get or create nested models
        # (product_model, _created) = Product.objects.get_or_create(
        #     reference=row.get('product'),
        #     # name=row.get('product'),
        # )
        # row['product'] = product_model.id

        # (warehouse_model, _created) = Warehouse.objects.get_or_create(
        #     reference=row.get('warehouse')
        # )
        # row['warehouse'] = warehouse_model.id

        # (circuit_model, _created) = Circuit.objects.get_or_create(
        #     reference=row.get('circuit'),
        # )
        # row['circuit'] = circuit_model.id
        row['delivered_at'] = datetime.datetime.strptime(
            row['delivered_at'], "%m/%d/%Y").date()
Exemplo n.º 8
0
class AssetResource(VersionedResource):
    class RackForeignKeyWidget(ForeignKeyWidget):
        def clean(self, value, row=None, *args, **kwargs):
            if row['datacenter']:
                my_rack = row['rack']
                my_site = get_site(row)
                version = ChangePlan.objects.get(id=row['version'])
                if my_site:
                    site = Site.objects.get(abbr=my_site)
                    rack = newest_object(Rack,
                                         version,
                                         rack=my_rack,
                                         site=site)
                    if not rack:
                        raise serializers.ValidationError(
                            "Rack does not exist.")
                    return add_rack(rack, version)
            return None

        def render(self, value, obj=None):
            return '' if obj and obj.itmodel.type == ITModel.Type.BLADE else super(
            ).render(value, obj)

    class ITModelForeignKeyWidget(ForeignKeyWidget):
        def clean(self, value, row=None, *args, **kwargs):
            return self.model.objects.get(
                vendor__iexact=row['vendor'],
                model_number__iexact=row['model_number'])

    class VersionWidget(ForeignKeyWidget):
        def clean(self, value, row=None, *args, **kwargs):
            if value is not None:
                return self.get_queryset(value, row, *args,
                                         **kwargs).get(**{self.field: value})
            else:
                return None

    class SiteWidget(ForeignKeyWidget):
        def __init__(self, column, *args, **kwargs):
            self.column = column
            super().__init__(Site, 'abbr', *args, **kwargs)

        def clean(self, value, row=None, *args, **kwargs):
            site = get_site(row)
            return super().clean(site, row, *args, **kwargs)

        def render(self, value, obj=None):
            if value and obj and not obj.itmodel.type == ITModel.Type.BLADE:
                if self.column == 'datacenter' and not value.offline:
                    return value.abbr
                if self.column == 'offline_site' and value.offline:
                    return value.abbr
            return ""

    class ChassisWidget(ForeignKeyWidget):
        def clean(self, value, row=None, *args, **kwargs):
            if value:
                version = ChangePlan.objects.get(id=row['version'])
                chassis = newest_object(Asset, version, asset_number=value)
                return add_asset(chassis, version)
            return None

    datacenter = fields.Field(column_name='datacenter',
                              attribute='site',
                              widget=SiteWidget('datacenter'))
    offline_site = fields.Field(column_name='offline_site',
                                attribute='site',
                                widget=SiteWidget('offline_site'))
    rack = fields.Field(column_name='rack',
                        attribute='rack',
                        widget=RackForeignKeyWidget(Rack, 'rack'))
    vendor = fields.Field(column_name='vendor',
                          attribute='itmodel',
                          widget=ITModelForeignKeyWidget(ITModel, 'vendor'))
    model_number = fields.Field(column_name='model_number',
                                attribute='itmodel',
                                widget=ITModelForeignKeyWidget(
                                    ITModel, 'model_number'))
    owner = fields.Field(column_name='owner',
                         attribute='owner',
                         widget=ForeignKeyWidget(User, 'username'))
    power_port_connection_1 = fields.Field(attribute="power_port_connection_1")
    power_port_connection_2 = fields.Field(attribute="power_port_connection_2")
    version = fields.Field(attribute='version',
                           widget=VersionWidget(ChangePlan, 'id'))
    blade_chassis = fields.Field(column_name='chassis_number',
                                 attribute='blade_chassis',
                                 widget=ChassisWidget(Asset, 'asset_number'))
    slot = fields.Field(column_name='chassis_slot',
                        attribute='slot',
                        widget=IntegerWidget())
    display_color = fields.Field(
        column_name='custom_display_color',
        attribute='display_color',
    )
    cpu = fields.Field(
        column_name='custom_cpu',
        attribute='cpu',
    )
    memory = fields.Field(column_name='custom_memory',
                          attribute='memory',
                          widget=IntegerWidget())
    storage = fields.Field(
        column_name='custom_storage',
        attribute='storage',
    )

    def skip_row(self, instance, original):
        try:
            check_asset_perm(self.owner.username, original.site.abbr)
        except:
            pass
        check_asset_perm(self.owner.username, instance.site.abbr)

        port1 = getattr(instance, "power_port_connection_1")
        port2 = getattr(instance, "power_port_connection_2")
        new = [port for port in (port1, port2) if len(port) > 0]
        curr = [
            port[0] + str(port[1])
            for port in instance.powered_set.values_list(
                "pdu__position", "plug_number")
        ]

        if hasattr(original,
                   'site') and instance.site.abbr != original.site.abbr:
            for port in original.networkport_set.all():
                port.connection = None
                port.save()

        if sorted(new) != sorted(curr):
            return False

        delattr(instance, "power_port_connection_1")
        delattr(instance, "power_port_connection_2")
        return super(AssetResource, self).skip_row(instance, original)

    def dehydrate_power_port_connection_1(self, asset):
        try:
            if asset.itmodel.power_ports >= 1:
                my_powered = Powered.objects.filter(asset=asset,
                                                    order=1).first()
                if self.version.id != 0 and my_powered is None:
                    my_powered = Powered.objects.filter(asset=versioned_object(
                        asset, ChangePlan.objects.get(id=0),
                        Asset.IDENTITY_FIELDS),
                                                        order=1).first()
                if my_powered:
                    return str(my_powered.pdu.position) + str(
                        my_powered.plug_number)
                else:
                    return ''
        except:
            return ''

    def dehydrate_power_port_connection_2(self, asset):
        try:
            if asset.itmodel.power_ports >= 2:
                my_powered = Powered.objects.filter(asset=asset,
                                                    order=2).first()
                if self.version.id != 0 and my_powered is None:
                    my_powered = Powered.objects.filter(asset=versioned_object(
                        asset, ChangePlan.objects.get(id=0),
                        Asset.IDENTITY_FIELDS),
                                                        order=2).first()
                if my_powered:
                    return str(my_powered.pdu.position) + str(
                        my_powered.plug_number)
                else:
                    return ''
        except:
            return ''

    class Meta:
        model = Asset
        exclude = ('id', 'itmodel', 'site', 'commissioned',
                   'decommissioned_by', 'decommissioned_timestamp')
        import_id_fields = ('asset_number', 'version')
        export_order = ('asset_number', 'hostname', 'datacenter',
                        'offline_site', 'rack', 'rack_position',
                        'blade_chassis', 'slot', 'vendor', 'model_number',
                        'owner', 'comment', 'power_port_connection_1',
                        'power_port_connection_2', 'display_color', 'cpu',
                        'memory', 'storage')
        skip_unchanged = True
        report_skipped = True
        clean_model_instances = True

    def before_import_row(self, row, **kwargs):
        if row['datacenter']:
            if row['offline_site']:
                raise serializers.ValidationError(
                    'You cannot specify both datacenter and offline_site')
        if row['asset_number'] == '':
            max_an = Asset.objects.all().aggregate(Max('asset_number'))
            row['asset_number'] = (max_an['asset_number__max'] or 100000) + 1
        else:
            row['asset_number'] = int(row['asset_number'])

        val = row['custom_display_color']
        row['custom_display_color'] = val if val else None
        val = row['custom_cpu']
        row['custom_cpu'] = val if val else None
        val = row['custom_storage']
        row['custom_storage'] = val if val else None

        row['version'] = self.version.id

    def after_import_row(self, row, row_result, **kwargs):
        if row_result.import_type == 'skip':
            return
        try:
            my_asset = Asset.objects.get(id=row_result.object_id)
        except:
            return  # skip

        my_asset = add_asset(my_asset, self.version)

        if not my_asset.site.offline and not my_asset.itmodel.type == ITModel.Type.BLADE:
            my_rack = my_asset.rack
            special = []
            for i in range(1, min(3, my_asset.itmodel.power_ports + 1)):
                pc = row['power_port_connection_' + str(i)]
                if len(pc) > 0:
                    try:
                        split = re.search(r"\d", pc).start()
                        position = pc[:split]
                        plug = int(pc[split:])
                        special.append({
                            'pdu_id':
                            PDU.objects.get(rack=my_rack, position=position),
                            'plug':
                            plug
                        })
                    except AttributeError:
                        raise ValidationError('power_port_connection_' +
                                              str(i) +
                                              " formatted incorrectly")
                    except PDU.DoesNotExist:
                        raise ValidationError(
                            pc + " does not exit on the specified rack")
            current = []
            powered_set = my_asset.powered_set
            if 2 <= len(special) < my_asset.itmodel.power_ports and \
                    powered_set.exists() and powered_set.first().pdu.rack == my_asset.rack:
                special_simple = [
                    port['pdu_id'].position + str(port['plug'])
                    for port in special
                ]

                current = [{
                    'pdu_id': port['pdu'],
                    'plug': port['plug_number'],
                    'position': port['pdu__position']
                } for port in powered_set.order_by('order').values(
                    'pdu', 'plug_number', 'pdu__position')]

                for port in current:
                    simple = port['position'] + str(port['plug'])
                    if simple in special_simple:
                        current.remove(port)

            my_asset.powered_set.all().delete()

            create_ports = False
            net_port = my_asset.networkport_set.first()
            if net_port and net_port.label.itmodel != my_asset.itmodel:
                for port in my_asset.networkport_set.all():
                    port.delete()
                create_ports = True

            if row_result.import_type == "new" or create_ports:
                ports = [{
                    "label": port,
                    "mac_address": None,
                    "connection": None
                } for port in NetworkPortLabel.objects.filter(
                    itmodel=my_asset.itmodel).values_list('name', flat=True)]
            else:
                ports = None
            my_asset.version = self.version
            create_asset_extra(my_asset, self.version, special + current,
                               ports)

        if my_asset.itmodel.type == ITModel.Type.BLADE:
            my_asset.rack = my_asset.blade_chassis.rack
            my_asset.save()

        if my_asset.site.offline:
            for port in my_asset.networkport_set.all():
                port.connection = None
                port.save()

    def after_export(self, queryset, data, *args, **kwargs):
        del data['version']
Exemplo n.º 9
0
class ActividadResource(resources.ModelResource):
    wp = fields.Field(column_name='wp', attribute='wp', widget=IntegerWidget())
    id_notificacion_noc = fields.Field(column_name='id notificacion noc',
                                       attribute='id_notificacion_noc',
                                       widget=IntegerWidget())
    service_supplier = fields.Field(
        column_name='service supplier',
        attribute='service_supplier',
    )
    field_manager = fields.Field(
        column_name='field manager',
        attribute='field_manager',
    )
    valor_wp_eur = fields.Field(
        column_name='valor wp eur',
        attribute='valor_wp_eur',
    )
    estacion = fields.Field(
        column_name='estacion',
        attribute='estacion',
        widget=ForeignKeyWidget(Estacion, 'nombre'),
    )
    regional = fields.Field(
        column_name='regional',
        attribute='estacion__regional',
    )
    ciudad = fields.Field(
        column_name='ciudad',
        attribute='estacion__ciudad',
    )
    responsable = fields.Field(
        column_name='responsable',
        attribute='estacion__responsable',
    )
    prioridad = fields.Field(
        column_name='prioridad',
        attribute='estacion__prioridad',
    )
    tipo_trabajo = fields.Field(
        column_name='tipo trabajo',
        attribute='tipo_trabajo',
    )
    fecha_ingreso_onair = fields.Field(column_name='fecha ingreso onair',
                                       attribute='fecha_ingreso_onair',
                                       widget=DateWidget(format='%d/%m/%Y'))
    realtifinish = fields.Field(column_name='realtifinish',
                                attribute='realtifinish',
                                widget=DateWidget(format='%d/%m/%Y'))
    fecha_integracion = fields.Field(column_name='fecha integracion',
                                     attribute='fecha_integracion',
                                     widget=DateWidget(format='%d/%m/%Y'))
    grupo_gap = fields.Field(
        column_name='grupo gap',
        attribute='grupo_gap',
    )
    fecha_estado_noc = fields.Field(column_name='fecha estado noc',
                                    attribute='fecha_estado_noc',
                                    widget=DateWidget(format='%d/%m/%Y'))
    estado_noc = fields.Field(
        column_name='estado noc',
        attribute='estado_noc',
    )
    subestado_noc = fields.Field(
        column_name='subestado noc',
        attribute='subestado_noc',
    )
    impacto_degradacion = fields.Field(
        column_name='impacto degradacion',
        attribute='impacto_degradacion',
    )
    fecha_fc_visita = fields.Field(column_name='fecha fc visita',
                                   attribute='fecha_fc_visita',
                                   widget=DateWidget(format='%d/%m/%Y'))

    # asignaciones npo
    npo_ingeniero = fields.Field(
        column_name='npo ingeniero',
        attribute='npo_ingeniero',
    )
    npo_estado_asignacion = fields.Field(
        column_name='npo estado asignacion',
        attribute='npo_estado_asignacion',
    )
    npo_concepto = fields.Field(
        column_name='npo concepto',
        attribute='npo_concepto',
    )
    npo_tipo_intervencion = fields.Field(
        column_name='npo tipo intervencion',
        attribute='npo_tipo_intervencion',
    )
    npo_fecha_asignacion = fields.Field(column_name='npo fecha asignacion',
                                        attribute='npo_fecha_asignacion',
                                        widget=DateWidget(format='%d/%m/%Y'))
    npo_fm_supervisor = fields.Field(
        column_name='npo fm supervisor',
        attribute='npo_fm_supervisor',
    )

    # asignaciones ni
    ni_ingeniero = fields.Field(
        column_name='ni ingeniero',
        attribute='ni_ingeniero',
    )
    ni_estado_asignacion = fields.Field(
        column_name='ni estado asignacion',
        attribute='ni_estado_asignacion',
    )
    ni_origen_falla = fields.Field(
        column_name='ni origen falla',
        attribute='ni_origen_falla',
    )
    ni_solver = fields.Field(
        column_name='ni solver',
        attribute='ni_solver',
    )
    ni_concepto = fields.Field(
        column_name='ni concepto',
        attribute='ni_concepto',
    )
    ni_estado_solicitud_hw = fields.Field(
        column_name='ni estado solicitud hw',
        attribute='ni_estado_solicitud_hw',
    )
    ni_tipo_intervencion = fields.Field(
        column_name='ni tipo intervencion',
        attribute='ni_tipo_intervencion',
    )
    ni_fecha_asignacion = fields.Field(column_name='ni fecha asignacion',
                                       attribute='ni_fecha_asignacion',
                                       widget=DateWidget(format='%d/%m/%Y'))
    ni_fm_supervisor = fields.Field(
        column_name='ni fm supervisor',
        attribute='ni_fm_supervisor',
    )
    clasificacion_previa = fields.Field(
        column_name='clasificacion previa',
        attribute='clasificacion_previa',
    )

    # asignaciones npo y asignaciones ni
    estado_ultimo = fields.Field(
        column_name='estado ultimo',
        attribute='estado_ultimo',
    )
    estado_unico = fields.Field(
        column_name='estado unico',
        attribute='estado_unico',
    )

    def for_delete(self, row, instance):
        return self.fields['subestado'].clean(row)

    class Meta:
        model = Actividad
        exclude = (
            'creado',
            'actualizado',
        )
        export_order = (
            # actividad
            'id',
            'wp',
            'id_notificacion_noc',
            'agrupador',
            'service_supplier',
            'field_manager',
            'valor_wp_eur',
            'estacion',
            'regional',
            'ciudad',
            'responsable',
            'prioridad',
            'banda',
            'proyecto',
            'escenario',
            'tipo_trabajo',
            'fecha_ingreso_onair',
            'realtifinish',
            'fecha_integracion',
            'grupo_gap',
            'fecha_estado_noc',
            'estado_noc',
            'subestado_noc',
            'impacto_degradacion',
            'fecha_fc_visita',
            # asignaciones npo
            'npo_ingeniero',
            'npo_estado_asignacion',
            'npo_concepto',
            'npo_tipo_intervencion',
            'npo_fecha_asignacion',
            'npo_fm_supervisor',
            # asignaciones ni
            'ni_ingeniero',
            'ni_estado_asignacion',
            'ni_origen_falla',
            'ni_solver',
            'ni_concepto',
            'ni_estado_solicitud_hw',
            'ni_tipo_intervencion',
            'ni_fecha_asignacion',
            'ni_fm_supervisor',
            'clasificacion_previa',
            # asignaciones npo y asignaciones ni
            'estado_ultimo',
            'estado_unico',
            # actividad
            'estado',
            'subestado',
        )
Exemplo n.º 10
0
class ForecastResource(resources.ModelResource):
    ''' Data import class '''
    # product = Field(
    #     attribute='product',
    #     column_name='product',
    #     widget=ForeignKeyWidget(Product, 'pk')
    # )
    # warehouse = Field(
    #     attribute='warehouse',
    #     column_name='warehouse',
    #     widget=ForeignKeyWidget(Warehouse, 'pk')
    # )
    # customer = Field(
    #     attribute='customer',
    #     column_name='customer',
    #     widget=ForeignKeyWidget(Customer, 'pk')
    # )
    # circuit = Field(
    #     attribute='circuit',
    #     column_name='circuit',
    #     widget=ForeignKeyWidget(Circuit, 'pk')
    # )
    forecast_date = Field(
        attribute='forecast_date',
        column_name='forecast_date',
        widget=DateWidget(),
    )
    version = Field(
        attribute='version',
        column_name='version',
        widget=ForeignKeyWidget(Version, 'pk'),
    )
    forecasted_quantity = Field(
        attribute='forecasted_quantity',
        column_name='forecasted_quantity',
        # widget=IntegerCleanWidget(),
        widget=IntegerWidget(),
    )

    # product_cost = Field(
    #     column_name='product_cost',
    #     widget=DecimalWidget(),
    # )
    # product_type = Field(
    #     column_name='product_type',
    # )
    # product_name = Field(
    #     column_name='product_name',
    # )

    class Meta:
        model = Forecast
        # instance_loader_class = CachedInstanceLoader
        # fields = ('id', 'product', 'forecast_date', 'forecasted_quantity',)
        exclude = (
            'status',
            'created_at',
            'updated_at',
        )
        use_transactions = True
        use_bulk = True
        batch_size = 1000

        skip_diff = True
        skip_unchanged = False