예제 #1
0
파일: normal.py 프로젝트: Betriebsrat/ecm
def get_can1_content_data(request, solarSystemID, closest_obj_id, stationID, hangarID, container1):
    solarSystemID = int(solarSystemID)
    closest_obj_id = int(closest_obj_id)
    stationID = int(stationID)
    hangarID = int(hangarID)
    container1 = int(container1)

    assets_query = Asset.objects.filter(solarSystemID=solarSystemID,
                                        stationID=stationID, hangarID=hangarID,
                                        container1=container1, container2=None)
    json_data = []
    for a in assets_query.select_related(depth=1):
        item = {}
        try:    icon = CATEGORY_ICONS[a.eve_type.categoryID]
        except: icon = 'item'

        if a.hasContents:
            item['data'] = a.eve_type.typeName
            ID = '%d_%d_%d_%d_%d_%d_' % (solarSystemID, closest_obj_id, stationID, hangarID, container1, a.itemID)
            item['attr'] = { 'id' : ID , 'rel' : icon , 'href' : '', 'class' : '%s-row' % icon  }
            item['state'] = 'closed'
        elif a.singleton:
            item['data'] = a.eve_type.typeName
            item['attr'] = { 'rel' : icon , 'href' : ''  }
        else:
            item['data'] = '%s <i>- (x %s)</i>' % (a.eve_type.typeName, print_integer(a.quantity))
            item['attr'] = { 'rel' : icon , 'href' : ''  }

        json_data.append(item)

    return HttpResponse(json.dumps(json_data))
예제 #2
0
파일: diff.py 프로젝트: Betriebsrat/ecm
def get_hangar_content_data(request, date_str, solarSystemID, stationID, hangarID):

    date = datetime.strptime(date_str, DATE_PATTERN)
    date = timezone.make_aware(date, timezone.utc)
    next_date = date + timedelta(seconds=1)

    assets_query = AssetDiff.objects.filter(solarSystemID=int(solarSystemID),
                                            stationID=int(stationID),
                                            hangarID=int(hangarID),
                                            date__range=(date, next_date))
    jstree_data = []
    for a in assets_query.select_related(depth=1):

        if a.quantity < 0:
            icon = 'removed'
        else:
            icon = 'added'

        jstree_data.append({
            'data': '%s <i>(%s)</i>' % (a.eve_type.typeName, print_integer(a.quantity)),
            'attr' : {
                'sort_key' : a.eve_type.typeName.lower(),
                'rel' : icon,
                'class' : '%s-row' % icon
            }
        })

    return HttpResponse(json.dumps(jstree_data))
예제 #3
0
파일: diff.py 프로젝트: vanderheyde/ecm
def get_hangar_content_data(request, date_str, solarSystemID, stationID,
                            hangarID):

    date = datetime.strptime(date_str, DATE_PATTERN)
    date = timezone.make_aware(date, timezone.utc)
    next_date = date + timedelta(seconds=1)

    assets_query = AssetDiff.objects.filter(solarSystemID=int(solarSystemID),
                                            stationID=int(stationID),
                                            hangarID=int(hangarID),
                                            date__range=(date, next_date))
    jstree_data = []
    for a in assets_query.select_related(depth=1):

        if a.quantity < 0:
            icon = 'removed'
        else:
            icon = 'added'

        jstree_data.append({
            'data':
            '%s <i>(%s)</i>' %
            (a.eve_type.typeName, print_integer(a.quantity)),
            'attr': {
                'sort_key': a.eve_type.typeName.lower(),
                'rel': icon,
                'class': '%s-row' % icon
            }
        })

    return HttpResponse(json.dumps(jstree_data))
예제 #4
0
def get_skills(member):
    all_skills = member.skills.all()
    if all_skills:
        skillpoint_count = all_skills.aggregate(Sum('skillpoints'))['skillpoints__sum']
        skills_json = []
        
        types = Type.objects.filter(published=1)
        
        for group in Group.objects.filter(category=16, published=1).order_by('groupName'):
            
            skills_in_group = member.skills.filter(eve_type__in=types.filter(group=group))
            
            if skills_in_group:
                group_points = skills_in_group.aggregate(Sum('skillpoints'))['skillpoints__sum']
                
                skillgroup = {
                    'data': GROUP_SPAN % (group, 
                                          skills_in_group.count(), 
                                          print_integer(group_points),
                                          ), 
                    'attr': {'rel': 'group'},
                    'children': [],
                }
                
                for skill in skills_in_group.order_by('eve_type__typeName'):
                    skillgroup['children'].append({
                        'data': SKILL_SPAN % (skill.eve_type.typeName, 
                                              print_integer(skill.skillpoints), 
                                              skill.level,
                                              ), 
                        'attr': {'rel': 'skill'},
                    })
                
                skills_json.append(skillgroup)
    
    else:
        skills_json = []
        skillpoint_count = 0
    return skills_json, all_skills.count(), skillpoint_count
