예제 #1
0
파일: contrib.py 프로젝트: Betriebsrat/ecm
def member_contrib(request):
    """
    View function URL : '/accounting/contributions/'
    """
    from_date = JournalEntry.objects.all().aggregate(date=Min("date"))["date"]
    if from_date is None: from_date = datetime.utcfromtimestamp(0)
    to_date = JournalEntry.objects.all().aggregate(date=Max("date"))["date"]
    if to_date is None: to_date = timezone.now()

    query = JournalEntry.objects.filter(type__in=OPERATION_TYPES,
                                        date__gte=from_date, date__lte=to_date)
    total_contribs = query.aggregate(sum=Sum('amount'))['sum']
    data = {
        'scan_date' : UpdateDate.get_latest(JournalEntry),
        'from_date' : datetime.strftime(from_date, DATE_PATTERN),
        'to_date' : datetime.strftime(to_date, DATE_PATTERN),
        'total_contribs' : total_contribs,
        'datatables_defaults': DATATABLES_DEFAULTS,
        'member_contrib_columns': MEMBER_CONTRIB_COLUMNS,
        'system_contrib_columns': SYSTEM_CONTRIB_COLUMNS,
        'player_contrib_columns': PLAYER_CONTRIB_COLUMNS,
        'member_ajax_url': '/accounting/contributions/members/data/',
        'system_ajax_url': '/accounting/contributions/systems/data/',
        'player_ajax_url': '/accounting/contributions/players/data/',
        'sorting': [[1,'desc']],
    }
    return render_to_response("ecm/accounting/contrib.html", data, Ctx(request))
예제 #2
0
def root(request):
    scan_date = UpdateDate.get_latest(Asset)
    if scan_date == '<no data>':
        return render_to_response('ecm/assets/assets_no_data.html',
                                  Ctx(request))

    my_corp = Corporation.objects.mine()
    all_hangars = Hangar.objects.all().order_by('hangarID')
    for hangar in all_hangars:
        hangar.name = hangar.get_name(my_corp)

    try:
        divisions_str = request.GET['divisions']
        divisions = [int(div) for div in divisions_str.split(',')]
        for h in all_hangars:
            h.checked = h.hangar_id in divisions
    except:
        divisions, divisions_str = None, None
        for h in all_hangars:
            h.checked = True

    show_in_space = json.loads(request.GET.get('space', 'true'))
    show_in_stations = json.loads(request.GET.get('stations', 'true'))

    data = {
        'show_in_space': show_in_space,
        'show_in_stations': show_in_stations,
        'divisions_str': divisions_str,
        'hangars': all_hangars,
        'scan_date': scan_date
    }

    return render_to_response('ecm/assets/assets.html', data, Ctx(request))
예제 #3
0
파일: normal.py 프로젝트: Betriebsrat/ecm
def root(request):
    scan_date = UpdateDate.get_latest(Asset)
    if scan_date == '<no data>':
        return render_to_response('ecm/assets/assets_no_data.html', Ctx(request))

    my_corp = Corporation.objects.mine()
    all_hangars = Hangar.objects.all().order_by('hangarID')
    for hangar in all_hangars:
        hangar.name = hangar.get_name(my_corp)

    try:
        divisions_str = request.GET['divisions']
        divisions = [ int(div) for div in divisions_str.split(',') ]
        for h in all_hangars:
            h.checked = h.hangar_id in divisions
    except:
        divisions, divisions_str = None, None
        for h in all_hangars:
            h.checked = True

    show_in_space = json.loads(request.GET.get('space', 'true'))
    show_in_stations = json.loads(request.GET.get('stations', 'true'))

    data = { 'show_in_space' : show_in_space,
          'show_in_stations' : show_in_stations,
             'divisions_str' : divisions_str,
                   'hangars' : all_hangars,
                 'scan_date' : scan_date }

    return render_to_response('ecm/assets/assets.html', data, Ctx(request))
