~ursinha/launchpad/add-all-fl-tests

« back to all changes in this revision

Viewing changes to lib/canonical/launchpad/interfaces/hwdb.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2009-08-20 12:36:07 UTC
  • mfrom: (9094.2.2 hwdb-device-class-api)
  • Revision ID: launchpad@pqm.canonical.com-20090820123607-w7k7ahwkclxlonh8
[r=cprov][ui=none] allow arbitrary int values for
        HWDeviceClass.main_class and HWDeviceClass.sub_class;
        expose HWDeviceClass to the webservice

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
 
10
10
__all__ = [
11
11
    'HWBus',
12
 
    'HWMainClass',
13
 
    'HWSubClass',
14
12
    'HWSubmissionFormat',
15
13
    'HWSubmissionKeyNotUnique',
16
14
    'HWSubmissionMissingFields',
67
65
from lazr.restful.interface import copy_field
68
66
from lazr.restful.declarations import (
69
67
    REQUEST_USER, call_with, export_as_webservice_entry,
70
 
    export_read_operation, exported, operation_parameters,
71
 
    operation_returns_collection_of, webservice_error)
 
68
    export_destructor_operation, export_read_operation,
 
69
    export_write_operation, exported, operation_parameters,
 
70
    operation_returns_collection_of, operation_returns_entry,
 
71
    webservice_error)
72
72
 
73
73
 
74
74
def validate_new_submission_key(submission_key):
609
609
    PCMCIA = DBItem(14, 'PCMCIA (16 bit)')
610
610
 
611
611
 
612
 
class HWMainClass(HWBus):
613
 
    """The device classes.
614
 
 
615
 
    This enumeration describes the capabilities of a device.
616
 
    """
617
 
 
618
 
    NETWORK = DBItem(10000, 'Network')
619
 
 
620
 
    STORAGE = DBItem(11000, 'Storage')
621
 
 
622
 
    DISPLAY = DBItem(12000, 'Display')
623
 
 
624
 
    VIDEO = DBItem(13000, 'Video')
625
 
 
626
 
    AUDIO = DBItem(14000, 'Audio')
627
 
 
628
 
    MODEM = DBItem(15000, 'Modem')
629
 
 
630
 
    INPUT = DBItem(16000, 'Input') # keyboard, mouse tetc.
631
 
 
632
 
    PRINTER = DBItem(17000, 'Printer')
633
 
 
634
 
    SCANNER = DBItem(18000, 'Scanner')
635
 
 
636
 
 
637
 
class HWSubClass(DBEnumeratedType):
638
 
    """The device subclasses.
639
 
 
640
 
    This enumeration gives more details for the "coarse" device class
641
 
    specified by HWDeviceClass.
642
 
    """
643
 
    NETWORK_ETHERNET = DBItem(10001, 'Ethernet')
644
 
 
645
 
    STORAGE_HARDDISK = DBItem(11001, 'Hard Disk')
646
 
 
647
 
    STORAGE_FLASH = DBItem(11002, 'Flash Memory')
648
 
 
649
 
    STORAGE_FLOPPY = DBItem(11003, 'Floppy')
650
 
 
651
 
    STORAGE_CDROM = DBItem(11004, 'CDROM Drive')
652
 
 
653
 
    STORAGE_CDWRITER = DBItem(11005, 'CD Writer')
654
 
 
655
 
    STORAGE_DVD = DBItem(11006, 'DVD Drive')
656
 
 
657
 
    STORAGE_DVDWRITER = DBItem(11007, 'DVD Writer')
658
 
 
659
 
    PRINTER_INKJET = DBItem(17001, 'Inkjet Printer')
660
 
 
661
 
    PRINTER_LASER = DBItem(17002, 'Laser Printer')
662
 
 
663
 
    PRINTER_MATRIX = DBItem(17003, 'Matrix Printer')
664
 
 
665
 
    SCANNER_FLATBED = DBItem(18001, 'Flatbed Scanner')
666
 
 
667
 
    SCANNER_ADF = DBItem(18002, 'Scanner with Automatic Document Feeder')
668
 
 
669
 
    SCANNER_TRANSPARENCY = DBItem(18003, 'Scanner for Transparent Documents')
670
 
 
671
 
 
672
612
class IHWVendorName(Interface):
673
613
    """A list of vendor names."""
674
614
    name = TextLine(title=u'Vendor Name', required=True)
