# -*- coding: utf-8 -*- vim:encoding=utf-8: # vim: tabstop=4:shiftwidth=4:softtabstop=4:expandtab from django.shortcuts import render_to_response,get_object_or_404 from django.http import HttpResponse,HttpResponseRedirect,Http404 from django.template import RequestContext from django.core.urlresolvers import reverse from django.contrib.auth.decorators import login_required from edumanage.models import * from edumanage.forms import * from django import forms from django.forms.models import modelformset_factory from django.forms.models import inlineformset_factory from django.contrib.contenttypes.generic import generic_inlineformset_factory import json import math from xml.etree import ElementTree as ET from django.conf import settings def index(request): return render_to_response('front/index.html', context_instance=RequestContext(request, base_response(request))) @login_required def manage(request): services_list = [] servers_list = [] user = request.user try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False services = ServiceLoc.objects.filter(institutionid=inst) services_list.extend([s for s in services]) servers = InstServer.objects.filter(instid=inst) servers_list.extend([s for s in servers]) return render_to_response('edumanage/welcome.html', { 'institution': inst, 'services': services_list, 'servers': servers_list }, context_instance=RequestContext(request, base_response(request))) @login_required def institutions(request): user = request.user dict = {} try: profile = user.get_profile() inst = profile.institution inst.__unicode__ = inst.get_name(request.LANGUAGE_CODE) except UserProfile.DoesNotExist: inst = False dict['institution'] = inst.pk form = InstDetailsForm(initial=dict) form.fields['institution'].widget.attrs['readonly'] = True return render_to_response('edumanage/institution.html', { 'institution': inst, 'form': form, }, context_instance=RequestContext(request, base_response(request))) @login_required def add_institution_details(request, institution_pk): user = request.user try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False if (not inst) or (int(inst.pk) != int(institution_pk)): # messages.add_message(request, messages.WARNING, # _("Insufficient rights on Institution. Contact your administrator")) return HttpResponseRedirect(reverse("institutions")) if request.method == "GET": # Determine add or edit request_data = request.POST.copy() try: inst_details = InstitutionDetails.objects.get(institution=inst) form = InstDetailsForm(instance=inst_details) UrlFormSet = generic_inlineformset_factory(URL_i18n, extra=2, formset=UrlFormSetFactInst, can_delete=True) except InstitutionDetails.DoesNotExist: form = InstDetailsForm() form.fields['institution'] = forms.ModelChoiceField(queryset=Institution.objects.filter(pk=institution_pk), empty_label=None) UrlFormSet = generic_inlineformset_factory(URL_i18n, extra=2, can_delete=True) urls_form = UrlFormSet(prefix='urlsform') form.fields['contact'] = forms.ModelMultipleChoiceField(queryset=Contact.objects.filter(pk__in=getInstContacts(inst))) return render_to_response('edumanage/institution_edit.html', { 'institution': inst, 'form': form, 'urls_form':urls_form}, context_instance=RequestContext(request, base_response(request))) elif request.method == 'POST': request_data = request.POST.copy() UrlFormSet = generic_inlineformset_factory(URL_i18n, extra=2, formset=UrlFormSetFactInst, can_delete=True) try: inst_details = InstitutionDetails.objects.get(institution=inst) form = InstDetailsForm(request_data, instance=inst_details) urls_form = UrlFormSet(request_data, instance=inst_details, prefix='urlsform') except InstitutionDetails.DoesNotExist: form = InstDetailsForm(request_data) urls_form = UrlFormSet(request_data, prefix='urlsform') UrlFormSet = generic_inlineformset_factory(URL_i18n, extra=2, formset=UrlFormSetFactInst, can_delete=True) if form.is_valid() and urls_form.is_valid(): instdets = form.save() urls_form.instance = instdets urls_inst = urls_form.save() return HttpResponseRedirect(reverse("institutions")) else: try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False form.fields['institution'] = forms.ModelChoiceField(queryset=Institution.objects.filter(pk=institution_pk), empty_label=None) form.fields['contact'] = forms.ModelMultipleChoiceField(queryset=Contact.objects.filter(pk__in=getInstContacts(inst))) return render_to_response('edumanage/institution_edit.html', { 'institution': inst, 'form': form, 'urls_form': urls_form}, context_instance=RequestContext(request, base_response(request))) @login_required def services(request): user = request.user dict = {} try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False try: services = ServiceLoc.objects.filter(institutionid = inst) except ServiceLoc.DoesNotExist: services = False return render_to_response('edumanage/services.html', { 'institution': inst, 'services': services, }, context_instance=RequestContext(request, base_response(request))) @login_required def add_services(request, service_pk): user = request.user service = False try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False if request.method == "GET": # Determine add or edit try: service = ServiceLoc.objects.get(institutionid=inst, pk=service_pk) form = ServiceLocForm(instance=service) except ServiceLoc.DoesNotExist: form = ServiceLocForm() form.fields['institutionid'] = forms.ModelChoiceField(queryset=Institution.objects.filter(pk=inst.pk), empty_label=None) UrlFormSet = generic_inlineformset_factory(URL_i18n, extra=2, can_delete=True) NameFormSet = generic_inlineformset_factory(Name_i18n, extra=2, can_delete=True) urls_form = UrlFormSet(prefix='urlsform') names_form = NameFormSet(prefix='namesform') if (service): NameFormSet = generic_inlineformset_factory(Name_i18n, extra=1, formset=NameFormSetFact, can_delete=True) names_form = NameFormSet(instance=service, prefix='namesform') UrlFormSet = generic_inlineformset_factory(URL_i18n, extra=2, formset=UrlFormSetFact, can_delete=True) urls_form = UrlFormSet(instance=service, prefix='urlsform') form.fields['contact'] = forms.ModelMultipleChoiceField(queryset=Contact.objects.filter(pk__in=getInstContacts(inst))) return render_to_response('edumanage/services_edit.html', { 'form': form, 'services_form':names_form, 'urls_form': urls_form}, context_instance=RequestContext(request, base_response(request))) elif request.method == 'POST': request_data = request.POST.copy() NameFormSet = generic_inlineformset_factory(Name_i18n, extra=1, formset=NameFormSetFact, can_delete=True) UrlFormSet = generic_inlineformset_factory(URL_i18n, extra=2, formset=UrlFormSetFact, can_delete=True) try: service = ServiceLoc.objects.get(institutionid=inst, pk=service_pk) form = ServiceLocForm(request_data, instance=service) names_form = NameFormSet(request_data, instance=service, prefix='namesform') urls_form = UrlFormSet(request_data, instance=service, prefix='urlsform') except ServiceLoc.DoesNotExist: form = ServiceLocForm(request_data) names_form = NameFormSet(request_data, prefix='namesform') urls_form = UrlFormSet(request_data, prefix='urlsform') if form.is_valid() and names_form.is_valid() and urls_form.is_valid(): serviceloc = form.save() service = serviceloc names_form.instance = service urls_form.instance = service names_inst = names_form.save() urls_inst = urls_form.save() # for nform in names_inst: # nform.content_object = serviceloc # nform.save() # for uform in urls_inst: # uform.content_object = serviceloc # uform.save() return HttpResponseRedirect(reverse("services")) else: form.fields['institutionid'] = forms.ModelChoiceField(queryset=Institution.objects.filter(pk=inst.pk), empty_label=None) form.fields['contact'] = forms.ModelMultipleChoiceField(queryset=Contact.objects.filter(pk__in=getInstContacts(inst))) return render_to_response('edumanage/services_edit.html', { 'institution': inst, 'form': form, 'services_form':names_form, 'urls_form': urls_form}, context_instance=RequestContext(request, base_response(request))) @login_required def get_service_points(request): if request.method == "GET": user = request.user try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False servicelocs = ServiceLoc.objects.filter(institutionid=inst) locs = [] for sl in servicelocs: response_location = {} response_location['lat'] = u"%s"%sl.latitude response_location['lng'] = u"%s"%sl.longitude response_location['address'] = u"%s
%s"%(sl.address_street, sl.address_city) response_location['enc'] = u"%s"%(sl.enc_level) response_location['AP_no'] = u"%s"%(sl.AP_no) response_location['name'] = sl.loc_name.get(lang='en').name response_location['port_restrict'] = u"%s"%(sl.port_restrict) response_location['transp_proxy'] = u"%s"%(sl.transp_proxy) response_location['IPv6'] = u"%s"%(sl.IPv6) response_location['NAT'] = u"%s"%(sl.NAT) response_location['wired'] = u"%s"%(sl.wired) response_location['SSID'] = u"%s"%(sl.SSID) response_location['key'] = u"%s"%sl.pk locs.append(response_location) return HttpResponse(json.dumps(locs), mimetype='application/json') else: return HttpResponseNotFound('