예제 #5
0
파일: orders.py 프로젝트: Betriebsrat/ecm
def _build_jobs_tree(jobs):
    jobs_tree = []
    for job in jobs:
        json_job = {
            'data': JOB_SPAN % (job.activity_text,
                                job.item.typeName,
                                print_integer(job.runs)),
            'attr': {'rel': job.activity_text.lower()},
        }
        if job.children_jobs.all():
            json_job['children'] = _build_jobs_tree(job.children_jobs.all())
        jobs_tree.append(json_job)
    return jobs_tree
예제 #6
0
def get_hangar_content_data(request, solarSystemID, closest_obj_id, stationID,
                            hangarID):
    solarSystemID = int(solarSystemID)
    closest_obj_id = int(closest_obj_id)
    stationID = int(stationID)
    hangarID = int(hangarID)

    assets_query = Asset.objects.filter(solarSystemID=solarSystemID,
                                        stationID=stationID,
                                        hangarID=hangarID,
                                        container1=None,
                                        container2=None)

    jstree_data = []
    for a in assets_query.select_related(depth=1):

        try:
            icon = CATEGORY_ICONS[a.eve_type.categoryID]
        except KeyError:
            icon = 'item'

        if a.hasContents:
            data = a.eve_type.typeName
            if a.name and a.name != a.eve_type.typeName:
                data += ' "%s"' % a.name
            ID = '%d_%d_%d_%d_%d_' % (solarSystemID, closest_obj_id, stationID,
                                      hangarID, a.itemID)
            state = 'closed'
        elif a.singleton:
            data = a.eve_type.typeName
            ID = ''
            state = ''
        else:
            data = '%s <i>- (x %s)</i>' % (a.eve_type.typeName,
                                           print_integer(a.quantity))
            ID = ''
            state = ''

        jstree_data.append({
            'data': data,
            'attr': {
                'id': ID,
                'sort_key': a.eve_type.typeName.lower(),
                'rel': icon
            },
            'state': state
        })

    return HttpResponse(json.dumps(jstree_data))
예제 #7
0
파일: orders.py 프로젝트: vanderheyde/ecm
def _build_jobs_tree(jobs):
    jobs_tree = []
    for job in jobs:
        json_job = {
            'data':
            JOB_SPAN %
            (job.activity_text, job.item.typeName, print_integer(job.runs)),
            'attr': {
                'rel': job.activity_text.lower()
            },
        }
        if job.children_jobs.all():
            json_job['children'] = _build_jobs_tree(job.children_jobs.all())
        jobs_tree.append(json_job)
    return jobs_tree
예제 #8
0
def get_can1_content_data(request, solarSystemID, closest_obj_id, stationID,
                          hangarID, container1):
    solarSystemID = int(solarSystemID)
    closest_obj_id = int(closest_obj_id)
    stationID = int(stationID)
    hangarID = int(hangarID)
    container1 = int(container1)

    assets_query = Asset.objects.filter(solarSystemID=solarSystemID,
                                        stationID=stationID,
                                        hangarID=hangarID,
                                        container1=container1,
                                        container2=None)
    json_data = []
    for a in assets_query.select_related(depth=1):
        item = {}
        try:
            icon = CATEGORY_ICONS[a.eve_type.categoryID]
        except:
            icon = 'item'

        if a.hasContents:
            item['data'] = a.eve_type.typeName
            ID = '%d_%d_%d_%d_%d_%d_' % (solarSystemID, closest_obj_id,
                                         stationID, hangarID, container1,
                                         a.itemID)
            item['attr'] = {
                'id': ID,
                'rel': icon,
                'href': '',
                'class': '%s-row' % icon
            }
            item['state'] = 'closed'
        elif a.singleton:
            item['data'] = a.eve_type.typeName
            item['attr'] = {'rel': icon, 'href': ''}
        else:
            item['data'] = '%s <i>- (x %s)</i>' % (a.eve_type.typeName,
                                                   print_integer(a.quantity))
            item['attr'] = {'rel': icon, 'href': ''}

        json_data.append(item)

    return HttpResponse(json.dumps(json_data))
