def create_series(self, form): """Set the creator_id of the newly created series to the user that's currently logged in and also fills in the title and description fields """ series = Series(title=form.cleaned_data['title'], description=form.cleaned_data['description'], creator_id=self.request.user.id, site_id=self.kwargs['website_id']) series.save() return series
def test_save(self): series = Series(name="Some Series") series.save() self.assertIsNotNone(series.id) self.assertEquals("some-series", series.slug) series = Series(name="Deep Space") series.save() self.assertIsNotNone(series.id) self.assertEquals("deep-space", series.slug)
def create_series(self, form): """Set the creator_id of the newly created series to the user that's currently logged in and also fills in the title and description fields """ series = Series(title=form.cleaned_data['title'], description=form.cleaned_data['description'], creator_id=self.request.user.id, site_id=self.kwargs['website_id']) series.save() return series
def mutate_and_get_payload(cls, root, info, **input): # проверяет токен token = input.get('token', None) if token != '******************': return "Invalid token" series = Series(title=input.get('title'), description=input.get('description'), image=input.get('image'), rating=input.get('rating', 0), show_counter=input.get('show_counter', 0), date_create=input.get('date_create', 0), date_update=datetime.datetime.utcnow()) if input.get('pk'): series.pk = input.get('pk') series.save() return AddSeries(series=series)
def save(self): name = self.validated_data['name'] alt_id = self.validated_data['alt_id'] publisher = self.validated_data['publisher'] imprint = self.validated_data['imprint'] genre = self.validated_data['genre'] years = self.validated_data['years'] is_one_shot = self.validated_data['is_one_shot'] is_mini_series = self.validated_data['is_mini_series'] mini_series_limit = self.validated_data['mini_series_limit'] series = Series(alt_id=alt_id, name=name, publisher=publisher, imprint=imprint, genre=genre, years=years, is_one_shot=is_one_shot, is_mini_series=is_mini_series, mini_series_limit=mini_series_limit) series.save() return series
def post_create(request): form = PostForm() if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = form.save(commit=False) post.author = request.user post.score += 1 # self upvote post.save() # request.user.upvoted.add(post) # Add tags tags = request.POST.get('tags') if tags: tags = tags.split(",") for tag in tags: title = tag.strip() slug = slugify(title) # Get tag by slug. Create tag if it doesn't exist. try: tag = Tag.objects.get(slug=slug) except: tag = Tag.objects.create(title=tag) post.tags.add(tag) # Add category category = request.POST.get('post_category') if category: category = Category.objects.get(slug=category) post.category = category # Add series series = request.GET.get('series') if series == "new": # If I'm being sent from a post that doesn't have series # (by clicking "Add Chapter") # I create series first_chapter = Post.objects.get(slug=request.GET.get('post')) series_title = first_chapter.body.splitlines()[0][:100] series = Series(slug=first_chapter.slug, title=series_title) series.save() # Add the original post to it first_chapter.series = series first_chapter.save() # Add the post I've just created to it post.series = series elif series: series = Series.objects.get(pk=series) post.series = series post.save() wordcount = len(re.findall(r'\w+', post.body)) update_wordcount(wordcount, post.author) # post.hubs.add(*form.cleaned_data['tags']) # hubs = post.hubs.all() return HttpResponseRedirect('/post/' + post.slug + '/edit') else: form = PostForm() categories = Category.objects.all() today = time.strftime("%Y-%m-%d") if today in request.user.calendar: wordcount = eval(request.user.calendar)[today] else: wordcount = 0 return render(request, 'posts/edit.html', { 'form': form, 'wordcount': wordcount, 'categories': categories })
def import_from_litres(hour=23, minutes=59): image_template = 'https://partnersdnld.litres.ru/static/bookimages/{0}/{1}/{2}/{3}.bin.dir/{3}.cover.{4}' d = datetime.date.today() api = LitresApi(secret_key='D7psdo2s*Xjsoq3WdsoSWWvoo', partner_id='YABK') lazy_books = api.get_fresh_book( start_date=datetime.datetime(d.year, d.month, d.day - 1, 0, 0), end_date=datetime.datetime(d.year, d.month, d.day - 1, hour, minutes)) for lazy_book in lazy_books: if lazy_book.get('@lang') == 'ru': litres_id = lazy_book.get('@id') litres_file_id = lazy_book.get('@file_id') litres_book = lazy_book.get('title-info') litres_authors = litres_book.get('author') litres_genres = lazy_book.get('genres') litres_series = lazy_book.get('sequences') title = litres_book.get('book-title') description = litres_book.get('annotation') age = lazy_book.get('@adult') try: publish_info = lazy_book.get('publish-info') if publish_info: year = publish_info.get('year', 0) isbn = publish_info.get('isbn', '').replace('-', '') else: date = litres_book.get('date', 0) if type(date) is str: year = date elif type(date) is list: if date.get('#text'): year = date.get('#text', 0) if lazy_book.get('@isbn'): isbn = lazy_book.get('@isbn', '').replace('-', '') else: isbn = lazy_book.get('@litres_isbn', '').replace('-', '') except Exception as e: print('Exception {}'.format(e)) print(json.dumps(lazy_book, indent=4, ensure_ascii=False)) ext = lazy_book.get('@cover') rating = decimal.Decimal(lazy_book.get('@rating', 0)) # Импорт автора libs_authors = [] for litres_author in litres_authors: try: author = Author.objects.get( litres_id=litres_author.get('id')) libs_authors.append(author.id) except Author.DoesNotExist: fi = "{} {}".format(litres_author.get('last-name'), litres_author.get('first-name')) fi = fi.replace('None', '').strip() authors = Author.objects.filter(name__icontains=fi) if len(authors) == 1: author = authors[0] libs_authors.append(author.id) author.litres_id = litres_author.get('id') author.save(update_fields=['litres_id']) print("Обновил litres_id для автора {} {}".format( author.id, author.name)) elif len(authors) > 1: print("Множество совпадений авторов {} для книги {}". format(litres_authors, litres_book)) else: fi = "{} {}".format(litres_author.get('first-name'), litres_author.get('last-name')) fi = fi.replace('None', '').strip() authors = Author.objects.filter(name__icontains=fi) if len(authors) == 1: author = authors[0] libs_authors.append(author.id) author.litres_id = litres_author.get('id') author.save(update_fields=['litres_id']) print("Обновил litres_id для автора {} {}".format( author.id, author.name)) elif len(authors) > 1: print( "Множество совпадений авторов {} для книги {}". format(litres_authors, litres_book)) else: # Добавляет нового автора fi = "{} {}".format( litres_author.get('last-name'), litres_author.get('first-name')) fio = "{} {} {}".format( litres_author.get('last-name', ''), litres_author.get('first-name', ''), litres_author.get('middle-name', '')) author = Author( name=fi.replace('None', '').strip(), litres_name=fio.replace('None', '').strip(), ) author.save() libs_authors.append(author.id) # Опрееление жанра libs_genres = [] if litres_genres: litres_genres = litres_genres['genre'] for litres_genre in litres_genres: genres_new = GenreNew.objects.filter( genre_litres__icontains=litres_genre['@id']) for genre_new in genres_new: libs_genres.append(genre_new.id) if not len(genres_new): print("Жанр {} {} не найден".format( litres_genre['@title'], litres_genre['@id'])) # Если есть серия libs_series = None if litres_series: litres_series = litres_series.get('sequence')[0] try: # Проверяет по id libs_series = Series.objects.get( litres_id=litres_series['@uuid']) except Series.DoesNotExist: try: # проверяет по названию libs_series = Series.objects.get( title=litres_series['@name']) libs_series.litres_id = litres_series['@uuid'] libs_series.save(update_fields=['litres_id']) print("Обновил litres_id для серии {} {}".format( libs_series.id, libs_series.title)) except Series.MultipleObjectsReturned: print("Задвоилась серия {} {}".format( libs_series.id, libs_series.title)) except Series.DoesNotExist: # Добавляет новую серию libs_series = Series(title=litres_series['@name'], litres_id=litres_series['@uuid']) libs_series.save() # Ипорт книги try: book = Book.objects.get(litres_id=litres_id) except Book.MultipleObjectsReturned: print("Затроило книги litres_id {} isbn {}".format( litres_id, isbn)) except Book.DoesNotExist: # Проверяет по isbn try: if len(isbn): book = Book.objects.get(isbn=isbn) book.litres_id = litres_id book.save(update_fields=['litres_id']) print("Обновил litres_id для книги {} {}".format( book.id, book.title)) else: print("Пустой isbn litres_id {} isbn {}".format( litres_id, isbn)) except Book.MultipleObjectsReturned: print("Затроило книги litres_id {} isbn {}".format( litres_id, isbn)) except Book.DoesNotExist: # Проверяет совпадение по назанию if title and litres_author.get('last-name'): book = Book.objects.filter( title__icontains=title, author__name__icontains=litres_author.get( 'last-name')) if len(book) == 1: b = book[0] b.litres_id = litres_id b.isbn = isbn b.save(update_fields=['litres_id', 'isbn']) print("Обновил litres_id и isbn для книги {} {}". format(b.id, b.title)) elif len(book) > 1: print("Множество совпадений c книгой {}".format( litres_book)) else: litres_file_id_str = "{0:08d}".format( int(litres_file_id)) xx = litres_file_id_str[0:2] yy = litres_file_id_str[2:4] zz = litres_file_id_str[4:6] image = image_template.format( xx, yy, zz, litres_file_id, ext) if rating >= 4: rating = 4 book = Book(title=title, description=description, age=age, year=year, isbn=isbn, litres_id=litres_id, image=image, rating=rating) if decimal.Decimal(rating) > 0: book.rating_partner_votes = 1 if libs_series: book.series = libs_series try: book.save() except decimal.InvalidOperation: book.rating = 0 book.save() book.genre_new.set(libs_genres) book.author.set(libs_authors)
def post_create(request): form = PostForm() if request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): post = form.save(commit=False) post.author = request.user post.score += 1 # self upvote post.save() # request.user.upvoted.add(post) # Add tags tags = request.POST.get('tags') if tags: tags = tags.split(",") for tag in tags: title = tag.strip() slug = slugify(title) # Get tag by slug. Create tag if it doesn't exist. try: tag = Tag.objects.get(slug=slug) except: tag = Tag.objects.create(title=tag) post.tags.add(tag) # Add category category = request.POST.get('post_category') if category: category = Category.objects.get(slug=category) post.category = category # Add series series = request.GET.get('series') if series == "new": # If I'm being sent from a post that doesn't have series # (by clicking "Add Chapter") # I create series first_chapter = Post.objects.get(slug=request.GET.get('post')) series_title = first_chapter.body.splitlines()[0][:100] series = Series(slug = first_chapter.slug, title = series_title) series.save() # Add the original post to it first_chapter.series = series first_chapter.save() # Add the post I've just created to it post.series = series elif series: series = Series.objects.get(pk=series) post.series = series post.save() wordcount = len(re.findall(r'\w+', post.body)) update_wordcount(wordcount, post.author) # post.hubs.add(*form.cleaned_data['tags']) # hubs = post.hubs.all() return HttpResponseRedirect('/post/'+post.slug+'/edit') else: form = PostForm() categories = Category.objects.all() today = time.strftime("%Y-%m-%d") if today in request.user.calendar: wordcount = eval(request.user.calendar)[today] else: wordcount = 0 return render(request, 'posts/edit.html', { 'form':form, 'wordcount':wordcount, 'categories': categories })
for p in posts: if p["pk"] == post["fields"]["parent"]: parent = p # Modify slug to parent-slug-chapter-slug. slug = parent["fields"]["slug"] + "-" + slug # Create series for a parent series_title = parent["fields"]["title"] series_slug = parent["fields"]["slug"] # Get or create series try: series = Series.objects.get(slug=series_slug) except: series = Series(title=series_title, slug=series_slug) series.save() # If the story is a parent, find series with matching slug and add it to it. try: series = Series.objects.get(slug=slug) except: pass try: # Check if post already exists post = Post.objects.get(slug=slug) # On a second run, making sure to add series to parent posts post.series = series post.save() except: # Create post if it doesnt exist yet new_post = Post(body=body,