Esempio n. 1
0
def check_parameters(play_id, play, production_id):
    production = check_url(Production, production_id)
    try:
        play = check_url(Play, play_id, play)
    except UnmatchingSlugException:
        raise UnmatchingSlugException(production)
    if play != production.play:
        raise Http404()
    return production
Esempio n. 2
0
def person_productions(request, person_id, person, type):
    try:
        person = check_url(Person, person_id, person)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
    return productions_list(request, person, type,
                            'people/production_list.html')
Esempio n. 3
0
def person(request, person_id, person):
    try:
        person = check_url(Person, person_id, person)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())

    # if person.productions.count() == 0:
    #     raise Http404()

    try:
        fp = open(settings.OUR_ROOT + '/data/flickr/person/' + person_id)
        flickr = fp.read()
        fp.close()
        flickr = json.loads(flickr)
    except:
        flickr = ''

    past, future = productions_for(person)
    plays = person.plays.all()
    photo_form = PhotoForm(person)
    alert = person.alerts.filter(user=request.user.pk)
    same_name = Person.objects.filter(
        first_name=person.first_name,
        last_name=person.last_name).exclude(id=person.id)
    return render(
        request, 'people/person.html', {
            'person': person,
            'past': past,
            'future': future,
            'plays': plays,
            'photo_form': photo_form,
            'flickr': flickr,
            'alert': alert,
            'same_name': same_name,
        })
Esempio n. 4
0
def company_productions(request, company_id, company, type):
    try:
        company = check_url(ProductionCompany, company_id, company)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
    return productions_list(request, company, type,
                            'productions/company_production_list.html')
Esempio n. 5
0
def play_productions(request, play_id, play, type):
    try:
        play = check_url(Play, play_id, play)
    except UnmatchingSlugException, e:
        if type == 'future':
            url = e.args[0].get_future_url()
        elif type == 'past':
            url = e.args[0].get_past_url()
        return HttpResponsePermanentRedirect(url)
Esempio n. 6
0
def play_productions(request, play_id, play, type):
    try:
        play = check_url(Play, play_id, play)
    except UnmatchingSlugException as e:
        if type == 'future':
            url = e.args[0].get_future_url()
        elif type == 'past':
            url = e.args[0].get_past_url()
        return HttpResponsePermanentRedirect(url)
    return productions_list(request, play, type, 'plays/production_list.html')
Esempio n. 7
0
def merge(request, url):
    try:
        splits = url.split('/', 2)
        if len(splits) == 2:
            splits.append(None)
        type, id, slug = splits
        if type == 'production' and slug == 'merge':
            slug = None
    except ValueError:
        raise Exception(url)

    if type in type_dict:
        obj_type = type_dict[type]
    else:
        raise Http404

    try:
        object = check_url(obj_type, id, slug)
    except UnmatchingSlugException as e:
        return HttpResponseRedirect(e.args[0].get_absolute_url() + "/merge")

    if request.POST.get('stop'):
        if 'merging_' + type in request.session:
            del request.session['merging_' + type]
        if not request.session.keys():
            request.session.flush()
        if request.user.is_authenticated:
            messages.success(request, u"We have forgotten your search for a duplicate.")
        return HttpResponseRedirect(object.get_absolute_url())

    if request.POST.get('dupe') and request.session.get('merging_' + type):
        # Send email
        other_id = request.session['merging_' + type]['id']
        other = obj_type.objects.get(id=other_id)
        mail_admins(
            'Merge request',
            u'%s\nand\n%s\n\n%s : https://theatricalia.com%s\n%s : https://theatricalia.com%s\n\nRequest made by: %s\n\nATB,\nMatthew' % (
                other, object, int_to_base32(other.id), other.get_absolute_url(),
                int_to_base32(object.id), object.get_absolute_url(), request.user),
            fail_silently=True
        )
        del request.session['merging_' + type]
        return render(request, 'merged/thanks.html', {
            'object': object,
            'other': other,
        })

    request.session['merging_' + type] = {
        'id': object.id,
        'name': str(object),
    }

    return render(request, 'merged/start.html', {
        'object': object,
    })
