Ejemplo n.º 1
0
    def _set_byline_string(self, byline_string):
        from demoscene.utils.nick_search import BylineSearch
        byline_search = BylineSearch(byline_string)

        if all(byline_search.author_nick_selections) and all(
                byline_search.affiliation_nick_selections):
            self.author_nicks = [
                selection.id
                for selection in byline_search.author_nick_selections
            ]
            self.author_affiliation_nicks = [
                selection.id
                for selection in byline_search.affiliation_nick_selections
            ]
            self.unparsed_byline = None
            self.save()
        else:
            self.unparsed_byline = byline_string
            self.author_nicks = []
            self.author_affiliation_nicks = []
            self.save()
Ejemplo n.º 2
0
 def from_value(value):
     # value can be:
     # a Byline
     # a BylineSearch
     # None
     # an existing BylineLookup
     if not value:
         return BylineLookup(byline_search=BylineSearch(''))
     elif isinstance(value, BylineLookup):
         return value  # BylineLookups are treated as immutable, so it's safe to return the initial instance
     elif isinstance(value, BylineSearch):
         return BylineLookup(
             byline_search=value,
             author_nick_selections=value.author_nick_selections,
             affiliation_nick_selections=value.affiliation_nick_selections)
     elif isinstance(value, Byline):  # TODO: can we eliminate Byline here in favour of BylineSearch?
         byline_search = BylineSearch.from_byline(value)
         return BylineLookup(
             byline_search=byline_search,
             author_nick_selections=byline_search.author_nick_selections,
             affiliation_nick_selections=byline_search.affiliation_nick_selections)
     else:
         raise ValidationError("Don't know how to handle %s as a byline lookup" % repr(value))
Ejemplo n.º 3
0
 def test_eq(self):
     bl = BylineLookup.from_value(BylineSearch('Gasman/Hooy-Program'))
     self.assertFalse(bl == 'fish')
Ejemplo n.º 4
0
 def test_repr(self):
     bl = BylineLookup.from_value(BylineSearch('Gasman/Hooy-Program'))
     self.assertEqual(
         repr(bl),
         '<BylineLookup: [NickSelection: 1, Gasman], [NickSelection: 5, Hooy-Program]>'
     )
Ejemplo n.º 5
0
 def byline_search(self):
     from demoscene.utils.nick_search import BylineSearch
     if self.unparsed_byline:
         return BylineSearch(self.unparsed_byline)
     else:
         return BylineSearch.from_byline(self.byline())