adjust fields for performance
This commit is contained in:
parent
0162182407
commit
90efb66b7a
5 changed files with 97 additions and 62 deletions
|
@ -17,81 +17,84 @@ class Performance(Item):
|
|||
verbose_name=_("其它标题"),
|
||||
base_field=models.CharField(blank=True, default="", max_length=200),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
genre = jsondata.ArrayField(
|
||||
verbose_name=_("类型"),
|
||||
base_field=models.CharField(blank=True, default="", max_length=200),
|
||||
null=True,
|
||||
blank=True,
|
||||
null=False,
|
||||
blank=False,
|
||||
default=list,
|
||||
)
|
||||
language = jsondata.ArrayField(
|
||||
verbose_name=_("语言"),
|
||||
base_field=models.CharField(blank=True, default="", max_length=200),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
director = jsondata.ArrayField(
|
||||
verbose_name=_("导演"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
playwright = jsondata.ArrayField(
|
||||
verbose_name=_("编剧"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
default=list,
|
||||
)
|
||||
performer = jsondata.ArrayField(
|
||||
verbose_name=_("演员"),
|
||||
base_field=models.CharField(),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
composer = jsondata.ArrayField(
|
||||
verbose_name=_("作曲"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
choreographer = jsondata.ArrayField(
|
||||
verbose_name=_("编舞"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
performer = jsondata.ArrayField(
|
||||
verbose_name=_("演员"),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
troupe = jsondata.ArrayField(
|
||||
verbose_name=_("剧团"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
crew = jsondata.ArrayField(
|
||||
verbose_name=_("其他演职人员和团体"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
location = jsondata.ArrayField(
|
||||
verbose_name=_("剧场空间"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
opening_date = jsondata.CharField(
|
||||
verbose_name=_("演出日期"), max_length=100, null=True, blank=True
|
||||
verbose_name=_("首演日期"), max_length=100, null=True, blank=True
|
||||
)
|
||||
closing_date = jsondata.CharField(
|
||||
verbose_name=_("结束日期"), max_length=100, null=True, blank=True
|
||||
)
|
||||
official_site = jsondata.CharField(
|
||||
verbose_name=_("官方网站"), max_length=1000, null=True, blank=True
|
||||
|
@ -112,6 +115,7 @@ class Performance(Item):
|
|||
"troupe",
|
||||
"location",
|
||||
"opening_date",
|
||||
"closing_date",
|
||||
"official_site",
|
||||
]
|
||||
|
||||
|
@ -119,7 +123,7 @@ class Performance(Item):
|
|||
def all_productions(self):
|
||||
return (
|
||||
self.productions.all()
|
||||
.order_by("title")
|
||||
.order_by("metadata__opening_date")
|
||||
.filter(is_deleted=False, merged_to_item=None)
|
||||
)
|
||||
|
||||
|
@ -139,74 +143,77 @@ class PerformanceProduction(Item):
|
|||
verbose_name=_("其它标题"),
|
||||
base_field=models.CharField(blank=True, default="", max_length=200),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
language = jsondata.ArrayField(
|
||||
verbose_name=_("语言"),
|
||||
base_field=models.CharField(blank=True, default="", max_length=200),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
director = jsondata.ArrayField(
|
||||
verbose_name=_("导演"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
playwright = jsondata.ArrayField(
|
||||
verbose_name=_("编剧"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
default=list,
|
||||
)
|
||||
performer = jsondata.ArrayField(
|
||||
verbose_name=_("演员"),
|
||||
base_field=models.CharField(),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
composer = jsondata.ArrayField(
|
||||
verbose_name=_("作曲"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
choreographer = jsondata.ArrayField(
|
||||
verbose_name=_("编舞"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
performer = jsondata.ArrayField(
|
||||
verbose_name=_("演员"),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
troupe = jsondata.ArrayField(
|
||||
verbose_name=_("剧团"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
crew = jsondata.ArrayField(
|
||||
verbose_name=_("其他演职人员和团体"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
location = jsondata.ArrayField(
|
||||
verbose_name=_("剧场空间"),
|
||||
base_field=models.CharField(),
|
||||
base_field=models.CharField(blank=True, default="", max_length=500),
|
||||
null=False,
|
||||
blank=False,
|
||||
blank=True,
|
||||
default=list,
|
||||
)
|
||||
opening_date = jsondata.CharField(
|
||||
verbose_name=_("演出日期"), max_length=100, null=True, blank=True
|
||||
verbose_name=_("首演日期"), max_length=100, null=True, blank=False
|
||||
)
|
||||
closing_date = jsondata.CharField(
|
||||
verbose_name=_("结束日期"), max_length=100, null=True, blank=True
|
||||
)
|
||||
official_site = jsondata.CharField(
|
||||
verbose_name=_("官方网站"), max_length=1000, null=True, blank=True
|
||||
|
@ -226,6 +233,7 @@ class PerformanceProduction(Item):
|
|||
"troupe",
|
||||
"location",
|
||||
"opening_date",
|
||||
"closing_date",
|
||||
"official_site",
|
||||
]
|
||||
|
||||
|
|
|
@ -75,6 +75,12 @@ class DoubanDramaTestCase(TestCase):
|
|||
crawl_related_resources_task(resource.id) # force the async job to run now
|
||||
productions = list(item.productions.all())
|
||||
self.assertEqual(len(productions), 4)
|
||||
self.assertEqual(productions[0].opening_date, "2008-06-20")
|
||||
self.assertEqual(productions[0].closing_date, "2008-08-04")
|
||||
self.assertEqual(productions[2].opening_date, "2017-03-10")
|
||||
self.assertEqual(productions[2].closing_date, "2017-03-17")
|
||||
self.assertEqual(productions[3].opening_date, "2017-11-13")
|
||||
self.assertEqual(productions[3].closing_date, None)
|
||||
self.assertEqual(productions[3].title, "ミュージカル(2017年)版")
|
||||
self.assertEqual(len(productions[3].performer), 6)
|
||||
self.assertEqual(productions[3].language, ["日语"])
|
||||
|
|
|
@ -70,6 +70,12 @@ class DoubanDramaVersion(AbstractSite):
|
|||
"troupe": [x.strip() for x in h.xpath(q.format("演出团体"))],
|
||||
"location": [x.strip() for x in h.xpath(q.format("演出剧院"))],
|
||||
}
|
||||
if data["opening_date"]:
|
||||
d = data["opening_date"].split("-")
|
||||
l = len(d) if len(d) < 6 else 6
|
||||
if l > 3:
|
||||
data["opening_date"] = "-".join(d[:3])
|
||||
data["closing_date"] = "-".join(d[0 : 6 - l] + d[3:l])
|
||||
img_url_elem = h.xpath("//img[@itemprop='image']/@src")
|
||||
data["cover_image_url"] = img_url_elem[0].strip() if img_url_elem else None
|
||||
pd = ResourceContent(metadata=data)
|
||||
|
@ -135,7 +141,7 @@ class DoubanDrama(AbstractSite):
|
|||
data["genre"] = [
|
||||
s.strip()
|
||||
for s in h.xpath(
|
||||
"//dl//dt[text()='类型:']/following-sibling::dd[@itemprop='genre']/text()"
|
||||
"//div[@class='meta']//dl//dt[text()='类型:']/following-sibling::dd[@itemprop='genre']/text()"
|
||||
)
|
||||
]
|
||||
# data["version"] = [
|
||||
|
@ -181,8 +187,16 @@ class DoubanDrama(AbstractSite):
|
|||
)
|
||||
]
|
||||
|
||||
date_elem = h.xpath("//dl//dt[text()='演出日期:']/following::dd/text()")
|
||||
date_elem = h.xpath(
|
||||
"//div[@class='meta']//dl//dt[text()='演出日期:']/following::dd/text()"
|
||||
)
|
||||
data["opening_date"] = date_elem[0] if date_elem else None
|
||||
if data["opening_date"]:
|
||||
d = data["opening_date"].split("-")
|
||||
l = len(d) if len(d) < 6 else 6
|
||||
if l > 3:
|
||||
data["opening_date"] = "-".join(d[:3])
|
||||
data["closing_date"] = "-".join(d[0 : 6 - l] + d[3:l])
|
||||
|
||||
data["location"] = [
|
||||
s.strip()
|
||||
|
|
|
@ -12,13 +12,16 @@
|
|||
<!-- class specific details -->
|
||||
{% block details %}
|
||||
<div>{% include '_people.html' with people=item.other_title _role='其他标题' max=5 %}</div>
|
||||
<div>
|
||||
{% if item.opening_date %}
|
||||
<span>{{ item.opening_date }}</span>
|
||||
{% if item.closing_date %}~ <span>{{ item.closing_date }}</span>{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div>{% include '_people.html' with people=item.genre role='类型' max=5 %}</div>
|
||||
<div>{% include '_people.html' with people=item.troupe role='剧团' max=5 %}</div>
|
||||
<div>{% include '_people.html' with people=item.location role='剧院' max=5 %}</div>
|
||||
<div>{% include '_people.html' with people=item.language role='语言' max=5 %}</div>
|
||||
<div>
|
||||
{% if item.opening_date %}日期: <span>{{ item.opening_date }}</span>{% endif %}
|
||||
</div>
|
||||
<div>{% include '_people.html' with people=item.director role='导演' max=5 %}</div>
|
||||
<div>{% include '_people.html' with people=item.playwright role='编剧' max=5 %}</div>
|
||||
<div>{% include '_people.html' with people=item.performer role='演员' max=10 %}</div>
|
||||
|
@ -42,10 +45,11 @@
|
|||
<a href="{{ prod.url }}">{{ prod.title }}</a>
|
||||
</h6>
|
||||
<div>
|
||||
{% if prod.opening_date %}
|
||||
<span>{{ prod.opening_date }}</span>
|
||||
{% if prod.closing_date %}~ <span>{{ prod.closing_date }}</span>{% endif %}
|
||||
{% endif %}
|
||||
{% include '_people.html' with people=prod.troupe _role='剧团' max=2 %}
|
||||
<div>
|
||||
{% if prod.opening_date %}上演日期:{{ prod.opening_date }}{% endif %}
|
||||
</div>
|
||||
{% include '_people.html' with people=prod.location _role='上演剧院' max=2 %}
|
||||
{% include '_people.html' with people=prod.language _role='语言' max=5 %}
|
||||
</div>
|
||||
|
|
|
@ -11,6 +11,12 @@
|
|||
{% load thumb %}
|
||||
<!-- class specific details -->
|
||||
{% block details %}
|
||||
<div>
|
||||
{% if item.opening_date %}
|
||||
<span>{{ item.opening_date }}</span>
|
||||
{% if item.closing_date %}~ <span>{{ item.closing_date }}</span>{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div>
|
||||
{% if item.show %}
|
||||
{% trans '所属剧目' %}: <span><a href="{{ item.show.url }}"></span>{{ item.show.title }}</a>
|
||||
|
@ -21,9 +27,6 @@
|
|||
<div>{% include '_people.html' with people=item.troupe role='剧团' max=5 %}</div>
|
||||
<div>{% include '_people.html' with people=item.location role='剧院' max=5 %}</div>
|
||||
<div>{% include '_people.html' with people=item.language role='语言' max=5 %}</div>
|
||||
<div>
|
||||
{% if item.opening_date %}日期: <span>{{ item.opening_date }}</span>{% endif %}
|
||||
</div>
|
||||
<div>{% include '_people.html' with people=item.director role='导演' max=5 %}</div>
|
||||
<div>{% include '_people.html' with people=item.playwright role='编剧' max=5 %}</div>
|
||||
<div>{% include '_people.html' with people=item.performer role='演员' max=10 %}</div>
|
||||
|
|
Loading…
Add table
Reference in a new issue