Esempio n. 8
0
def api_flickr(request, type, id):
    if type in type_dict:
        obj_type = type_dict[type]
    else:
        raise Http404

    try:
        object = check_url(obj_type, id)
    except UnmatchingSlugException, e:
        url = '/api/%s/%s/flickr' % (type, e.args[0].id)
        return HttpResponsePermanentRedirect(url)
Esempio n. 9
0
def api_flickr(request, type, id):
    if type in type_dict:
        obj_type = type_dict[type]
    else:
        raise Http404

    try:
        object = check_url(obj_type, id)
    except UnmatchingSlugException as e:
        url = '/api/%s/%s/flickr' % (type, e.args[0].id)
        return HttpResponsePermanentRedirect(url)

    return HttpResponse('%s' % object)
Esempio n. 10
0
def company(request, company_id, company):
    try:
        company = check_url(ProductionCompany, company_id, company)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())

    alert = company.alerts.filter(user=request.user.pk)
    past, future = productions_for(company)
    return render(request, 'productions/company.html', {
        'company': company,
        'past': past,
        'future': future,
        'alert': alert,
    })
Esempio n. 11
0
def productions(request, place_id, place):
    try:
        place = check_url(Place, place_id, place)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())

    productions = Production.objects.filter(places=place).order_by('play__title').select_related('play')
    Production.objects.prefetch_companies(productions)
    Production.objects.prefetch_places(productions)

    return render(request, 'places/productions.html', {
        'productions': productions,
        'place': place,
    })
Esempio n. 12
0
def place(request, place_id, place):
    try:
        place = check_url(Place, place_id, place)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
    past, future = productions_for(place)
    photo_form = PhotoForm(place)
    alert = place.alerts.filter(user=request.user.pk)
    return render(request, 'place.html', {
        'place': place,
        'past': past,
        'future': future,
        'photo_form': photo_form,
        'alert': alert,
    })
Esempio n. 13
0
def play(request, play_id, play):
    try:
        play = check_url(Play, play_id, play)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
    past, future = productions_for(play)
    alert = play.alerts.filter(user=request.user.pk)
    same_name = Play.objects.filter(title=play.title).exclude(id=play.id)
    return render(
        request, 'plays/play.html', {
            'play': play,
            'past': past,
            'future': future,
            'alert': alert,
            'same_name': same_name,
        })
Esempio n. 14
0
def merge(request, url):
    try:
        type, id, slug = url.split('/', 2)
        if type == 'production' and slug == 'merge':
            slug = None
    except ValueError:
        raise Exception, url

    if type in type_dict:
        obj_type = type_dict[type]
    else:
        raise Http404

    try:
        object = check_url(obj_type, id, slug)
    except UnmatchingSlugException, e:
        return HttpResponseRedirect(e.args[0].get_absolute_url() + "/merge")
Esempio n. 15
0
def people(request, place_id, place):
    try:
        place = check_url(Place, place_id, place)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())

    people = Person.objects.filter(productions__places=place).distinct().order_by('last_name', 'first_name')
    productionsM2M = Part.objects.filter(production__places=place, person__in=people).select_related('production')
    m2m = {}
    for p in productionsM2M:
        m2m.setdefault(p.person_id, []).append(p.production)
    for p in people:
        p._productions = m2m.get(p.id, [])

    return render(request, 'places/people.html', {
        'people': people,
        'place': place,
    })
