Пример #1
0
    def get(self):
        responder = common.LookupModel(self.request.get('manufacturer'),
                                       self.request.get('model'))
        if responder is None:
            self.error(404)
            return

        versions = []
        for version_info in responder.software_version_set:
            personalities = []
            for personality in version_info.personality_set:
                personality_info = {
                    'description': personality.description,
                    'index': personality.index,
                }
                personalities.append(personality_info)

            version_output = {
                'version_id': version_info.version_id,
                'label': version_info.label,
                'personalities': personalities,
            }
            versions.append(version_output)

        output = {
            'manufacturer_name': responder.manufacturer.name,
            'manufacturer_id': responder.manufacturer.esta_id,
            'device_model_id': responder.device_model_id,
            'model_description': responder.model_description,
            'versions': versions,
        }
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.headers['Cache-Control'] = 'public; max-age=300;'
        self.response.out.write(json.dumps(output))
Пример #2
0
    def get(self):
        responder = common.LookupModel(self.request.get('manufacturer'),
                                       self.request.get('model'))
        if responder is None:
            self.error(404)
            return

        version = common.GetLatestSoftware(responder)
        if version is None:
            self.error(404)

        output = {
            'version': version.version_id,
            'label': version.label,
            'URL': '',
        }
        self.response.headers['Content-Type'] = 'text/json'
        self.response.headers['Cache-Control'] = 'public; max-age=300;'
        self.response.out.write(json.dumps(output))
Пример #3
0
  def DiffResponder(self, responder, template_data):
    errors = []

    template_data['device_id'] = responder.device_model_id
    template_data['manufacturer_id'] = responder.manufacturer_id

    if responder.email_or_name:
      template_data['contact'] = responder.email_or_name

    manufacturer = common.GetManufacturer(responder.manufacturer_id)
    template_data['manufacturer'] = manufacturer
    if not manufacturer:
      return

    template_data['manufacturer_name'] = manufacturer.name
    existing_model = common.LookupModel(responder.manufacturer_id,
                                        responder.device_model_id)

    # build a dict for the existing responder
    existing_responder_dict = {}
    if existing_model is not None:
      existing_responder_dict = {
          'model_description': existing_model.model_description,
          'image_url': existing_model.image_url,
          'url': existing_model.link,
      }
      category = existing_model.product_category
      if category:
        existing_responder_dict['product_category'] = category.name

    # Build a dict for the new responder
    new_responder_dict = self.EvalData(responder.info)
    new_responder_dict['image_url'] = responder.image_url or None
    new_responder_dict['url'] = responder.link_url or None
    if 'product_category' in new_responder_dict:
      category = common.LookupProductCategory(
          new_responder_dict['product_category'])
      if category:
        new_responder_dict['product_category'] = category.name
      else:
        errors.append('Unknown product category %d' %
          new_responder_dict['product_category'])

    fields = [
        ('Model Description', 'model_description'),
        ('Image URL', 'image_url'),
        ('URL', 'url'),
        ('Product Category', 'product_category'),
    ]

    changed_fields, unchanged_fields = self.DiffProperties(fields,
        new_responder_dict, existing_responder_dict)

    template_data['changed_fields'] = changed_fields
    template_data['unchanged_fields'] = unchanged_fields

    # populate the model_description
    template_data['model_description'] = new_responder_dict.get(
        'model_description')
    if existing_model:
      template_data['model_description'] = existing_model.model_description

    # now work on the software versions
    new_software_versions = new_responder_dict.get('software_versions', {})
    if new_software_versions:
      versions = self.DiffVersions(new_software_versions, existing_model)
      template_data['versions'] = versions

    template_data.setdefault('errors', []).extend(errors)