def update(self, request, user_name, vendor, name, version): user = user_authentication(request, user_name) # Get the gadget data from the request preferred = PUT_parameter(request, 'preferred') if preferred != None: # Set all version of this gadget as no preferred old_preferred_versions = UserRelatedToGadgetResource.objects.filter( gadget__vendor=vendor, gadget__short_name=name, user=user, preferred_by=True) for old_version in old_preferred_versions: old_version.preferred_by = False old_version.save() new_preferred_versions = UserRelatedToGadgetResource.objects.filter( gadget__vendor=vendor, gadget__short_name=name, gadget__version=version, user=user) userRelated = None if len(new_preferred_versions) == 0: resource = get_object_or_404(GadgetResource, short_name=name, vendor=vendor, version=version) userRelated = UserRelatedToGadgetResource() userRelated.gadget = resource userRelated.user = user userRelated.added_by = False else: userRelated = new_preferred_versions[0] userRelated.preferred_by = True userRelated.save() resource = get_object_or_404(GadgetResource, short_name=name, vendor=vendor, version=version) return get_resource_response([resource], 'json', 1, user)
def endElement(self, name): if (name == 'Name'): self._name = self._accumulator[0] return if (name == 'Vendor'): self._vendor = self._accumulator[0] return if (name == 'Version'): self._version = self._accumulator[0] return if (name == 'Author'): self._author = self._accumulator[0] return if (name == 'Description'): self._description = self._accumulator[0] return if (name == 'Mail'): self._mail = self._accumulator[0] return if (name == 'ImageURI'): if (self._accumulator == []): self._imageURI = 'no_url' else: self._imageURI = self._accumulator[0] return if (name == 'iPhoneImageURI'): self._iPhoneImageURI = self._accumulator[0] return if (name == 'WikiURI'): self._wikiURI = self._accumulator[0] return if (self._name != '' and self._vendor != '' and self._version != '' and self._author != '' and self._description != '' and self._mail != '' and self._imageURI != '' and self._wikiURI != '' and not self._gadget_added): gadget = GadgetResource() gadget.short_name = self._name gadget.vendor = self._vendor gadget.version = self._version gadget.author = self._author gadget.description = self._description gadget.mail = self._mail gadget.image_uri = self._imageURI gadget.iphone_image_uri = self._iPhoneImageURI gadget.wiki_page_uri = self._wikiURI gadget.template_uri = self._uri gadget.creation_date = datetime.today() gadget.popularity = '0.0' gadget.save() userRelated = UserRelatedToGadgetResource() userRelated.gadget = gadget userRelated.user = self._user userRelated.added_by = True userRelated.save() self._gadget_added = True elif (self._gadget_added): return else: raise TemplateParseException( _("ERROR: missing Resource description field at Resource element! Check schema!" ))
def endElement(self, name): if not self._gadget_added: #add index to the translation list value = self.addIndex(self._accumulator) if (name == 'Name'): if value: raise TemplateParseException( _("ERROR: The element Name cannot be translated")) self._name = self._accumulator[0] return if (name == 'DisplayName'): self._displayName = self._accumulator[0] return if (name == 'Organization'): self.processOrganization(self._accumulator) return if (name == 'Vendor'): if value: raise TemplateParseException( _("ERROR: The element Vendor cannot be translated")) self._vendor = self._accumulator[0] return if (name == 'Version'): if value: raise TemplateParseException( _("ERROR: The element Version cannot be translated")) self._version = self._accumulator[0] return if (name == 'Author'): self._author = self._accumulator[0] return if (name == 'Description'): self._description = string.join(self._accumulator, "") return if (name == 'Mail'): self._mail = self._accumulator[0] return if (name == 'ImageURI'): if (self._accumulator == []): self._imageURI = 'no_url' else: self._imageURI = self._accumulator[0] return if (name == 'iPhoneImageURI'): self._iPhoneImageURI = self._accumulator[0] return if (name == 'WikiURI'): self._wikiURI = self._accumulator[0] return if (name == 'IncludedResources'): return if (name == 'Resource'): return if (self._name != '' and self._vendor != '' and self._version != '' and self._author != '' and self._description != '' and \ self._mail != '' and self._imageURI != '' and self._wikiURI != '' and name == 'Catalog.ResourceDescription' \ and not self._gadget_added): gadget = GadgetResource() gadget.short_name = self._name gadget.display_name = self._displayName gadget.vendor = self._vendor gadget.version = self._version gadget.author = self._author gadget.description = self._description gadget.mail = self._mail gadget.image_uri = self._imageURI gadget.iphone_image_uri = self._iPhoneImageURI gadget.wiki_page_uri = self._wikiURI gadget.template_uri = self._uri gadget.mashup_id = self._mashupId gadget.creation_date = datetime.today() gadget.popularity = '0.0' # A gadget belongs to many organizations for organization in self._organization_list: gadget.organization.add(organization) #Checking certification status gadget.certification = get_certification_status(self._user) gadget.creator = self._user self._gadget = gadget if (self.save): gadget.save() if (self.save): userRelated = UserRelatedToGadgetResource() userRelated.gadget = gadget userRelated.user = self._user userRelated.added_by = True userRelated.save() #TODO: process the resources #workaround to add default tags if self._mashupId != None: tag, created = Tag.objects.get_or_create(name="mashup") userTag = UserTag(tag=tag, idUser=self._user, idResource=gadget) userTag.save() if self._contratable: tag, created = Tag.objects.get_or_create( name="contratable") userTag = UserTag(tag=tag, idUser=self._user, idResource=gadget) userTag.save() self._gadget_added = True elif (self._gadget_added and name == "msg"): if not self.current_text in self.translatable_list: #message not used in the catalogue return if self.current_lang == self.default_lang: self.translated_list.append(self.current_text) table_ = self._gadget.__class__.__module__ + "." + self._gadget.__class__.__name__ trans = Translation( text_id=self.current_text, element_id=self._gadget.id, table=table_, language=self.current_lang, value=self._accumulator[0], default=(self.current_lang == self.default_lang)) trans.save() elif (self._gadget_added and name == "Translation"): if self.current_lang == self.default_lang: for ind in self.translatable_list: self.translated_list.remove(ind) if len(self.translated_list) > 0: raise TemplateParseException( _("ERROR: the following translation indexes need a default value: " + str(self.translated_list))) elif (self._gadget_added and name == "Translations"): if len(self.lang_list ) > 0 and not self.default_lang in self.lang_list: raise TemplateParseException( _("ERROR: There isn't a Translation element with the default language (" + self.default_lang + ") translations")) elif (self._gadget_added): return else: raise TemplateParseException( _("ERROR: missing Resource description field at Resource element! Check schema!" ))
def endElement(self, name): if (name == 'Name'): self._name = self._accumulator[0] return if (name == 'Vendor'): self._vendor = self._accumulator[0] return if (name == 'Version'): self._version = self._accumulator[0] return if (name == 'Author'): self._author = self._accumulator[0] return if (name == 'Description'): self._description = self._accumulator[0] return if (name == 'Mail'): self._mail = self._accumulator[0] return if (name == 'ImageURI'): if (self._accumulator == []): self._imageURI = 'no_url' else: self._imageURI = self._accumulator[0] return if (name == 'iPhoneImageURI'): self._iPhoneImageURI = self._accumulator[0] return if (name == 'WikiURI'): self._wikiURI = self._accumulator[0] return if (name == 'IncludedResources'): return if (name == 'Resource'): return if (self._name != '' and self._vendor != '' and self._version != '' and self._author != '' and self._description != '' and self._mail != '' and self._imageURI != '' and self._wikiURI != '' and name == 'Catalog.ResourceDescription' and not self._gadget_added): gadget = GadgetResource() gadget.short_name = self._name gadget.vendor = self._vendor gadget.version = self._version gadget.author = self._author gadget.description = self._description gadget.mail = self._mail gadget.image_uri = self._imageURI gadget.iphone_image_uri = self._iPhoneImageURI gadget.wiki_page_uri = self._wikiURI gadget.template_uri = self._uri gadget.mashup_id = self._mashupId gadget.creation_date = datetime.today() gadget.popularity = '0.0' gadget.save() userRelated = UserRelatedToGadgetResource() userRelated.gadget = gadget userRelated.user = self._user userRelated.added_by = True userRelated.save() #TODO: process the resources #workaround to add default tags if self._mashupId != None: userTag = UserTag() userTag.tag = "mashup" userTag.idUser = self._user userTag.idResource = gadget userTag.save() self._gadget_added = True elif (self._gadget_added): return else: raise TemplateParseException( _("ERROR: missing Resource description field at Resource element! Check schema!" ))