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))
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))
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)