Exemplo n.º 1
0
 def create(self, validated_data):
     request = self.context['request']
     instance = Partner(**validated_data)
     instance.save()
     for i in request.FILES.getlist('file'):
         f = PartnerFile(partner=instance, file=i)
         f.save()
     return instance
class TestEquipments:
    def setup(self):
        self.equipment = Equipment()
        self.partner = Partner(name='partner')
        self.equipment.save()
        self.partner.save()

    def test_borrow_equipment_get(self, client):
        response = client.get('equipment/borrow_equipment/', follow=True)
        response.status_code == 200

    def test_list_equipment_get(self, client):
        response = client.get('equipment/list_equipment/', follow=True)
        response.status_code == 200

    def test_register_equipment_get(self, client):
        response = client.get('equipment/registerequipment/', follow=True)
        response.status_code == 200

    def test_register_equipment_post(self, client):
        response = client.post('equipment/registerequipment/', {
            'equipment_name': 'test_equipment',
        },
                               follow=True)
        response.status_code == 200

    def test_equipment(self, client):
        response = client.get('equipment/borrow_equipment/', follow=True)
        response.status_code == 200

    def test_list_equipment(self, client):
        response = client.get('equipment/list_equipment/', follow=True)
        response.status_code == 200

    def test_equipment_states(self):

        self.equipment.start_state()
        self.equipment.borrow_equipment(self.partner)
        assert (type(self.equipment.state) == type(BorrowedEquipment()))
        assert (self.equipment.state.partner == self.partner)

        self.equipment.take_back_equipment()
        assert (type(self.equipment.state) == type(AvailableEquipment()))

        self.equipment.disable_equipment()
        assert (type(self.equipment.state) == type(BrokenEquipment()))

        self.equipment.fix_equipment()
        assert (type(self.equipment.state) == type(AvailableEquipment()))
Exemplo n.º 3
0
    def update_partner_score(self):
        from partners.models import Partner
        latest_os = OperationScheme.latest()
        # 현재 참여하고자 하는 active user의 가장 최신의 짝지 객체를 가져온다
        for active_user in self.participants.all():
            related_partner = Partner.related_partner_activeuser(active_user)
            if related_partner is None:
                # related partner가 없으면(운영자계정, 신입회원 등) 아무것도 하지 않는다
                continue

            # 짝지 년도, 학기를 가장 최신의 운영정보 년도, 학기와 비교한다
            if not (related_partner.partner_year == latest_os.current_year
                    and related_partner.partner_semester
                    == latest_os.current_semester):
                # 만일 다르다면 아무것도 하지 않는다. 신학기에 예전학기 짝지 정보를 불러온 것이기 때문이다.
                continue

            else:
                from meetings.models import CoffeeMeeting
                # 참여였을 경우 원하는 점수만큼(현재는 커피 한잔 점수) 올린다. 단 커모 개최자는 추가점수를 준다.
                if active_user == ActiveUser.objects.filter(
                        user=self.author).latest():
                    related_partner.raise_score(latest_os.coffee_point +
                                                latest_os.extra_author_point)
                else:
                    related_partner.raise_score(latest_os.coffee_point)
Exemplo n.º 4
0
Arquivo: views.py Projeto: kpx13/solar
def home(request):
    c = get_common_context(request)
    c['request_url'] = 'home'
    c['partners'] = Partner.get_list(c['lang'])
    c['home_content'] = Page.get('home', c['lang'])['content']
    c['home_about'] = Page.get('home_about', c['lang'])['content']
    c['home_projects'] = Page.get('home_projects', c['lang'])['content']
    c['home_probation'] = Page.get('home_probation', c['lang'])['content']
    if request.user.is_authenticated():
        if not (request.user.first_name or request.user.last_name):
            c['msg'] = u'Необходимо заполнить поля: Имя и Фамилия.'
            return HttpResponseRedirect('/profile/') 
    return render_to_response('home.html', c, context_instance=RequestContext(request))