예제 #4
0
def member_contrib(request):
    """
    View function URL : '/accounting/contributions/'
    """
    from_date = JournalEntry.objects.all().aggregate(date=Min("date"))["date"]
    if from_date is None: from_date = datetime.utcfromtimestamp(0)
    to_date = JournalEntry.objects.all().aggregate(date=Max("date"))["date"]
    if to_date is None: to_date = timezone.now()

    query = JournalEntry.objects.filter(type__in=OPERATION_TYPES,
                                        date__gte=from_date,
                                        date__lte=to_date)
    total_contribs = query.aggregate(sum=Sum('amount'))['sum']
    data = {
        'scan_date': UpdateDate.get_latest(JournalEntry),
        'from_date': datetime.strftime(from_date, DATE_PATTERN),
        'to_date': datetime.strftime(to_date, DATE_PATTERN),
        'total_contribs': total_contribs,
        'datatables_defaults': DATATABLES_DEFAULTS,
        'member_contrib_columns': MEMBER_CONTRIB_COLUMNS,
        'system_contrib_columns': SYSTEM_CONTRIB_COLUMNS,
        'player_contrib_columns': PLAYER_CONTRIB_COLUMNS,
        'member_ajax_url': '/accounting/contributions/members/data/',
        'system_ajax_url': '/accounting/contributions/systems/data/',
        'player_ajax_url': '/accounting/contributions/players/data/',
        'sorting': [[1, 'desc']],
    }
    return render_to_response("ecm/accounting/contrib.html", data,
                              Ctx(request))
예제 #5
0
파일: diff.py 프로젝트: Betriebsrat/ecm
def root(request, date_str):

    my_corp = Corporation.objects.mine()
    all_hangars = Hangar.objects.all().order_by('hangarID')
    for hangar in all_hangars:
        hangar.name = hangar.get_name(my_corp)

    try:
        divisions_str = request.GET['divisions']
        divisions = [ int(div) for div in divisions_str.split(',') ]
        for h in all_hangars:
            h.checked = h.hangar_id in divisions
    except:
        divisions, divisions_str = None, None
        for h in all_hangars:
            h.checked = True

    show_in_space = json.loads(request.GET.get('space', 'true'))
    show_in_stations = json.loads(request.GET.get('stations', 'true'))

    since_weeks = int(request.GET.get('since_weeks', '8'))
    to_weeks = int(request.GET.get('to_weeks', '0'))

    oldest_date = timezone.now() - timedelta(weeks=since_weeks)
    newest_date = timezone.now() - timedelta(weeks=to_weeks)

    query = AssetDiff.objects.values_list('date', flat=True).distinct().order_by('-date')
    query = query.filter(date__gte=oldest_date)
    query = query.filter(date__lte=newest_date)

    dates = []
    for date in query:
        dates.append({
            'value' : datetime.strftime(date, DATE_PATTERN),
            'show' : date
        })

    data = { 'show_in_space' : show_in_space,
          'show_in_stations' : show_in_stations,
             'divisions_str' : divisions_str,
                   'hangars' : all_hangars,
                 'scan_date' : UpdateDate.get_latest(Asset),
               'since_weeks' : since_weeks,
                  'to_weeks' : to_weeks,
                  'date_str' : date_str,
                     'dates' : dates }

    try:
        date_asked = datetime.strptime(date_str, DATE_PATTERN)
        date_asked = timezone.make_aware(date_asked, timezone.utc)
        next_date = date_asked + timedelta(seconds=1)
    except ValueError:
        return redirect('/assets/changes/')

    if AssetDiff.objects.filter(date__range=(date_asked, next_date)).exists():
        data['date'] = date_asked
        return render_to_response('ecm/assets/assets_diff.html', data, Ctx(request))
    else:
        return render_to_response('ecm/assets/assets_no_data.html', {}, Ctx(request))
예제 #6
0
파일: changes.py 프로젝트: Betriebsrat/ecm
def changes(request):
    data = {
        'scan_date' : UpdateDate.get_latest(TitleComposition),
        'columns': DIFFS_COLUMNS,
        'datatables_defaults': DATATABLES_DEFAULTS,
        "colorThresholds" : ColorThreshold.as_json(),
    }
    return render_to_response("ecm/hr/titles/changes.html", data, Ctx(request))
예제 #7
0
def changes(request):
    data = {
        'scan_date': UpdateDate.get_latest(TitleComposition),
        'columns': DIFFS_COLUMNS,
        'datatables_defaults': DATATABLES_DEFAULTS,
        "colorThresholds": ColorThreshold.as_json(),
    }
    return render_to_response("ecm/hr/titles/changes.html", data, Ctx(request))
