def commit(self, amend=False, message="No message", author="Anonymous <[email protected]>", is_minor=False): """ Commits page content and saves it it in the database. """ # Makes sure the content ends with a newline if self.content[-1] != "\n": self.content += "\n" repo = self.get_repository() # Writes content to the CONTENT file path = os.path.join(GIT_DIR, self.slug) f = codecs.open(path, "w", "utf-8") f.write(self.content) f.close() # Adds the newly creates files and commits #repo.index.add([self.slug,]) repo.git.add([self.slug,]) repo.git.commit(amend=amend, message=message, author=author) # Add the commit metadata in a git note, formatted as # a .ini config file # THIS SEEMS TO CAUSE AN ERROR: git: 'notes' is not a git-command. See 'git --help' in git 1.5.6.5 on debian at least # config = ConfigParser() # config.add_section('metadata') # config.set('metadata', 'is_minor', is_minor) # output = cStringIO.StringIO() # config.write(output) # repo.git.notes(["add", "--message=%s" % output.getvalue()], ref="metadata") self.save() reindex_request.send(sender=self.__class__, instance=self)
def sync(self, info=None): if info == None: info = utils.ffmpeg_get_info(self.url) self.duration = info.get("duration") self.video_info_raw = info.get("video", "") self.video_codec = info.get("video_codec", "") self.width = info.get("width") self.height = info.get("height") self.framerate = info.get("fps") self.audio_info_raw = info.get("audio", "") self.audio_codec = info.get("audio_codec", "") self.audio_bits = info.get("audio_bits") self.audio_sampling_rate = info.get("audio_sampling_rate") self.audio_bitrate = info.get("audio_bitrate") self.audio_channels = info.get("audio_channels") meta = info.get("meta", {}) self.artist = meta.get("artist", "") self.title = meta.get("title", "") self.date = meta.get("date", "") self.location = meta.get("location", "") self.copyright = meta.get("copyright", "") self.license = meta.get("license", "") self.contact = meta.get("contact", "") self.save() # request reindex (via signal) reindex_request.send(sender=self.__class__, instance=self)
def sync (self, data=None, load_comments=False): if data == None: data = self.load_data() """ requires that flickrid is set""" info = data['photo'] # self.flickrid = p['id'] self.title = info['title']['_content'] self.description = info['description']['_content'] self.page_url = info['urls']['url'][0]['_content'] self.farm = info['farm'] self.server = info['server'] self.secret = info['secret'] self.license = License.get_by_id(info.get('license')) # DATES # <dates posted="1100897479" taken="2004-11-19 12:51:19" takengranularity="0" lastupdate="1093022469" /> dates = info.get("dates") if dates: date_posted = dates.get('posted') if date_posted: self.date_posted = datetime.datetime.fromtimestamp(float(date_posted)) date_taken = dates.get('taken') if date_taken: self.date_taken = dateutil.parser.parse(date_taken) # owner (owner, created) = User.objects.get_or_create(flickrid=info['owner']['nsid']) if created: owner.sync() self.owner = owner # tags for dtag in info['tags']['tag']: #{u'raw': u'Anne Teresa De Keersmaeker', u'machine_tag': 0, u'id': u'11775692-5612607247-11507498', u'_content': u'anneteresadekeersmaeker', u'author': u'11868505@N08'} # label = dtag['raw'] tag, created = Tag.objects.get_or_create(slug=dtag['_content']) ptag, created = PhotoTag.objects.get_or_create(tag=tag, photo=self) ptag.raw = dtag.get("raw") ptag.save() if load_comments: numcomments = int(info['comments']['_content']) if numcomments: self.load_comments() self.save() # request reindex (via signal) reindex_request.send(sender=self.__class__, instance=self)
def sync (self, data=None): if data == None: data = self.get_data() self.server = data.get("server", "") self._dir = data.get("dir", "") mdata = data.get("metadata") if mdata: titles = mdata.get("title", []) self.title = titles[0] self.titles_other = "\n".join(titles[1:]) self.mediatype = ", ".join(mdata.get("mediatype", [])) descriptions = mdata.get("description", []) self.description = descriptions[0] self.descriptions_other = "\n---\n".join(descriptions[1:]) licenses = mdata.get("licenseurl", []) if len(licenses): self.license = licenses[0] self.licenses_other = "\n".join(licenses[1:]) try: self.date = dateutil.parser.parse(mdata.get("date")[0]) except TypeError: pass try: self.year = int(mdata.get("year")[0]) except TypeError: pass try: self.publicdate = dateutil.parser.parse(mdata.get("publicdate")[0]) except TypeError: pass try: self.addeddate = dateutil.parser.parse(mdata.get("addeddate")[0]) except TypeError: pass self.source = mdata.get("source", "") self.runtime = mdata.get("runtime", "") self.notes = mdata.get("notes", "") # self.creator = mdata.get("creator", "") # self.collection = mdata.get("collection", "") # self.subject = mdata.get("subject", "") misc = data.get("misc", {}) self.misc_image = misc.get("image", "") self.misc_header_image = misc.get("header_image", "") item = data.get("item") if item: downloads = item.get("downloads", "") if downloads: self.downloads = int(downloads) self.save() # self.licenses.all().delete() # for n in mdata.get("licenseurl", []): # c, created = License.objects.get_or_create(url=n) # self.licenses.add(c) self.creators.all().delete() for n in mdata.get("creator", []): c, created = User.objects.get_or_create(username=n) self.creators.add(c) self.collections.all().delete() names = mdata.get("collection", []) for n in names: c, created = Collection.objects.get_or_create(shortname=n) self.collections.add(c) if (len(names) == 1) and (not c.fullname): c.fullname = misc.get("collection-title", "") c.save() self.mediatypes.all().delete() for n in mdata.get("mediatype", []): c, created = MediaType.objects.get_or_create(name=n) self.mediatypes.add(c) self.subjects.all().delete() for subjects in mdata.get("subject", []): for n in [x.strip() for x in subjects.split(";")]: c, created = Subject.objects.get_or_create(name=n) self.subjects.add(c) files = data.get("files") fileobjects = [] if files: for filename, fdata in files.items(): f, created = File.objects.get_or_create(asset=self, filename=filename) f.sync(fdata) fileobjects.append(f) for f in fileobjects: f.resolve_references() reviews = data.get("reviews") if reviews: info = reviews.get("info") if info: self.reviews_num_reviews = int(info.get("num_reviews", "0")) self.reviews_avg_rating = float(info.get("avg_rating", "0")) if SYNC_REVIEWS: self.reviews.all().delete() for rdata in reviews.get("reviews"): rid = rdata.get("review_id") r = Review.objects.create(asset=self) r.sync(rdata) self.save() # request reindex (via signal) reindex_request.send(sender=self.__class__, instance=self)