Exemplo n.º 5
0
    def partner_match_view(self, request):
        # 짝지 매칭을 위한 템플릿을 뿌려주는 뷰
        if not (request.user.is_staff or request.user.is_superuser):
            return HttpResponseForbidden()
        year, semester = self.latest_os.current_year, self.latest_os.current_semester

        # 활동회원 중 이번학기 회원들을 불러온다
        active_users = ActiveUser.objects \
            .select_related('user') \
            .filter(active_year=year, active_semester=semester) \
            .order_by('user__name')

        # 이번학기 활동회원 중 신입회원과 기존회원을 분리한다
        new_actives = active_users.filter(user__join_semester=semester,
                                          user__join_year=year)
        old_actives = active_users.difference(new_actives)

        # 이번학기에 매칭된 짝지 queryset을 받아온다
        matched_users = Partner.current_activeuser_set()

        # 각 활동회원들 중 현재 매칭된 회원은 없애준다
        new_actives = new_actives.difference(matched_users)
        old_actives = old_actives.difference(matched_users).order_by(
            'user__name')

        # 현재 학기에 매칭된 짝지들도 얻어온다
        matched_partners = Partner.objects \
            .select_related('up_partner') \
            .select_related('down_partner_3') \
            .select_related('down_partner_2') \
            .select_related('down_partner_1') \
            .filter(partner_semester=self.latest_os.current_semester, partner_year=self.latest_os.current_year)

        # 각각을 다른 context에 넣어 뿌려준다
        context = dict(self.admin_site.each_context(request),
                       news=new_actives,
                       olds=old_actives,
                       matched=matched_partners)
        return TemplateResponse(request, "admin/match_partner.html", context)
Exemplo n.º 6
0
    def create_partner(self):
        """Create a new random partner"""
        partner = Partner()

        partner.is_active = random.random() < 0.75
        partner.name = "{} {}".format(_faker.company(),
                                      _faker.company_suffix())
        partner.slug = _faker.slug()
        partner.link = _faker.uri()

        igen = IconGenerator(5, 5)  # 5x5 blocks
        icon = igen.generate(
            partner.name,
            480,
            480,
            padding=(10, 10, 10, 10),
            output_format="jpeg",
        )  # 620x620 pixels, with 10 pixels padding on each side
        partner.logo.save(partner.name + ".jpeg", ContentFile(icon))

        partner.address = _faker.street_address()
        partner.zip_code = _faker.postcode()
        partner.city = _faker.city()

        partner.save()
 def setup(self):
     self.equipment = Equipment()
     self.partner = Partner(name='partner')
     self.equipment.save()
     self.partner.save()
Exemplo n.º 8
0
 def get_dated_queryset(self, **lookup):
     if not Partner.exist(self.request.user):
         raise Http404
     return super(
         PartnerIncomeView, self).get_dated_queryset(**lookup).filter(
             account__partner__user=self.request.user).select_related()
Exemplo n.º 9
0
 def get_queryset(self):
     if not Partner.exist(self.request.user):
         raise Http404
     return super(PartnerAccountsView, self).get_queryset().filter(
         partner__user=self.request.user).select_related()
Exemplo n.º 10
0
 def get_dated_queryset(self, **lookup):
     if not Partner.exist(self.request.user):
         raise Http404
     return super(PartnerIncomeView, self).get_dated_queryset(**lookup).filter(
         account__partner__user=self.request.user).select_related()
Exemplo n.º 11
0
 def get_queryset(self):
     if not Partner.exist(self.request.user):
         raise Http404
     return super(PartnerAccountsView, self).get_queryset().filter(partner__user = self.request.user).select_related()