예제 #9
0
파일: normal.py 프로젝트: Betriebsrat/ecm
def get_hangar_content_data(request, solarSystemID, closest_obj_id, stationID, hangarID):
    solarSystemID = int(solarSystemID)
    closest_obj_id = int(closest_obj_id)
    stationID = int(stationID)
    hangarID = int(hangarID)

    assets_query = Asset.objects.filter(solarSystemID=solarSystemID,
                                        stationID=stationID, hangarID=hangarID,
                                        container1=None, container2=None)

    jstree_data = []
    for a in assets_query.select_related(depth=1):

        try:
            icon = CATEGORY_ICONS[a.eve_type.categoryID]
        except KeyError:
            icon = 'item'

        if a.hasContents:
            data = a.eve_type.typeName
            if a.name and a.name != a.eve_type.typeName:
                data += ' "%s"' % a.name
            ID = '%d_%d_%d_%d_%d_' % (solarSystemID, closest_obj_id, stationID, hangarID, a.itemID)
            state = 'closed'
        elif a.singleton:
            data = a.eve_type.typeName
            ID = ''
            state = ''
        else:
            data = '%s <i>- (x %s)</i>' % (a.eve_type.typeName, print_integer(a.quantity))
            ID = ''
            state = ''

        jstree_data.append({
            'data': data,
            'attr' : {
                'id' : ID,
                'sort_key' : a.eve_type.typeName.lower(),
                'rel' : icon
            },
            'state' : state
        })

    return HttpResponse(json.dumps(jstree_data))
예제 #10
0
파일: normal.py 프로젝트: Betriebsrat/ecm
def get_can2_content_data(request, solarSystemID, closest_obj_id, stationID, hangarID, container1, container2):
    assets_query = Asset.objects.filter(solarSystemID=int(solarSystemID),
                                        stationID=int(stationID),
                                        hangarID=int(hangarID),
                                        container1=int(container1),
                                        container2=int(container2))
    json_data = []
    for a in assets_query.select_related(depth=1):
        item = {}
        try:    icon = CATEGORY_ICONS[a.eve_type.category]
        except: icon = 'item'
        if a.singleton:
            item['data'] = a.eve_type.typeName
        else:
            item['data'] = '%s <i>- (x %s)</i>' % (a.eve_type.typeName, print_integer(a.quantity))
        item['attr'] = { 'rel' : icon , 'href' : ''  }
        json_data.append(item)

    return HttpResponse(json.dumps(json_data))
예제 #11
0
def get_can2_content_data(request, solarSystemID, closest_obj_id, stationID,
                          hangarID, container1, container2):
    assets_query = Asset.objects.filter(solarSystemID=int(solarSystemID),
                                        stationID=int(stationID),
                                        hangarID=int(hangarID),
                                        container1=int(container1),
                                        container2=int(container2))
    json_data = []
    for a in assets_query.select_related(depth=1):
        item = {}
        try:
            icon = CATEGORY_ICONS[a.eve_type.category]
        except:
            icon = 'item'
        if a.singleton:
            item['data'] = a.eve_type.typeName
        else:
            item['data'] = '%s <i>- (x %s)</i>' % (a.eve_type.typeName,
                                                   print_integer(a.quantity))
        item['attr'] = {'rel': icon, 'href': ''}
        json_data.append(item)

    return HttpResponse(json.dumps(json_data))
예제 #12
0
파일: jobs.py 프로젝트: Betriebsrat/ecm
        if job.duration:
            duration = print_duration(job.duration, verbose=False)
        else:
            duration = '-'
        activity_icon = '<img src="%sindustry/img/%s.png" title="%s"/>' % (settings.STATIC_URL,
                                                                           job.activity_text.lower(),
                                                                           job.activity_text)
        data.append([
            'Job #%d' % job.id,
            job.state,
            job.id,
            job.order.permalink(shop=False),
            job.assignee_permalink(),
            duration,
            activity_icon,
            print_integer(round(job.runs)),
            job.item.typeName,
        ])

    return datatable_ajax_data(data, params.sEcho, total, filtered)

