Ejemplo n.º 1
0
def profile_employees():
  from models.account import Account
  from helpers.account import AccountHelper
  
  title = g._t('employees')
  if app.access('profile', action='administer'):
    employees = AccountHelper.listAccounts()
  elif app.access('profile', action='list'):
    employees = AccountHelper.listActiveAccounts()
  else:
    employees = [g.account]
    return redirect(url_for('profile_view', account_id=urllib.quote_plus(str(g.account.id))))
    
  return render_template('profile/employees.html', employees=employees, title=title)
Ejemplo n.º 2
0
def _activityHeader(**kwargs):
  from models.account import Account
  from models.project import Project, Component, Membership, Label
  from helpers.account import AccountHelper
  from helpers.project import ProjectHelper
  
  header = {}
  
  if kwargs.has_key('start_date'):
    header['start_date'] = kwargs['start_date']
  else:
    header['start_date'] = request.values.get('start_date', g._constant()['DATE']['MONTH'])
  #start_date = datetime.datetime.strptime(start_datestring, '%Y-%m-%d')
  #start_ts = start_date.strftime('%s')
  
  if kwargs.has_key('end_date'):
    header['end_date'] = kwargs['end_date']
  else:
    header['end_date'] = request.values.get('end_date', g._constant()['DATE']['TODAY'])
  #end_date = datetime.datetime.strptime(end_datestring, '%Y-%m-%d')
  #end_ts = end_date.strftime('%s')
  
  header['employees'] = []
  if kwargs.has_key('employees'):
    header['employees'] = kwargs['employees']
  elif app.access('profile', action='administer'):
    header['employees'] = AccountHelper.listAccounts()
  elif app.access('profile', action='list'):
    header['employees'] = AccountHelper.listActiveAccounts()
  elif app.access('profile', action='read', account=g.account):
    header['employees'] = [g.account]
  else:
    header['employees'] = []
  
  header['skip_projects'] = ProjectHelper.listVacationProjects()
  
  header['projects'] = []
  if kwargs.has_key('projects'):
    header['projects'] = kwargs['projects']
  elif app.access('project', action='administer'):
    header['projects'] = ProjectHelper.listAllComponents()
  elif app.access('project', action='list'):
    header['projects'] = ProjectHelper.listAllActiveComponents()
  elif app.access('membership', account=g.account):
    header['projects'] = ProjectHelper.listAllComponentsForMember(account=g.account)
  else:
    header['projects'] = []
  
  return header
Ejemplo n.º 3
0
def _get_chinese_cookie():
  from helpers.account import AccountHelper
  
  if not hasattr(request, 'chinese_cookie'):
    cc = AccountHelper.getChineseCookie()
    setattr(request, 'chinese_cookie', cc)
  return getattr(request, 'chinese_cookie')
Ejemplo n.º 4
0
def application_translations():
  from models.translation import Translation
  
  from helpers.account import AccountHelper
  
  language = AccountHelper.getPreference('language')
  
  data = dict([(translation.name, translation.value) for translation in Translation.query.filter_by(language=language).all()])
  
  return Response(json.dumps({'status':200, 'description':'OK', 'data':data, 'errors':[]}), mimetype='application/json')
Ejemplo n.º 5
0
def profile_preferences(account_id):
  from models.account import Account, Preference
  from helpers.account import AccountHelper
  
  account_id = urllib.unquote_plus(account_id)
  account = Account.query.filter_by(id=account_id).first()
  if not account:
    abort(404)
  elif not app.access('profile', action='update', account=account):
    abort(403)
  
  preferences = {
    'language': None,
    'floats_format': None,
    'report_time_format': None,
    'show_deleted_reports': None,
    'datepicker_multiple_days': None,
    'show_chinese_cookie': None
  }
  
  for key in preferences.keys():
    preference = Preference.query.filter_by(account_id=account.id, name=key).first()
    if not preference:
      preference = Preference()
      preference.account_id = account.id
      preference.name = key
      preference.value = AccountHelper.getPreference(key)
    preferences[key] = preference
  
  title = g._t('profile preferences')
  
  breadcrumbs = (
    (((not app.access('authenticated', account=account)) and g._t('employees') or ''), url_for('profile_employees')),
    ((app.access('authenticated', account=account) and g._t('me') or account.__str__()), url_for('profile_view', account_id=account_id)),
    (title, "#")
  )
  
  validationErrors = []
  
  if request.method == 'POST' and request.form.get('csrf_token'):
    for key, preference in preferences.items():
      preference.raw_value = request.form.get('preference_'+key, None)
      errors = preference.validate()
      validationErrors.extend(errors)
      if not errors:
        preference.save()
    
    if not validationErrors:
      flash( g._t('preference update success'))
    else:
      flash( g._t('preference update error'), 'error')
    return redirect(url_for('profile_preferences', account_id=urllib.quote_plus(account_id)))
  
  return render_template('profile/preferences.html', account_id=account_id, account=account, preferences=preferences, title=title, breadcrumbs=breadcrumbs, errors=validationErrors)