749
689
        """
750
690
 
751
691
 
 
692
class IHWDeviceClass(Interface):
 
693
    """The capabilities of a device."""
 
694
    export_as_webservice_entry()
 
695
 
 
696
    id = Int(title=u'Device class ID', required=True, readonly=True)
 
697
    device = Reference(schema=Interface)
 
698
    main_class = exported(
 
699
        Int(
 
700
            title=u'The main class of this device', required=True,
 
701
            readonly=True))
 
702
    sub_class = exported(
 
703
        Int(
 
704
            title=u'The sub class of this device', required=False,
 
705
            readonly=True))
 
706
 
 
707
    @export_destructor_operation()
 
708
    def delete():
 
709
        """Delete this record."""
 
710
 
 
711
 
 
712
class IHWDeviceClassSet(Interface):
 
713
    """The set of IHWDeviceClass records."""
 
714
 
 
715
    def get(id):
 
716
        """Return an `IHWDeviceClass` record with the given database ID.
 
717
 
 
718
        :param id: The database ID.
 
719
        :return: An `IHWDeviceClass` instance.
 
720
        """
 
721
 
 
722
 
752
723
VENDOR_ID_DESCRIPTION = u"""Allowed values of the vendor ID depend on the
753
724
bus of the device.
754
725
 
869
840
            title=_(u"The IHWDriver records related to this device."),
870
841
            value_type=Reference(schema=IHWDriver)))
871
842
 
 
843
    classes = exported(
 
844
        CollectionField(
 
845
            title=_(u"The device classes this device belongs to."),
 
846
            value_type=Reference(schema=IHWDeviceClass)))
 
847
 
 
848
    @operation_parameters(
 
849
        main_class=copy_field(IHWDeviceClass['main_class']),
 
850
        sub_class=copy_field(IHWDeviceClass['sub_class']))
 
851
    @export_write_operation()
 
852
    @operation_returns_entry(IHWDeviceClass)
 
853
    def getOrCreateDeviceClass(main_class, sub_class=None):
 
854
        """Return an `IHWDeviceClass` record or create a new one.
 
855
 
 
856
        :param main_class: The main class to be added.
 
857
        :param sub_class: The sub-class to added (otpional).
 
858
        :return: An `IHWDeviceClass` record.
 
859
 
 
860
        main_class and sub_class are integers specifying the class
 
861
        of the device, or, in the case of USB devices, the class
 
862
        of an interface.
 
863
 
 
864
        `IHWDeviceClass` records must be unique; if this method is called
 
865
        to create a new record with data of an already existing record,
 
866
        the existing record is returned.
 
867
        """
 
868
 
 
869
    @operation_parameters(
 
870
        main_class=copy_field(IHWDeviceClass['main_class']),
 
871
        sub_class=copy_field(IHWDeviceClass['sub_class']))
 
872
    @export_write_operation()
 
873
    def removeDeviceClass(main_class, sub_class=None):
 
874
        """Add an `IHWDeviceClass` record.
 
875
 
 
876
        :param main_class: The main class to be added.
 
877
        :param sub_class: The sub-class to added.
 
878
        """
 
879
 
 
880
 
 
881
# Fix cyclic reference.
 
882
IHWDeviceClass['device'].schema = IHWDevice
 
883
 
872
884
 
873
885
class IHWDeviceSet(Interface):
874
886
    """The set of devices."""
928
940
        """
929
941
 
930
942
 
931
 
class IHWDeviceClass(Interface):
932
 
    """The capabilities of a device."""
933
 
    device = Attribute(u'The Device')
934
 
    main_class = Choice(
935
 
        title=u'The main class of this device', required=True,
936
 
        readonly=True, vocabulary=HWMainClass)
937
 
    sub_class = Choice(
938
 
        title=u'The sub class of this device', required=False,
939
 
        readonly=True, vocabulary=HWSubClass)
940
 
 
941
 
 
942
 
class IHWDeviceClassSet(Interface):
943
 
    """The set of device capabilities."""
944
 
 
945
 
    def create(device, main_class, sub_class=None):
946
 
        """Create a new IHWDevice record.
947
 
 
948
 
        :param device: The device described by the new record.
949
 
        :param main_class: A HWMainClass instance.
950
 
        :param sub_class: A HWSubClass instance.
951
 
        :return: An IHWDeviceClass instance.
952
 
        """
953
 
 
954
943
class IHWDeviceNameVariant(Interface):
955
944
    """Variants of a device name.
956
945