예제 #8
0
파일: list.py 프로젝트: Betriebsrat/ecm
def unassociated(request):
    data = {
        'scan_date' : UpdateDate.get_latest(Member),
        'colorThresholds' : ColorThreshold.as_json(),
        'directorAccessLvl' : Member.DIRECTOR_ACCESS_LVL,
        'datatables_defaults': DATATABLES_DEFAULTS,
        'columns': MEMBERS_COLUMNS,
        'ajax_url': '/hr/members/unassociated/data/',
    }
    return render_to_response("ecm/hr/members/unassociated.html", data, Ctx(request))
예제 #9
0
def transactions(request):
    walletID = int(request.GET.get('walletID', 0))
    entryTypeID = int(request.GET.get('entryTypeID', -1))
    entryForID = int(request.GET.get('entryForID', -1))
    amount = request.GET.get('amount', None)
    comparator = request.GET.get('comparator', '>')

    from_date = TransactionEntry.objects.all().aggregate(
        date=Min("date"))["date"]
    if from_date is None: from_date = datetime.utcfromtimestamp(0)
    to_date = TransactionEntry.objects.all().aggregate(
        date=Max("date"))["date"]
    if to_date is None: to_date = timezone.now()

    wallets = [{'walletID': 0, 'name': 'All', 'selected': walletID == 0}]
    for w in Corporation.objects.mine().wallets.all().order_by('wallet'):
        wallets.append({
            'walletID': w.wallet_id,
            'name': w.name,
            'selected': w.wallet_id == walletID
        })
    entryTypes = [{
        'refTypeID': -1,
        'refTypeName': 'Both',
        'selected': entryTypeID == -1
    }]
    for tet in TransactionEntry.TYPES:
        entryTypes.append({
            'refTypeID': tet,
            'refTypeName': TransactionEntry.TYPES[tet],
            'selected': tet == entryTypeID
        })
    entryFor = [{
        'refTypeID': -1,
        'refTypeName': 'Both',
        'selected': entryForID == -1
    }]
    for ter in TransactionEntry.FOR:
        entryFor.append({
            'refTypeID': ter,
            'refTypeName': TransactionEntry.FOR[ter],
            'selected': ter == entryForID
        })
    data = {
        'wallets': wallets,
        'entryTypes': entryTypes,
        'entryFor': entryFor,
        'amount': amount,
        'comparator': comparator,
        'scan_date': UpdateDate.get_latest(TransactionEntry),
        'from_date': datetime.strftime(from_date, DATE_PATTERN),
        'to_date': datetime.strftime(to_date, DATE_PATTERN),
    }
    return render_to_response("ecm/accounting/wallet_transactions.html", data,
                              Ctx(request))
예제 #10
0
파일: list.py 프로젝트: vanderheyde/ecm
def unassociated(request):
    data = {
        'scan_date': UpdateDate.get_latest(Member),
        'colorThresholds': ColorThreshold.as_json(),
        'directorAccessLvl': Member.DIRECTOR_ACCESS_LVL,
        'datatables_defaults': DATATABLES_DEFAULTS,
        'columns': MEMBERS_COLUMNS,
        'ajax_url': '/hr/members/unassociated/data/',
    }
    return render_to_response("ecm/hr/members/unassociated.html", data,
                              Ctx(request))
예제 #11
0
def history(request):
    defaults = DATATABLES_DEFAULTS.copy()
    defaults['aaSorting'] = [[3, "desc"]]
    data = {
        'scan_date' : UpdateDate.get_latest(Member),
        'ajax_url': '/hr/members/history/data/',
        'datatables_defaults': defaults,
        'columns': COLUMNS,
        
    }
    return render_to_response("ecm/hr/members/history.html", data, Ctx(request))
예제 #12
0
파일: list.py 프로젝트: RebelFist/ecm
def titles(request):
    colorThresholds = []
    for c in ColorThreshold.objects.all().order_by("threshold"):
        colorThresholds.append({"threshold": c.threshold, "color": c.color})

    data = {
        "scan_date": UpdateDate.get_latest(TitleComposition),
        "colorThresholds": json.dumps(colorThresholds),
        "columns": TITLES_COLUMNS,
        "datatables_defaults": DATATABLES_DEFAULTS,
    }
    return render_to_response("ecm/hr/titles/titles.html", data, Ctx(request))