Esempio n. 16
0
def play_edit(request, play_id, play):
    try:
        play = check_url(Play, play_id, play)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_edit_url())

    play.title = play.get_title_display()
    form = PlayEditForm(request.POST or None, instance=play)
    PlayAuthorFormSet = formset_factory(PlayAuthorForm)
    initial = [{'person': author.name()} for author in play.authors.all()]
    formset = PlayAuthorFormSet(request.POST or None, initial=initial)
    if request.method == 'POST':
        if request.POST.get('disregard'):
            messages.success(
                request,
                u"All right, we\u2019ve ignored any changes you made.")
            return HttpResponseRedirect(play.get_absolute_url())
        if form.is_valid() and formset.is_valid():
            authors = []
            name_to_id = {
                author.name(): author
                for author in play.authors.all()
            }
            for author in formset.cleaned_data:
                if author and author['person']:
                    if author.get('person_choice') == 'new':
                        author['person'] = Person.objects.create_from_name(
                            author['person'])
                    elif author.get('person_choice') == '':
                        author['person'] = name_to_id[author['person']]
                    authors.append(author['person'])
            form.cleaned_data['authors'] = authors
            form.save()
            messages.success(request,
                             "Your changes have been stored; thank you.")
            return HttpResponseRedirect(play.get_absolute_url())

    return render(request, 'plays/play_edit.html', {
        'play': play,
        'form': form,
        'formset': formset,
    })
Esempio n. 17
0
def person_js(request, person_id, person):
    try:
        person = check_url(Person, person_id, person)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
    plays = person.plays.all()

    past = [{
        'id': int_to_base32(p.id),
        'desc': str(p)
    } for p in productions_past(person, '')]
    future = [{
        'id': int_to_base32(p.id),
        'desc': str(p)
    } for p in productions_future(person, '')]
    plays = [{
        'id': int_to_base32(p.id),
        'title': str(p)
    } for p in person.plays.all()]
    person = {
        'id': int_to_base32(person.id),
        'first_name': person.first_name,
        'last_name': person.last_name,
        'slug': person.slug,
        'bio': person.bio,
        'dob': person.dob,
        'died': person.died,
        'web': person.web,
        'imdb': person.imdb,
        'musicbrainz': person.musicbrainz,
        'openplaques': person.openplaques,
    }
    out = {
        'person': person,
        'past': past,
        'future': future,
        'plays': plays,
    }
    response = HttpResponse(content_type='application/json')
    json.dump(out, response, ensure_ascii=False)
    return response
Esempio n. 18
0
def place_edit(request, place_id, place):
    try:
        place = check_url(Place, place_id, place)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())

    place.name = place.get_name_display()
    form = PlaceForm(request.POST or None, instance=place)
    if request.method == 'POST':
        if request.POST.get('disregard'):
            messages.success(request, u"All right, we\u2019ve ignored any changes you made.")
            return HttpResponseRedirect(place.get_absolute_url())
        if form.is_valid():
            form.save()
            messages.success(request, "Your changes have been stored; thank you.")
            return HttpResponseRedirect(place.get_absolute_url())

    return render(request, 'places/place_edit.html', {
        'place': place,
        'form': form,
    })
Esempio n. 19
0
def company_edit(request, company_id, company):
    try:
        company = check_url(ProductionCompany, company_id, company)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())

    form = ProductionCompanyForm(request.POST or None, instance=company)
    if request.method == 'POST':
        if request.POST.get('disregard'):
            messages.success(
                request,
                u"All right, we\u2019ve ignored any changes you made.")
            return HttpResponseRedirect(company.get_absolute_url())
        if form.is_valid():
            form.save()
            messages.success(request,
                             "Your changes have been stored; thank you.")
            return HttpResponseRedirect(company.get_absolute_url())

    return render(request, 'productions/company_edit.html', {
        'company': company,
        'form': form,
    })
Esempio n. 20
0
def person_edit(request, person_id, person):
    try:
        person = check_url(Person, person_id, person)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())

    form = PersonEditForm(data=request.POST or None, instance=person)
    if request.method == 'POST':
        if request.POST.get('disregard'):
            messages.success(
                request,
                u"All right, we\u2019ve ignored any changes you made.")
            return HttpResponseRedirect(person.get_absolute_url())
        if form.is_valid():
            form.save()
            messages.success(request,
                             "Your changes have been stored, thank you.")
            return HttpResponseRedirect(person.get_absolute_url())

    return render(request, 'people/person_edit.html', {
        'person': person,
        'form': form,
    })
Esempio n. 21
0
 def get_object(self, request, id, slug):
     play = check_url(Play, id, slug)
     return play