#------------------------------------------------------------------------------
@transaction.commit_on_success
@check_user_access()
def change_state(request, job_id, action):
    try:
        job = get_object_or_404(Job, pk=int(job_id))
    except ValueError, e:
        return HttpResponseBadRequest(str(e))

    if action == 'start':
예제 #13
0
def qty_diff_format(value):
    try:
        return unicode(print_integer(value, force_sign=True))
    except:
        return unicode(value)
예제 #14
0
    for job in query[params.first_id:params.last_id]:
        if job.duration:
            duration = print_duration(job.duration, verbose=False)
        else:
            duration = '-'
        activity_icon = '<img src="%sindustry/img/%s.png" title="%s"/>' % (
            settings.STATIC_URL, job.activity_text.lower(), job.activity_text)
        data.append([
            'Job #%d' % job.id,
            job.state,
            job.id,
            job.order.permalink(shop=False),
            job.assignee_permalink(),
            duration,
            activity_icon,
            print_integer(round(job.runs)),
            job.item.typeName,
        ])

    return datatable_ajax_data(data, params.sEcho, total, filtered)


#------------------------------------------------------------------------------
@transaction.commit_on_success
@check_user_access()
def change_state(request, job_id, action):
    try:
        job = get_object_or_404(Job, pk=int(job_id))
    except ValueError, e:
        return HttpResponseBadRequest(str(e))
예제 #15
0
        total_entries = filtered_entries = query.count()

    entries = []
    if params.grouped:
        item_group = query.values(
            'typeID', 'rawQuantity', 'singleton',
            'included').annotate(quantity=Sum('quantity'))
        total_entries = item_group.count()
        filtered_entries = total_entries
        for item in item_group[params.first_id:params.last_id]:
            item_type = Type.objects.get(typeID=item['typeID'])
            #cat_group = "%s / %s" % ( item_type.category.categoryName,item_type.group.groupName)
            entries.append([
                item_type.typeName,
                #cat_group,
                print_integer(item['quantity']),
                _print_repackaged_volume(item_type),
                _print_repackaged_volume(item_type, item['quantity']),
                #_print_rawquantity(item['rawQuantity'], item['typeID']),
                _print_included(item['included']),
            ])
    else:
        query = query[params.first_id:params.last_id]
        for contract_item in query:
            item_type = Type.objects.get(typeID=contract_item.typeID)
            #cat_group = "%s / %s" % ( item_type.category.categoryName,item_type.group.groupName)
            entries.append([
                item_type.typeName,
                #cat_group,
                print_integer(contract_item.quantity),
                _print_repackaged_volume(item_type),
예제 #16
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))
예제 #17
0
def marketorders_data(request):
    try:
        params = extract_datatable_params(request)
        REQ = request.GET if request.method == 'GET' else request.POST
        params.stateID = int(REQ.get('stateID', -1))
        params.typeID = int(REQ.get('typeID', 0))
    except:
        return HttpResponseBadRequest()
    query = MarketOrder.objects.all() # .order_by('-dateIssued')
    total_entries = query.count()
    search_args = Q()
    if params.search:
        types = _get_types(params.search)
        for type in types: #@ReservedAssignment
            search_args |= Q(typeID__exact=type.typeID)
        
    if params.stateID > -1:
        # States
        state = params.stateID
        search_args &= Q(orderState=state)
    
    # Types
    if params.typeID == 1:
        search_args &= Q(bid=True)
    elif params.typeID == 2:
        search_args &= Q(bid=False)

    query = query.filter(search_args)
    filtered_entries = query.count()
    if filtered_entries == None:
        total_entries = filtered_entries = query.count()
    
    # Apply sorting (if desc, set '-' in front of the column to sort)
    
    query = query.order_by(_get_sort_order(params))
    
    query = query[params.first_id:params.last_id]
    entries = []
    page_total = 0 # The total sell order sum for the current page (params.first_id:params.last_id)
    for entry in query:
        # Get the Type Name from Type
        eve_type = Type.objects.get(typeID=entry.typeID)

        # Get the owner of the order
        try: 
            owner = Member.objects.get(characterID=entry.charID).permalink
        except Member.DoesNotExist: 
            owner = entry.charID

        try:
            station = CelestialObject.objects.get(itemID=entry.stationID).itemName
        except CelestialObject.DoesNotExist:
            station = str(entry.stationID)
        
        page_total += entry.price * entry.volRemaining
        
        # Build the entry list
        entries.append([
            entry.get_type,
            #entry.charID,
            owner,
            eve_type.typeName,
            print_float(entry.price),
            print_float(entry.price * entry.volRemaining),
            '%d days' % entry.duration,
            station,
            print_integer(entry.volEntered),
            print_integer(entry.volRemaining),
            print_integer(entry.minVolume),
            entry.state_html,
            entry.map_range
        ])
    
    return datatable_ajax_data(entries, params.sEcho, total_entries, filtered_entries)