예제 #13
0
파일: access.py 프로젝트: Betriebsrat/ecm
def access_changes(request):
    data = {
        'scan_date' : UpdateDate.get_latest(TitleMembership),
        'colorThresholds' : ColorThreshold.as_json(),
        'directorAccessLvl': Member.DIRECTOR_ACCESS_LVL,
        'datatable_defaults': DATATABLES_DEFAULTS,
        'columns' : ACCESS_CHANGES_COLUMNS,
        'sorting': [[3, 'desc']],
        'ajax_url': '/hr/members/accesschanges/data/',
    }

    return render_to_response("ecm/hr/members/access_changes.html", data, Ctx(request))
예제 #14
0
def titles(request):
    colorThresholds = []
    for c in ColorThreshold.objects.all().order_by("threshold"):
        colorThresholds.append({"threshold": c.threshold, "color": c.color})

    data = {
        'scan_date': UpdateDate.get_latest(TitleComposition),
        'colorThresholds': json.dumps(colorThresholds),
        'columns': TITLES_COLUMNS,
        'datatables_defaults': DATATABLES_DEFAULTS
    }
    return render_to_response("ecm/hr/titles/titles.html", data, Ctx(request))
예제 #15
0
def contracts(request):
    
    _type = request.GET.get('type', 0) # default to All
    _status = request.GET.get('status', 0) # default to All
    
    # Get contract types
    data = {
        'types': [ (ID, name, ID == _type) for ID, name in TYPES ],
        'statuses': [ (ID, name, ID == _status) for ID, name in STATUSES ],
        'scan_date': UpdateDate.get_latest(Contract),
        'columns': COLUMNS,
    }
    return render_to_response('ecm/accounting/contracts.html', data, Ctx(request))
예제 #16
0
def access_changes(request):
    data = {
        'scan_date': UpdateDate.get_latest(TitleMembership),
        'colorThresholds': ColorThreshold.as_json(),
        'directorAccessLvl': Member.DIRECTOR_ACCESS_LVL,
        'datatable_defaults': DATATABLES_DEFAULTS,
        'columns': ACCESS_CHANGES_COLUMNS,
        'sorting': [[3, 'desc']],
        'ajax_url': '/hr/members/accesschanges/data/',
    }

    return render_to_response("ecm/hr/members/access_changes.html", data,
                              Ctx(request))
예제 #17
0
파일: cyno_alts.py 프로젝트: RebelFist/ecm
def cyno_list(request):
    corps = Corporation.objects.others().order_by("corporationName")
    corps = corps.annotate(member_count=Count("members"))

    data = {
        "scan_date": UpdateDate.get_latest(Member),
        "trusted_corps": corps.filter(member_count__gt=0, is_trusted=True),
        "other_corps": corps.filter(member_count__gt=0, is_trusted=False),
        "datatables_defaults": DATATABLES_DEFAULTS,
        "columns": MEMBERS_COLUMNS,
        "ajax_url": "/hr/cyno_alts/data/",
    }
    return render_to_response("ecm/hr/members/cyno_alts.html", data, Ctx(request))