Ejemplo n.º 6
0
def _t(name, language=None, nodefault=False):
  from models.translation import Translation
  from helpers.account import AccountHelper
  
  if not language:
    language = AccountHelper.getPreference('language')
  
  translation = Translation.query.filter_by(name=name, language=language).first()
  if translation:
    return translation.value
  else:
    return (nodefault == False) and ':'+name or None
Ejemplo n.º 7
0
def session_preference(name, value):
  from helpers.account import AccountHelper
  import json
  
  value = urllib.unquote_plus(value)
  value = json.loads(value)
  
  AccountHelper.setPreference(name, value)
  
  if request.is_ajax:
    response = make_response(json.dumps({'status':200, 'description':'OK', 'errors':[]}))
    response.mimetype = 'application/json'
  else:
    if request.referrer and request.referrer != request.url:
      next = request.referrer
    else:
      next = url_for(app.config['HOME_PAGE'])
    response = make_response(redirect(next))
  
  response.set_cookie(name, json.dumps(value))
  return response
Ejemplo n.º 8
0
def project_members(project_id):
  from models.account import Account
  from models.project import Project, Component, Membership, Role
  from helpers.account import AccountHelper
  from helpers.project import ProjectHelper
  
  project_id = urllib.unquote_plus(project_id)
  project = Project.query.filter_by(id=project_id).first()
  if not project:
    abort(404)
  elif not app.access('project', action='update', project=project):
    abort(403)
  
  title = g._t('project members')
  
  breadcrumbs = (
    (g._t('projects'), url_for('project_index')),
    (project.__str__(), url_for('project_view', project_id=urllib.quote_plus(str(project_id)))),
    (title, "#")
  )
  
  if (request.form.get('method') == 'PUT' or request.method == 'PUT') and request.form.get('csrf_token'):
    submittedMembership = Membership.query.filter_by(project=project, id=request.form.get('membership_id')).first()
    if submittedMembership:
      submittedMembership.component = Component.query.filter_by(project=project, id=request.form.get('membership_component_id', None)).first()
      submittedMembership.account = Account.query.filter_by(id=request.form.get('membership_account_id', None)).first()
      submittedMembership.role = Role.query.filter_by(id=request.form.get('membership_role_id', None)).first()
      
      if not submittedMembership.validate():
        submittedMembership.save()
        
        flash( g._t('membership update success'))
        return redirect(url_for('project_members', project_id=urllib.quote_plus(str(project_id))))
    else:
      flash( g._t('membership not found'), 'error')
    
  elif (request.form.get('method') == 'DELETE' or request.method == 'DELETE') and request.form.get('csrf_token'):
    submittedMembership = Membership.query.filter_by(project=project, id=request.form.get('membership_id')).first()
    if submittedMembership:
      submittedMembership.delete()
    
      flash( g._t('membership delete success'))
      return redirect(url_for('project_members', project_id=urllib.quote_plus(str(project_id))))
    else:
      flash( g._t('membership not found'))
    
  elif (request.form.get('method') == 'POST' or request.method == 'POST') and request.form.get('csrf_token'):
    submittedMembership = Membership()
    submittedMembership.project_id = project.id
    component = Component.query.filter_by(project=project, id=request.form.get('membership_component_id', None)).first()
    if component:
      submittedMembership.component_id = component.id
    account = submittedMembership.account_id = Account.query.filter_by(id=request.form.get('membership_account_id', None)).first()
    if account:
      submittedMembership.account_id = account.id
    role = Role.query.filter_by(id=request.form.get('membership_role_id', None)).first()
    if role:
      submittedMembership.role_id = role.id
    
    if not submittedMembership.validate():
      submittedMembership.save()
      
      flash( g._t('membership create success'))
      return redirect(url_for('project_members', project_id=urllib.quote_plus(str(project_id))))
    
  else:
    submittedMembership = Membership()
  
  if app.access('profile', action='administer'):
    accountList =AccountHelper.listAccounts()
  elif app.access('profile', action='list'):
    accountList = AccountHelper.listActiveAccounts()
  else:
    accountList = [g.account]
  
  if app.access('profile', action='administer'):
    componentList = ProjectHelper.listComponents(project=project)
  elif app.access('profile', action='list'):
    componentList = ProjectHelper.listActiveComponents(project=project)
  else:
    componentList = [ProjectHelper.getDefaultComponent(project=project)]
  
  roleList = ProjectHelper.listRoles()
  
  return render_template('project/members.html', project_id=project_id, project=project, accountList=accountList, roleList=roleList, roleDefault=ProjectHelper.getDefaultRole(), submittedMembership=submittedMembership, title=title, breadcrumbs=breadcrumbs)
