def location_edit(request, location_id=None, action='edit'): info = LocationInfo() if location_id: copy_url = reverse_lazy(info.copy_url_name, kwargs={ 'action': 'copy', 'location_id': location_id }) else: copy_url = None _title = 'Use this location as a template for creating a new location' if location_id: detail_page_url = reverse_lazy('location-info', kwargs={'locationid': location_id}) else: detail_page_url = "" extra_context = { 'copy_url': copy_url, 'copy_title': _title, 'detail_page_url': detail_page_url, } extra_context.update(info.template_context) return render_edit( request, Location, LocationForm, location_id, 'seeddb-location-edit', extra_context=extra_context, action=action, )
class VlanInfo(SeeddbInfo): active = {'vlan': True} caption = 'Vlan' tab_template = 'seeddb/tabs_vlan.html' _title = 'Vlan' _navpath = [('Vlan', reverse_lazy('seeddb-vlan'))] hide_move = True hide_delete = True back_url = reverse_lazy('seeddb-vlan')
def netbox_edit(request, netbox_id=None, suggestion=None, action='edit'): """Controller for edit or create of netbox""" info = NI() netbox = None copy_url = None if netbox_id: netbox = get_object_or_404(Netbox, pk=netbox_id) if action == 'edit': copy_url = reverse_lazy( info.copy_url_name, kwargs={'action': 'copy', 'netbox_id': netbox_id} ) if request.method == 'POST': if action == 'copy': # Remove stuff that should not be copied over post = request.POST.copy() post.pop('sysname', None) post.pop('type', None) post.pop('virtual_instance', None) form = NetboxModelForm(post) else: form = NetboxModelForm(request.POST, instance=netbox) if form.is_valid(): old_netbox = copy.deepcopy(netbox) netbox = netbox_do_save(form) messages.add_message(request, messages.SUCCESS, 'IP Device saved') log_netbox_change(request.account, old_netbox, netbox) return redirect(reverse('seeddb-netbox-edit', args=[netbox.pk])) else: messages.add_message(request, messages.ERROR, 'Form was not valid') else: if suggestion: form = NetboxModelForm(instance=netbox, initial={'ip': suggestion}) else: form = NetboxModelForm(instance=netbox) page_title = "Add new IP Device" if netbox: page_title = "Edit IP Device" if action == 'copy': page_title = "Copy IP Device" context = info.template_context context.update( { 'object': netbox, 'form': form, 'title': page_title, '_navpath': [('Edit Device', reverse_lazy('seeddb-netbox-edit'))], 'sub_active': netbox and {'edit': True} or {'add': True}, 'tab_template': 'seeddb/tabs_generic.html', 'copy_url': copy_url, 'copy_title': 'Use this netbox as a template for creating a new netbox', 'action': action, } ) return render(request, 'seeddb/netbox_wizard.html', context)
class OrganizationInfo(SeeddbInfo): active = {'organization': True} caption = 'Organizations' tab_template = 'seeddb/tabs_generic.html' _title = 'Organizations' _navpath = [('Organizations', reverse_lazy('seeddb-organization'))] delete_url = reverse_lazy('seeddb-organization') back_url = reverse_lazy('seeddb-organization') add_url = reverse_lazy('seeddb-organization-edit') bulk_url = reverse_lazy('seeddb-organization-bulk')
class CablingInfo(SeeddbInfo): active = {'cabling': True} caption = 'Cabling' tab_template = 'seeddb/tabs_generic.html' _title = 'Cabling' _navpath = [('Cabling', reverse_lazy('seeddb-cabling'))] hide_move = True delete_url = reverse_lazy('seeddb-cabling') back_url = reverse_lazy('seeddb-cabling') add_url = reverse_lazy('seeddb-cabling-edit') bulk_url = reverse_lazy('seeddb-cabling-bulk')
class PatchInfo(SeeddbInfo): active = {'patch': True} caption = 'Patch' tab_template = 'seeddb/tabs_generic.html' _title = 'Patch' _navpath = [('Patch', reverse_lazy('seeddb-patch'))] hide_move = True delete_url = reverse_lazy('seeddb-patch') back_url = reverse_lazy('seeddb-patch') add_url = reverse_lazy('seeddb-patch-edit') bulk_url = reverse_lazy('seeddb-patch-bulk')
class NetboxGroupInfo(SeeddbInfo): active = {'netboxgroup': True} caption = 'Device Group' tab_template = 'seeddb/tabs_generic.html' _title = 'Device Groups' _navpath = [('Device Groups', reverse_lazy('seeddb-netboxgroup'))] hide_move = True delete_url = reverse_lazy('seeddb-netboxgroup') back_url = reverse_lazy('seeddb-netboxgroup') add_url = reverse_lazy('seeddb-netboxgroup-edit') bulk_url = reverse_lazy('seeddb-netboxgroup-bulk')
class UsageInfo(SeeddbInfo): active = {'usage': True} caption = 'Usage categories' tab_template = 'seeddb/tabs_generic.html' _title = 'Usage categories' _navpath = [('Usage', reverse_lazy('seeddb-usage'))] hide_move = True delete_url = reverse_lazy('seeddb-usage') back_url = reverse_lazy('seeddb-usage') add_url = reverse_lazy('seeddb-usage-edit') bulk_url = reverse_lazy('seeddb-usage-bulk')
class NetboxInfo(SeeddbInfo): """Variable container""" active = {'netbox': True} caption = 'IP Devices' tab_template = 'seeddb/tabs_generic.html' _title = 'IP Devices' _navpath = [('IP Devices', reverse_lazy('seeddb-netbox'))] delete_url = reverse_lazy('seeddb-netbox') back_url = reverse_lazy('seeddb-netbox') add_url = reverse_lazy('seeddb-netbox-edit') bulk_url = reverse_lazy('seeddb-netbox-bulk')
class VendorInfo(SeeddbInfo): active = {'vendor': True} caption = 'Vendors' tab_template = 'seeddb/tabs_generic.html' _title = 'Vendors' _navpath = [('Vendors', reverse_lazy('seeddb-vendor'))] hide_move = True delete_url = reverse_lazy('seeddb-vendor') back_url = reverse_lazy('seeddb-vendor') add_url = reverse_lazy('seeddb-vendor-edit') bulk_url = reverse_lazy('seeddb-vendor-bulk')
class LocationInfo(SeeddbInfo): active = {'location': True} caption = 'Locations' tab_template = 'seeddb/tabs_generic.html' _title = 'Locations' _navpath = [('Locations', reverse_lazy('seeddb-location'))] hide_move = True delete_url = reverse_lazy('seeddb-location') back_url = reverse_lazy('seeddb-location') add_url = reverse_lazy('seeddb-location-edit') bulk_url = reverse_lazy('seeddb-location-bulk')
class RoomInfo(SeeddbInfo): """Room info object""" active = {'room': True} caption = 'Rooms' tab_template = 'seeddb/tabs_generic.html' _title = 'Rooms' _navpath = [('Rooms', reverse_lazy('seeddb-room'))] delete_url = reverse_lazy('seeddb-room') back_url = reverse_lazy('seeddb-room') add_url = reverse_lazy('seeddb-room-edit') bulk_url = reverse_lazy('seeddb-room-bulk')
class ServiceInfo(SeeddbInfo): active = {'service': True} caption = 'Services' tab_template = 'seeddb/tabs_generic.html' _title = 'Services' _navpath = [('Services', reverse_lazy('seeddb-service'))] delete_url = reverse_lazy('seeddb-service') back_url = reverse_lazy('seeddb-service') add_url = reverse_lazy('seeddb-service-edit') bulk_url = reverse_lazy('seeddb-service-bulk') hide_move = True
class NetboxTypeInfo(SeeddbInfo): active = {'type': True} caption = 'Types' tab_template = 'seeddb/tabs_generic.html' _title = 'Types' _navpath = [('Types', reverse_lazy('seeddb-type'))] hide_move = True delete_url = reverse_lazy('seeddb-type') back_url = reverse_lazy('seeddb-type') add_url = reverse_lazy('seeddb-type-edit') bulk_url = reverse_lazy('seeddb-type-bulk')
class OrganizationInfo(SeeddbInfo): active_page = 'organization' active = {active_page: True} caption = "{}s".format(active_page.capitalize()) _title = caption tab_template = 'seeddb/tabs_generic.html' verbose_name = Organization._meta.verbose_name _navpath = [('Organizations', reverse_lazy('seeddb-organization'))] delete_url = reverse_lazy('seeddb-organization') back_url = reverse_lazy('seeddb-organization') add_url = reverse_lazy('seeddb-organization-edit') bulk_url = reverse_lazy('seeddb-organization-bulk')
class PrefixInfo(SeeddbInfo): """Info-container for prefix""" active = {'prefix': True} caption = 'Prefix' tab_template = 'seeddb/tabs_generic.html' _title = 'Prefix' _navpath = [('Prefix', reverse_lazy('seeddb-prefix'))] delete_url = reverse_lazy('seeddb-prefix') back_url = reverse_lazy('seeddb-prefix') add_url = reverse_lazy('seeddb-prefix-edit') bulk_url = reverse_lazy('seeddb-prefix-bulk') hide_move = True
class UsageInfo(SeeddbInfo): """Class for storing meta information related to editing usages""" active = {'usage': True} caption = 'Usage categories' tab_template = 'seeddb/tabs_generic.html' _title = 'Usage categories' verbose_name = Usage._meta.verbose_name _navpath = [('Usage', reverse_lazy('seeddb-usage'))] hide_move = True delete_url = reverse_lazy('seeddb-usage') back_url = reverse_lazy('seeddb-usage') add_url = reverse_lazy('seeddb-usage-edit') bulk_url = reverse_lazy('seeddb-usage-bulk')
class VendorInfo(SeeddbInfo): """Class for storing meta information related to vendors in SeedDB""" active = {'vendor': True} caption = 'Vendors' verbose_name = Vendor._meta.verbose_name tab_template = 'seeddb/tabs_generic.html' _title = 'Vendors' _navpath = [('Vendors', reverse_lazy('seeddb-vendor'))] hide_move = True delete_url = reverse_lazy('seeddb-vendor') back_url = reverse_lazy('seeddb-vendor') add_url = reverse_lazy('seeddb-vendor-edit') bulk_url = reverse_lazy('seeddb-vendor-bulk')
class ManagementProfileInfo(SeeddbInfo): """Management Profile info object""" active = {'management_profile': True} caption = 'Management Profile' tab_template = 'seeddb/tabs_generic.html' _title = 'Management Profiles' verbose_name = ManagementProfile._meta.verbose_name _navpath = [('Management Profiles', reverse_lazy('seeddb-management-profile'))] delete_url = reverse_lazy('seeddb-management-profile') back_url = reverse_lazy('seeddb-management-profile') add_url = reverse_lazy('seeddb-management-profile-edit') bulk_url = reverse_lazy('seeddb-management-profile-bulk') hide_move = True
class CablingInfo(SeeddbInfo): active = {'cabling': True} caption = 'Cabling' active_page = 'cabling' documentation_url = '/doc/reference/cabling_and_patch.html' tab_template = 'seeddb/tabs_generic.html' _title = 'Cabling' verbose_name = Cabling._meta.verbose_name _navpath = [('Cabling', reverse_lazy('seeddb-cabling'))] hide_move = True delete_url = reverse_lazy('seeddb-cabling') back_url = reverse_lazy('seeddb-cabling') add_url = reverse_lazy('seeddb-cabling-add') bulk_url = reverse_lazy('seeddb-cabling-bulk')
class PatchInfo(SeeddbInfo): """Class for storing meta information related to patches in SeedDB""" active = {'patch': True} active_page = 'patch' documentation_url = '/doc/reference/cabling_and_patch.html' caption = 'Patch' tab_template = 'seeddb/tabs_generic.html' _title = 'Patch' verbose_name = Patch._meta.verbose_name _navpath = [('Patch', reverse_lazy('seeddb-patch'))] hide_move = True delete_url = reverse_lazy('seeddb-patch') back_url = reverse_lazy('seeddb-patch') add_url = reverse_lazy('seeddb-patch-edit') bulk_url = reverse_lazy('seeddb-patch-bulk')
def room_edit(request, action='edit', room_id=None, lat=None, lon=None): """Controller for editing a room""" info = RoomInfo() if room_id: copy_url = reverse_lazy( info.copy_url_name, kwargs={'action': 'copy', 'room_id': room_id} ) else: copy_url = None roompositions = [ [float(r.position[0]), float(r.position[1])] for r in Room.objects.all() if r.position ] extra_context = { 'map': True, 'roompositions': roompositions, 'copy_url': copy_url, 'copy_title': 'Use this room as a template for creating a new room', } extra_context.update(info.template_context) return render_edit( request, Room, RoomForm, room_id, 'seeddb-room-edit', lon=lon, lat=lat, extra_context=extra_context, action=action, )
def netbox_render(request, step, netbox, netbox_form, serial_form, group_form, title): """Move some code to another function to make it cleaner""" info = NI() context = info.template_context context.update({ 'step': step, 'object': netbox, 'form': netbox_form, 'serial_form': serial_form, 'netboxgroup_form': group_form, 'title': title, '_navpath': [('Edit Device', reverse_lazy('seeddb-netbox-edit'))], 'sub_active': netbox and { 'edit': True } or { 'add': True }, 'tab_template': 'seeddb/tabs_generic.html', }) return render_to_response('seeddb/netbox_wizard.html', context, RequestContext(request))
def prefix_edit(request, prefix_id=None): """Controller for editing a prefix""" info = PrefixInfo() prefix, vlan = get_prefix_and_vlan(prefix_id) if request.method == 'POST': prefix_form = PrefixForm(request.POST, instance=prefix) vlan_form = PrefixVlanForm(request.POST, instance=vlan) if prefix_form.is_valid() and vlan_form.is_valid(): vlan = vlan_form.save() prefix = prefix_form.save(commit=False) prefix.vlan = vlan prefix.save() msg = "Saved prefix %s" % prefix.net_address new_message(request, msg, Messages.SUCCESS) return HttpResponseRedirect( reverse('seeddb-prefix-edit', args=(prefix.id, ))) else: prefix_form = PrefixForm(instance=prefix, initial=request.GET.dict()) vlan_form = PrefixVlanForm(instance=vlan, initial=request.GET.dict()) if prefix_id: detail_page_url = reverse_lazy('prefix-details', kwargs={'prefix_id': prefix_id}) else: detail_page_url = "" context = info.template_context context.update({ 'object': prefix, 'form': prefix_form, 'vlan_form': vlan_form, 'sub_active': prefix and { 'edit': True } or { 'add': True }, 'detail_page_url': detail_page_url, }) return render_edit( request, Prefix, PrefixForm, prefix_id, "seeddb-prefix-edit", template="seeddb/edit_prefix.html", extra_context=context, )
def netbox_render(request, step, netbox, netbox_form, serial_form, group_form, title): """Move some code to another function to make it cleaner""" info = NI() context = info.template_context context.update({ 'step': step, 'object': netbox, 'form': netbox_form, 'serial_form': serial_form, 'netboxgroup_form': group_form, 'title': title, '_navpath': [('Edit Device', reverse_lazy('seeddb-netbox-edit'))], 'sub_active': netbox and {'edit': True} or {'add': True}, 'tab_template': 'seeddb/tabs_generic.html', }) return render_to_response('seeddb/netbox_wizard.html', context, RequestContext(request))
def netbox_edit(request, netbox_id=None): """Controller for edit or create of netbox""" netbox = None if netbox_id: netbox = get_object_or_404(Netbox, pk=netbox_id) old_netbox = copy.deepcopy(netbox) if request.method == 'POST': form = NetboxModelForm(request.POST, instance=netbox) if form.is_valid(): netbox = netbox_do_save(form) messages.add_message(request, messages.SUCCESS, 'IP Device saved') log_netbox_change(request.account, old_netbox, netbox) return redirect(reverse('seeddb-netbox-edit', args=[netbox.pk])) else: messages.add_message(request, messages.ERROR, 'Form was not valid') else: suggestion = request.GET.get('suggestion') if suggestion: form = NetboxModelForm(instance=netbox, initial={'ip': suggestion}) else: form = NetboxModelForm(instance=netbox) info = NI() context = info.template_context context.update({ 'object': netbox, 'form': form, 'title': get_title(netbox), '_navpath': [('Edit Device', reverse_lazy('seeddb-netbox-edit'))], 'sub_active': netbox and { 'edit': True } or { 'add': True }, 'tab_template': 'seeddb/tabs_generic.html', }) return render(request, 'seeddb/netbox_wizard.html', context)
def vlan_edit(request, vlan_id=None): if vlan_id: detail_page_url = reverse_lazy('vlan-details', kwargs={'vlanid': vlan_id}) else: detail_page_url = "" info = VlanInfo() extra_context = { 'detail_page_url': detail_page_url, } extra_context.update(info.template_context) return render_edit( request, Vlan, VlanForm, vlan_id, 'seeddb-vlan-edit', template='seeddb/edit_vlan.html', extra_context=extra_context, )
def netboxgroup_edit(request, netboxgroup_id=None): if netboxgroup_id: detail_page_url = reverse_lazy('netbox-group-detail', kwargs={'groupid': netboxgroup_id}) else: detail_page_url = "" info = NetboxGroupInfo() extra_context = { 'detail_page_url': detail_page_url, } extra_context.update(info.template_context) return render_edit( request, NetboxGroup, DeviceGroupForm, netboxgroup_id, 'seeddb-netboxgroup-edit', template='seeddb/edit_device_group.html', extra_context=extra_context, )