예제 #18
0
파일: journal.py 프로젝트: vanderheyde/ecm
def journal(request):
    walletID = int(request.GET.get('walletID', 0))
    entryTypeID = int(request.GET.get('entryTypeID', 0))
    amount = request.GET.get('amount', None)
    comparator = request.GET.get('comparator', '>')

    from_date = JournalEntry.objects.all().aggregate(date=Min("date"))["date"]
    if from_date is None:
        from_date = datetime.utcfromtimestamp(0)
    to_date = JournalEntry.objects.all().aggregate(date=Max("date"))["date"]
    if to_date is None:
        to_date = timezone.now()

    my_corp = Corporation.objects.mine()

    wallets = [{'walletID': 0, 'name': 'All', 'selected': walletID == 0}]
    for w in my_corp.wallets.all().order_by('wallet'):
        wallets.append({
            'walletID': w.wallet_id,
            'name': w.name,
            'selected': w.wallet_id == walletID
        })

    entryTypes = [{
        'refTypeID': 0,
        'refTypeName': 'All',
        'selected': entryTypeID == 0
    }]
    for et in EntryType.objects.exclude(refTypeID=0).exclude(
            refTypeName='').order_by('refTypeName'):
        entryTypes.append({
            'refTypeID': et.refTypeID,
            'refTypeName': et.refTypeName,
            'selected': et.refTypeID == entryTypeID
        })

    data = {
        'wallets': wallets,
        'entryTypes': entryTypes,
        'amount': amount,
        'comparator': comparator,
        'scan_date': UpdateDate.get_latest(JournalEntry),
        'from_date': datetime.strftime(from_date, DATE_PATTERN),
        'to_date': datetime.strftime(to_date, DATE_PATTERN),
        'datatable_defaults': DATATABLES_DEFAULTS,
        'columns': WALLET_JOURNAL_COLUMNS,
        'colorThresholds': ColorThreshold.as_json(),
        'ajax_url': '/accounting/journal/data/',
    }
    return render_to_response("ecm/accounting/wallet_journal.html", data,
                              Ctx(request))
예제 #19
0
def contracts(request):

    _type = request.GET.get('type', 0)  # default to All
    _status = request.GET.get('status', 0)  # default to All

    # Get contract types
    data = {
        'types': [(ID, name, ID == _type) for ID, name in TYPES],
        'statuses': [(ID, name, ID == _status) for ID, name in STATUSES],
        'scan_date': UpdateDate.get_latest(Contract),
        'columns': COLUMNS,
    }
    return render_to_response('ecm/accounting/contracts.html', data,
                              Ctx(request))
예제 #20
0
def cyno_list(request):
    corps = Corporation.objects.others().order_by('corporationName')
    corps = corps.annotate(member_count=Count('members'))

    data = {
        'scan_date': UpdateDate.get_latest(Member),
        'trusted_corps': corps.filter(member_count__gt=0, is_trusted=True),
        'other_corps': corps.filter(member_count__gt=0, is_trusted=False),
        'datatables_defaults': DATATABLES_DEFAULTS,
        'columns': MEMBERS_COLUMNS,
        'ajax_url': '/hr/cyno_alts/data/',
    }
    return render_to_response("ecm/hr/members/cyno_alts.html", data,
                              Ctx(request))
예제 #21
0
파일: list.py 프로젝트: Betriebsrat/ecm
def members(request):
    
    corps = Corporation.objects.others().order_by('corporationName')
    corps = corps.annotate(member_count=Count('members'))
    
    data = {
        'scan_date' : UpdateDate.get_latest(Member),
        'trusted_corps': corps.filter(member_count__gt=0, is_trusted=True),
        'other_corps': corps.filter(member_count__gt=0, is_trusted=False),
        'colorThresholds' : ColorThreshold.as_json(),
        'directorAccessLvl' : Member.DIRECTOR_ACCESS_LVL,
        'datatables_defaults': DATATABLES_DEFAULTS,
        'columns': MEMBERS_COLUMNS,
        'ajax_url': '/hr/members/data/',
    }
    return render_to_response("ecm/hr/members/list.html", data, Ctx(request))
예제 #22
0
파일: list.py 프로젝트: vanderheyde/ecm
def members(request):

    corps = Corporation.objects.others().order_by('corporationName')
    corps = corps.annotate(member_count=Count('members'))

    data = {
        'scan_date': UpdateDate.get_latest(Member),
        'trusted_corps': corps.filter(member_count__gt=0, is_trusted=True),
        'other_corps': corps.filter(member_count__gt=0, is_trusted=False),
        'colorThresholds': ColorThreshold.as_json(),
        'directorAccessLvl': Member.DIRECTOR_ACCESS_LVL,
        'datatables_defaults': DATATABLES_DEFAULTS,
        'columns': MEMBERS_COLUMNS,
        'ajax_url': '/hr/members/data/',
    }
    return render_to_response("ecm/hr/members/list.html", data, Ctx(request))
