api библиотеки

feature/fix_generate_pass
Andrey 8 years ago
parent 3d878cc7dc
commit d39eb27b80
  1. 2
      access/urls.py
  2. 1
      api_v1/urls.py
  3. 5
      csv/load_article.py
  4. 20
      journals/migrations/0005_auto_20171024_1352.py
  5. 1
      library/models.py
  6. 20
      library/serializers.py
  7. 6
      library/urls.py
  8. 14
      library/views.py

@ -1,5 +1,5 @@
from django.conf.urls import url from django.conf.urls import url
from access import views as views from access import views
urlpatterns = [ urlpatterns = [
url(r'teachers/$', views.TeacherListView.as_view()), url(r'teachers/$', views.TeacherListView.as_view()),

@ -4,4 +4,5 @@ urlpatterns = [
url(r'courses/', include('courses.urls')), url(r'courses/', include('courses.urls')),
url(r'users/', include('access.urls')), url(r'users/', include('access.urls')),
url(r'journals/', include('journals.urls')), url(r'journals/', include('journals.urls')),
url(r'library/', include('library.urls')),
] ]

@ -24,12 +24,13 @@ if __name__ == '__main__':
for row in article_reader: for row in article_reader:
row = dict(row) row = dict(row)
tags = row.pop('tags', None).split("[")[1].split("]")[0].split(", ") tags = row.pop('tags', None).split("[")[1].split("]")[0].split(", ")
article, _is_create = Article.objects.get_or_create(**row) section = ArticleSection.objects.get(id=row.pop('section__id'))
try: try:
article, _is_create = Article.objects.get_or_create(section=section, **row)
for tag in tags: for tag in tags:
if tags: if tags:
article.teachers.add(tags) article.tags.add(Tags.objects.get(id=tag))
except IntegrityError: except IntegrityError:
pass pass

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-24 13:52
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('journals', '0004_auto_20171023_1234'),
]
operations = [
migrations.AlterField(
model_name='journal',
name='action_type',
field=models.SmallIntegerField(choices=[(0, 'try'), (1, 'yes'), (2, 'no'), (3, 'favorite'), (4, 'watch'), (5, 'start'), (6, 'end'), (7, 'create'), (8, 'update'), (9, 'delete')]),
),
]

@ -32,7 +32,6 @@ class Article(models.Model):
js = models.TextField(verbose_name='JS', blank=True, default='', help_text='Удалить bootstrap, jquery и заменить http на https') js = models.TextField(verbose_name='JS', blank=True, default='', help_text='Удалить bootstrap, jquery и заменить http на https')
date = models.DateTimeField(verbose_name='Дата публикации', default=datetime.datetime.now, editable=False) date = models.DateTimeField(verbose_name='Дата публикации', default=datetime.datetime.now, editable=False)
tags = models.ManyToManyField(to='Tags', verbose_name='Теги', blank=True) tags = models.ManyToManyField(to='Tags', verbose_name='Теги', blank=True)
all_views = models.IntegerField(verbose_name='Всего просмотров', default=0, blank=True)
def __str__(self): def __str__(self):
return '%s' % self.title return '%s' % self.title

@ -0,0 +1,20 @@
from rest_framework import serializers
from library.models import Article
class ArticleSerializer(serializers.ModelSerializer):
tags = serializers.SerializerMethodField()
section = serializers.SerializerMethodField()
class Meta:
model = Article
exclude = ('css', 'js', 'page', 'head_title', 'public',
'head_description', 'head_image', 'id')
@staticmethod
def get_tags(self):
return [i.name for i in self.tags.all()]
@staticmethod
def get_section(self):
return self.section.name if self.section else 'undefined'

@ -0,0 +1,6 @@
from django.conf.urls import url
from library import views
urlpatterns = [
url(r'$', views.LibraryListView.as_view()),
]

@ -0,0 +1,14 @@
from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response
from rest_framework.views import APIView
from library.models import Article
from library.serializers import ArticleSerializer
class LibraryListView(APIView):
renderer_classes = (JSONRenderer,)
status_code = 200
def get(self, request):
return Response([ArticleSerializer(i).data for i in Article.objects.filter(public=True)], self.status_code)
Loading…
Cancel
Save