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
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')
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, })
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')
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)
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')
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, })
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)
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)
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, })
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, })
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, })
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, })
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")
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, })
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, })
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
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, })
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, })
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, })
def get_object(self, request, id, slug): play = check_url(Play, id, slug) return play
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())
def get_object(self, request, id, slug): try: place = check_url(Place, id, slug) except: raise ObjectDoesNotExist return place
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())
def place_short_url(request, place_id): try: place = check_url(Place, place_id) except UnmatchingSlugException, e: place = e.args[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)
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)
def add_from_company(request, company_id, company): company = check_url(ProductionCompany, company_id, company) return production_add(request, company=company)
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())
def person_short_url(request, person_id): try: person = check_url(Person, person_id) except UnmatchingSlugException, e: person = e.args[0]
def get_object(self, request, id, slug): try: place = check_url(Place, id, slug) except: raise ObjectDoesNotExist return place
def production_company_short_url(request, company_id): try: company = check_url(ProductionCompany, company_id) except UnmatchingSlugException, e: company = e.args[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())
def add_from_place(request, place_id, place): place = check_url(Place, place_id, place) return production_add(request, place=place)
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())
def add_from_company(request, company_id, company): company = check_url(ProductionCompany, company_id, company) return production_add(request, company=company)
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())
def add_from_place(request, place_id, place): place = check_url(Place, place_id, place) return production_add(request, place=place)
def get_object(self, request, id, slug): play = check_url(Play, id, slug) return play
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())
def get_object(self, request, id, slug): person = check_url(Person, id, slug) return person
def get_object(self, request, id, slug): person = check_url(Person, id, slug) return person
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())
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')