예제 #23
0
def journal(request):
    walletID = int(request.GET.get('walletID', 0))
    entryTypeID = int(request.GET.get('entryTypeID', 0))
    amount = request.GET.get('amount',None)
    comparator = request.GET.get('comparator','>')
    
    from_date = JournalEntry.objects.all().aggregate(date=Min("date"))["date"]
    if from_date is None: 
        from_date = datetime.utcfromtimestamp(0)
    to_date = JournalEntry.objects.all().aggregate(date=Max("date"))["date"]
    if to_date is None: 
        to_date = timezone.now()
    
    my_corp = Corporation.objects.mine()
    
    wallets = [{ 'walletID' : 0, 'name' : 'All', 'selected' : walletID == 0 }]
    for w in my_corp.wallets.all().order_by('wallet'):
        wallets.append({
            'walletID' : w.wallet_id,
            'name' : w.name,
            'selected' : w.wallet_id == walletID
        })

    entryTypes = [{ 'refTypeID' : 0, 'refTypeName' : 'All', 'selected' : entryTypeID == 0 }]
    for et in EntryType.objects.exclude(refTypeID=0).exclude(refTypeName='').order_by('refTypeName'):
        entryTypes.append({
            'refTypeID' : et.refTypeID,
            'refTypeName' : et.refTypeName,
            'selected' : et.refTypeID == entryTypeID
        })

    data = {
        'wallets' : wallets,
        'entryTypes' : entryTypes,
        'amount' : amount,
        'comparator' : comparator,
        'scan_date' : UpdateDate.get_latest(JournalEntry),
        'from_date' : datetime.strftime(from_date, DATE_PATTERN),
        'to_date' : datetime.strftime(to_date, DATE_PATTERN),
        'datatable_defaults': DATATABLES_DEFAULTS,
        'columns': WALLET_JOURNAL_COLUMNS,
        'colorThresholds': ColorThreshold.as_json(),
        'ajax_url':'/accounting/journal/data/',
    }
    return render_to_response("ecm/accounting/wallet_journal.html", data, Ctx(request))
예제 #24
0
파일: journal.py 프로젝트: RebelFist/ecm
def journal(request):
    walletID = int(request.GET.get("walletID", 0))
    entryTypeID = int(request.GET.get("entryTypeID", 0))
    amount = request.GET.get("amount", None)
    comparator = request.GET.get("comparator", ">")

    from_date = JournalEntry.objects.all().aggregate(date=Min("date"))["date"]
    if from_date is None:
        from_date = datetime.utcfromtimestamp(0)
    to_date = JournalEntry.objects.all().aggregate(date=Max("date"))["date"]
    if to_date is None:
        to_date = timezone.now()

    my_corp = Corporation.objects.mine()

    wallets = [{"walletID": 0, "name": "All", "selected": walletID == 0}]
    for w in my_corp.wallets.all().order_by("wallet"):
        wallets.append({"walletID": w.wallet_id, "name": w.name, "selected": w.wallet_id == walletID})

    entryTypes = [{"refTypeID": 0, "refTypeName": "All", "selected": entryTypeID == 0}]
    for et in EntryType.objects.exclude(refTypeID=0).exclude(refTypeName="").order_by("refTypeName"):
        entryTypes.append(
            {"refTypeID": et.refTypeID, "refTypeName": et.refTypeName, "selected": et.refTypeID == entryTypeID}
        )

    data = {
        "wallets": wallets,
        "entryTypes": entryTypes,
        "amount": amount,
        "comparator": comparator,
        "scan_date": UpdateDate.get_latest(JournalEntry),
        "from_date": datetime.strftime(from_date, DATE_PATTERN),
        "to_date": datetime.strftime(to_date, DATE_PATTERN),
        "datatable_defaults": DATATABLES_DEFAULTS,
        "columns": WALLET_JOURNAL_COLUMNS,
        "colorThresholds": ColorThreshold.as_json(),
        "ajax_url": "/accounting/journal/data/",
    }
    return render_to_response("ecm/accounting/wallet_journal.html", data, Ctx(request))
