def viewUserDebts(request, userKey=None): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager from models import Debt from forms import DebtForm, ExpenseYearFilter, DebtReturnForm from tuition.utils.appConstants import MONTH_NUM_FULL_NAME_DICT from tuition.utils.utils import ExportHandle, ExportClassHandle # keyToSetReminder = request.GET.get('key', None) # if keyToSetReminder: # debt = Debt.get(keyToSetReminder) # serializedObjectList = [debt.toDict] # GoogleCalendarService() loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) form = DebtForm(initial={'incurredDate' : datetime.date.today().strftime('%d/%m/%Y')}) markAsReturnForm = DebtReturnForm() template_values = { 'loggedInEmployee' : loggedInEmployee, 'yearFilterForm' : ExpenseYearFilter(), 'monthNameDict' : MONTH_NUM_FULL_NAME_DICT, 'exportHandle' : ExportHandle.asDict(), 'classHandle' : ExportClassHandle.asDict(), 'form' : form, 'markAsReturnForm' : markAsReturnForm } return render_to_response('viewDebts.html', template_values, context_instance=RequestContext(request))
def profile(request): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.utils import GooglePlusService from tuition.utils.manager import AppManager from forms import UserRegistrationForm user = AppManager.getCurrentLoggedInUser() loggedInEmployee = AppManager.getUserByEmail(user.email()) loggedInEmployee.id = user.user_id() response = GooglePlusService(request=request, loggedInEmployee=loggedInEmployee).getUserInfo(setImageSize=250) if isinstance(response, dict): locationFromPlus = response.get('userInfo', {}).get('currentLocation', '') if not locationFromPlus: placesLived = response.get('userInfo', {}).get('placesLived', []) if placesLived and placesLived[0].get('primary'): locationFromPlus = placesLived[0].get('value') template_values = { 'form' : UserRegistrationForm(initial={ 'firstName' : loggedInEmployee.firstName, 'lastName' : loggedInEmployee.lastName, 'alternateEmail' : loggedInEmployee.alternateEmail, 'dob' : loggedInEmployee.dob.strftime('%d/%m/%Y'), 'about' : loggedInEmployee.about or '' }), 'loggedInEmployee' : loggedInEmployee, 'publicProfile' : response.get('userInfo', {}).get('url', '#'), 'imageUrl' : response.get('userInfo', {}).get('image', {}).get('url', '/images/emptyProfile.gif'), 'locationFromPlus' : locationFromPlus, 'about' : response.get('userInfo', {}).get('aboutMe', '') } return render_to_response('userProfile.html', template_values, context_instance=RequestContext(request)) return response
def viewUserDebts(request, userKey=None): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager from models import Debt from forms import DebtForm, ExpenseYearFilter, DebtReturnForm from tuition.utils.appConstants import MONTH_NUM_FULL_NAME_DICT from tuition.utils.utils import ExportHandle, ExportClassHandle # keyToSetReminder = request.GET.get('key', None) # if keyToSetReminder: # debt = Debt.get(keyToSetReminder) # serializedObjectList = [debt.toDict] # GoogleCalendarService() loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) form = DebtForm( initial={'incurredDate': datetime.date.today().strftime('%d/%m/%Y')}) markAsReturnForm = DebtReturnForm() template_values = { 'loggedInEmployee': loggedInEmployee, 'yearFilterForm': ExpenseYearFilter(), 'monthNameDict': MONTH_NUM_FULL_NAME_DICT, 'exportHandle': ExportHandle.asDict(), 'classHandle': ExportClassHandle.asDict(), 'form': form, 'markAsReturnForm': markAsReturnForm } return render_to_response('viewDebts.html', template_values, context_instance=RequestContext(request))
def contributor(request): from tuition.utils.manager import AppManager template_values = { 'loggedInEmployee' : AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) } return render_to_response('contributors.html', template_values, context_instance=RequestContext(request))
def home(request): from tuition.utils.manager import AppManager, UserFilter UserFilter().checkUserRole(request.path) template_values = { 'loggedInEmployee' : AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()), } return render_to_response('home.html', template_values, context_instance=RequestContext(request))
def export(request): import datetime from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager from tuition.utils.utils import ExportSelector, EXPORT_HANDLE_LABELS, getMonthEnd serializedObjectList = [] linkToFile = None fileName = None isSaved = False noData = True invalidHandle = True response = {} classHandle = request.GET.get('classHandle', None) exportHandle = request.GET.get('handle', None) exportDate = datetime.datetime.strptime(request.GET.get('date', datetime.date.today().strftime('%d_%m_%Y')), '%d_%m_%Y') firstOfMonth = datetime.date(exportDate.year, exportDate.month, 1) endOfMonth = datetime.date(exportDate.year, exportDate.month, getMonthEnd(exportDate.month, exportDate.year)) loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) classWrapper = ExportSelector.getClass(classHandle) dataList = classWrapper().getForPeriod(loggedInEmployee.key(), firstOfMonth, endOfMonth) if dataList: noData = False for data in dataList: serializedObjectList.append(data.toDict) exporterClass = ExportSelector.getHandle(exportHandle) if exporterClass: invalidHandle = False exporterInstance = exporterClass( serializedObjects=serializedObjectList, request=request, remove=['key', 'user', 'calendarReminderURL', 'createdOn', 'updatedOn'], date=exportDate, namePrefix=classHandle ) response = exporterInstance.upload() if isinstance(response, dict): isSaved = response.get('isSaved') linkToFile = response.get('fileResponse', {}).get('alternateLink') fileName = response.get('fileResponse', {}).get('title') template_values = { 'isSaved' : isSaved, 'linkToFile' : linkToFile, 'fileName' : fileName, 'handle' : EXPORT_HANDLE_LABELS.get(exportHandle, exportHandle), 'classHandle' : classHandle, 'invalidHandle' : invalidHandle, 'noData' : noData, 'loggedInEmployee' : loggedInEmployee } return render_to_response('exportFinish.html', template_values, context_instance=RequestContext(request)) else: return response
def addADebt(request): from tuition.settings import SITE_SUPPORT_EMAIL from forms import DebtForm from tuition.utils.manager import AppManager form = DebtForm(initial={'incurredDate' : datetime.date.today().strftime('%d/%m/%Y')}) template_values = { 'form' : form, 'loggedInEmployee' : AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) } return render_to_response('newDebt.html', template_values, context_instance=RequestContext(request))
def export(request): import datetime from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager from tuition.tools.models import Expenses from tuition.utils.utils import ExportSelector, EXPORT_HANDLE_LABELS, getMonthEnd serializedObjectList = [] linkToFile = None fileName = None isSaved = False invalidHandle = True response = {} exportHandle = request.GET.get('handle', None) exportDate = datetime.datetime.strptime(request.GET.get('date', datetime.date.today().strftime('%d_%m_%Y')), '%d_%m_%Y') firstOfMonth = datetime.date(exportDate.year, exportDate.month, 1) endOfMonth = datetime.date(exportDate.year, exportDate.month, getMonthEnd(exportDate.month, exportDate.year)) loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) expensesList = Expenses.all().filter('user ='******'dateOfExpense >=', firstOfMonth).filter('dateOfExpense <=', endOfMonth).order('-dateOfExpense').fetch(limit=1000) if expensesList: for expense in expensesList: serializedObjectList.append(expense.toDict) exporterClass = ExportSelector.get(exportHandle) if exporterClass: invalidHandle = False exporterInstance = exporterClass( serializedObjects=serializedObjectList, request=request, remove=['key', 'user'], date=exportDate ) response = exporterInstance.upload() if isinstance(response, dict): isSaved = response.get('isSaved') linkToFile = response.get('fileResponse', {}).get('alternateLink') fileName = response.get('fileResponse', {}).get('title') template_values = { 'isSaved' : isSaved, 'linkToFile' : linkToFile, 'fileName' : fileName, 'handle' : EXPORT_HANDLE_LABELS.get(exportHandle, exportHandle), 'invalidHandle' : invalidHandle, 'loggedInEmployee' : loggedInEmployee, 'url' : AppManager.createLogoutURL(), 'homePage' : '/', 'supportEmail' : SITE_SUPPORT_EMAIL } return render_to_response('exportFinish.html', template_values) else: return response
def getTodaysExpense(self): import datetime from tuition.tools.models import Expenses from tuition.utils.manager import AppManager serializedObjects = [] loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) today = datetime.date.today() todaysExpense = Expenses.all().filter('user ='******'dateOfExpense =', today).order('-dateOfExpense') todaysExpense = todaysExpense.fetch(limit=1000) for expense in todaysExpense: serializedObjects.append(expense.toDict) return self.respond(expenses=serializedObjects)
def home(request): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager, UserFilter UserFilter().checkUserRole(request.path) template_values = { 'loggedInEmployee' : AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()), 'url' : AppManager.createLogoutURL(), 'homePage' : '/', 'supportEmail' : SITE_SUPPORT_EMAIL } return render_to_response('home.html', template_values)
def getTodaysDebt(self): import datetime from tuition.tools.models import Debt from tuition.utils.manager import AppManager serializedObjects = [] loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) today = datetime.date.today() todaysDebt = Debt.all().filter('user ='******'incurredDate =', today).order('-incurredDate') todaysDebt = todaysDebt.fetch(limit=1000) for debt in todaysDebt: serializedObjects.append(debt.toDict) return self.respond(debts=serializedObjects)
def getExpenseOfYear(self, value): import datetime from tuition.tools.models import Expenses from tuition.utils.manager import AppManager from tuition.utils.appConstants import MONTH_NUM_FULL_NAME_DICT serializedList = [] year = int(value.get('year', 2013)) dateToCheck = datetime.date(year, 1, 1) loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) expenseOfTheYear = Expenses.all().filter('user ='******'dateOfExpense >=', dateToCheck).fetch(1000) for expense in expenseOfTheYear: serializedList.append(expense.toDict) return self.respond(expenses=serializedList)
def getExpenseThisWeek(self): import datetime from tuition.tools.models import Expenses from tuition.utils.manager import AppManager from tuition.utils.utils import weekStartEnd serializedObjects = [] loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) startOfWeek = weekStartEnd().get('start') thisWeeksExpense = Expenses.all().filter('user ='******'dateOfExpense >=', startOfWeek).order('-dateOfExpense') thisWeeksExpense = thisWeeksExpense.fetch(limit=1000) for expense in thisWeeksExpense: serializedObjects.append(expense.toDict) return self.respond(expenses=serializedObjects)
def addAnExpense(request): from tuition.settings import SITE_SUPPORT_EMAIL from forms import ExpenseForm from tuition.utils.manager import AppManager form = ExpenseForm(initial={'dateOfExpense' : datetime.date.today().strftime('%d/%m/%Y')}) template_values = { 'form' : form, 'loggedInEmployee' : AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()), 'url' : AppManager.createLogoutURL(), 'homePage' : '/', 'supportEmail' : SITE_SUPPORT_EMAIL } return render_to_response('newExpense.html', template_values)
def getDebtThisWeek(self): import datetime from tuition.tools.models import Debt from tuition.utils.manager import AppManager from tuition.utils.utils import weekStartEnd serializedObjects = [] loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) startOfWeek = weekStartEnd().get('start') thisWeeksDebt = Debt.all().filter('user ='******'incurredDate >=', startOfWeek).order('-incurredDate') thisWeeksDebt = thisWeeksDebt.fetch(limit=1000) for debt in thisWeeksDebt: serializedObjects.append(debt.toDict) return self.respond(debts=serializedObjects)
def getDebtOfYear(self, value): import datetime from tuition.tools.modelWrapper import DebtWrapper from tuition.utils.manager import AppManager from tuition.utils.appConstants import MONTH_NUM_FULL_NAME_DICT serializedList = [] year = int(value.get('year', 2013)) firstOfYear = datetime.date(year, 1, 1) endOfYear = datetime.date(year, 12, 31) loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) debtOfTheYear = DebtWrapper().getForPeriod(loggedInEmployee.key(), firstOfYear, endOfYear) for debt in debtOfTheYear: serializedList.append(debt.toDict) return self.respond(debts=serializedList)
def addRole(request): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.role.forms import RoleAddForm from tuition.utils.manager import UserFilter, AppManager UserFilter().checkUserRole(request.path) template_values = { 'loggedInEmployee' : AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()), 'url' : AppManager.createLogoutURL(), 'homePage' : '/', 'supportEmail' : SITE_SUPPORT_EMAIL, 'permissions' : PERMISSIONS, 'form' : RoleAddForm() } return render_to_response('addRole.html', template_values)
def viewRoles(request): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.role.models import Role from tuition.utils.manager import UserFilter, AppManager UserFilter().checkUserRole(request.path) roles = Role.all().fetch(limit = 1000) template_values = { 'loggedInEmployee' : AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()), 'url' : AppManager.createLogoutURL(), 'homePage' : '/', 'supportEmail' : SITE_SUPPORT_EMAIL, 'roles' : roles, 'permissions' : PERMISSIONS } return render_to_response('viewRoles.html', template_values)
def addADebt(request): from tuition.settings import SITE_SUPPORT_EMAIL from forms import DebtForm from tuition.utils.manager import AppManager form = DebtForm( initial={'incurredDate': datetime.date.today().strftime('%d/%m/%Y')}) template_values = { 'form': form, 'loggedInEmployee': AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) } return render_to_response('newDebt.html', template_values, context_instance=RequestContext(request))
def saveDebt(self, serializedFormValues): from tuition.utils.manager import AppManager from tuition.tools.forms import DebtForm from tuition.tools.models import Debt, Expenses modelsToPut = [] savedExpenseKey = None savedDebtKey = None form = DebtForm(data = serializedFormValues) loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) if form.is_valid(): dictToSave = { 'user' : loggedInEmployee.key(), 'type' : form.cleaned_data['type'], 'amount' : form.cleaned_data['amount'], 'incurredDate' : form.cleaned_data['incurredDate'], 'returnDate' : form.cleaned_data['returnDate'], 'expenseOfMonth' : form.cleaned_data['expenseOfMonth'], 'hasReturned' : form.cleaned_data['hasReturned'], 'comments' : form.cleaned_data['comments'] } newDebt = Debt(**dictToSave) modelsToPut.append(newDebt) if form.cleaned_data['hasReturned']: dictToSave = { 'user' : loggedInEmployee.key(), 'type' : 'Debt Return', 'amount' : newDebt.amount, 'dateOfExpense' : form.cleaned_data['expenseOfMonth'], 'comments' : '' } newExpense = Expenses(**dictToSave) modelsToPut.append(newExpense) if len(modelsToPut) > 1: savedDebtKey, savedExpenseKey = db.put(modelsToPut) elif len(modelsToPut) == 1: savedDebtKey = db.put(modelsToPut) return self.respond( isSaved=True, savedDebtKey=str(savedDebtKey), savedExpenseKey=str(savedExpenseKey), savedDebt=newDebt.toDict ) else: return self.respond(isSaved=False, errors=form.errors)
def getTodaysExpense(self): import datetime from tuition.tools.models import Expenses from tuition.utils.manager import AppManager serializedObjects = [] loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) today = datetime.date.today() todaysExpense = Expenses.all().filter( 'user ='******'dateOfExpense =', today).order('-dateOfExpense') todaysExpense = todaysExpense.fetch(limit=1000) for expense in todaysExpense: serializedObjects.append(expense.toDict) return self.respond(expenses=serializedObjects)
def saveDebt(self, serializedFormValues): from tuition.utils.manager import AppManager from tuition.tools.forms import DebtForm from tuition.tools.models import Debt, Expenses modelsToPut = [] savedExpenseKey = None savedDebtKey = None form = DebtForm(data=serializedFormValues) loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) if form.is_valid(): dictToSave = { 'user': loggedInEmployee.key(), 'type': form.cleaned_data['type'], 'amount': form.cleaned_data['amount'], 'incurredDate': form.cleaned_data['incurredDate'], 'returnDate': form.cleaned_data['returnDate'], 'expenseOfMonth': form.cleaned_data['expenseOfMonth'], 'hasReturned': form.cleaned_data['hasReturned'], 'comments': form.cleaned_data['comments'] } newDebt = Debt(**dictToSave) modelsToPut.append(newDebt) if form.cleaned_data['hasReturned']: dictToSave = { 'user': loggedInEmployee.key(), 'type': 'Debt Return', 'amount': newDebt.amount, 'dateOfExpense': form.cleaned_data['expenseOfMonth'], 'comments': '' } newExpense = Expenses(**dictToSave) modelsToPut.append(newExpense) if len(modelsToPut) > 1: savedDebtKey, savedExpenseKey = db.put(modelsToPut) elif len(modelsToPut) == 1: savedDebtKey = db.put(modelsToPut) return self.respond(isSaved=True, savedDebtKey=str(savedDebtKey), savedExpenseKey=str(savedExpenseKey), savedDebt=newDebt.toDict) else: return self.respond(isSaved=False, errors=form.errors)
def getTodaysDebt(self): import datetime from tuition.tools.models import Debt from tuition.utils.manager import AppManager serializedObjects = [] loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) today = datetime.date.today() todaysDebt = Debt.all().filter('user ='******'incurredDate =', today).order('-incurredDate') todaysDebt = todaysDebt.fetch(limit=1000) for debt in todaysDebt: serializedObjects.append(debt.toDict) return self.respond(debts=serializedObjects)
def profile(request): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.utils import GooglePlusService from tuition.utils.manager import AppManager from forms import UserRegistrationForm user = AppManager.getCurrentLoggedInUser() loggedInEmployee = AppManager.getUserByEmail(user.email()) loggedInEmployee.id = user.user_id() response = GooglePlusService( request=request, loggedInEmployee=loggedInEmployee).getUserInfo(setImageSize=250) if isinstance(response, dict): locationFromPlus = response.get('userInfo', {}).get('currentLocation', '') if not locationFromPlus: placesLived = response.get('userInfo', {}).get('placesLived', []) if placesLived and placesLived[0].get('primary'): locationFromPlus = placesLived[0].get('value') template_values = { 'form': UserRegistrationForm( initial={ 'firstName': loggedInEmployee.firstName, 'lastName': loggedInEmployee.lastName, 'alternateEmail': loggedInEmployee.alternateEmail, 'dob': loggedInEmployee.dob.strftime('%d/%m/%Y'), 'about': loggedInEmployee.about or '' }), 'loggedInEmployee': loggedInEmployee, 'publicProfile': response.get('userInfo', {}).get('url', '#'), 'imageUrl': response.get('userInfo', {}).get('image', {}).get('url', '/images/emptyProfile.gif'), 'locationFromPlus': locationFromPlus, 'about': response.get('userInfo', {}).get('aboutMe', '') } return render_to_response('userProfile.html', template_values, context_instance=RequestContext(request)) return response
def getDebtOfYear(self, value): import datetime from tuition.tools.modelWrapper import DebtWrapper from tuition.utils.manager import AppManager from tuition.utils.appConstants import MONTH_NUM_FULL_NAME_DICT serializedList = [] year = int(value.get('year', 2013)) firstOfYear = datetime.date(year, 1, 1) endOfYear = datetime.date(year, 12, 31) loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) debtOfTheYear = DebtWrapper().getForPeriod(loggedInEmployee.key(), firstOfYear, endOfYear) for debt in debtOfTheYear: serializedList.append(debt.toDict) return self.respond(debts=serializedList)
def getExpenseOfYear(self, value): import datetime from tuition.tools.models import Expenses from tuition.utils.manager import AppManager from tuition.utils.appConstants import MONTH_NUM_FULL_NAME_DICT serializedList = [] year = int(value.get('year', 2013)) dateToCheck = datetime.date(year, 1, 1) loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) expenseOfTheYear = Expenses.all().filter( 'user ='******'dateOfExpense >=', dateToCheck).fetch(1000) for expense in expenseOfTheYear: serializedList.append(expense.toDict) return self.respond(expenses=serializedList)
def getExpenseThisMonth(self, values): import datetime from tuition.tools.models import Expenses from tuition.utils.manager import AppManager from tuition.utils.utils import getMonthEnd serializedObjects = [] year = int(values.get('year', 2013)) month = int(values.get('month', datetime.date.today().month)) loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) firstOfMonth = datetime.date(year, month, 1) endOfMonth = datetime.date(year, month, getMonthEnd(month, year)) thisMonthExpense = Expenses.all().filter('user ='******'dateOfExpense >=', firstOfMonth).filter('dateOfExpense <=', endOfMonth).order('-dateOfExpense') thisMonthExpense = thisMonthExpense.fetch(limit=1000) for expense in thisMonthExpense: serializedObjects.append(expense.toDict) return self.respond(expenses=serializedObjects)
def getDebtThisWeek(self): import datetime from tuition.tools.models import Debt from tuition.utils.manager import AppManager from tuition.utils.utils import weekStartEnd serializedObjects = [] loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) startOfWeek = weekStartEnd().get('start') thisWeeksDebt = Debt.all().filter( 'user ='******'incurredDate >=', startOfWeek).order('-incurredDate') thisWeeksDebt = thisWeeksDebt.fetch(limit=1000) for debt in thisWeeksDebt: serializedObjects.append(debt.toDict) return self.respond(debts=serializedObjects)
def getExpenseThisWeek(self): import datetime from tuition.tools.models import Expenses from tuition.utils.manager import AppManager from tuition.utils.utils import weekStartEnd serializedObjects = [] loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) startOfWeek = weekStartEnd().get('start') thisWeeksExpense = Expenses.all().filter( 'user ='******'dateOfExpense >=', startOfWeek).order('-dateOfExpense') thisWeeksExpense = thisWeeksExpense.fetch(limit=1000) for expense in thisWeeksExpense: serializedObjects.append(expense.toDict) return self.respond(expenses=serializedObjects)
def viewUserExpenses(request, userKey=None): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager from models import Expenses from forms import ExpenseForm, ExpenseYearFilter from tuition.utils.appConstants import MONTH_NUM_FULL_NAME_DICT from tuition.utils.utils import ExportHandle, ExportClassHandle loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) form = ExpenseForm(initial={'dateOfExpense' : datetime.date.today().strftime('%d/%m/%Y')}) template_values = { 'loggedInEmployee' : loggedInEmployee, 'yearFilterForm' : ExpenseYearFilter(), 'monthNameDict' : MONTH_NUM_FULL_NAME_DICT, 'exportHandle' : ExportHandle.asDict(), 'classHandle' : ExportClassHandle.asDict(), 'form' : form } return render_to_response('viewExpenses.html', template_values, context_instance=RequestContext(request))
def saveAnExpense(self, serializedFormValues): from tuition.utils.manager import AppManager from tuition.tools.forms import ExpenseForm from tuition.tools.models import Expenses form = ExpenseForm(data = serializedFormValues) loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) if form.is_valid(): dictToSave = { 'user' : loggedInEmployee.key(), 'type' : form.cleaned_data['type'], 'amount' : form.cleaned_data['amount'], 'dateOfExpense' : form.cleaned_data['dateOfExpense'], 'comments' : form.cleaned_data['comments'] } newExpense = Expenses(**dictToSave) return self.respond(isSaved=True, savedExpenseKey=str(db.put(newExpense))) else: return self.respond(isSaved=False, errors=form.errors)
def markDebtReturn(self, serializedFormValues): from tuition.tools.models import Expenses, Debt from tuition.tools.forms import DebtReturnForm from tuition.utils.manager import AppManager modelsToPut = [] form = DebtReturnForm(data = serializedFormValues) loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) debt = Debt.get(serializedFormValues['key']) form.debtIncurredDate = debt.incurredDate if form.is_valid() and not debt.hasReturned: dictToSave = { 'expenseOfMonth' : form.cleaned_data['markAsExpense'], 'hasReturned' : True } for key, value in dictToSave.iteritems(): setattr(debt, key, value) modelsToPut.append(debt) # we need to mark it as an expense of the given date. dictToSave = { 'user' : loggedInEmployee.key(), 'type' : 'Debt Return', 'amount' : debt.amount, 'dateOfExpense' : form.cleaned_data['markAsExpense'], 'comments' : form.cleaned_data['returnComments'] } expense = Expenses(**dictToSave) modelsToPut.append(expense) savedDebtKey, savedExpenseKey = db.put(modelsToPut) return self.respond( isSaved=True, savedDebtKey=str(savedDebtKey), savedExpenseKey=str(savedExpenseKey), savedDebt=debt.toDict ) else: return self.respond( isSaved=False, errors=form.errors, debtAlreadyReturned=debt.hasReturned )
def saveUser(self, serializedFormValues): from tuition.user.models import User from tuition.utils.manager import AppManager from tuition.user.forms import UserRegistrationForm isEdit = False loggedInEmployee = AppManager.getCurrentLoggedInUser() email = loggedInEmployee.email() form = UserRegistrationForm(data=serializedFormValues) if serializedFormValues.get('keyHidden'): isEdit = True loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) form.loggedInEmployeeKey = str(loggedInEmployee.key()) form.keyHidden = serializedFormValues.get('keyHidden') email = loggedInEmployee.email if form.is_valid(): dictToSave = { 'firstName' : form.cleaned_data['firstName'], 'lastName' : form.cleaned_data['lastName'], 'email' : email, 'alternateEmail' : form.cleaned_data['alternateEmail'], 'dob' : form.cleaned_data['dob'], 'about' : form.cleaned_data['about'] } if not isEdit: savedUser = User(**dictToSave) else: savedUser = User.get(serializedFormValues.get('keyHidden')) for key, value in dictToSave.iteritems(): setattr(savedUser, key, value) return self.respond( isSaved=True, isEdit=isEdit, savedUserKey=str(db.put(savedUser)), savedValues=savedUser.toDict ) else: return self.respond( isSaved=False, errors=form.errors )
def saveAnExpense(self, serializedFormValues): from tuition.utils.manager import AppManager from tuition.tools.forms import ExpenseForm from tuition.tools.models import Expenses form = ExpenseForm(data=serializedFormValues) loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) if form.is_valid(): dictToSave = { 'user': loggedInEmployee.key(), 'type': form.cleaned_data['type'], 'amount': form.cleaned_data['amount'], 'dateOfExpense': form.cleaned_data['dateOfExpense'], 'comments': form.cleaned_data['comments'] } newExpense = Expenses(**dictToSave) return self.respond(isSaved=True, savedExpenseKey=str(db.put(newExpense))) else: return self.respond(isSaved=False, errors=form.errors)
def process_request(self, request): import logging from django import http from django.shortcuts import render_to_response from tuition.settings import SITE_DOWN_FOR_MAINTENANCE, SITE_DOWN_DESCRIPTION, SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager AppManager.setDomain(request.get_host()) if AppManager.isCurrentUserAppAdmin(): return None url = AppManager.isUserLoggedIn(request.path, request.path) if url: logging.info("User has not logged in through Google Accounts.") logging.info("Going to redirect user to %s." % url) return http.HttpResponseRedirect(url) user = AppManager.getCurrentLoggedInUser() if user: if SITE_DOWN_FOR_MAINTENANCE: return render_to_response( "siteDown.html", {"description": SITE_DOWN_DESCRIPTION, "supportEmail": SITE_SUPPORT_EMAIL} ) # implement any OAuth in future. if not AppManager.getUserByEmail(user.email()) and request.path not in SAFE_TO_REDIRECT_URI: logging.info("User has not registered yet.") logging.info("Going to redirect user to /register") return http.HttpResponseRedirect("/register?firstLogin=1") return None return None
def register(request): from tuition.settings import SITE_SUPPORT_EMAIL from forms import UserRegistrationForm from tuition.utils.manager import AppManager from tuition.utils.utils import URLCreator from tuition.urlPatterns import UrlPattern from tuition.utils.utils import GooglePlusService queryString = int(request.GET.get('firstLogin', 0)) loggedInEmployee = AppManager.getCurrentLoggedInUser() if not AppManager.isCurrentUserAppAdmin(): if not queryString or AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()): raise Exception('Unauthorized Access') else: loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) template_values = { 'form': UserRegistrationForm(), 'loggedInEmployee': loggedInEmployee, 'queryString': queryString } return render_to_response('userRegistration.html', template_values, context_instance=RequestContext(request))
def process_request(self, request): import logging from django import http from django.shortcuts import render_to_response from django.template import RequestContext from tuition.settings import SITE_DOWN_FOR_MAINTENANCE, SITE_DOWN_DESCRIPTION, SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager AppManager.setDomain(request.get_host()) if AppManager.isCurrentUserAppAdmin(): return None url = AppManager.isUserLoggedIn(request.path, request.path) if url: logging.info('User has not logged in.') logging.info('Going to redirect user to %s.' % url) return http.HttpResponseRedirect(url) user = AppManager.getCurrentLoggedInUser() if user: if SITE_DOWN_FOR_MAINTENANCE: return render_to_response( 'siteDown.html', {'description' : SITE_DOWN_DESCRIPTION}, context_instance=RequestContext(request) ) # implement any OAuth in future. if not AppManager.getUserByEmail(user.email()) and request.path not in SAFE_TO_REDIRECT_URI: logging.info('User has not registered yet.') logging.info('Going to redirect user to /register') return http.HttpResponseRedirect('/register?firstLogin=1') return None return None
def process_request(self, request): import logging from django import http from django.shortcuts import render_to_response from django.template import RequestContext from tuition.settings import SITE_DOWN_FOR_MAINTENANCE, SITE_DOWN_DESCRIPTION, SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager AppManager.setDomain(request.get_host()) if AppManager.isCurrentUserAppAdmin(): return None url = AppManager.isUserLoggedIn(request.path, request.path) if url: logging.info('User has not logged in.') logging.info('Going to redirect user to %s.' % url) return http.HttpResponseRedirect(url) user = AppManager.getCurrentLoggedInUser() if user: if SITE_DOWN_FOR_MAINTENANCE: return render_to_response( 'siteDown.html', {'description': SITE_DOWN_DESCRIPTION}, context_instance=RequestContext(request)) # implement any OAuth in future. if not AppManager.getUserByEmail( user.email()) and request.path not in SAFE_TO_REDIRECT_URI: logging.info('User has not registered yet.') logging.info('Going to redirect user to /register') return http.HttpResponseRedirect('/register?firstLogin=1') return None return None
def getDebtThisMonth(self, values): import datetime from tuition.tools.models import Debt from tuition.utils.manager import AppManager from tuition.utils.utils import getMonthEnd serializedObjects = [] year = int(values.get('year', 2013)) month = int(values.get('month', datetime.date.today().month)) loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) firstOfMonth = datetime.date(year, month, 1) endOfMonth = datetime.date(year, month, getMonthEnd(month, year)) thisMonthDebts = Debt.all().filter( 'user ='******'incurredDate >=', firstOfMonth).filter('incurredDate <=', endOfMonth).order('-incurredDate') thisMonthDebts = thisMonthDebts.fetch(limit=1000) for debt in thisMonthDebts: serializedObjects.append(debt.toDict) return self.respond(debts=serializedObjects)
def updateExpensesCreatedAndUpdatedOn(request): from tuition.tools.models import Expenses from tuition.utils.manager import AppManager from google.appengine.ext import db from django import http import datetime if not AppManager.isCurrentUserAppAdmin(): raise Exception('Unauthorized Access') isOver = False pageNo = int(request.GET.get('pageNo', 0)) expenses = Expenses.all().fetch(limit=60, offset=pageNo*60) if expenses: for expense in expenses: expense.createdOn = datetime.datetime.now() expense.updatedOn = datetime.datetime.now() db.put(expenses) pageNo += 1 else: isOver = True content = """ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>Update Expenses</title></head> <body style="font-size: 18px;"> <div style="text-align:center font-weight:bold"> Number of records processed in this run : %d <form action="/updateExpensesCreatedAndUpdatedOn" method="GET"> <input type="hidden" name="pageNo" value="%d" /> <input type=submit value="Next"/> </form> </div> </body> </html>""" % (len(expenses), pageNo) if isOver: content = """ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title>Update Expenses</title></head> <body style="font-size: 18px;"> <div style="text-align:center font-weight:bold"> Updation Complete </div> </body> </html> """ response = http.HttpResponse() response.write(content) return response
def markDebtReturn(self, serializedFormValues): from tuition.tools.models import Expenses, Debt from tuition.tools.forms import DebtReturnForm from tuition.utils.manager import AppManager modelsToPut = [] form = DebtReturnForm(data=serializedFormValues) loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) debt = Debt.get(serializedFormValues['key']) form.debtIncurredDate = debt.incurredDate if form.is_valid() and not debt.hasReturned: dictToSave = { 'expenseOfMonth': form.cleaned_data['markAsExpense'], 'hasReturned': True } for key, value in dictToSave.iteritems(): setattr(debt, key, value) modelsToPut.append(debt) # we need to mark it as an expense of the given date. dictToSave = { 'user': loggedInEmployee.key(), 'type': 'Debt Return', 'amount': debt.amount, 'dateOfExpense': form.cleaned_data['markAsExpense'], 'comments': form.cleaned_data['returnComments'] } expense = Expenses(**dictToSave) modelsToPut.append(expense) savedDebtKey, savedExpenseKey = db.put(modelsToPut) return self.respond(isSaved=True, savedDebtKey=str(savedDebtKey), savedExpenseKey=str(savedExpenseKey), savedDebt=debt.toDict) else: return self.respond(isSaved=False, errors=form.errors, debtAlreadyReturned=debt.hasReturned)
def viewUserExpenses(request, userKey=None): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager from models import Expenses from forms import ExpenseForm, ExpenseYearFilter from tuition.utils.appConstants import MONTH_NUM_FULL_NAME_DICT from tuition.utils.utils import ExportHandle, ExportClassHandle loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) form = ExpenseForm( initial={'dateOfExpense': datetime.date.today().strftime('%d/%m/%Y')}) template_values = { 'loggedInEmployee': loggedInEmployee, 'yearFilterForm': ExpenseYearFilter(), 'monthNameDict': MONTH_NUM_FULL_NAME_DICT, 'exportHandle': ExportHandle.asDict(), 'classHandle': ExportClassHandle.asDict(), 'form': form } return render_to_response('viewExpenses.html', template_values, context_instance=RequestContext(request))
def saveUser(self, serializedFormValues): from tuition.user.models import User from tuition.utils.manager import AppManager from tuition.user.forms import UserRegistrationForm isEdit = False loggedInEmployee = AppManager.getCurrentLoggedInUser() email = loggedInEmployee.email() form = UserRegistrationForm(data=serializedFormValues) if serializedFormValues.get('keyHidden'): isEdit = True loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) form.loggedInEmployeeKey = str(loggedInEmployee.key()) form.keyHidden = serializedFormValues.get('keyHidden') email = loggedInEmployee.email if form.is_valid(): dictToSave = { 'firstName': form.cleaned_data['firstName'], 'lastName': form.cleaned_data['lastName'], 'email': email, 'alternateEmail': form.cleaned_data['alternateEmail'], 'dob': form.cleaned_data['dob'], 'about': form.cleaned_data['about'] } if not isEdit: savedUser = User(**dictToSave) else: savedUser = User.get(serializedFormValues.get('keyHidden')) for key, value in dictToSave.iteritems(): setattr(savedUser, key, value) return self.respond(isSaved=True, isEdit=isEdit, savedUserKey=str(db.put(savedUser)), savedValues=savedUser.toDict) else: return self.respond(isSaved=False, errors=form.errors)
def profile(request): from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.utils import GooglePlusService from tuition.utils.manager import AppManager from forms import UserRegistrationForm user = AppManager.getCurrentLoggedInUser() loggedInEmployee = AppManager.getUserByEmail(user.email()) loggedInEmployee.id = user.user_id() response = GooglePlusService(request=request, loggedInEmployee=loggedInEmployee).getUserInfo(setImageSize=250) if isinstance(response, dict): locationFromPlus = response.get("userInfo", {}).get("currentLocation", "") if not locationFromPlus: placesLived = response.get("userInfo", {}).get("placesLived", []) if placesLived and placesLived[0].get("primary"): locationFromPlus = placesLived[0].get("value") template_values = { "form": UserRegistrationForm( initial={ "firstName": loggedInEmployee.firstName, "lastName": loggedInEmployee.lastName, "alternateEmail": loggedInEmployee.alternateEmail, "dob": loggedInEmployee.dob.strftime("%d/%m/%Y"), "about": loggedInEmployee.about or "", } ), "loggedInEmployee": loggedInEmployee, "url": AppManager.createLogoutURL(), "homePage": "/", "supportEmail": SITE_SUPPORT_EMAIL, "publicProfile": response.get("userInfo", {}).get("url", "#"), "imageUrl": response.get("userInfo", {}).get("image", {}).get("url", "/images/emptyProfile.gif"), "locationFromPlus": locationFromPlus, "about": response.get("userInfo", {}).get("aboutMe", ""), } return render_to_response("userProfile.html", template_values) return response
def contextProcessor(request): import datetime from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.utils import ExportHandle, ExportClassHandle from tuition.utils.manager import AppManager return { 'url': AppManager.createLogoutURL(), 'homePage': '/', 'supportEmail': SITE_SUPPORT_EMAIL, 'spreadSheetHandle': ExportHandle.SPREADSHEET, 'expenseExportHandle': ExportClassHandle.EXPENSE, 'debtExportHandle': ExportClassHandle.DEBT, 'startOfMonth': datetime.date.today().replace(day=1) }
def register(request): from tuition.settings import SITE_SUPPORT_EMAIL from forms import UserRegistrationForm from tuition.utils.manager import AppManager from tuition.utils.utils import URLCreator from tuition.urlPatterns import UrlPattern from tuition.utils.utils import GooglePlusService queryString = int(request.GET.get("firstLogin", 0)) loggedInEmployee = AppManager.getCurrentLoggedInUser() if not AppManager.isCurrentUserAppAdmin(): if not queryString or AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()): raise Exception("Unauthorized Access") else: loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) template_values = { "form": UserRegistrationForm(), "loggedInEmployee": loggedInEmployee, "url": AppManager.createLogoutURL(), "homePage": "/", "supportEmail": SITE_SUPPORT_EMAIL, "queryString": queryString, } return render_to_response("userRegistration.html", template_values)
def register(request): from tuition.settings import SITE_SUPPORT_EMAIL from forms import UserRegistrationForm from tuition.utils.manager import AppManager from tuition.utils.utils import URLCreator from tuition.urlPatterns import UrlPattern from tuition.utils.utils import GooglePlusService queryString = int(request.GET.get('firstLogin', 0)) loggedInEmployee = AppManager.getCurrentLoggedInUser() if not AppManager.isCurrentUserAppAdmin(): if not queryString or AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()): raise Exception('Unauthorized Access') else: loggedInEmployee = AppManager.getUserByEmail(AppManager.getCurrentLoggedInUser().email()) template_values = { 'form' : UserRegistrationForm(), 'loggedInEmployee' : loggedInEmployee, 'queryString' : queryString } return render_to_response('userRegistration.html', template_values, context_instance=RequestContext(request))
def export(request): import datetime from tuition.settings import SITE_SUPPORT_EMAIL from tuition.utils.manager import AppManager from tuition.utils.utils import ExportSelector, EXPORT_HANDLE_LABELS, getMonthEnd serializedObjectList = [] linkToFile = None fileName = None isSaved = False noData = True invalidHandle = True response = {} classHandle = request.GET.get('classHandle', None) exportHandle = request.GET.get('handle', None) exportDate = datetime.datetime.strptime( request.GET.get('date', datetime.date.today().strftime('%d_%m_%Y')), '%d_%m_%Y') firstOfMonth = datetime.date(exportDate.year, exportDate.month, 1) endOfMonth = datetime.date(exportDate.year, exportDate.month, getMonthEnd(exportDate.month, exportDate.year)) loggedInEmployee = AppManager.getUserByEmail( AppManager.getCurrentLoggedInUser().email()) classWrapper = ExportSelector.getClass(classHandle) dataList = classWrapper().getForPeriod(loggedInEmployee.key(), firstOfMonth, endOfMonth) if dataList: noData = False for data in dataList: serializedObjectList.append(data.toDict) exporterClass = ExportSelector.getHandle(exportHandle) if exporterClass: invalidHandle = False exporterInstance = exporterClass( serializedObjects=serializedObjectList, request=request, remove=[ 'key', 'user', 'calendarReminderURL', 'createdOn', 'updatedOn' ], date=exportDate, namePrefix=classHandle) response = exporterInstance.upload() if isinstance(response, dict): isSaved = response.get('isSaved') linkToFile = response.get('fileResponse', {}).get('alternateLink') fileName = response.get('fileResponse', {}).get('title') template_values = { 'isSaved': isSaved, 'linkToFile': linkToFile, 'fileName': fileName, 'handle': EXPORT_HANDLE_LABELS.get(exportHandle, exportHandle), 'classHandle': classHandle, 'invalidHandle': invalidHandle, 'noData': noData, 'loggedInEmployee': loggedInEmployee } return render_to_response('exportFinish.html', template_values, context_instance=RequestContext(request)) else: return response