Something went really wrong

') def get_all_services(request): servicelocs = ServiceLoc.objects.all() locs = [] for sl in servicelocs: response_location = {} response_location['lat'] = u"%s"%sl.latitude response_location['lng'] = u"%s"%sl.longitude response_location['address'] = u"%s
%s"%(sl.address_street, sl.address_city) response_location['enc'] = u"%s"%(sl.enc_level) response_location['AP_no'] = u"%s"%(sl.AP_no) response_location['inst'] = sl.institutionid.org_name.get(lang='en').name response_location['name'] = sl.loc_name.get(lang='en').name response_location['port_restrict'] = u"%s"%(sl.port_restrict) response_location['transp_proxy'] = u"%s"%(sl.transp_proxy) response_location['IPv6'] = u"%s"%(sl.IPv6) response_location['NAT'] = u"%s"%(sl.NAT) response_location['wired'] = u"%s"%(sl.wired) response_location['SSID'] = u"%s"%(sl.SSID) response_location['key'] = u"%s"%sl.pk locs.append(response_location) return HttpResponse(json.dumps(locs), mimetype='application/json') def servers(request): user = request.user servers = False try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False if inst: servers = InstServer.objects.filter(instid=inst) return render_to_response('edumanage/servers.html', { 'servers': servers}, context_instance=RequestContext(request, base_response(request))) @login_required def adduser(request): user = request.user try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False if request.method == "GET": form = ContactForm() return render_to_response('edumanage/add_user.html', { 'form' : form }, context_instance=RequestContext(request, base_response(request))) elif request.method == 'POST': request_data = request.POST.copy() form = ContactForm(request_data) if form.is_valid(): contact = form.save() instContPool = InstitutionContactPool(contact=contact, institution=inst) instContPool.save() response_data = {} response_data['value'] = "%s" %contact.pk response_data['text'] = "%s" %contact return HttpResponse(json.dumps(response_data), mimetype='application/json') else: return render_to_response('edumanage/add_user.html', {'form': form,}, context_instance=RequestContext(request, base_response(request))) @login_required def add_server(request, server_pk): user = request.user server = False try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False if request.method == "GET": # Determine add or edit try: server = InstServer.objects.get(instid=inst, pk=server_pk) form = InstServerForm(instance=server) except InstServer.DoesNotExist: form = InstServerForm() form.fields['instid'] = forms.ModelChoiceField(queryset=Institution.objects.filter(pk=inst.pk), empty_label=None) return render_to_response('edumanage/servers_edit.html', { 'form': form}, context_instance=RequestContext(request, base_response(request))) elif request.method == 'POST': request_data = request.POST.copy() try: server = InstServer.objects.get(instid=inst, pk=server_pk) form = InstServerForm(request_data, instance=server) except InstServer.DoesNotExist: form = InstServerForm(request_data) if form.is_valid(): instserverf = form.save() return HttpResponseRedirect(reverse("servers")) else: form.fields['instid'] = forms.ModelChoiceField(queryset=Institution.objects.filter(pk=inst.pk), empty_label=None) return render_to_response('edumanage/servers_edit.html', { 'institution': inst, 'form': form}, context_instance=RequestContext(request, base_response(request))) @login_required def realms(request): user = request.user servers = False try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False if inst: realms = InstRealm.objects.filter(instid=inst) return render_to_response('edumanage/realms.html', { 'realms': realms}, context_instance=RequestContext(request, base_response(request))) @login_required def add_realm(request, realm_pk): user = request.user server = False try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False if request.method == "GET": # Determine add or edit try: realm = InstRealm.objects.get(instid=inst, pk=realm_pk) form = InstRealmForm(instance=realm) except InstRealm.DoesNotExist: form = InstRealmForm() form.fields['instid'] = forms.ModelChoiceField(queryset=Institution.objects.filter(pk=inst.pk), empty_label=None) form.fields['proxyto'] = forms.ModelMultipleChoiceField(queryset=InstServer.objects.filter(pk__in=getInstServers(inst))) return render_to_response('edumanage/realms_edit.html', { 'form': form}, context_instance=RequestContext(request, base_response(request))) elif request.method == 'POST': request_data = request.POST.copy() try: realm = InstRealm.objects.get(instid=inst, pk=realm_pk) form = InstRealmForm(request_data, instance=realm) except InstRealm.DoesNotExist: form = InstRealmForm(request_data) if form.is_valid(): instserverf = form.save() return HttpResponseRedirect(reverse("realms")) else: form.fields['instid'] = forms.ModelChoiceField(queryset=Institution.objects.filter(pk=inst.pk), empty_label=None) form.fields['proxyto'] = forms.ModelMultipleChoiceField(queryset=InstServer.objects.filter(pk__in=getInstServers(inst))) return render_to_response('edumanage/realms_edit.html', { 'institution': inst, 'form': form}, context_instance=RequestContext(request, base_response(request))) @login_required def del_realm(request): if request.method == 'GET': user = request.user req_data = request.GET.copy() realm_pk = req_data['realm_pk'] profile = user.get_profile() institution = profile.institution resp = {} try: realm = InstRealm.objects.get(instid=institution, pk=realm_pk) except InstRealm.DoesNotExist: resp['error'] = "Could not get realm or you have no rights to delete" return HttpResponse(json.dumps(resp), mimetype='application/json') try: realm.delete() except: resp['error'] = "Could not delete realm" return HttpResponse(json.dumps(resp), mimetype='application/json') resp['success'] = "Realm successfully deleted" return HttpResponse(json.dumps(resp), mimetype='application/json') @login_required def contacts(request): user = request.user servers = False instcontacts = [] try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False if inst: instcontacts.extend([x.contact.pk for x in InstitutionContactPool.objects.filter(institution=inst)]) print instcontacts contacts = Contact.objects.filter(pk__in=instcontacts) print contacts return render_to_response('edumanage/contacts.html', { 'contacts': contacts}, context_instance=RequestContext(request, base_response(request))) @login_required def add_contact(request, contact_pk): user = request.user server = False try: profile = user.get_profile() inst = profile.institution except UserProfile.DoesNotExist: inst = False if request.method == "GET": # Determine add or edit try: contactinst = InstitutionContactPool.objects.get(institution=inst, contact__pk=contact_pk) contact = contactinst.contact form = ContactForm(instance=contact) except InstitutionContactPool.DoesNotExist: form = ContactForm() return render_to_response('edumanage/contacts_edit.html', { 'form': form}, context_instance=RequestContext(request, base_response(request))) elif request.method == 'POST': request_data = request.POST.copy() try: contactinst = InstitutionContactPool.objects.get(institution=inst, contact__pk=contact_pk) contact = contactinst.contact form = ContactForm(request_data, instance=contact) except InstitutionContactPool.DoesNotExist: form = ContactForm(request_data) if form.is_valid(): contact = form.save() instContPool, created = InstitutionContactPool.objects.get_or_create(contact=contact, institution=inst) instContPool.save() return HttpResponseRedirect(reverse("contacts")) return render_to_response('edumanage/contacts_edit.html', { 'form': form}, context_instance=RequestContext(request, base_response(request))) @login_required def del_contact(request): if request.method == 'GET': user = request.user req_data = request.GET.copy() contact_pk = req_data['contact_pk'] profile = user.get_profile() institution = profile.institution resp = {} try: contactinst = InstitutionContactPool.objects.get(institution=institution, contact__pk=contact_pk) contact = contactinst.contact except InstitutionContactPool.DoesNotExist: resp['error'] = "Could not get contact or you have no rights to delete" return HttpResponse(json.dumps(resp), mimetype='application/json') try: for service in ServiceLoc.objects.filter(institutionid=institution): if (contact in service.contact.all() and len(service.contact.all()) == 1): resp['error'] = "Could not delete contact. It is the only contact in service %s.
Fix it and try again" %service.get_name(lang="en") return HttpResponse(json.dumps(resp), mimetype='application/json') if (contact in institution.institutiondetails.contact.all() and len(institution.institutiondetails.contact.all()) == 1): resp['error'] = "Could not delete contact. It is the only contact your institution.
Fix it and try again" return HttpResponse(json.dumps(resp), mimetype='application/json') contact.delete() except Exception: resp['error'] = "Could not delete contact" return HttpResponse(json.dumps(resp), mimetype='application/json') resp['success'] = "Contact successfully deleted" return HttpResponse(json.dumps(resp), mimetype='application/json') @login_required def base_response(request): user = request.user inst = [] server = [] services = [] instrealms = [] instcontacts = [] contacts = [] try: profile = user.get_profile() institution = profile.institution inst.append(institution) server = InstServer.objects.filter(instid=institution) services = ServiceLoc.objects.filter(institutionid=institution) instrealms = InstRealm.objects.filter(instid=institution) instcontacts.extend([x.contact.pk for x in InstitutionContactPool.objects.filter(institution=institution)]) contacts = Contact.objects.filter(pk__in=instcontacts) except UserProfile.DoesNotExist: pass return { 'inst_num': len(inst), 'servers_num': len(server), 'services_num': len(services), 'realms_num': len(instrealms), 'contacts_num': len(contacts), } @login_required def del_server(request): if request.method == 'GET': user = request.user req_data = request.GET.copy() server_pk = req_data['server_pk'] profile = user.get_profile() institution = profile.institution resp = {} try: server = InstServer.objects.get(instid=institution, pk=server_pk) except InstServer.DoesNotExist: resp['error'] = "Could not get server or you have no rights to delete" return HttpResponse(json.dumps(resp), mimetype='application/json') try: server.delete() except: resp['error'] = "Could not delete server" return HttpResponse(json.dumps(resp), mimetype='application/json') resp['success'] = "Server successfully deleted" return HttpResponse(json.dumps(resp), mimetype='application/json') @login_required def del_service(request): if request.method == 'GET': user = request.user req_data = request.GET.copy() service_pk = req_data['service_pk'] profile = user.get_profile() institution = profile.institution resp = {} try: service = ServiceLoc.objects.get(institutionid=institution, pk=service_pk) except ServiceLoc.DoesNotExist: resp['error'] = "Could not get service or you have no rights to delete" return HttpResponse(json.dumps(resp), mimetype='application/json') try: service.delete() except: resp['error'] = "Could not delete service" return HttpResponse(json.dumps(resp), mimetype='application/json') resp['success'] = "Service successfully deleted" return HttpResponse(json.dumps(resp), mimetype='application/json') def geolocate(request): return render_to_response('front/geolocate.html', context_instance=RequestContext(request)) def closest(request): if request.method == 'GET': locs = [] request_data = request.GET.copy() response_location = {} response_location["lat"] = request_data['lat'] response_location["lng"] = request_data['lng'] lat = float(request_data['lat']) lng = float(request_data['lng']) R = 6371 distances = {} closestMarker = {} closest = -1 doc = ET.parse(settings.KML_FILE) root = doc.getroot() r = root.getchildren()[0] for (counter, i) in enumerate(r.getchildren()): if "id" in i.keys(): j = i.getchildren() pointname = j[0].text point = j[2].getchildren()[0].text pointlng, pointlat, pointele = point.split(',') dLat = rad(float(pointlat)-float(lat)) dLong = rad(float(pointlng)-float(lng)) a = math.sin(dLat/2) * math.sin(dLat/2) + math.cos(rad(lat)) * math.cos(rad(float(pointlat))) * math.sin(dLong/2) * math.sin(dLong/2) c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a)) d = R * c distances[counter] = d if (closest == -1 or d < distances[closest]): closest = counter closestMarker = {"name": pointname, "lat": pointlat, "lng": pointlng, "text": j[1].text} return HttpResponse(json.dumps(closestMarker), mimetype='application/json') def instxml(request): ET._namespace_map["http://www.w3.org/2001/XMLSchema-instance"] = 'xsi' root = ET.Element("institutions") NS_XSI = "{http://www.w3.org/2001/XMLSchema-instance}" root.set(NS_XSI + "noNamespaceSchemaLocation", "institutions.xsd") #root.attrib["xsi:noNamespaceSchemaLocation"] = "institution.xsd" institutions = Institution.objects.all() for institution in institutions: try: inst = institution.institutiondetails if not inst: pass except InstitutionDetails.DoesNotExist: pass instElement = ET.SubElement(root, "institution") instCountry = ET.SubElement(instElement, "country") instCountry.text = ("%s" %inst.institution.realmid.country).upper() instType = ET.SubElement(instElement, "type") instType.text = "%s" %inst.ertype for realm in institution.instrealm_set.all(): instRealm = ET.SubElement(instElement, "inst_realm") instRealm.text = realm.realm for name in inst.institution.org_name.all(): instOrgName = ET.SubElement(instElement, "org_name") instOrgName.attrib["lang"] = name.lang instOrgName.text = u"%s" %name.name instAddress = ET.SubElement(instElement, "address") instAddrStreet = ET.SubElement(instAddress, "street") instAddrStreet.text = inst.address_street instAddrCity = ET.SubElement(instAddress, "city") instAddrCity.text = inst.address_city for contact in inst.contact.all(): instContact = ET.SubElement(instElement, "contact") instContactName = ET.SubElement(instContact, "name") instContactName.text = "%s %s" %(contact.firstname, contact.lastname) instContactEmail = ET.SubElement(instContact, "email") instContactEmail.text = contact.email instContactPhone = ET.SubElement(instContact, "phone") instContactPhone.text = contact.phone for url in inst.url.all(): instUrl = ET.SubElement(instElement, "%s_URL"%(url.urltype)) instUrl.attrib["lang"] = url.lang instUrl.text = url.url #Let's go to Institution Service Locations for serviceloc in inst.institution.serviceloc_set.all(): instLocation = ET.SubElement(instElement, "location") instLong = ET.SubElement(instLocation, "longitude") instLong.text = "%s" %serviceloc.longitude instLat = ET.SubElement(instLocation, "latitude") instLat.text = "%s" %serviceloc.latitude for instlocname in serviceloc.loc_name.all(): instLocName = ET.SubElement(instLocation, "loc_name") instLocName.attrib["lang"] = instlocname.lang instLocName.text = instlocname.name instLocAddress = ET.SubElement(instLocation, "address") instLocAddrStreet = ET.SubElement(instLocAddress, "street") instLocAddrStreet.text = serviceloc.address_street instLocAddrCity = ET.SubElement(instLocAddress, "city") instLocAddrCity.text = serviceloc.address_city instLocSSID = ET.SubElement(instLocation, "SSID") instLocSSID.text = serviceloc.SSID instLocEncLevel = ET.SubElement(instLocation, "enc_level") instLocEncLevel.text = serviceloc.enc_level instLocPortRestrict = ET.SubElement(instLocation, "port_restrict") instLocPortRestrict.text = ("%s" %serviceloc.port_restrict).lower() instLocTransProxy = ET.SubElement(instLocation, "transp_proxy") instLocTransProxy.text = ("%s" %serviceloc.transp_proxy).lower() instLocIpv6 = ET.SubElement(instLocation, "IPv6") instLocIpv6.text = ("%s" %serviceloc.IPv6).lower() instLocNAT = ET.SubElement(instLocation, "NAT") instLocNAT.text = ("%s" %serviceloc.NAT).lower() instLocAP_no = ET.SubElement(instLocation, "AP_no") instLocAP_no.text = "%s" %int(serviceloc.AP_no) instLocWired = ET.SubElement(instLocation, "wired") instLocWired.text = ("%s" %serviceloc.wired).lower() for url in serviceloc.url.all(): instLocUrl = ET.SubElement(instLocation, "%s_URL"%(url.urltype)) instLocUrl.attrib["lang"] = url.lang instLocUrl.text = url.url instTs = ET.SubElement(instElement, "ts") instTs.text = "%s" %inst.ts.isoformat() return render_to_response("general/institution.xml", {"xml":to_xml(root)},context_instance=RequestContext(request,), mimetype="application/xml") def realmxml(request): realm = Realm.objects.all()[0] ET._namespace_map["http://www.w3.org/2001/XMLSchema-instance"] = 'xsi' root = ET.Element("realms") NS_XSI = "{http://www.w3.org/2001/XMLSchema-instance}" root.set(NS_XSI + "noNamespaceSchemaLocation", "realm.xsd") #root.attrib["xsi:noNamespaceSchemaLocation"] = "institution.xsd" realmElement = ET.SubElement(root, "realm") realmCountry = ET.SubElement(realmElement, "country") realmCountry.text = realm.country realmStype = ET.SubElement(realmElement, "stype") realmStype.text = "%s" %realm.stype for name in realm.org_name.all(): realmOrgName = ET.SubElement(realmElement, "org_name") realmOrgName.attrib["lang"] = name.lang realmOrgName.text = u"%s" %name.name realmAddress = ET.SubElement(realmElement, "address") realmAddrStreet = ET.SubElement(realmAddress, "street") realmAddrStreet.text = realm.address_street realmAddrCity = ET.SubElement(realmAddress, "city") realmAddrCity.text = realm.address_city for contact in realm.contact.all(): realmContact = ET.SubElement(realmElement, "contact") realmContactName = ET.SubElement(realmContact, "name") realmContactName.text = "%s %s" %(contact.firstname, contact.lastname) realmContactEmail = ET.SubElement(realmContact, "email") realmContactEmail.text = contact.email realmContactPhone = ET.SubElement(realmContact, "phone") realmContactPhone.text = contact.phone for url in realm.url.all(): realmUrl = ET.SubElement(realmElement, "%s_URL"%(url.urltype)) realmUrl.attrib["lang"] = url.lang realmUrl.text = url.url return render_to_response("general/realm.xml", {"xml":to_xml(root)},context_instance=RequestContext(request,), mimetype="application/xml") def realmdataxml(request): realm = Realm.objects.all()[0] ET._namespace_map["http://www.w3.org/2001/XMLSchema-instance"] = 'xsi' root = ET.Element("realm-data") NS_XSI = "{http://www.w3.org/2001/XMLSchema-instance}" root.set(NS_XSI + "noNamespaceSchemaLocation", "realm-data.xsd") return render_to_response("general/realm_data.xml", {"xml":to_xml(root)},context_instance=RequestContext(request,), mimetype="application/xml") def to_xml(ele, encoding="UTF-8"): "Convert and return the XML for an *ele* (:class:`~xml.etree.ElementTree.Element`) with specified *encoding*." xml = ET.tostring(ele, encoding) return xml if xml.startswith('%s' % (encoding, xml) def getInstContacts(inst): contacts = InstitutionContactPool.objects.filter(institution=inst) contact_pks = [] for contact in contacts: contact_pks.append(contact.contact.pk) return list(set(contact_pks)) def getInstServers(inst): servers = InstServer.objects.filter(instid=inst) server_pks = [] for server in servers: server_pks.append(server.pk) return list(set(server_pks)) def rad(x): return x*math.pi/180