예제 #25
0
def marketorders(request):
    stateID = int(request.GET.get('stateID', -1))
    typeID = request.GET.get('typeID', 0)

    states = [{
        'stateID': -1,
        'name': 'All',
        'selected' : stateID == -1 ,
    }]
    for sid, name in MarketOrder.STATE.items():
        states.append({
            'stateID': sid,
            'name': name,
            'selected': name == stateID,
        })

    types = [{
        'typeID': 0,
        'name': 'All',
        'selected': typeID == 0,
    }, {
        'typeID': 1,
        'name': 'Buy Order',
        'selected': typeID == 1,
    }, {
        'typeID': 2,
        'name': 'Sell Order',
        'selected': typeID == 2
    }]

    data = {
        'states': states,
        'types': types,
        'columns': COLUMNS,
        'scan_date': UpdateDate.get_latest(MarketOrder),
    }
    return render_to_response('ecm/accounting/marketorders.html', data, Ctx(request))
예제 #26
0
def transactions(request):
    walletID = int(request.GET.get("walletID", 0))
    entryTypeID = int(request.GET.get("entryTypeID", -1))
    entryForID = int(request.GET.get("entryForID", -1))
    amount = request.GET.get("amount", None)
    comparator = request.GET.get("comparator", ">")

    from_date = TransactionEntry.objects.all().aggregate(date=Min("date"))["date"]
    if from_date is None:
        from_date = datetime.utcfromtimestamp(0)
    to_date = TransactionEntry.objects.all().aggregate(date=Max("date"))["date"]
    if to_date is None:
        to_date = timezone.now()

    wallets = [{"walletID": 0, "name": "All", "selected": walletID == 0}]
    for w in Corporation.objects.mine().wallets.all().order_by("wallet"):
        wallets.append({"walletID": w.wallet_id, "name": w.name, "selected": w.wallet_id == walletID})
    entryTypes = [{"refTypeID": -1, "refTypeName": "Both", "selected": entryTypeID == -1}]
    for tet in TransactionEntry.TYPES:
        entryTypes.append(
            {"refTypeID": tet, "refTypeName": TransactionEntry.TYPES[tet], "selected": tet == entryTypeID}
        )
    entryFor = [{"refTypeID": -1, "refTypeName": "Both", "selected": entryForID == -1}]
    for ter in TransactionEntry.FOR:
        entryFor.append({"refTypeID": ter, "refTypeName": TransactionEntry.FOR[ter], "selected": ter == entryForID})
    data = {
        "wallets": wallets,
        "entryTypes": entryTypes,
        "entryFor": entryFor,
        "amount": amount,
        "comparator": comparator,
        "scan_date": UpdateDate.get_latest(TransactionEntry),
        "from_date": datetime.strftime(from_date, DATE_PATTERN),
        "to_date": datetime.strftime(to_date, DATE_PATTERN),
    }
    return render_to_response("ecm/accounting/wallet_transactions.html", data, Ctx(request))
예제 #27
0
파일: diff.py 프로젝트: vanderheyde/ecm
def root(request, date_str):

    my_corp = Corporation.objects.mine()
    all_hangars = Hangar.objects.all().order_by('hangarID')
    for hangar in all_hangars:
        hangar.name = hangar.get_name(my_corp)

    try:
        divisions_str = request.GET['divisions']
        divisions = [int(div) for div in divisions_str.split(',')]
        for h in all_hangars:
            h.checked = h.hangar_id in divisions
    except:
        divisions, divisions_str = None, None
        for h in all_hangars:
            h.checked = True

    show_in_space = json.loads(request.GET.get('space', 'true'))
    show_in_stations = json.loads(request.GET.get('stations', 'true'))

    since_weeks = int(request.GET.get('since_weeks', '8'))
    to_weeks = int(request.GET.get('to_weeks', '0'))

    oldest_date = timezone.now() - timedelta(weeks=since_weeks)
    newest_date = timezone.now() - timedelta(weeks=to_weeks)

    query = AssetDiff.objects.values_list(
        'date', flat=True).distinct().order_by('-date')
    query = query.filter(date__gte=oldest_date)
    query = query.filter(date__lte=newest_date)

    dates = []
    for date in query:
        dates.append({
            'value': datetime.strftime(date, DATE_PATTERN),
            'show': date
        })

    data = {
        'show_in_space': show_in_space,
        'show_in_stations': show_in_stations,
        'divisions_str': divisions_str,
        'hangars': all_hangars,
        'scan_date': UpdateDate.get_latest(Asset),
        'since_weeks': since_weeks,
        'to_weeks': to_weeks,
        'date_str': date_str,
        'dates': dates
    }

    try:
        date_asked = datetime.strptime(date_str, DATE_PATTERN)
        date_asked = timezone.make_aware(date_asked, timezone.utc)
        next_date = date_asked + timedelta(seconds=1)
    except ValueError:
        return redirect('/assets/changes/')

    if AssetDiff.objects.filter(date__range=(date_asked, next_date)).exists():
        data['date'] = date_asked
        return render_to_response('ecm/assets/assets_diff.html', data,
                                  Ctx(request))
    else:
        return render_to_response('ecm/assets/assets_no_data.html', {},
                                  Ctx(request))