Ejemplo n.º 9
0
def _isset_preference(name):
  from helpers.account import AccountHelper
  
  return AccountHelper.issetPreference(name) is not False
Ejemplo n.º 10
0
def _get_preference(name):
  from helpers.account import AccountHelper
  
  return AccountHelper.getPreference(name)
Ejemplo n.º 11
0
def profile_edit(account_id=None):
  from models.account import Account, Group
  from helpers.account import AccountHelper
  
  account = None
  if not account_id:
    if not app.access('profile', action='create'):
      abort(403)
    account = Account()
    account.status = Account.STATUS_ACTIVE
    account.group_id = Group.query.filter_by(alias=Group.GROUP_DEFAULT).first().id
  else:
    account_id = urllib.unquote_plus(account_id)
    account = Account.query.filter_by(id=account_id).first()
    if not account:
      abort(404)
    elif not app.access('profile', action='update', account=account):
      abort(403)
  
  print '[GROUP]',account.group_id, account.group
  
  validationErrors = []
  if request.method == 'POST' and request.form.get('csrf_token', None):
    account.alias = request.values.get('account_alias', account.alias).strip()
    account.first_name = request.values.get('account_first_name', account.first_name).strip()
    account.last_name = request.values.get('account_last_name', account.last_name).strip()
    account.email = request.values.get('account_email', account.email).strip()
    account.info = request.values.get('account_info', account.info).strip()
    account_group_id = request.values.get('account_group_id', '').strip()
    account.status = int(request.form.get('account_status', account.status).strip())
    
    account_group = None
    if account_group_id:
      account_group = Group.query.filter_by(id=account_group_id).first()
    if not account_group:
      account_group = Group.query.filter_by(alias=Group.GROUP_DEFAULT).first()
    account.group_id = account_group.id
    
    validationErrors = account.validate()
    if not validationErrors:
      account.save()
      flash(g._t('profile submit success'))
      
      if account_id:
        return redirect(url_for('profile_view', account_id=urllib.quote_plus(account_id)))
      else:
        return redirect(url_for('profile_employees'))
  
  if account_id:
    title = g._t('edit profile')
  else:
    title = g._t('new profile')
  
  if account_id:
    breadcrumbs = (
      (((not app.access('authenticated', account=account)) and g._t('employees') or ''), url_for('profile_employees')),
      ((app.access('authenticated', account=account) and g._t('me') or account.__str__()), url_for('profile_view', account_id=account_id)),
      (title, "#")
    )
  else:
    breadcrumbs = (
      (g._t('employees'), url_for('profile_employees')),
      (title, "#")
    )
  
  if app.access('profile', action='administer'):
    groupList = AccountHelper.listGroups()
  else:
    groupList = AccountHelper.listActiveGroups()
  
  return render_template('profile/edit.html', account_id=account_id, account=account, groupList=groupList, title=title, breadcrumbs=breadcrumbs, errors=validationErrors)