Esempio n. 22
0
def person_short_url(request, person_id):
    try:
        person = check_url(Person, person_id)
    except UnmatchingSlugException as e:
        person = e.args[0]
    return HttpResponsePermanentRedirect(person.get_absolute_url())
Esempio n. 23
0
 def get_object(self, request, id, slug):
     try:
         place = check_url(Place, id, slug)
     except:
         raise ObjectDoesNotExist
     return place
Esempio n. 24
0
def play_edit(request, play_id, play):
    try:
        play = check_url(Play, play_id, play)
    except UnmatchingSlugException, e:
        return HttpResponseRedirect(e.args[0].get_absolute_url())
Esempio n. 25
0
def place_short_url(request, place_id):
    try:
        place = check_url(Place, place_id)
    except UnmatchingSlugException, e:
        place = e.args[0]
Esempio n. 26
0
def add_from_play(request, play_id, play):
    try:
        play = check_url(Play, play_id, play)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
    return production_add(request, play=play)
Esempio n. 27
0
def check_parameters(play_id, play, production_id):
    production = check_url(Production, production_id)
    try:
        play = check_url(Play, play_id, play)
    except UnmatchingSlugException, e:
        raise UnmatchingSlugException(production)
Esempio n. 28
0
def add_from_company(request, company_id, company):
    company = check_url(ProductionCompany, company_id, company)
    return production_add(request, company=company)
Esempio n. 29
0
def production_company_short_url(request, company_id):
    try:
        company = check_url(ProductionCompany, company_id)
    except UnmatchingSlugException as e:
        company = e.args[0]
    return HttpResponsePermanentRedirect(company.get_absolute_url())
Esempio n. 30
0
def person_short_url(request, person_id):
    try:
        person = check_url(Person, person_id)
    except UnmatchingSlugException, e:
        person = e.args[0]
Esempio n. 31
0
 def get_object(self, request, id, slug):
     try:
         place = check_url(Place, id, slug)
     except:
         raise ObjectDoesNotExist
     return place
Esempio n. 32
0
def production_company_short_url(request, company_id):
    try:
        company = check_url(ProductionCompany, company_id)
    except UnmatchingSlugException, e:
        company = e.args[0]
Esempio n. 33
0
def add_from_play(request, play_id, play):
    try:
        play = check_url(Play, play_id, play)
    except UnmatchingSlugException, e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
Esempio n. 34
0
def add_from_place(request, place_id, place):
    place = check_url(Place, place_id, place)
    return production_add(request, place=place)
Esempio n. 35
0
def play_short_url(request, play_id):
    try:
        play = check_url(Play, play_id)
    except UnmatchingSlugException as e:
        play = e.args[0]
    return HttpResponsePermanentRedirect(play.get_absolute_url())
Esempio n. 36
0
def add_from_company(request, company_id, company):
    company = check_url(ProductionCompany, company_id, company)
    return production_add(request, company=company)
Esempio n. 37
0
def company_edit(request, company_id, company):
    try:
        company = check_url(ProductionCompany, company_id, company)
    except UnmatchingSlugException, e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
Esempio n. 38
0
def add_from_place(request, place_id, place):
    place = check_url(Place, place_id, place)
    return production_add(request, place=place)
Esempio n. 39
0
 def get_object(self, request, id, slug):
     play = check_url(Play, id, slug)
     return play
Esempio n. 40
0
def place(request, place_id, place):
    try:
        place = check_url(Place, place_id, place)
    except UnmatchingSlugException, e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
Esempio n. 41
0
 def get_object(self, request, id, slug):
     person = check_url(Person, id, slug)
     return person
Esempio n. 42
0
 def get_object(self, request, id, slug):
     person = check_url(Person, id, slug)
     return person
Esempio n. 43
0
def person_js(request, person_id, person):
    try:
        person = check_url(Person, person_id, person)
    except UnmatchingSlugException, e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
Esempio n. 44
0
def place_productions(request, place_id, place, type):
    try:
        place = check_url(Place, place_id, place)
    except UnmatchingSlugException as e:
        return HttpResponsePermanentRedirect(e.args[0].get_absolute_url())
    return productions_list(request, place, type, 'places/production_list.html')