|   | 1 |  initial version  | 
Found the answer! Basically the method is to reverse the coordinates on $O_K$ and re-echelonize the basis.
def basis_with_1(L):
  assert L.is_field();
  n = L.degree();
  R = matrix([[1 if i+j==n+1 else 0 for j in [1..n]] for i in [1..n]]);
  A = L.maximal_order().module().matrix();
  A = A*R;
  M = (ZZ^n).span_of_basis([vector(v) for v in A])
  A = matrix(M.echelonized_basis());
  A = R*A*R;
  return [L(v) for v in A]; 
sage: L = QuadraticField(-3)
sage: basis_with_1(L)
[1, 1/2*a + 1/2]
 Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.
 
                
                Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.