예제 #28
0
def details(request, characterID):
    avg_session = {
      'sessionlength': 0,
      '30days': 0,
      '7days': 0,
    }
    now = timezone.now()
    try:
        member = Member.objects.get(characterID=int(characterID))
        try:
            member.base = CelestialObject.objects.get(itemID=member.baseID).itemName
        except CelestialObject.DoesNotExist:
            member.base = str(member.baseID)

        member.color = ColorThreshold.get_access_color(member.accessLvl)
        member.roles_no_director = member.roles.exclude(roleID=1) # exclude 'director'

        query = MemberSession.objects.filter(character_id=member.characterID).order_by('session_begin')
        query_30 = query.filter(session_begin__gt=now - timedelta(30))
        query_7 = query.filter(session_begin__gt=now - timedelta(7))

        session_len = query.aggregate(len=Avg('session_seconds'))['len'] or 0
        session_len_30 = query_30.aggregate(len=Avg('session_seconds'))['len'] or 0
        session_len_7 = query_7.aggregate(len=Avg('session_seconds'))['len'] or 0

        # Totals
        total = query.aggregate(len=Sum('session_seconds'))['len'] or 0
        lastWeek = query_7.aggregate(len=Sum('session_seconds'))['len'] or 0
        lastMonth = query_30.aggregate(len=Sum('session_seconds'))['len'] or 0


        loginhistory = query.order_by('-session_begin')[:10]

        avg_session['sessionlength'] = timedelta(seconds=session_len)
        avg_session['30days'] = timedelta(seconds=session_len_30)
        avg_session['7days'] = timedelta(seconds=session_len_7)

        if member.corp_id == Corporation.objects.mine().corporationID:
            member.date = UpdateDate.get_latest(Member)
        else:
            try:
                d = MemberDiff.objects.filter(member=member, new=False).order_by("-id")[0]
                member.date = d.date
            except IndexError:
                member.date = 0
        skills, skill_count, skillpoint_count = get_skills(member)
    except Member.DoesNotExist:
        member = Member(characterID=int(characterID), name="???")
    
    try:
        killboardUrl = Setting.get('corp_killboard_url')
    except Setting.DoesNotExist:
        killboardUrl = None
    
    data = {
        'member'             : member,
        'killboardUrl'       : killboardUrl,
        'sessiondata'        : avg_session,
        'lastWeek'           : lastWeek,
        'lastMonth'          : lastMonth,
        'total'              : total,
        'logins'             : loginhistory,
        'skills_tree'        : json.dumps(skills),
        'skill_count'        : skill_count,
        'skillpoint_count'   : print_integer(skillpoint_count),
        'datatables_defaults': DATATABLES_DEFAULTS,
        'access_columns'     : ACCESS_CHANGES_COLUMNS,
        'sorting'            : [[2, 'desc']],
    }
    return render_to_response("ecm/hr/members/details.html", data, Ctx(request))
예제 #29
0
def wallets(request):
    data = {'scan_date': UpdateDate.get_latest(JournalEntry)}
    return render_to_response("ecm/accounting/wallets.html", data,
                              Ctx(request))
예제 #30
0
파일: wallets.py 프로젝트: Betriebsrat/ecm
def wallets(request):
    data = {
        'scan_date' : UpdateDate.get_latest(JournalEntry)
    }
    return render_to_response("ecm/accounting/wallets.html", data, Ctx(request))