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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
def wallets(request): data = {'scan_date': UpdateDate.get_latest(JournalEntry)} return render_to_response("ecm/accounting/wallets.html", data, Ctx(request))
def wallets(request): data = { 'scan_date' : UpdateDate.get_latest(JournalEntry) } return render_to_response("ecm/accounting/wallets.html", data, Ctx(request))