예제 #18
0
def qty_format(value):
    try:
        return unicode(print_integer(value))
    except:
        return unicode(value)
예제 #19
0
    materials = bp.bill_of_materials(activity=params.activityID, runs=1, round_result=True)

    materials.sort(key=lambda x: x.requiredTypeID)

    mat_table = []
    for mat in materials:
        if mat.required_type.blueprint is not None:
            url = '/industry/catalog/items/%d/' % mat.requiredTypeID
            css = 'catalog-item'
        else:
            url = '/industry/catalog/supplies/%d/' % mat.requiredTypeID
            css = 'catalog-supply'
        mat_table.append([
            mat.requiredTypeID,
            '<a href="%s" class="%s">%s</a>' % (url, css, mat.required_type.typeName),
            print_integer(mat.quantity),
        ])

    return datatable_ajax_data(data=mat_table, echo=params.sEcho)

#------------------------------------------------------------------------------
@check_user_access()
def manufacturing_time(request, blueprint_id):
    """
    Serves URL /industry/catalog/blueprint/<blueprint_id>/time/
    """
    try:
        bp = get_object_or_404(OwnedBlueprint, id=int(blueprint_id))
    except (KeyError, ValueError), e:
        raise HttpResponseBadRequest(str(e))
    duration = print_duration(bp.manufacturing_time())
예제 #20
0
    if filtered_entries == None:
        total_entries = filtered_entries = query.count()

   
    entries = []
    if params.grouped:
        item_group = query.values('typeID', 'rawQuantity', 'singleton', 'included').annotate(quantity=Sum('quantity'))
        total_entries = item_group.count() 
        filtered_entries = total_entries
        for item in item_group[params.first_id:params.last_id]:
            item_type = Type.objects.get(typeID=item['typeID'])
            #cat_group = "%s / %s" % ( item_type.category.categoryName,item_type.group.groupName)
            entries.append([
                item_type.typeName,
                #cat_group,
                print_integer(item['quantity']),
                _print_repackaged_volume(item_type),
                _print_repackaged_volume(item_type, item['quantity']),
                #_print_rawquantity(item['rawQuantity'], item['typeID']),
                _print_included(item['included']),
            ]) 
    else:
        query = query[params.first_id:params.last_id]
        for contract_item in query:
            item_type = Type.objects.get(typeID=contract_item.typeID)
            #cat_group = "%s / %s" % ( item_type.category.categoryName,item_type.group.groupName)
            entries.append([
                item_type.typeName,
                #cat_group,
                print_integer(contract_item.quantity),
                _print_repackaged_volume(item_type),
예제 #21
0
    materials.sort(key=lambda x: x.requiredTypeID)

    mat_table = []
    for mat in materials:
        if mat.required_type.blueprint is not None:
            url = '/industry/catalog/items/%d/' % mat.requiredTypeID
            css = 'catalog-item'
        else:
            url = '/industry/catalog/supplies/%d/' % mat.requiredTypeID
            css = 'catalog-supply'
        mat_table.append([
            mat.requiredTypeID,
            '<a href="%s" class="%s">%s</a>' %
            (url, css, mat.required_type.typeName),
            print_integer(mat.quantity),
        ])

    return datatable_ajax_data(data=mat_table, echo=params.sEcho)


#------------------------------------------------------------------------------
@check_user_access()
def manufacturing_time(request, blueprint_id):
    """
    Serves URL /industry/catalog/blueprint/<blueprint_id>/time/
    """
    try:
        bp = get_object_or_404(OwnedBlueprint, id=int(blueprint_id))
    except (KeyError, ValueError), e:
        raise HttpResponseBadRequest(str(e))