Exemplo n.º 12
0
def entrypoint(request):
    """ 루트 url을 통해 처음 사이트로 들어온 경우 로그인 여부에 따라 분기한다."""
    if request.user.is_authenticated:
        # 사용자가 로그인상태인 경우
        if request.method == 'GET':
            # Meeting 객체들을 모두 불러와서 그 중 커모에 해당하는 객체는 빼준다.
            every_coffee_meetings = CoffeeMeeting.objects.all().values('meeting_ptr')
            official_and_educations = Meeting.objects \
                                          .select_related('author') \
                                          .select_related('officialmeeting') \
                                          .select_related('coffeeeducation') \
                                          .exclude(id__in=every_coffee_meetings) \
                                          .order_by('-created')[:3]

            # 커모 중 최신 인스턴스 4개를 가져온다.
            coffee_meetings = CoffeeMeeting.objects \
                                  .select_related('cafe') \
                                  .select_related('author') \
                                  .prefetch_related('photos') \
                                  .prefetch_related('participants') \
                                  .prefetch_related('cafe__photos') \
                                  .all() \
                                  .order_by('-meeting_date')[:4]

            # 짝모 역시 최신 인스턴스 4개를 가져온다
            latest_partnermeetings = PartnerMeeting.objects \
                                         .select_related('author') \
                                         .select_related('partner') \
                                         .select_related('partner__up_partner__user') \
                                         .prefetch_related('photos') \
                                         .all().order_by('-created')[:4]

            # 사진첩 carousel은 photo_album의 사진들만 8개까지 보여준다.
            latest_albumphotos = Photo.objects.all().order_by('-created')[:8]

            # 짝모 순위를 가져온다
            partner_rank = Partner.objects \
                                        .select_related('up_partner__user')\
                                        .select_related('down_partner_1__user')\
                                        .select_related('down_partner_2__user')\
                                        .select_related('down_partner_3__user')\
                                        .all().order_by('-score')[:4]

            current_os = OperationScheme.latest()

            # 최근의 짝지 객체를 갖고와서 아래짝지가 몇명인지 반환하고 기본 context를 정의한다.
            latest_partner = Partner.related_partner_user(request.user)

            context = {'user': request.user,
                       'official_meetings': official_and_educations,
                       'coffee_meetings': coffee_meetings,
                       'partner_meetings': latest_partnermeetings,
                       'latest_photos': latest_albumphotos,
                       'partner_rank': partner_rank
                       }

            # latest_partner가 존재하고 이번 학기/년도와 짝지 학기/년도가 일치하면 최신의 짝지가 존재하는 것이다.
            if latest_partner is not None and ((current_os.current_year == latest_partner.partner_year) and
                                               (current_os.current_semester == latest_partner.partner_semester)):

                # 현재 사용자가 위짝지 여부, 아래짝지 명수, 각 아래짝지의 User객체를 넣어준다
                up_partner = latest_partner.up_partner.user
                down_num = latest_partner.down_partner_count()
                if down_num == 1:
                    down_partners = [latest_partner.down_partner_1.user]
                elif down_num == 2:
                    down_partners = [latest_partner.down_partner_1.user,
                                     latest_partner.down_partner_2.user]
                elif down_num == 3:
                    down_partners = [latest_partner.down_partner_1.user,
                                     latest_partner.down_partner_2.user,
                                     latest_partner.down_partner_3.user]

                context['partner_set'] = True
                context['is_up'] = up_partner == request.user
                context['down_num'] = down_num
                context['up_partner'] = up_partner
                context['down_partners'] = down_partners
                context['score'] = latest_partner.score

                return render(request, 'accounts/index.html', context)
            else:
                # 짝지 객체가 아예 없거나 현재 학기, 년도에 해당하는 짝지가 없다면 명시적으로 아직이라고 템플릿에 전달한다.
                context['partner_set'] = False
                return render(request, 'accounts/index.html', context)

    else:
        # 사용자가 인증되지 않았으면 index로 보낸다
        return redirect('core:index')
Exemplo n.º 13
0
Arquivo: views.py Projeto: kpx13/solar
def partners(request):
    c = get_common_context(request)
    c['list'] = Partner.get_list(c['lang'])
    return render_to_response('partners.html', c, context_instance=RequestContext(request))
Exemplo n.º 14
0
    state = State(name=state['Name'])
    state.save()

# with open('play.json') as f:
#     play_json = json.load(f)

# for play in play_json:
#     play = Play(name=play['play'])
#     play.save()

with open('2019_June_partners.json') as f:
    partners_json = json.load(f)

for partner in partners_json:
    partner = Partner(name=partner['name'],
                      type=partner['type'],
                      act_id=partner['act_id'],
                      active=partner['active'])
    partner.save()

with open('2019_June_Oxy_rigs.json') as f:
    rigs_json = json.load(f)

for rig in rigs_json:
    rig = Rig(name=rig['name'],
              partner=Partner.objects.get(pk=int(rig['partner'])),
              company=rig['company'],
              active=rig['active'])
    rig.save()

with open('districts.json') as f:
    districts_json = json.load(f)